12020-12-01  Dodji Seketeli <dodji@redhat.com>
2
3	Add check-self-compare to release regression testing
4	* Makefile.am: Make 'make tarball-and-all' run the
5	'check-self-compare' target as part of the release process.
6
72020-12-01  Dodji Seketeli <dodji@redhat.com>
8
9	configure: add --enable-rpm415 option
10	* configure: Introduce the --{en, dis}able-rpm415 option.
11
122020-11-30  Dodji Seketeli <dodji@redhat.com>
13
14	dwarf-reader: Bug 26908 - don't crash on empty DW_TAG_partial_unit
15	* src/abg-dwarf-reader.cc (die_has_children): Define new static
16	function.
17	(read_context::build_die_parent_relations_under): Do not try to
18	instantiate an imported_unit_point type for an imported unit with
19	no children node.
20	(imported_unit_point::imported_unit_point): Assert that the
21	imported die has a sub-tree.
22	(imported_unit_point::imported_unit_point): Remove useless spaces.
23
242020-11-27  Dodji Seketeli <dodji@redhat.com>
25
26	reader: Fix off-by-one error in assert
27	* src/abg-reader.cc (build_subrange_type): Fix off-by-one error.
28
292020-11-27  Dodji Seketeli <dodji@redhat.com>
30
31	writer: fix off-by-one error in assertion
32	* src/abg-writer.cc (write_array_subrange_type): Fix off-by-one
33	error in assertion.
34	* src/abg-dwarf-reader.cc (build_subrange_type): Assert the length
35	of the array complies with its bounds.
36
372020-11-27  Dodji Seketeli <dodji@redhat.com>
38
39	abipkgdiff: make --self-check to fail on any change against own ABIXML
40	* tools/abipkgdiff.cc (compare_to_self): Report *any* ABI change.
41	Not just the "net" changes.
42
432020-11-26  Dodji Seketeli <dodji@redhat.com>
44
45	abidw: make --abidiff report any change against own ABIXML
46	* tools/abidw.cc (load_corpus_and_write_abixml): Emit an error
47	when comparing the binary to its ABIXML representation yields any
48	change.
49
502020-11-27  Dodji Seketeli <dodji@redhat.com>
51
52	dwarf-reader: Avoid having several functions with the same symbol
53	* src/abg-dwarf-reader.cc
54	(read_context::symbol_already_belongs_to_a_function): Define new
55	member function.
56	(read_context::fixup_functions_with_no_symbols): Use the new
57	symbol_already_belongs_to_a_function function to avoid setting a
58	symbol that already belongs to a function.
59	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
60	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
61	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
62	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
63	Likewise.
64
652020-11-27  Dodji Seketeli <dodji@redhat.com>
66
67	reader: Don't lose anonymous-ness of decl-only classes
68	* src/abg-reader.cc (build_class_decl): Set the is-anonymous flag
69	when reading a decl-only class.
70
712020-11-27  Dodji Seketeli <dodji@redhat.com>
72
73	ir: Introduce internal pretty representation for anonymous classes
74	* include/abg-fwd.h (get_class_or_union_flat_representation):
75	Introduce an "internal" parameter.
76	* src/abg-ir.cc (get_class_or_union_flat_representation):
77	Introduce an "internal" parameter.  In the flat representation of
78	a class for internal purposes, always use the prefix "class" even
79	if this is a struct.
80	(get_type_name): To build an internal name for a
81	reference or pointer to an anonymous type, consider the namespace
82	name of said type.
83	(equals): In the overload for decl_base, take the namespace name
84	of anonymous decls into account when comparing them.
85	({var_decl, union_decl}::get_pretty_representation): Adjust calls
86	to get_class_or_union_flat_representation to pass a proper
87	"internal" argument.
88	* src/abg-default-reporter.cc (default_reporter::report): Adjust
89	the call to get_class_or_union_flat_representation to pass an
90	"internal" argument set to 'false'.
91	* tests/data/test-annotate/libtest23.so.abi: Adjust.
92	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
93	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
94	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
95	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
96	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
97	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
98	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
99
1002020-11-26  Dodji Seketeli <dodji@redhat.com>
101
102	writer: Emit definitions of declarations when they are present
103	* src/abg-writer.cc (write_class_decl, write_union_decl): Get the
104	definition of the declaration if it exists and emit that.
105	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
106	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
107	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
108	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
109	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
110	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
111
1122020-11-26  Dodji Seketeli <dodji@redhat.com>
113
114	Bug 26780 - Fix array subrange bounds (de)serialization
115	* src/abg-reader.cc (build_subrange_type): Read lower-bound
116	attribute if present.  Then try to read upper-bound attribute as
117	well.  If this is not an infinite subrange assert that the length
118	must be equal to the difference between the bounds.
119	* src/abg-writer.cc (write_array_subrange_type): Write the
120	lower-bound if it's present and not zero.  In that case, write the
121	upper-bound as well.
122	* tests/data/test-diff-pkg/hdf5-1.10.6-2.fc33.x86_64.rpm: Add new
123	binary test input.
124	* tests/data/test-diff-pkg/hdf5-debuginfo-1.10.6-2.fc33.x86_64.rpm:
125	Likewise.
126	* tests/data/test-diff-pkg/hdf5-1.10.6-2.fc33.x86_64.self-check-report-0.txt:
127	Add new reference output.
128	* tests/data/Makefile.am: Add the new test material above to
129	source distribution.
130	* tests/test-diff-pkg.cc (in_out_specs): Add the binary test input
131	to the set of --self-check tests.
132
1332020-11-26  Dodji Seketeli <dodji@redhat.com>
134
135	reader: Read array subrange length into an uint64_t
136	* src/abg-reader.cc (build_subrange_type): Change the type of
137	length to uint64_t and read it using strtoull.
138
1392020-11-25  Dodji Seketeli <dodji@redhat.com>
140
141	abipkgdiff: Avoid uncertainty when sorting worker tasks
142	* elf_size_is_greater: Take the name of the binaries into account
143	when their size is equal.  Also, assert that all comparison tasks
144	have compared binaries.
145
1462020-11-25  Dodji Seketeli <dodji@redhat.com>
147
148	tests/data/test-fedabipkgdiff: Update reference output
149	* tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt:
150	Adjust.
151
1522020-11-24  Matthias Maennich <maennich@google.com>
153
154	abipkgdiff: minor cleanups
155	* tools/abipkgdiff.cc: remove unused using statements
156	(self_compare_task): remove shadowing members and delegate
157	construction to base class.
158
1592020-11-23  Dodji Seketeli <dodji@redhat.com>
160
161	dwarf-reader: support artificially generated translation units
162	* configure.ac: Detect if we are running on RPM >= 4.15.  If yes,
163	then define the preprocessor macro RPM_4_15.  If that macro is
164	defined then test-diff-pkg.cc can support RPMs from Fedora >= 31
165	as those are compressed with zstd.  Earlier RPM versions don't
166	support that compression scheme.
167	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
168	Suffix the offset of the translation unit to its name when that
169	name is "<artificial>".
170	* tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.rpm:
171	New binary test input.
172	* tests/data/test-diff-pkg/mesa-libGLU-debuginfo-9.0.1-3.fc33.x86_64.rpm: Likewise.
173	* tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.self-check-report-0.txt:
174	New reference output for the binary test input above.
175	* tests/data/Makefile.am: Add the new test inputs above to source
176	distribution.
177	* tests/test-diff-pkg.cc (in_out_specs): Add the binary test
178	inputs above to source distribution if we are running on an RPM
179	version >= 4.15.
180
1812020-11-20  Dodji Seketeli <dodji@redhat.com>
182
183	fedabipkgdiff: make --self-compare use abipkgdiff --self-check
184	* tools/fedabipkgdiff (abipkgdiff): If the user provides the
185	--self-compare options, generate the abipkgdiff command by using
186	the --self-check option.
187	(run_abipkgdiff): Each return value of the abipkgidiff runs can be
188	negative because they are unsigned values in essence, but as
189	python doesn't seem to have a unsigned integer type.  So we need
190	to consider the max of the absolute value of the return codes
191	here.
192	* tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt:
193	Adjust.
194
1952020-11-19  Dodji Seketeli <dodji@redhat.com>
196
197	abipkgdiff: Add a new --self-check option
198	* tools/abipkgdiff.cc (options::self_check): Define new data
199	member.
200	(options::options): Initialize it.
201	(display_usage): Add help string for the --self-check option.
202	(parse_command): Parse the new --self-check option.
203	(extract_deb): Add missing newline.
204	(compare): Remove useless white space.
205	(compare_to_self, self_compare_prepared_userspace_package)
206	(self_compare_prepared_package, compare_to_self): Add new static
207	functions.
208	(class self_compare_task): Add new class.
209	(prepare_package): Add a new overload that takes just one
210	parameter.
211	(elf_size_is_greater): Don't crash if the args are empty.
212	(main): If the --self-check option is given, make sure we have
213	just one package in argument.  Use the new compare_to_self
214	function to handle the --self-check option.
215	* doc/manuals/abipkgdiff.rst: Add documentation for the new
216	--self-check option.
217
2182020-11-16  Dodji Seketeli <dodji@redhat.com>
219
220	Bug 26769 - Fix missing types in abixml output
221	* include/abg-corpus.h (corpus::{record_canonical_type,
222	lookup_canonical_type}): Remove function declarations.
223	* src/abg-corpus-priv.h (corpus::priv::canonical_types_): Remove
224	data member.
225	* src/abg-corpus.cc (corpus::{record_canonical_type,
226	lookup_canonical_type}): Remove functions.
227	* src/abg-ir.cc (type_eligible_for_odr_based_comparison): Remove
228	static function.
229	(type_base::get_canonical_type_for): Don't perform the ODR-based
230	optimization for C++ anymore.
231	* src/abg-reader.cc
232	(read_context&::maybe_add_var_to_exported_decls): Don't add a
233	variable that hasn't been added to its scope.  Otherwise, it means
234	we added a variable that wasn't yet properly constructed.  Also
235	add a new overload for var_decl_sptr&.
236	(build_var_decl): Do not add the var to its the set of exported
237	declaration before we are sure it has been fully constructed and
238	added to the scope it belongs.
239	(build_class_decl): Only add *static* data members to the list of
240	exported declarations.
241	(handle_var_decl): A var decl seen here is a global variable
242	declaration.  Add it to the list of exported declarations.
243	* src/abg-writer.cc (write_context::decl_only_type_is_emitted):
244	Constify parameter.
245	(write_translation_unit): Do not forget to emit referenced types
246	that were maybe not canonicalized.  Also, avoid using noop_deleter
247	when it's not necessary.
248	(write_namespace_decl): Do not forget to emit canonicalized types
249	that are present in namespaces other than the global namespace.
250	* tests/runtestslowselfcompare.sh.in: New test that compares
251	libabigail.so against its own ABIXML representation.
252	* tests/Makefile.am: Add the new test runtestslowselfcompare.sh to
253	source distribution.  This test is too slow to be run during the
254	course of 'make check'.  It takes more than 5 minutes on my slow
255	box here.  Rather, it can be run using 'make check-self-compare'.
256	I plan to run this before releases now.
257	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
258	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
259	* tests/data/test-annotate/test0.abi: Likewise.
260	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
261	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
262	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
263	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
264	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
265	Likewise.
266	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
267	Likewise.
268	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
269	Likewise.
270	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
271	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
272	Likewise.
273	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
274	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
275	Likewise.
276	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
277	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
278	Likewise.
279	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
280	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
281	* tests/data/test-read-dwarf/test0.abi: Likewise.
282	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
283	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
284	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
285	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
286	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
287	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
288	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
289	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
290	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
291	Likewise.
292	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
293	Likewise.
294	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
295	Likewise.
296	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
297	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
298	Likewise.
299	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
300	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
301	Likewise.
302	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
303	Likewise.
304	* tests/data/test-read-write/test6.xml: Likewise.
305
3062020-11-13  Dodji Seketeli <dodji@redhat.com>
307
308	Make sure to canonicalize all types but decl-only classes
309	* include/abg-fwd.h (is_declaration_only_class_or_union_type):
310	Declare new ...
311	* src/abg-ir.cc (is_declaration_only_class_or_union_type):
312	... function.
313	(clone_array): Add the cloned array subrange to
314	its scope so that it can later be canonicalized.
315	(synthesize_type_from_translation_unit)
316	(synthesize_function_type_from_translation_unit): Canonicalize the
317	synthesized types.
318	(hash_as_canonical_type_or_constant): Ensure that all types are
319	canonicalized.
320	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Remove
321	useless overload.
322	(build_ir_node_for_variadic_parameter_type)
323	(schedule_array_tree_for_late_canonicalization): Define new static
324	functions.
325	(maybe_strip_qualification): Schedule type canonicalization for
326	types cloned prior to editing.
327	(build_function_type): Use the new
328	build_ir_node_for_variadic_parameter_type.  It takes care of
329	canonicalizing variadic parameter types.
330	(build_function_decl): Canonicalize the function type that is
331	created here.
332	(build_ir_node_from_die): Use the overload of
333	maybe_canonicalize_type which canonicalizes class_or_union nodes
334	directly, rather than the one which handles DIE offsets.  The
335	latter was used as an optimization to reduce the size of the array
336	of types scheduled for canonicalization, as DIE offsets take less
337	space than pointers to IR types.  Now that we have DIE
338	de-duplication, my bet is that we can do away with the former.
339	And that also ensures that we miss no type for canonicalization
340	purposes.
341	* src/abg-reader.cc (build_array_type_def): Canonicalize the
342	subrange types of the array.
343	(build_type): Canonicalize all types.
344	* tests/data/test-annotate/libtest23.so.abi: Adjust.
345	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
346	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
347	* tests/data/test-annotate/test0.abi: Likewise.
348	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
349	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
350	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
351	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
352	Likewise.
353	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
354	Likewise.
355	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
356	Likewise.
357	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
358	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
359	Likewise.
360	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
361	Likewise.
362	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
363	Likewise.
364	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
365	Likewise.
366	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
367	Likewise.
368	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
369	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
370	Likewise.
371	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
372	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
373	Likewise.
374	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
375	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
376	* tests/data/test-read-dwarf/test0.abi: Likewise.
377	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
378	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
379	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
380	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
381	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
382	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
383	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
384	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
385	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
386	Likewise.
387	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
388	Likewise.
389	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
390	Likewise.
391	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
392	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
393	Likewise.
394	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
395
3962020-11-13  Dodji Seketeli <dodji@redhat.com>
397
398	ir: Add equality op to array_type_def::subrange_type::bound_value
399	* include/abg-ir.h
400	(array_type_def::subrange_type::bound_value::operator==): Declare
401	new ...
402	* src/abg-ir.cc
403	(array_type_def::subrange_type::bound_value::operator==):
404	... equality operator.
405
4062020-11-12  Dodji Seketeli <dodji@redhat.com>
407
408	writer: Sort decls and fix topological sorting for types
409	* include/abg-ir.h (scope_decl::get_sorted_member_decls): Declare
410	new member function.
411	* src/abg-ir.cc (struct decl_topo_comp): New sorting functor.
412	(type_topo_comp::operator()): Re-use the decl_topo_comp to sort
413	type declarations.
414	(scope_decl::priv::sorted_members_): Add new data member.
415	(scope_decl::get_sorted_member_decls): Define new member function.
416	* src/abg-writer.cc (write_translation_unit): Use the new
417	scope_decl::get_sorted_member_decls.
418	* tests/data/test-annotate/libtest23.so.abi: Adjust.
419	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
420	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
421	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
422	Likewise.
423	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
424	Likewise.
425	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
426	Likewise.
427	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
428	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
429	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
430	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
431	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
432	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
433	Likewise.
434	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
435	Likewise.
436	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
437	Likewise.
438	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
439	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
440	Likewise.
441	* tests/data/test-read-write/test2.xml: Likewise.
442	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
443	Likewise.
444	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
445	Likewise.
446
4472020-10-27  Dodji Seketeli <dodji@redhat.com>
448
449	Bug PR26739 - Handle qualified typedef array types
450	* include/abg-fwd.h (is_typedef_of_array, clone_array)
451	(clone_typedef, clone_qualified_type, clone_array_tree): Declare
452	new functions.
453	(peel_qualified_or_typedef_type): Declare new overload.
454	(is_array_of_qualified_element): Constify the parameter.
455	* include/abg-ir.h ({qualified_type,
456	typedef}_def::set_underlying_type): Add new member functions.
457	(array_type_def::subrange_type::subrange_type): Make constify the
458	reference to the underlying type parameter.
459	* src/abg-ir.cc (is_array_of_qualified_element): Constify the
460	parameter.
461	(peel_qualified_or_typedef_type): Define new
462	overload for type_base_sptr.
463	(clone_typedef_array_qualified_type): Define static function.
464	(clone_array clone_typedef, clone_qualified_type)
465	(clone_array_tree, is_typedef_of_array): Define new functions.
466	(qualified_type_def::get_underlying_type): Rename the return type
467	shared_ptr<type_base> into type_base_sptr.
468	({typedef, qualified_type}_def::set_underlying_type): Define new
469	member function.
470	(array_type_def::subrange_type::priv::priv): Initialize the
471	'infinite_' data member.
472	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Handle
473	qualified typedef of arrays.  Merge this with the handling of
474	qualified arrays.  Note that before editing the elements of the
475	array to make the array (or typedef) qualifier apply to the
476	element the sub-tree is cloned to make its type nodes be
477	'un-shared'.  This prevents us from editing type nodes that are
478	shared by other type expressions.
479	* tests/data/test-diff-filter/test-PR26739-report-0.txt: New
480	reference test output.
481	* tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Likewise.
482	* tests/data/test-diff-filter/test-PR26739-v{0,1}.c: Source code
483	of new binary test input.
484	* tests/data/test-diff-filter/test-PR26739-2-v{0,1}.c: Likewise.
485	* tests/data/test-diff-filter/test-PR26739-v{0,1}.o: New binary
486	test inputs.
487	* tests/data/test-diff-filter/test-PR26739-2-v{0,1}.o: Likewise.
488	* tests/data/Makefile.am: Add the new test material above to
489	source distribution.
490	* tests/test-diff-filter.cc (in_out_specs): Add the test inputs
491	above to this harness.
492	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
493	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
494	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
495	Likewise.
496	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
497	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
498	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
499	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
500	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
501	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
502	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
503	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
504
5052020-11-03  Dodji Seketeli <dodji@redhat.com>
506
507	Update test-libandroid.so.abi
508	* tests/data/test-read-dwarf/test-libandroid.so.abi: Update.
509
5102020-10-29  Matthias Maennich <maennich@google.com>
511
512	dwarf-reader: Ignore zero length location expressions from DW_AT_location
513	* src/abg-dwarf-reader.cc (die_location_expr): Ignore zero
514	length location expressions.
515	* tests/data/Makefile.am: Add new test files.
516	* tests/data/test-read-dwarf/test-libandroid.so: New test file.
517	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
518	* tests/test-read-dwarf.cc: Add new test case.
519	Reported-by: Dan Albert <danalbert@google.com>
520	Reviewed-by: Giuliano Procida <gprocida@google.com>
521	Cc: Mark Wielaard <mark@klomp.org>
522
5232020-10-29  Giuliano Procida <gprocida@google.com>
524
525	Improve enum synthetic type names
526	* src/abg-dwarf-reader.cc
527	(build_internal_underlying_enum_type_name): Add a size
528	argument (and don't default is_anonymous argument). Append
529	size of type to synthetic type name.
530	(build_enum_underlying_type): Pass type size to
531	build_internal_underlying_enum_type_name.
532	* tests/data/test-abidiff-exit/test-decl-enum-report-3.txt:
533	Update. Note that there may be an issue with leaf-mode
534	reporting of pointer type changes.
535	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
536	Regenerate this (catching up with various abidw updates).
537	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
538	Refresh with new type names.
539	* tests/data/test-annotate/test0.abi: Likewise.
540	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
541	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
542	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
543	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
544	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
545	Likewise.
546	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
547	Likewise.
548	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
549	Likewise.
550	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
551	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
552	Likewise.
553	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
554	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
555	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
556	Likewise.
557	* tests/data/test-read-dwarf/test0.abi: Likewise.
558	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
559	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
560	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
561	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
562	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
563	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
564	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
565	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
566	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
567	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
568	Likewise.
569	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
570	Likewise.
571	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
572	Likewise.
573	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
574	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
575	Likewise.
576	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
577
5782020-10-29  Giuliano Procida <gprocida@google.com>
579
580	Improve and stabilise sort of member functions
581	* src/abg-ir.cc
582	(virtual_member_function_less_than::operator()): Name
583	temporaries like offsets and symbols to reduce repetition;
584	test each pair of elements (including symbol presence) and
585	return immediately if there's a difference; add a comparison
586	of linkage name just after comparing symbol names.
587	(sort_virtual_member_functions): Use stable_sort instead of
588	sort.
589	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
590	Update with new ordering of member functions.
591	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
592	Likewise.
593
5942020-11-01  Dodji Seketeli <dodji@redhat.com>
595
596	update-test-output.py: Update syntax
597	* tests/update-test-output.py: Update syntax for python3.
598
5992020-10-31  Dodji Seketeli <dodji@redhat.com>
600
601	Bug 26770 - Spurious declaration-only-ness induces spurious type changes
602	* src/abg-dwarf-reader.cc (add_or_update_class_type): When
603	creating a class, set declaration-only-ness unconditionally.  When
604	updating the class however, only set the declaration-only-ness
605	when the current one is not consistent with the size of the class.
606	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
607	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
608	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
609	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
610	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
611	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
612	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
613
6142020-10-21  Matthias Maennich <maennich@google.com>
615
616	dwarf-reader: fix lookup for repeated translation unit paths
617	* src/abg-dwarf-reader.cc(build_translation_unit_and_add_to_ir):
618	Fix lookup for potentially already existing translation units.
619	Reported-by: Dan Albert <danalbert@google.com>
620
6212020-10-21  Giuliano Procida <gprocida@google.com>
622
623	Stabilise sort of canonical types
624	* src/abg-ir.cc (scope_decl::get_sorted_canonical_types): Sort
625	canonical types with std::stable_sort(..., type_topo_comp()).
626	Reviewed-by: Matthias Maennich <maennich@google.com>
627
6282020-10-27  Mark Wielaard <mark@klomp.org>
629
630	Assume subrange bounds types are unsigned if no underlying type is given.
631	* src/abg-dwarf-reader.cc (build_subrange_type): Default
632	is_signed to false.
633
6342020-10-23  Mark Wielaard <mark@klomp.org>
635
636	dwarf-reader: get subrange_type bounds signedness from underlying type
637	* src/abg-dwarf-reader.cc (die_attribute_has_form)
638	(die_attribute_is_signed, die_attribute_is_unsigned)
639	(die_attribute_has_no_signedness): Remove static functions.
640	(die_constant_attribute): Add the 'is_signed' parameter.
641	(die_address_attribute): Adjust comment.
642	(build_subrange_type): Determine signedness of the bounds by
643	looking at the DW_AT_encoding attribute of the underlying type.
644
6452020-10-23  Dodji Seketeli <dodji@redhat.com>
646
647	abg-tools-utils: Fix comment
648	* include/abg-tools-utils.h (enum abidiff_status): Fix a comment.
649
6502020-10-13  Dodji Seketeli <dodji@redhat.com>
651
652	configure: Support ABIGAIL_NO_OPTIMIZATION_DEBUG environment variable
653	* configure.ac: Set the CXXFLAGS and CFLAGS to "-g -O0 -Wall
654	-Wextra -Werror" if the ABIGAIL_NO_OPTIMIZATION_DEBUG is set.
655
6562020-10-13  Dodji Seketeli <dodji@redhat.com>
657
658	Structurally compare the few non-canonicalized types in general
659	* include/abg-fwd.h (hash_as_canonical_type_or_constant): Remove
660	public declaration of this function.
661	* src/abg-hash.cc (type_base::dynamic_hash::operator()): Add a
662	comment.
663	* src/abg-ir.cc (hash_as_canonical_type_or_constant): Make this
664	function static now.
665	(hash_type_or_decl): Use hash_type for types.
666	* src/abg-writer.cc (type_hasher::operator()): Use hash_type.
667
6682020-10-12  Dodji Seketeli <dodji@redhat.com>
669
670	Fix redundancy detection in the diff graph
671	* src/abg-comparison-priv.h
672	(diff_context::priv::last_visited_diff_node_): Remove unnecessary
673	data member.
674	(class_or_union_diff::priv::sorted_{deleted,inserted}_member_functions_):
675	Add new data members.
676	(sort_string_member_function_sptr_map): Declare new function.
677	* src/abg-comparison.cc (sort_string_member_function_sptr_map):
678	Define new function.
679	(redundancy_marking_visitor::visit_begin): If the current diff
680	node is equivalent to another one that has been already marked
681	redundant, then consider the current diff node as redundant as
682	well.  Considering the fact an ancestor node has been filtered out
683	is now useless because if that's the case then the current
684	descendant node wouldn't even be walked at reporting time.  So
685	remove the call to diff_has_ancestor_filtered_out.
686	(categorize_redundancy): Remove useless call here as well.
687	(diff_has_ancestor_filtered_out, diff_has_ancestor_filtered_out)
688	(diff_context::{mark_last_diff_visited_per_class_of_equivalence,
689	clear_last_diffs_visited_per_class_of_equivalence,
690	get_last_visited_diff_of_class_of_equivalence}): Remove
691	unnecessary functions.
692	(redundancy_marking_visitor::visit_end): Add comment.
693	(class_diff::ensure_lookup_tables_populated): Lexicographically
694	sort inserted/deleted member functions.
695	(class_or_union_diff::chain_into_hierarchy): Chain changed data
696	members diff nodes in a sorted manner.
697	* src/abg-default-reporter.cc (default_reporter::report): Report
698	deleted/inserted member functions in lexicographic order.
699	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
700	Adjust.
701	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
702	Likewise.
703	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt:
704	Likewise.
705	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
706	Likewise.
707	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
708	Likewise.
709
7102020-10-08  Dodji Seketeli <dodji@redhat.com>
711
712	Consider the implicit 'this' parameter when comparing methods
713	* include/abg-ir.h (function_type::get_first_parm): Declare new
714	accessor.
715	* src/abg-ir.cc (function_type::get_first_parm): Define new
716	accessor.
717	(equals): In the overload for function_type,
718	always take the implicit "this" parameter into account in
719	parameter comparisons.
720	(function_type::get_first_non_implicit_parm): Adjust comment.
721	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
722	Avoid potential NULL pointer dereferencing.
723	* src/abg-comparison.cc
724	(function_type_diff::ensure_lookup_tables_populated): Always take
725	the changes to the implicit 'this' parameter into account in the
726	function type diff.
727	(compute_diff): In the overload for function_type, Always compare
728	the implicit 'this' parameter when comparing function parameters.
729	* src/abg-default-reporter.cc (default_reporter::report): Refer to
730	"implicit parameter" when reporting changes on parameters
731	artificially generated by the compiler.
732	* src/abg-suppression.cc (type_suppression::suppresses_diff): Make
733	the 'access_through' predicate work on a qualified version of type
734	'S', even if it was meant to work on type 'S'.  This allows it to
735	work on 'const S', especially when S is accessed through 'pointer
736	to const S', which happens when we consider the implicit 'this'
737	parameter of a const member function.
738	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust.
739	* tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise.
740	* tests/data/test-abidiff-exit/test1-voffset-change-report0.txt:
741	Likewise.
742	* tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
743	* tests/data/test-abidiff/test-struct1-report.txt: Likewise.
744	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
745	Likewise.
746	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
747	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise.
748	* tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt: Likewise.
749	* tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt: Likewise.
750	* tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt: Likewise.
751	* tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: Likewise.
752	* tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: Likewise.
753	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
754	* tests/data/test-diff-dwarf/test5-report.txt: Likewise.
755	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
756	* tests/data/test-diff-filter/test0-report.txt: Likewise.
757	* tests/data/test-diff-filter/test01-report.txt: Likewise.
758	* tests/data/test-diff-filter/test10-report.txt: Likewise.
759	* tests/data/test-diff-filter/test13-report.txt: Likewise.
760	* tests/data/test-diff-filter/test2-report.txt: Likewise.
761	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt:
762	Likewise.
763	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt:
764	Likewise.
765	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
766	Likewise.
767	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
768	Likewise.
769	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
770	Likewise.
771	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
772	Likewise.
773	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
774	Likewise.
775	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
776	Likewise.
777	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
778	Likewise.
779	* tests/data/test-diff-filter/test4-report.txt: Likewise.
780	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
781	* tests/data/test-diff-filter/test9-report.txt: Likewise.
782	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt:
783	Likewise.
784	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
785	Likewise.
786	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
787	Likewise.
788	* tests/data/test-diff-suppr/test24-soname-report-0.txt: Likewise.
789	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise.
790	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise.
791	* tests/data/test-diff-suppr/test24-soname-report-11.txt: Likewise.
792	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
793	* tests/data/test-diff-suppr/test24-soname-report-13.txt: Likewise.
794	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
795	* tests/data/test-diff-suppr/test24-soname-report-15.txt: Likewise.
796	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
797	* tests/data/test-diff-suppr/test24-soname-report-2.txt: Likewise.
798	* tests/data/test-diff-suppr/test24-soname-report-3.txt: Likewise.
799	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise.
800	* tests/data/test-diff-suppr/test24-soname-report-5.txt: Likewise.
801	* tests/data/test-diff-suppr/test24-soname-report-6.txt: Likewise.
802	* tests/data/test-diff-suppr/test24-soname-report-7.txt: Likewise.
803	* tests/data/test-diff-suppr/test24-soname-report-8.txt: Likewise.
804	* tests/data/test-diff-suppr/test24-soname-report-9.txt: Likewise.
805	* tests/data/test-diff-suppr/test31-report-1.txt: Likewise.
806	* tests/data/test-diff-suppr/test33-report-0.txt: Likewise.
807
8082020-08-17  Giuliano Procida <gprocida@google.com>
809
810	Fix two wrongs in test suppression regex
811	* tests/data/test-diff-suppr/test38-char-class-in-ini.abignore:
812	Don't anchor regex match to beginning of file name.
813	Change "filename_regexp" to "file_name_regexp".
814
8152020-08-17  Giuliano Procida <gprocida@google.com>
816
817	Add missing newlines to end of test files.
818	* tests/data/test-diff-suppr/test0-type-suppr-2.suppr: Add
819	final new line.
820	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-4.suppr:
821	Likewise.
822	* tests/data/test-diff-suppr/test23-alias-filter-0.suppr:
823	Likewise.
824	* tests/data/test-diff-suppr/test23-alias-filter-4.suppr:
825	Likewise.
826	* tests/data/test-diff-suppr/test28-add-aliased-function-1.suppr:
827	Likewise.
828	* tests/data/test-diff-suppr/test28-add-aliased-function-2.suppr:
829	Likewise.
830	* tests/data/test-diff-suppr/test28-add-aliased-function-3.suppr:
831	Likewise.
832	* tests/data/test-diff-suppr/test28-add-aliased-function-4.suppr:
833	Likewise.
834	* tests/data/test-diff-suppr/test41-enumerator-changes-0.suppr:
835	Likewise.
836	* tests/data/test-diff-suppr/test7-var-suppr-7.suppr:
837	Likewise.
838	* tests/data/test-ini/test01-equal-in-property-string.abignore:
839	Likewise.
840
8412020-09-18  Giuliano Procida <gprocida@google.com>
842
843	abg-corpus.cc: report architecture discrepancies
844	* src/abg-corpus.cc (corpus_group::add_corpus): Report
845	architecture discrepancies.
846
8472020-09-16  Dodji Seketeli <dodji@redhat.com>
848
849	Bug 26568 - Union should support more than one anonymous member
850	* src/abg-dwarf-reader.cc (add_or_update_union_type): Don't use
851	the empty name of anonymous members in the lookup to ensure that
852	all data members are unique.  Rather, use the whole anonymous
853	member itself for the lookup, just like is done to handle
854	anonymous data member in classes/structs.
855	* src/abg-reader.cc (build_union_decl): Likewise.
856	* src/abg-ir.cc (get_generic_anonymous_internal_type_name): Define
857	new static function.
858	(get_type_name): For internal purposes, make the type name of all
859	anonymous types of a given kind to be the same.  This allows the
860	internal representation of anonymous types which are based on type
861	names to all be the same, so that they can be compared among
862	themselves during type canonicalization.
863	* tests/data/test-read-dwarf/test-PR26568-{1,2}.c: Source code of
864	binary test input.
865	* tests/data/test-read-dwarf/test-PR26568-{1,2}.o: New binary test input.
866	* tests/data/test-read-dwarf/test-PR26568-{1,2}.o.abi: New
867	reference test ouput.
868	* tests/data/Makefile.am: Add the new test material above to
869	source distribution.
870	* tests/test-read-dwarf.cc (in_out_specs): Add the new binary test
871	input above to this test harness.
872	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: Adjust.
873	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
874	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
875
8762020-09-02  Dodji Seketeli <dodji@redhat.com>
877
878	Make abidiff and abidw support several --headers-dir{1,2} options
879	* doc/manuals/abidiff.rst: Update documentation for the
880	--headers-dir{1,2} options.
881	* doc/manuals/abidw.rst: Likewise for the --header-dir option.
882	* include/abg-tools-utils.h (gen_suppr_spec_from_headers): Add new
883	overload that takes a vector of headers root dirs.
884	* src/abg-tools-utils.cc (gen_suppr_spec_from_headers_root_dir):
885	Define new function.
886	(gen_suppr_spec_from_headers): Define a new overload that takes a
887	vector of head_root_dir strings; it uses the new
888	gen_suppr_spec_from_headers function.  Use the new overload in the
889	previous one that takes just one head_root_dir string.
890	* tools/abidiff.cc (options::headers_dirs{1,2}): Rename
891	option::headers_dir{1,2} into this one and make it be a vector of
892	strings rather than just a string.
893	(parse_command_line): Support several --headers-dir{1,2} on the
894	command line.
895	(set_diff_context_from_opts, set_suppressions): Adjust.
896	* tools/abidw.cc (options::headers_dirs): Renamed
897	options::headers_dir into this and make it be a vector of strings
898	rather than just a string.
899	(parse_command_line): Support several --headers-dir on the command
900	line.
901	(set_suppressions): Adjust.
902	* tests/data/test-abidiff-exit/test-headers-dirs/headers-a/header-a-v{0,1}.h:
903	Header files of new binary test input.
904	* tests/data/test-abidiff-exit/test-headers-dirs/headers-b/header-b-v{0,1}.h:
905	Likewise.
906	* tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-v{0,1}.c:
907	Source code of new binary test input.
908	* tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-{1,2}.txt:
909	Reference output of new binary test input.
910	* tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-v{0,1}.o:
911	New binary test input.
912	* tests/data/Makefile.am: Add the new files above to source
913	distribution.
914	* tests/test-abidiff-exit.cc (InOutSpec::in_elfv{0,1}_path): Add
915	new data members.
916	(in_out_specs): Adjust the content of this array as its type
917	changed.  Also, add two new entries to run the test over the new
918	binary test inputs above.
919	(do_prefix_strings): Define new static function.
920	(main): Use it the new do_prefix_strings here.  Make abidiff
921	use the --header-dir{1,2} option whenever header directories are
922	specified in an entry of the in_out_specs array.
923
9242020-09-14  Dodji Seketeli <dodji@redhat.com>
925
926	Bug 26309 - Wrong leaf reporting of changes to typedef underlying type
927	* src/abg-ir.cc (equals): In the overload for typedef_decls,
928	report changes to the underlying type as being local of kind
929	LOCAL_TYPE_CHANGE_KIND.
930	* src/abg-comparison.cc
931	(leaf_diff_node_marker_visitor::visit_begin): Do not mark typedef
932	diff node as leaf node.
933	(suppression_categorization_visitor::visit_end): Propagate the
934	'suppressed' category of the underlying type to the parent typedef
935	unless the later has a local non-type change.
936	(redundancy_marking_visitor::visit_end): Likewise for the
937	'redundant' category.
938	* include/abg-reporter.h (report_non_type_typedef_changes): Rename ...
939	* src/abg-default-reporter.cc (report_non_type_typedef_changes):
940	... report_local_typedef_changes into this.
941	* src/abg-leaf-reporter.cc (leaf_reporter::report): Make the leaf
942	reporter invoke the reporting method of the default reporter for
943	typedefs as all typedef changes are now local.
944	* tests/data/test-diff-filter/test-PR26309-report-0.txt: Add new
945	test reference output.
946	* tests/data/test-diff-filter/test-PR26309-v{0,1}.o: Add new test
947	binary input.
948	* tests/data/test-diff-filter/test-PR26309-v{0,1}.c: Add source
949	code for new test binary input.
950	* tests/data/Makefile.am: Add the new text material above to
951	source distribution.
952	* tests/test-diff-filter.cc (in_out_specs): Add the new test input
953	above to this test harness.
954	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Adjust.
955
9562020-09-14  Dodji Seketeli <dodji@redhat.com>
957
958	Fix thinko in get_vmlinux_path_from_kernel_dist
959	* src/abg-tools-utils.cc (get_vmlinux_path_from_kernel_dist): Fix
960	thinko.
961
9622020-09-08  Dodji Seketeli <dodji@redhat.com>
963
964	writer: Avoid using dynamic hashing in type maps
965	* include/abg-fwd.h (hash_as_canonical_type_or_constant): Declare ...
966	* src/abg-ir.cc (hash_as_canonical_type_or_constant): ... new
967	function.
968	* src/abg-writer.cc (type_hasher::operator()): Use the new
969	hash_as_canonical_type_or_constant.
970	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
971
9722020-09-08  Dodji Seketeli <dodji@redhat.com>
973
974	Use flat representation to canonicalize anonymous classes and unions
975	* src/abg-ir.cc ({class, union}_decl::get_pretty_representation):
976	Use the flat representation of the class or union even for
977	internal purposes.
978	* tests/data/test-annotate/libtest23.so.abi: Adjust.
979	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise.
980	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
981	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
982	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
983	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
984	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
985	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
986	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
987	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
988
9892020-07-24  Giuliano Procida <gprocida@google.com>
990
991	DWARF: track chained DIE declaration-only status
992	* src/abg-dwarf-reader.cc (add_or_update_class_type): Add an
993	is_declaration_only argument. Use this in favour of the
994	die_is_declaration_only helper function.
995	(add_or_update_union_type): Ditto.
996	(function_is_suppressed): Ditto.
997	(build_or_get_fn_decl_if_not_suppressed): Ditto.
998	(build_enum_type): Ditto.
999	(build_ir_node_from_die): To the main overload, add
1000	is_declaration_only argument and default this to true.
1001	Update this to false if the given DIE is not declaration
1002	only and pass this on in recusrive calls and calls to
1003	build_enum_type, add_or_update_union_type,
1004	add_or_update_class_type and
1005	build_or_get_fn_decl_if_not_suppressed.
1006	* tests/data/test-annotate/test17-pr19027.so.abi: Update
1007	test. This is mostly the removal of is-declaration-only
1008	attributes, removal of unreachable parts of the type graph and
1009	type id renumbering.
1010	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1011	Likewise.
1012	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1013	Likewise.
1014	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1015	Likewise.
1016	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
1017	Likewise.
1018	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
1019	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1020	Likewise.
1021	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1022	Likewise.
1023	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1024	Likewise.
1025
10262020-07-24  Giuliano Procida <gprocida@google.com>
1027
1028	DWARF: look up DW_AT_declaration non-recursively
1029	* src/abg-dwarf-reader.cc (die_die_attribute): Rename
1030	'look_thru_abstract_origin' argument to 'recursively' and
1031	mention DW_AT_specification in its doc comment. Remove stale
1032	comment for non-existent argument. Simplify code with the help
1033	of the ternary operator.  (die_flag_attribute): Add
1034	recursively argument, defaulted to true. If this is false,
1035	look for attribute using dwarf_attr rather than
1036	dwarf_attr_integrate.  (die_is_declaration_only): Call
1037	die_flag_attribute specifying non-recursive attribute search.
1038	* tests/data/test-annotate/test15-pr18892.so.abi: Update
1039	tests. This is mostly the removal of unreachable parts of the type
1040	graph and type id renumbering.
1041	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1042	Likewise.
1043	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1044	Likewise.
1045	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
1046	Likewise.
1047	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
1048	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1049	Likewise.
1050	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1051	Likewise.
1052	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1053	Likewise.
1054
10552020-07-24  Giuliano Procida <gprocida@google.com>
1056
1057	Improve documentation of abidiff --type-id-style
1058	* tools/abidw.cc (display_usage): In documentation of
1059	"--type-id-style" option, add a missing closing ')', spell
1060	"type id" without a '-', split overly long string over two
1061	lines, use "<...>" to indicate mandatory argument and improve
1062	description of formats.
1063	* doc/manuals/abidw.rst: In documentation of "--type-id-style"
1064	option, use "<...>" to indicate mandatory argument.
1065
10662020-07-23  Giuliano Procida <gprocida@google.com>
1067
1068	Fix maybe_report_data_members_replaced_by_anon_dm
1069	* src/abg-reporter-priv.cc
1070	(maybe_report_data_members_replaced_by_anon_dm): Move
1071	declarations of anonymous_data_member and
1072	dms_replaced_by_same_anon_dm into inner loop. Use
1073	anonymous_data_member for testing and reporting, allowing
1074	iterators i and j to be replaced by just iterator i. Push
1075	first decl onto dms_replaced_by_same_anon_dm unconditionally
1076	and move control flow logic into loop condition.
1077	* tests/data/Makefile.am: Add new test cases.
1078	* tests/data/test-diff-filter/test-PR25661-7-report-1.txt: New
1079	test case file.
1080	* tests/data/test-diff-filter/test-PR25661-7-report-2.txt:
1081	Likewise.
1082	* tests/data/test-diff-filter/test-PR25661-7-report-3.txt:
1083	Likewise.
1084	* tests/data/test-diff-filter/test-PR25661-7-report-4.txt:
1085	Likewise.
1086	* tests/data/test-diff-filter/test-PR25661-7-v0.c: Likewise.
1087	* tests/data/test-diff-filter/test-PR25661-7-v0.o: Likewise.
1088	* tests/data/test-diff-filter/test-PR25661-7-v1.c: Likewise.
1089	* tests/data/test-diff-filter/test-PR25661-7-v1.o: Likewise.
1090	* tests/test-diff-filter.cc: Call new test cases.
1091
10922020-07-22  Giuliano Procida <gprocida@google.com>
1093
1094	Fix decl_base comparison function
1095	* src/abg-ir.cc (equals): In the decl_base overload, note that
1096	the value returned by decl_names_equal should be negated and
1097	replace decls_are_different with decls_are_same, negating all
1098	occurrences.
1099	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
1100	Update tests, removing some spurious anonymous union name change.
1101	* tests/data/test-diff-filter/test33-report-0.txt: Diff now
1102	completely empty.
1103	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt:
1104	3 functions previously considered to have harmless changes are
1105	now deemed to have no changes.
1106	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
1107	1 struct RedStore data member previously considered to have
1108	harmless changes is now deemed to have no changes.
1109	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
1110	One instance of an anonymous struct removed and a typedef
1111	repointed at another existing instance; many type ids
1112	renumbered.
1113
11142020-07-22  Giuliano Procida <gprocida@google.com>
1115
1116	Make decl_names_equal more accurate
1117	* src/abg-tools-utils.cc (decl_names_equal): Move {l,r}_pos2
1118	declarations into the loop and make {l,r}_length const. Avoid
1119	chance of arithmetic on string::npos values. Rework
1120	logic so there is a single test for "names compare equal" and
1121	a single test for different numbers of name components.
1122	* tests/test-tools-utils.cc (main): Add nine more tests.
1123
11242020-07-30  Dodji Seketeli <dodji@redhat.com>
1125
1126	Bug 26261 - Fix logic for canonicalizing DW_TAG_subroutine_type DIEs
1127	* src/abg-dwarf-reader.cc (compare_dies): Get out early if we are
1128	are in the middle of a potential recursive comparison of function
1129	types.  Likewise if we detect that the two function types have
1130	different textual representations, linkage names, or have a the
1131	same textual representation, linkage names and are defined in the
1132	same translation unit.
1133	* tests/data/test-read-dwarf/PR26261/PR26261-exe: New test binary
1134	input file.
1135	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: New
1136	reference test output file.
1137	* tests/data/test-read-dwarf/PR26261/PR26261-main.c: Source code
1138	of the binary above.
1139	* tests/data/test-read-dwarf/PR26261/PR26261-obj{a,b}.{c,h}:
1140	Likewise.
1141	* tests/data/test-read-dwarf/PR26261/Makefile: Makefile to
1142	build the exe out of the source files.
1143	* tests/data/Makefile.am: Add the new test input files to source
1144	distribution.
1145	* tests/test-read-dwarf.cc (in_out_spec): Add the binary test
1146	input above to the test harness.
1147
11482020-07-29  Dodji Seketeli <dodji@redhat.com>
1149
1150	dwarf-reader: re-indent a block of code
1151	* src/abg-dwarf-reader.cc (compare_dies): Properly indent a
1152	sub-block of the big switch case statement in there.
1153
11542020-07-17  Giuliano Procida <gprocida@google.com>
1155
1156	abg-ir.cc: Remove duplicated line of code
1157	* src/abg-ir.cc (decl_base::set_definition_of_declaration):
1158	Remove duplicated assignment statement.
1159
11602020-07-16  Giuliano Procida <gprocida@google.com>
1161
1162	abg-writer.cc: Fix indentation of XML output
1163	* src/abg-writer.cc (write_canonical_types_of_scope): Do not
1164	add additional indentation. (write_translation_unit): Pass
1165	additional indentation to write_canonical_types_of_scope.
1166	(write_class_decl): Ensure optional annotations of base
1167	classes have the same indentation as the base classes
1168	themselves.
1169	* tests/data/test-annotate/libtest23.so.abi: Fix indentation.
1170	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Ditto.
1171	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Ditto.
1172	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
1173	Ditto.
1174	* tests/data/test-annotate/test1.abi: Ditto.
1175	* tests/data/test-annotate/test14-pr18893.so.abi: Ditto.
1176	* tests/data/test-annotate/test15-pr18892.so.abi: Ditto.
1177	* tests/data/test-annotate/test17-pr19027.so.abi: Ditto.
1178	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1179	Ditto.
1180	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1181	Ditto.
1182	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1183	Ditto.
1184	* tests/data/test-annotate/test21-pr19092.so.abi: Ditto.
1185	* tests/data/test-diff-suppr/test45-abi-wl.xml: Ditto.
1186	* tests/data/test-diff-suppr/test45-abi.xml: Ditto.
1187	* tests/data/test-diff-suppr/test46-PR25128-base.xml: Ditto.
1188	* tests/data/test-diff-suppr/test46-PR25128-new.xml: Ditto.
1189	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
1190	Ditto.
1191	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Ditto.
1192	* tests/data/test-read-dwarf/libtest23.so.abi: Ditto.
1193	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
1194	Ditto.
1195	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Ditto.
1196	* tests/data/test-read-dwarf/test1.abi: Ditto.
1197	* tests/data/test-read-dwarf/test1.hash.abi: Ditto.
1198	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Ditto.
1199	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Ditto.
1200	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Ditto.
1201	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Ditto.
1202	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Ditto.
1203	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Ditto.
1204	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto.
1205	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1206	Ditto.
1207	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1208	Ditto.
1209	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1210	Ditto.
1211	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Ditto.
1212	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1213	Ditto.
1214	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Ditto.
1215	* tests/data/test-read-write/test10.xml: Ditto.
1216	* tests/data/test-read-write/test15.xml: Ditto.
1217	* tests/data/test-read-write/test21.xml: Ditto.
1218	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
1219	Ditto.
1220	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
1221	Ditto.
1222
12232020-07-16  Giuliano Procida <gprocida@google.com>
1224
1225	Remove ABI XML test data file blank lines
1226	* tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Remove
1227	blank lines.
1228	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
1229	Ditto.
1230	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
1231	Ditto.
1232	* tests/data/test-diff-suppr/test45-abi-wl.xml: Ditto.
1233	* tests/data/test-diff-suppr/test45-abi.xml: Ditto.
1234	* tests/data/test-diff-suppr/test46-PR25128-base.xml: Ditto.
1235	* tests/data/test-diff-suppr/test46-PR25128-new.xml: Ditto.
1236
12372020-07-15  Giuliano Procida <gprocida@google.com>
1238
1239	abg-ir.cc: Fix incorrect pop of compared types.
1240	* src/abg-ir.cc (equals): In the class_or_union overload,
1241	replace one instance of RETURN(false) with return false.
1242
12432020-07-09  Giuliano Procida <gprocida@google.com>
1244
1245	Enable Clang's -Werror-overloaded-virtual.
1246	* configure.ac: Remove the special clause that disabled
1247	-Werror-overloaded-virtual for Clang builds.
1248
12492020-07-09  Giuliano Procida <gprocida@google.com>
1250
1251	Fix inheritance of scope_decl::insert_member_decl
1252	* include/abg-ir.h (scope_decl::insert_member_decl): Change
1253	type of member argument from const decl_base_sptr& to plain
1254	decl_base_sptr.
1255	* src/abg-ir.cc (scope_decl::insert_member_decl): Likewise.
1256
12572020-07-27  Dodji Seketeli <dodji@redhat.com>
1258
1259	Pimpl-ify traversable_base and remove its unused traverse method
1260	* include/abg-traverse.h (traversable_base::priv): Declare new type.
1261	(traverse_base::priv_sptr): Add pointer to private data
1262	member.
1263	(traverse_base::visiting_): Move this data member definition into
1264	traverse_base::priv.
1265	(traverse_base::{visiting, traverse_base, ~traverse_base}): Move
1266	definitions out-of-oline.
1267	(traverse_base::traverse): Comment out.
1268	* src/abg-traverse.cc (struct traversable_base::priv): Define new
1269	type.
1270	(traversable_base::{traversable_base, ~traversable_base, traverse,
1271	visiting}): Move these previous inline definitions here.
1272
12732020-07-09  Giuliano Procida <gprocida@google.com>
1274
1275	Simplify peel_typedef_pointer_or_reference_type
1276	* include/abg-fwd.h (peel_qualified_or_typedef_type): Remove
1277	second argument in declarations of both overloads.
1278	* src/abg-comp-filter.cc (is_mostly_distinct_diff): Remove
1279	second argument to peel_qualified_or_typedef_type.
1280	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Likewise.
1281	* src/abg-ir.cc (peel_qualified_or_typedef_type): In both
1282	overloads, remove second argument peel_qual_type, simplify
1283	code with the assumption it was always false and remove
1284	incomplete array type peeling logic. In type_base_sptr
1285	overload, remove stray space.
1286
12872020-07-09  Giuliano Procida <gprocida@google.com>
1288
1289	Remove unused is_reference_or_pointer_diff.
1290	* include/abg-comparison.h (is_reference_or_pointer_diff):
1291	Drop function declaration.
1292	* src/abg-comparison.cc (is_reference_or_pointer_diff): Drop
1293	function definition.
1294
12952020-07-09  Giuliano Procida <gprocida@google.com>
1296
1297	abg-comparison.h: Remove stray declaration
1298	* include/abg-comparison
1299	(is_reference_or_pointer_diff_to_non_basic_distinct_types):
1300	Remove stray declaration.
1301
13022020-07-08  Giuliano Procida <gprocida@google.com>
1303
1304	abg-ir.cc: Refactor operator== methods with helper function
1305	* src/abg-ir.cc (try_canonical_compare): New template function.
1306	(type_decl::operator==): Use it here.
1307	(scope_type_decl::operator==): Likewise.
1308	(qualified_type_def::operator==): Likewise.
1309	(pointer_type_def::operator==): Likewise.
1310	(reference_type_def::operator==): Likewise.
1311	(array_type_def::subrange_type::operator==): Likewise.
1312	(array_type_def::operator==): Likewise.
1313	(enum_type_decl::operator==): Likewise.
1314	(typedef_decl::operator==): Likewise.
1315	(function_type::operator==): Likewise.
1316	(class_or_union::operator==): Likewise.
1317	(class_decl::operator==): Likewise.
1318	(union_decl::operator==): Likewise.
1319
13202020-07-01  Giuliano Procida <gprocida@google.com>
1321
1322	abg-comparison.cc: Tidy some corpus_diff code
1323	* src/abg-comparison.cc (corpus_diff::priv::emit_diff_stats):
1324	Adjust code whitespace; rename the second instance of
1325	total_nb_variable_changes to
1326	total_nb_unreachable_type_changes.
1327	(corpus_diff::has_incompatible_changes): Fix comment typo.
1328
13292020-07-06  Giuliano Procida <gprocida@google.com>
1330
1331	Fix --type-id-style hash for empty internal names.
1332	* src/abg-writer.cc (write_context::get_id_for_type): When
1333	hashing internal type names, convert to std::string rather
1334	than using the raw method directly as this will avoid a null
1335	pointer dereference in the case of an empty string; tabify
1336	code indentation.
1337
13382020-07-08  Giuliano Procida <gprocida@google.com>
1339
1340	abg-ir.cc: Tidy some operator== definitions
1341	* src/abg-irc.cc (scope_type_decl::operator==): Compare naked
1342	canonical type pointers instead of the shared pointers.
1343	(qualified_type_def::operator==): Remove excess blank line.
1344	(function_type::operator==): Do dynamic_cast and check of
1345	argument before comparing naked canonical type pointers.
1346	(class_or_union::operator==): Eliminate temporary reference.
1347	(class_decl::operator==): Likewise.
1348	(union_decl::operator==): Likewise.
1349
13502020-07-17  Giuliano Procida <gprocida@google.com>
1351
1352	Fix corpus_diff::has_net_changes for --leaf-changes-only mode
1353	* include/abg-reporter.h ({reporter_base, default_reporter,
1354	leaf_reporter}::diff_has_net_changes): Add new virtual function.
1355	This breaks binary compatibility but should conserve source
1356	compatibility.
1357	* src/abg-default-reporter.cc
1358	(default_reporter::diff_has_net_changes): Define new member
1359	function.
1360	* src/abg-leaf-reporter.cc (leaf_reporter::diff_has_net_changes):
1361	Likewise.
1362	* src/abg-comparison.cc (corpus_diff::has_net_changes): Invoke
1363	reporter_base::diff_has_net_changes on the current reporter,
1364	rather than trying to handle all the different kinds of reporters
1365	here.
1366	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Add a
1367	TODO to possibly delegate the implementation of this function to
1368	the reporters.
1369	* tests/data/Makefile.am: Add new test case files.
1370	* tests/data/test-abidiff-exit/test-net-change-report0.txt:
1371	Normal mode, nothing suppressed.
1372	* tests/data/test-abidiff-exit/test-net-change-report1.txt:
1373	Normal mode, everything suppressed.
1374	* tests/data/test-abidiff-exit/test-net-change-report2.txt:
1375	Leaf mode, nothing suppressed.
1376	* tests/data/test-abidiff-exit/test-net-change-report3.txt:
1377	Leaf mode, everything suppressions.
1378	* tests/data/test-abidiff-exit/test-net-change-v0.c: Test file
1379	* tests/data/test-abidiff-exit/test-net-change-v0.o: Test file
1380	* tests/data/test-abidiff-exit/test-net-change-v1.c: Test file
1381	* tests/data/test-abidiff-exit/test-net-change-v1.o: Test file
1382	* tests/data/test-abidiff-exit/test-net-change.abignore: This
1383	suppresses changes for all variables, functions and types in
1384	the test files, except for the 'victim' function.
1385	* tests/test-abidiff-exit.cc: Run new test cases.
1386	Reviewed-by: Matthias Maennich <maennich@google.com>
1387
13882020-07-01  Giuliano Procida <gprocida@google.com>
1389
1390	reporter: Fix report whitespace typos.
1391	* src/abg-reporter-priv.cc (represent): Add missing space to
1392	string split across two lines in certain anonymous data member
1393	diffs.
1394	* src/abg-default-reporter.cc (report): In the array_diff
1395	overload, eliminate trailing space at end of line.
1396	* tests/data/test-diff-dwarf/test10-report.txt: Delete
1397	trailing whitespace.
1398	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
1399	Ditto.
1400	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt:
1401	Ditto.
1402	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
1403	Ditto.
1404	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
1405	Ditto.
1406	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
1407	Ditto.
1408
14092020-07-09  Giuliano Procida <gprocida@google.com>
1410
1411	abg-writer.cc: Clean up new line emission.
1412	* src/abg-writer.cc (annotate): In the
1413	function_decl::parameter_sptr overload, fix code whitespace.
1414	(write_decl_in_scope): Remove wrote_context state variable and
1415	associated logic; emit new line unconditionally after end of
1416	XML tags and nowhere else.
1417	(write_canonical_types_of_scope): Emit new line after end of
1418	XML comment and nowhere else.
1419	(write_translation_unit): Emit new line after end of XML tags
1420	and nowhere else.
1421	(write_type_decl): Likewise.
1422	(write_namespace_decl): Likewise.
1423	(write_qualified_type_def): Emit new line after end of XML tag.
1424	(write_pointer_type_def): Likewise.
1425	(write_reference_type_def): Likewise.
1426	(write_array_type_def): Emit new line after end of XML tags
1427	and nowhere else.
1428	(write_enum_type_decl): Emit new line after end of XML tag.
1429	(write_elf_symbol): Likewise.
1430	(write_elf_symbols_table): Emit no new lines.
1431	(write_elf_needed): Emit new line unconditionally after end of
1432	XML tags.
1433	(write_typedef_decl): Emit new line after end of XML tag.
1434	(write_var_decl): Emit new line after end of XML tag.
1435	(write_function_decl): Likewise.
1436	(write_function_type): Fold two output statements into
1437	one; emit new line after end of XML tag.
1438	(write_class_decl_opening_tag): Emit new line unconditionally
1439	after end of XML tags and simplify empty element tag logic.
1440	(write_union_decl_opening_tag): Likewise.
1441	(write_class_decl): Emit new line after end of XML tag and
1442	nowhere else.
1443	(write_union_decl): Likewise.
1444	(write_member_type_opening_tag): Emit new line after end of
1445	XML tag.
1446	(write_member_type): Emit new lines only after XML tags.
1447	(write_type_tparameter): Emit new line after XML tag.
1448	(write_non_type_tparameter): Likewise.
1449	(write_template_tparameter): Emit new line after XML tag and
1450	nowhere else.
1451	(write_type_composition): Likewise.
1452	(write_template_parameters): Emit no new lines.
1453	(write_function_tdecl): Emit new line after XML tag and
1454	nowhere else.
1455	(write_class_tdecl): Likewise.
1456	(write_corpus): Emit new lines only after XML tags.
1457	(dump): In the decl_base_sptr overload, don't emit final new
1458	line as this is now done by write_decl. In the var_decl_sptr
1459	overload, don't emit final new line (mistakenly done to cerr
1460	instead of o) as this is now done by write_var_decl. In the
1461	translation_unit overload, don't emit final new line as this
1462	doubles that emitted by write_translation_unit.
1463	* tests/data/test-annotate/libtest23.so.abi: Delete all blank
1464	lines.
1465	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Ditto.
1466	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Ditto.
1467	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
1468	Ditto.
1469	* tests/data/test-annotate/test1.abi: Ditto.
1470	* tests/data/test-annotate/test13-pr18894.so.abi: Ditto.
1471	* tests/data/test-annotate/test14-pr18893.so.abi: Ditto.
1472	* tests/data/test-annotate/test15-pr18892.so.abi: Ditto.
1473	* tests/data/test-annotate/test17-pr19027.so.abi: Ditto.
1474	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1475	Ditto.
1476	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1477	Ditto.
1478	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1479	Ditto.
1480	* tests/data/test-annotate/test21-pr19092.so.abi: Ditto.
1481	* tests/data/test-annotate/test7.so.abi: Ditto.
1482	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
1483	Ditto.
1484	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Ditto.
1485	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Ditto.
1486	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
1487	Ditto.
1488	* tests/data/test-read-dwarf/libtest23.so.abi: Ditto.
1489	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
1490	Ditto.
1491	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Ditto.
1492	* tests/data/test-read-dwarf/test1.abi: Ditto.
1493	* tests/data/test-read-dwarf/test1.hash.abi: Ditto.
1494	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Ditto.
1495	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Ditto.
1496	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Ditto.
1497	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Ditto.
1498	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Ditto.
1499	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Ditto.
1500	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Ditto.
1501	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto.
1502	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1503	Ditto.
1504	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1505	Ditto.
1506	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1507	Ditto.
1508	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Ditto.
1509	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1510	Ditto.
1511	* tests/data/test-read-dwarf/test7.so.abi: Ditto.
1512	* tests/data/test-read-dwarf/test7.so.hash.abi: Ditto.
1513	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
1514	Ditto.
1515	* tests/data/test-read-write/test10.xml: Ditto.
1516	* tests/data/test-read-write/test15.xml: Ditto.
1517	* tests/data/test-read-write/test21.xml: Ditto.
1518	* tests/data/test-read-write/test25.xml: Ditto.
1519	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
1520	Ditto.
1521	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
1522	Ditto.
1523
15242020-07-09  Dodji Seketeli <dodji@redhat.com>
1525
1526	reader: Remove useless support for WIP types
1527	* src/abg-reader.cc (read_context::m_wip_types_map): Remove data
1528	member.
1529	(read_context::{clear_wip_classes_map, mark_type_as_wip,
1530	unmark_type_as_wip, is_wip_type}): Remove member functions.
1531	(read_context::maybe_canonicalize_type): Remove use of
1532	is_wip_type.
1533
15342020-06-19  Giuliano Procida <gprocida@google.com>
1535
1536	Use pointers not strings in type graph comparison.
1537	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
1538	Update.
1539	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt:
1540	Update.
1541	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
1542	Update.
1543	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
1544	Update.
1545
15462020-06-10  Giuliano Procida <gprocida@google.com>
1547
1548	Add tests for declaration-only enums.
1549	* tests/data/test-abidiff-exit/test-decl-enum-report-2.txt: Add
1550	new test reference output.
1551	* tests/data/test-abidiff-exit/test-decl-enum-report-3.txt: Likewise.
1552	* tests/data/test-abidiff-exit/test-decl-enum-report.txt: Likewise.
1553	* tests/data/test-abidiff-exit/test-decl-enum-v{0,1}.c: Add source
1554	code for the binaries below.
1555	* tests/data/test-abidiff-exit/test-decl-enum-v{0,1}.o: Add new
1556	binary test inputs.
1557	* tests/data/Makefile.am: Add the new files above to source
1558	distribution.
1559	* tests/test-abidiff-exit.cc: Add the test inputs above to the
1560	test harness.
1561
15622020-06-10  Giuliano Procida <gprocida@google.com>
1563
1564	Add declaration-only enums to XML reader/writer.
1565	* src/abg-reader.cc (build_enum_type_decl): Detect a
1566	declaration-only enum and flag it as such.
1567	(build_type_decl): Support reading the "is-declaration" attribute.
1568	(build_class_decl): Adjust.
1569	* src/abg-writer.cc (write_is_declaration_only): Renamed
1570	write_class_or_union_is_declaration_only into this.
1571	(write_enum_is_declaration_only): Remove.
1572	(write_type_decl, write_enum_type_decl)
1573	(write_class_decl_opening_tag, write_union_decl_opening_tag): Use
1574	write_is_declaration_only.
1575	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
1576	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
1577	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
1578
15792020-06-10  Dodji Seketeli <dodji@redhat.com>
1580
1581	Support declaration-only enums in DWARF reader.
1582	* src/abg-dwarf-reader.cc (string_enums_map): Define new
1583	convenience typedef.
1584	(read_context::decl_only_enums_map_): Define new data member.
1585	(read_context::{declaration_only_enums,
1586	is_decl_only_enum_scheduled_for_resolution,
1587	resolve_declaration_only_enums}): Define new member functions.
1588	(build_internal_underlying_enum_type_name)
1589	(build_enum_underlying_type): Factorize these functions out of ...
1590	(build_enum_type): ... here.  Detect a decl-only enum and flag it
1591	as such.  If the enum type is decl-only, then set its underlying
1592	type as decl-only as well.
1593	(build_enum_underlying_type): Mark the underlying type as
1594	artificial.
1595	(get_opaque_version_of_type): Make this handle enums as well.  So
1596	make its return type be type_or_decl_base_sptr, rather than just
1597	class_or_union_sptr as it used to be.
1598	(read_debug_info_into_corpus): Add logging to trace decl-only
1599	enums resolution.
1600	(build_ir_node_from_die): Detect when a suppression specification
1601	makes an enum opaque.  In that case, get an opaque version of the
1602	enum type by invoking get_opaque_version_of_type.  Note that
1603	get_opaque_version_of_type doesn't support returning opaque
1604	-- i.e, decl-only enum types -- yet, but this is going to be
1605	handled in a subsequent patch.
1606
16072020-06-10  Giuliano Procida <gprocida@google.com>
1608
1609	Support incomplete enums in core and diff code.
1610	* include/abg-comp-filter.h (has_decl_only_def_change) : Declare
1611	New function.
1612	* src/abg-comp-filter.cc (there_is_a_decl_only_enum): Define new
1613	static function and ...
1614	(type_size_changed): ... use it here.
1615	(has_decl_only_def_change): Define new function and ...
1616	(categorize_harm{less, ful}_diff_node): ... use it here.
1617	* include/abg-fwd.h (enums_type, decl_base_wptr): Declare new
1618	typedefs.
1619	(look_through_decl_only_class): Declare new overload for
1620	class_or_union*.
1621	(is_compatible_with_enum_type, is_compatible_with_enum_type)
1622	(look_through_decl_only, lookup_enum_types, lookup_enum_types):
1623	Declare new functions.
1624	* include/abg-ir.h (decl_base::{get_is_declaration_only,
1625	set_is_declaration_only, set_definition_of_declaration,
1626	get_definition_of_declaration,
1627	get_naked_definition_of_declaration}): Declare new member
1628	functions.  They were moved here from the class_or_union class.
1629	(class_or_union::{get_earlier_declaration,
1630	set_earlier_declaration, get_definition_of_declaration,
1631	set_definition_of_declaration,
1632	get_naked_definition_of_declaration, get_is_declaration_only,
1633	set_is_declaration_only}): Remove these member functions.
1634	* src/abg-ir.cc (decl_base::priv::{declaration_,
1635	definition_of_declaration_, naked_definition_of_declaration_,
1636	is_declaration_only_}): Define data members.  Moved here from
1637	class_or_union.
1638	(decl_base::priv::priv): Adjust to initialize the new data
1639	members.
1640	(decl_base::{get_earlier_declaration, set_earlier_declaration,
1641	get_definition_of_declaration,
1642	get_naked_definition_of_declaration, get_is_declaration_only,
1643	set_is_declaration_only, set_definition_of_declaration}): Define
1644	member functions.
1645	(operator|): In the overload for (change_kind, change_kind),
1646	adjust the return type of the call to
1647	decl_base::get_definition_of_declaration.
1648	(look_through_decl_only): Define new function.
1649	(look_through_decl_only_class): Adjust.
1650	(look_through_decl_only_enum): Likewise.
1651	(maybe_update_types_lookup_map<class_decl>): Adjust return type of
1652	call to decl_base::get_definition_of_declaration.
1653	(types_defined_same_linux_kernel_corpus_public): Use
1654	look_through_decl_only_class rather than open coding it.
1655	(class_or_union::priv::{declaration_, definition_of_declaration_,
1656	naked_definition_of_declaration_, is_declaration_only_}): Remove
1657	these data members.  They are now carried by decl_base::priv.
1658	(class_or_union::{g,s}et_alignment_in_bits): Adjust.
1659	(class_or_union::{g,s}et_size_in_bits): Likewise.
1660	(class_or_union::operator==): Likewise.
1661	(equals): Adjust the overload for class_or_union.
1662	(is_compatible_with_enum_type)
1663	* src/abg-comparison.cc (try_to_diff<class_decl>): Adjust the
1664	return type of decl_base::get_definition_of_declaration.
1665	(leaf_diff_node_marker_visitor::visit_begin): Use
1666	filtering::has_decl_only_def_change rather than
1667	filtering::has_class_decl_only_def_change.  Decl-only changes to
1668	enums (or any other type really) will thus not be recorded as leaf
1669	changes.
1670	* src/abg-dwarf-reader.cc (get_scope_for_die): Adjust return type
1671	of decl_base::get_definition_of_declaration.
1672	* src/abg-default-reporter.cc (default_reporter::report): Report
1673	enum decl-only <-> definition changes.
1674	* src/abg-hash.cc (class_or_union::hash::operator()): In the
1675	overload for class_or_union& adjust the return type for
1676	decl_base::get_definition_of_declaration.
1677
16782020-06-19  Giuliano Procida <gprocida@google.com>
1679
1680	abg-ir.cc: Remove unused re_canonicalize function.
1681	* include/abg-fwd.h (re_canonicalize): Remove declaration of
1682	obsolete function.
1683	* include/abg-ir.h (class {decl_base, type_base}): Remove
1684	re_canonicalize friend declarations from these classes.
1685	* src/abg-ir.cc (re_canonicalize): Remove obsolete function.
1686
16872020-06-24  Dodji Seketeli <dodji@redhat.com>
1688
1689	Bug 26135 - Wrong linkage name causes anonymous classes miscomparison
1690	* include/abg-ir.h (class_decl::class_decl): Add two overloads
1691	that take the "is_anonymous" flag.
1692	(union_decl::union_decl): Likewise.
1693	* src/abg-ir.cc (class_decl::class_decl): Define two overloads
1694	that take the "is_anonymous" flag and set the linkage name
1695	accordingly.
1696	(union_decl::union_decl): Likewise.
1697	(type_base::get_canonical_type_for): Assert that an anonymous
1698	class or union can't have a linkage name for now.
1699	* src/abg-dwarf-reader.cc (add_or_update_class_type)
1700	(add_or_update_union_type): Use a new overload for the constuctor
1701	of {class, union}_decl and set the "is_anonymous" flag.  Don't use
1702	decl_base::set_is_anonymous anymore.
1703	* src/abg-reader.cc (build_class_decl, build_union_decl):
1704	Likewise.
1705	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
1706	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
1707	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
1708
17092020-06-29  Giuliano Procida <gprocida@google.com>
1710
1711	Rename declaration-definition change category.
1712	* include/abg-comparison.h (TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY):
1713	Rename CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY into this.
1714	(EVERYTHING_CATEGORY): In the value of this enumerator, rename
1715	CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY into
1716	TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY.
1717	* src/abg-comp-filter.cc (categorize_harmless_diff_node):
1718	Likewise.
1719	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
1720	Likewise.
1721	(operator<<(ostream& o, diff_category c)): Likewise.
1722	* src/abg-default-reporter.cc (default_reporter::report): Likewise
1723	in the overload for class_or_union_diff.
1724	* src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise in
1725	the overload for class_or_union_diff.
1726
17272020-06-10  Giuliano Procida <gprocida@google.com>
1728
1729	Tidy build_enum_type state variables.
1730	* src/abg-dwarf-reader.cc (build_enum_type): Rename local
1731	variable enum_is_anonymous to is_anonymous. Move initilisation
1732	of local variable is_artificial to location corresponding to
1733	that in add_or_update_class_type and add_or_update_union_type
1734	functions.
1735
17362020-06-10  Giuliano Procida <gprocida@google.com>
1737
1738	Refactor d.context() as ctxt in report(enum_diff).
1739	* src/abg-default-reporter.cc (report): In the enum_diff
1740	overload, introduce the name ctxt to replace four occurrences
1741	of d.context().
1742
17432020-06-10  Giuliano Procida <gprocida@google.com>
1744
1745	Improve code comments and whitespace.
1746	* include/abg-fwd.h: Correct doc-comment reference to
1747	enum_type_decl.
1748	* src/abg-comp-filter.cc: Fix doc-comment syntax.
1749	* src/abg-comparison.cc (operator<<): In the diff_category
1750	overload, fix code indentation.
1751	* src/abg-default-reporter.cc (report): In the
1752	class_or_union_diff overload, adjust comment to reflect that
1753	the code is reporting changes between declaration-only and
1754	defined types, in either direction.
1755
17562020-06-17  Giuliano Procida <gprocida@google.com>
1757
1758	get_canonical_type_for: restore environment better
1759	* src/abg-ir.cc (get_canonical_type_for): Ensure the
1760	do_on_the_fly_canonicalization and
1761	decl_only_class_equals_definition flags are restored
1762	unconditionally.
1763
17642020-06-18  Dodji Seketeli <dodji@redhat.com>
1765
1766	Bug 26127 - abidw --annotate emits incomplete function types
1767	* include/abg-ir.h (decl_base::clear_qualified_name): Declare new
1768	protected member function.
1769	({pointer_type_def, reference_type_def, qualified_type_def,
1770	function_type}::on_canonical_type_set): Declare virtual member
1771	functions.
1772	* src/abg-ir.cc (decl_base::clear_qualified_name): Define new
1773	protected member function.
1774	({pointer_type_def, reference_type_def, qualified_type_def,
1775	function_type}::on_canonical_type_set): Define virtual member
1776	functions.
1777	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
1778	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1779	Likewise.
1780	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1781	Likewise.
1782
17832020-06-11  Giuliano Procida <gprocida@google.com>
1784
1785	Fix bug that suppressed DWARF read tests.
1786	* tests/test-read-dwarf.cc (in_out_specs): Use NULL instead of
1787	empty ABI paths for test25, test26 and test27. (perform):
1788	Check members of spec, rather than locals with same name, when
1789	deciding to terminate testing early; fix some code whitespace.
1790	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Update
1791	multidimensional array sizes.
1792	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto.
1793	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1794	Ditto.
1795	* tests/data/test-read-dwarf/test7.so.abi: Ditto.
1796	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
1797	Update following translation unit ordering change.
1798	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Ditto.
1799	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Ditto.
1800	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Ditto.
1801	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Ditto.
1802	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto.
1803	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1804	Ditto.
1805	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1806	Ditto.
1807	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1808	Ditto.
1809	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Ditto.
1810	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1811	Ditto.
1812	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Update
1813	following code changes affecting ordering of some ABI
1814	elements.
1815	* tests/data/test-read-dwarf/test16-pr18904.so.abi
1816	Reviewed-by: Matthias Maennich <maennich@google.com>
1817	Tested-by: Matthias Maennich <maennich@google.com>
1818
18192020-06-16  Matthias Maennich <maennich@google.com>
1820
1821	cleanup: std::weak_ptr use: replace manual lock by std::weak_ptr::lock
1822	* src/abg-comparison-priv.h (diff::priv::get_context): improve
1823	weak_ptr usage.
1824	(corpus_diff:diff_stats::priv::ctxt): Likewise.
1825	* src/abg-comparison.cc (corpus_diff::priv::get_context): Likewise.
1826	(var_diff::type_diff): Likewise.
1827	* src/abg-ir.cc (elf_symbol::get_next_alias): Likewise.
1828	(elf_symbol::get_next_common_instance): Likewise.
1829	(type_base::get_canonical_type): Likewise.
1830	(qualified_type_def::get_underlying_type): Likewise.
1831	(pointer_type_def::get_pointed_to_type): Likewise.
1832	(reference_type_def::get_pointed_to_type): Likewise.
1833	(array_type_def::subrange_type::get_underlying_type): Likewise.
1834	(array_type_def::get_element_type): Likewise.
1835	(typedef_decl::get_underlying_type): Likewise.
1836	(var_decl::get_type): Likewise.
1837	(function_type::get_return_type): Likewise.
1838	(function_decl::get_type): Likewise.
1839	(function_decl::parameter::get_type): Likewise.
1840	(class_or_union::get_naming_typedef): Likewise.
1841	(class_or_union::get_definition_of_declaration): Likewise.
1842	(class_decl::base_spec::get_base_class): Likewise.
1843	(template_parameter::get_enclosing_template_decl): Likewise.
1844	(non_type_tparameter::get_type): Likewise.
1845	(type_composition::get_composed_type): Likewise.
1846
18472020-06-16  Giuliano Procida <gprocida@google.com>
1848
1849	Fix leaf-mode formatting of decl <-> defn diffs.
1850	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
1851	class_or_union_diff overload, add a terminating new line after
1852	reporting a declaration-only <-> definition difference.
1853
18542020-06-15  Giuliano Procida <gprocida@google.com>
1855
1856	abg-writer: Add support for stable hash type ids.
1857	* doc/manuals/abidw.rst: Replace stray documentation of
1858	--named-type-ids with documention of new --type-id-style
1859	option.
1860	* include/abg-writer.h (type_id_style_kind): Add new enum.
1861	(set_type_id_style): Add new write_context setter.
1862	(set_common_options): Set type id style in write context.
1863	* include/abg-hash.h (fnv_hash): Declare new 32-bit FNV-1a
1864	hash function in abigail::hashing namespace.
1865	* src/abg-hash.h (fnv_hash): Define new 32-bit FNV-1a hash
1866	function in abigail::hashing namespace.
1867	* src/abg-writer.cc (write_context): Add m_type_id_style
1868	member to record type style to use, defaulting to
1869	SEQUENCE_TYPE_ID_STYLE; add m_used_type_id_hashes to record
1870	already-used hashes.
1871	(write_context::get_type_id_style): Add new getter.
1872	(write_context::set_type_id_style): Add new setter.
1873	(get_id_for_type): Add support for HASH_TYPE_ID_STYLE style.
1874	(set_type_id_style): Add new helper function.
1875	* tools/abidw.cc (options): Add type_id_style member.
1876	(display_usage): Add description of --type-id-style option.
1877	(parse_command_line): Parse --type-id-style option.
1878	* tests/data/Makefile.am: Add new hash type id ABI files.
1879	* tests/test-read-dwarf.cc: (InOutSpec): Add type_id_style
1880	member.
1881	(in_out_specs): Set type_id_style to SEQUENCE_TYPE_ID_STYLE in
1882	existing test specifications. Duplicate first 9 test cases
1883	with type_id_style set to HASH_TYPE_ID_STYLE.
1884	* tests/data/test-read-dwarf/test0.hash.abi: New ABI XML file
1885	with hash type ids.
1886	* tests/data/test-read-dwarf/test1.hash.abi: Ditto.
1887	* tests/data/test-read-dwarf/test2.so.hash.abi: Ditto.
1888	* tests/data/test-read-dwarf/test3.so.hash.abi: Ditto.
1889	* tests/data/test-read-dwarf/test4.so.hash.abi: Ditto.
1890	* tests/data/test-read-dwarf/test5.o.hash.abi: Ditto.
1891	* tests/data/test-read-dwarf/test6.so.hash.abi: Ditto.
1892	* tests/data/test-read-dwarf/test7.so.hash.abi: Ditto.
1893	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi:
1894	Ditto.
1895
18962020-06-12  Giuliano Procida <gprocida@google.com>
1897
1898	Eliminate non-ASCII characters.
1899	* include/abg-diff-utils.h: Replace "’’" with "'".
1900	* src/abg-elf-helpers.cc: Replace "⋅" with ".".
1901	* src/abg-ini.cc: Replace "@êef" with "@ref".
1902	* src/abg-ir.cc: Ditto.
1903	* src/abg-tools-utils.cc: Replace "–" with "-".
1904
19052020-06-11  Matthias Maennich <maennich@google.com>
1906
1907	dwarf-reader: get_die_source: always initialize return value
1908	* src/abg-dwarf-reader.cc
1909	(read_context::get_die_source): Always initialize die_source.
1910	(read_context::ContainerType::get_container): Fix
1911	initialization of die_source.
1912	(read_context::compute_canonical_die): Likewise.
1913	(read_context::get_canonical_die): Likewise.
1914	(read_context::get_or_compute_canonical_die): Likewise.
1915	(read_context::associate_die_to_decl): Likewise.
1916	(read_context::set_canonical_die_offset): Likewise.
1917	(read_context::schedule_type_for_late_canonicalization): Likewise.
1918	(read_context::compare_dies): Likewise.
1919	(read_context::get_parent_die): Likewise.
1920	(read_context::get_scope_for_die): Likewise.
1921	(read_context::add_or_update_union_type): Likewise.
1922	(read_context::maybe_canonicalize_type): Likewise.
1923	(read_context::build_ir_node_from_die): Likewise.
1924
19252020-06-09  Matthias Maennich <maennich@google.com>
1926
1927	abipkgdiff: remove unused includes of elfutils/libdw.h and elf.h
1928	* tools/abipkgdiff.cc: Drop unused includes.
1929
19302020-05-29  Matthias Maennich <maennich@google.com>
1931
1932	abg-reporter: fully qualify std::string and std::ostream
1933	* include/abg-reporter.h (reporter_base::report) fully qualify
1934	std::string and std::ostream for all overloads.
1935	(default_reporter::report_local_typedef_changes): Likewise.
1936	(default_reporter::report_local_qualified_type_changes): Likewise.
1937	(default_reporter::report_local_reference_type_changes): Likewise.
1938	(default_reporter::report_local_function_type_changes): Likewise.
1939	(default_reporter::report): Likewise.
1940	(leaf_reporter::report_changes_from_diff_maps): Likewise.
1941	(leaf_reporter::report): Likewise.
1942	Suggested-by: Mark Barolak <mbar@google.com>
1943
19442020-06-05  Giuliano Procida <gprocida@google.com>
1945
1946	Fix HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY spelling
1947	* include/abg-comparison.h (enum diff_category): Rename
1948	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator to
1949	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY.
1950	* src/abg-comp-filter.cc (categorize_harmless_diff_node): Replace
1951	use of HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator with
1952	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY.
1953	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
1954	Replace use of HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator
1955	with HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY.
1956	(operator<<): In the diff_category overload, replace use of
1957	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator with
1958	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY and output correct
1959	spelling for both this and HARMLESS_UNION_CHANGE_CATEGORY.
1960	* tools/abicompat.cc (create_diff_context): Replace use of
1961	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator with
1962	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY.
1963
19642020-05-18  Matthias Maennich <maennich@google.com>
1965
1966	dwarf-reader: read_context: drop unused symbol versioning code
1967	* src/abg-dwarf-reader.cc
1968	(read_context::versym_section_): Delete.
1969	(read_context::verdef_section_): Delete.
1970	(read_context::verneed_section_): Delete.
1971	(read_context::symbol_versionning_sections_loaded_): Delete.
1972	(read_context::symbol_versionning_sections_found_): Delete.
1973	(read_context::initialize): Remove initializations of deleted members.
1974	(read_context::get_symbol_versionning_sections): Delete.
1975	(read_context::get_version_for_symbol): Delete.
1976	(read_context::lookup_elf_symbol_from_index): Use
1977	get_version_for_symbol provided by elf_helpers.
1978
19792020-05-18  Matthias Maennich <maennich@google.com>
1980
1981	dwarf-reader: Remove unused code
1982	* src/abg-dwarf-reader.cc
1983	(lookup_public_variable_symbol_from_elf): Delete.
1984	(read_context::bss_section_): Delete.
1985	(read_context::text_section_): Delete.
1986	(read_context::rodata_section_): Delete.
1987	(read_context::data_section_): Delete.
1988	(read_context::data1_section_): Delete.
1989	(read_context::initialize): Remove initializations of deleted members.
1990	(read_context::options): Delete.
1991	(read_context::bss_section): Delete.
1992	(read_context::text_section): Delete.
1993	(read_context::rodata_section): Delete.
1994	(read_context::data_section): Delete.
1995	(read_context::data1_section): Delete.
1996	(read_context::get_elf_file_type): Delete.
1997	(read_context::lookup_symbol_from_elf): Delete.
1998	(read_context::lookup_public_variable_symbol_from_elf): Delete.
1999	(read_context::fun_addr_sym_map_sptr): Delete.
2000	(read_context::fun_addr_sym_map): Delete.
2001	(read_context::get_data_section_for_variable_address): Delete.
2002	(read_context::suppression_matches_function_sym_name): Delete.
2003	(read_context::suppression_matches_function_name): Delete.
2004	(read_context::suppression_matches_type_name): Delete.
2005
20062020-05-29  Dodji Seketeli <dodji@redhat.com>
2007
2008	abigail.m4: Fix copyright notice
2009	* abigail.m4: Mention Red Hat in the copyright and myself as author.
2010
20112020-05-18  Matthias Maennich <maennich@google.com>
2012
2013	tests: Add kernel symtab test suite
2014	* tests/data/Makefile.am: add new test data for runtestsymtab
2015	* tests/data/test-symtab/kernel-4.14/Makefile: New test case makefile.
2016	* tests/data/test-symtab/kernel-4.14/empty.c: Likewise.
2017	* tests/data/test-symtab/kernel-4.14/one_of_each.c: Likewise.
2018	* tests/data/test-symtab/kernel-4.14/single_function.c: Likewise.
2019	* tests/data/test-symtab/kernel-4.14/single_function_gpl.c: Likewise.
2020	* tests/data/test-symtab/kernel-4.14/single_variable.c: Likewise.
2021	* tests/data/test-symtab/kernel-4.14/single_variable_gpl.c: Likewise.
2022	* tests/data/test-symtab/kernel-4.14/empty.ko: New test data.
2023	* tests/data/test-symtab/kernel-4.14/one_of_each.ko: Likewise.
2024	* tests/data/test-symtab/kernel-4.14/single_function.ko: Likewise.
2025	* tests/data/test-symtab/kernel-4.14/single_function_gpl.ko: Likewise.
2026	* tests/data/test-symtab/kernel-4.14/single_variable.ko: Likewise.
2027	* tests/data/test-symtab/kernel-4.14/single_variable_gpl.ko: Likewise.
2028	* tests/data/test-symtab/kernel-4.19/Makefile: New test case makefile.
2029	* tests/data/test-symtab/kernel-4.19/empty.c: Likewise.
2030	* tests/data/test-symtab/kernel-4.19/one_of_each.c: Likewise.
2031	* tests/data/test-symtab/kernel-4.19/single_function.c: Likewise.
2032	* tests/data/test-symtab/kernel-4.19/single_function_gpl.c: Likewise.
2033	* tests/data/test-symtab/kernel-4.19/single_variable.c: Likewise.
2034	* tests/data/test-symtab/kernel-4.19/single_variable_gpl.c: Likewise.
2035	* tests/data/test-symtab/kernel-4.19/empty.ko: New test data.
2036	* tests/data/test-symtab/kernel-4.19/one_of_each.ko: Likewise.
2037	* tests/data/test-symtab/kernel-4.19/single_function.ko: Likewise.
2038	* tests/data/test-symtab/kernel-4.19/single_function_gpl.ko: Likewise.
2039	* tests/data/test-symtab/kernel-4.19/single_variable.ko: Likewise.
2040	* tests/data/test-symtab/kernel-4.19/single_variable_gpl.ko: Likewise.
2041	* tests/data/test-symtab/kernel-5.4/Makefile: New test case makefile.
2042	* tests/data/test-symtab/kernel-5.4/empty.c: Likewise.
2043	* tests/data/test-symtab/kernel-5.4/one_of_each.c: Likewise.
2044	* tests/data/test-symtab/kernel-5.4/single_function.c: Likewise.
2045	* tests/data/test-symtab/kernel-5.4/single_function_gpl.c: Likewise.
2046	* tests/data/test-symtab/kernel-5.4/single_variable.c: Likewise.
2047	* tests/data/test-symtab/kernel-5.4/single_variable_gpl.c: Likewise.
2048	* tests/data/test-symtab/kernel-5.4/empty.ko: New test data.
2049	* tests/data/test-symtab/kernel-5.4/one_of_each.ko: Likewise.
2050	* tests/data/test-symtab/kernel-5.4/single_function.ko: Likewise.
2051	* tests/data/test-symtab/kernel-5.4/single_function_gpl.ko: Likewise.
2052	* tests/data/test-symtab/kernel-5.4/single_variable.ko: Likewise.
2053	* tests/data/test-symtab/kernel-5.4/single_variable_gpl.ko: Likewise.
2054	* tests/data/test-symtab/kernel-5.6/Makefile: New test case makefile.
2055	* tests/data/test-symtab/kernel-5.6/empty.c: Likewise.
2056	* tests/data/test-symtab/kernel-5.6/one_of_each.c: Likewise.
2057	* tests/data/test-symtab/kernel-5.6/single_function.c: Likewise.
2058	* tests/data/test-symtab/kernel-5.6/single_function_gpl.c: Likewise.
2059	* tests/data/test-symtab/kernel-5.6/single_variable.c: Likewise.
2060	* tests/data/test-symtab/kernel-5.6/single_variable_gpl.c: Likewise.
2061	* tests/data/test-symtab/kernel-5.6/empty.ko: New test data.
2062	* tests/data/test-symtab/kernel-5.6/one_of_each.ko: Likewise.
2063	* tests/data/test-symtab/kernel-5.6/single_function.ko: Likewise.
2064	* tests/data/test-symtab/kernel-5.6/single_function_gpl.ko: Likewise.
2065	* tests/data/test-symtab/kernel-5.6/single_variable.ko: Likewise.
2066	* tests/data/test-symtab/kernel-5.6/single_variable_gpl.ko: Likewise.
2067	* tests/data/test-symtab/kernel/Makefile: New test case source file.
2068	* tests/data/test-symtab/kernel/empty.c: Likewise.
2069	* tests/data/test-symtab/kernel/one_of_each.c: Likewise.
2070	* tests/data/test-symtab/kernel/single_function.c: Likewise.
2071	* tests/data/test-symtab/kernel/single_function_gpl.c: Likewise.
2072	* tests/data/test-symtab/kernel/single_variable.c: Likewise.
2073	* tests/data/test-symtab/kernel/single_variable_gpl.c: Likewise.
2074	* tests/test-symtab.cc: New test case to test kernel symtabs.
2075
20762020-05-18  Matthias Maennich <maennich@google.com>
2077
2078	tests: Add symtab test suite
2079	* tests/Makefile.am: add new test runtestsymtab
2080	* tests/data/Makefile.am: add new test data for runtestsymtab
2081	* tests/data/test-symtab/Makefile: Add this to build the binaries
2082	below from their source code.
2083	* tests/data/test-symtab/basic/empty.c: New test case source.
2084	* tests/data/test-symtab/basic/link_against_me.c: Likewise.
2085	* tests/data/test-symtab/basic/no_debug_info.c: Likewise.
2086	* tests/data/test-symtab/basic/one_function_one_variable.c: Likewise.
2087	* tests/data/test-symtab/basic/one_function_one_variable_undefined.c: Likewise.
2088	* tests/data/test-symtab/basic/single_function.c: Likewise.
2089	* tests/data/test-symtab/basic/single_undefined_function.c: Likewise.
2090	* tests/data/test-symtab/basic/single_undefined_variable.c: Likewise.
2091	* tests/data/test-symtab/basic/single_variable.c: Likewise.
2092	* tests/data/test-symtab/basic/empty.so: New test data, built from
2093	the Makefile above.
2094	* tests/data/test-symtab/basic/link_against_me.so: Likewise.
2095	* tests/data/test-symtab/basic/no_debug_info.so: Likewise.
2096	* tests/data/test-symtab/basic/one_function_one_variable.so: Likewise.
2097	* tests/data/test-symtab/basic/one_function_one_variable_undefined.so: Likewise.
2098	* tests/data/test-symtab/basic/single_function.so: Likewise.
2099	* tests/data/test-symtab/basic/single_undefined_function.so: Likewise.
2100	* tests/data/test-symtab/basic/single_undefined_variable.so: Likewise.
2101	* tests/data/test-symtab/basic/single_variable.so: Likewise.
2102	* tests/test-symtab.cc: New test driver.
2103
21042020-05-19  Dodji Seketeli <dodji@redhat.com>
2105
2106	Bug 25989 - type_topo_comp doesn't meet irreflexive requirements
2107	* src/abg-ir.cc (type_topo_comp::operator()): In the comparison
2108	operator consider two equivalent empty-qualified types as being
2109	topologically equivalent.
2110
21112020-05-07  Dodji Seketeli <dodji@redhat.com>
2112
2113	Bug 25661 - Support data member replacement by anonymous data member
2114	* include/abg-comp-filter.h (has_data_member_replaced_by_anon_dm):
2115	Declare new function.
2116	* include/abg-comparison.h (changed_var_sptr)
2117	(changed_var_sptrs_type): Declare new typedefs.
2118	(HARMLESS_DATA_MEMBER_CHANGE_CATEGORY): Add a new enumerator to
2119	the diff_category enum.
2120	(EVERYTHING_CATEGORY): In the diff_category, adjust this
2121	enumerator to OR the new HARMLESS_DATA_MEMBER_CHANGE_CATEGORY into
2122	it.
2123	(SUPPRESSED_CATEGORY, PRIVATE_TYPE_CATEGORY)
2124	(SIZE_OR_OFFSET_CHANGE_CATEGORY, VIRTUAL_MEMBER_CHANGE_CATEGORY)
2125	(CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY)
2126	(FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY)
2127	(FN_RETURN_TYPE_CV_CHANGE_CATEGORY, VAR_TYPE_CV_CHANGE_CATEGORY)
2128	(VOID_PTR_TO_PTR_CHANGE_CATEGORY)
2129	(BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY): Adjust the value of these
2130	enumerators of the diff_category enum.
2131	(class_or_union_diff::{data_members_replaced_by_adms,
2132	ordered_data_members_replaced_by_adms}): Declare new member
2133	functions.
2134	* include/abg-fwd.h (var_decl_wptr): Declare new typedef.
2135	(get_next_data_member, get_first_non_anonymous_data_member)
2136	(find_data_member_from_anonymous_data_member)
2137	(get_absolute_data_member_offset): Declare new functions.
2138	* include/abg-ir.h (struct anonymous_dm_hash): Declare new type.
2139	(anonymous_data_member_sptr_set_type): Declare new typedef.
2140	(class decl_base): Befriend class class_or_union.
2141	(class dm_context_rel): Pimpl-ify this class.
2142	(dm_context_rel::{g,s}et_anonymous_data_member_types): Declare new
2143	member functions.
2144	(var_decl::get_anon_dm_reliable_name): Declare new member
2145	function.
2146	(class var_decl): Make get_absolute_data_member_offset,
2147	get_absolute_data_member_offset be friends of this.
2148	(class_or_union::maybe_fixup_members_of_anon_data_member): Declare
2149	new protected member function.
2150	* src/abg-comp-filter.cc (has_data_member_replaced_by_anon_dm):
2151	Define new function.
2152	(categorize_harmless_diff_node): Use the above.
2153	* src/abg-comparison-priv.h
2154	(class_or_union_diff::priv::{dms_replaced_by_adms_,
2155	changed_var_sptrs_type dms_replaced_by_adms_ordered_}): Add new
2156	data members.
2157	(data_member_comp::compare_data_members): Factorize this out of ...
2158	(data_member_comp::operator()(decl_base_sptr&, decl_base_sptr&)):
2159	... this.
2160	(data_member_comp::operator()(changed_var_sptr&,
2161	changed_var_sptr&)): Add new member function.
2162	(sort_changed_data_members): Declare ...
2163	* src/abg-comparison.cc (sort_changed_data_members): ... new
2164	function.
2165	(get_default_harmless_categories_bitmap): Adjust to take the new
2166	abigail::comparison::HARMLESS_DATA_MEMBER_CHANGE_CATEGORY into
2167	account.
2168	(operator<<(ostream& o, diff_category c)): Likewise.
2169	(class_or_union_diff::ensure_lookup_tables_populated): Handle
2170	Handle the insertion of anonymous data members to replace existing
2171	data members.
2172	(class_or_union_diff::{data_members_replaced_by_adms,
2173	ordered_data_members_replaced_by_adms}): Define new accessors.
2174	(suppression_categorization_visitor::visit_end): Propagate the
2175	SUPPRESSION_CATEGORIZATION_VISITOR from changes to the type of the
2176	data member if the data member doesn't have real local changes.
2177	* src/abg-default-reporter.cc (default_reporter::report): Report
2178	about anonymous data members that replace data members.
2179	* src/abg-ir.cc (struct dm_context_rel::priv): Define new data
2180	structure.
2181	(dm_context_rel::{dm_context_rel, get_is_laid_out,
2182	set_is_laid_out, get_offset_in_bits, set_offset_in_bits,
2183	operator==, operator!=, get_anonymous_data_member,
2184	set_anonymous_data_member}): Define the member functions here as
2185	they are not inline anymore.
2186	(class_or_union::maybe_fixup_members_of_anon_data_member): Define
2187	new member function.
2188	(class_or_union::add_data_member): Use it.
2189	(get_first_non_anonymous_data_member, get_next_data_member)
2190	(get_absolute_data_member_offset)
2191	(find_data_member_from_anonymous_data_member): Define new
2192	functions.
2193	* src/abg-reporter-priv.h
2194	(maybe_report_data_members_replaced_by_anon_dm): Declare ...
2195	* src/abg-reporter-priv.cc
2196	(maybe_report_data_members_replaced_by_anon_dm): ... new function.
2197	* src/abg-leaf-reporter.cc (leaf_reporter::report): Report data
2198	members replaced by anonymous data members.
2199	* tests/data/test-diff-filter/test-PR25661-[1-6]-report-[1-4].txt: New
2200	test reference outputs.
2201	* tests/data/test-diff-filter/test-PR25661-[1-6]-v{0,1}.c: Test
2202	source code files.
2203	* tests/data/test-diff-filter/test-PR25661-[1-6]-v{0,1}.o: Test
2204	binary input files.
2205	* tests/data/Makefile.am: Add the new test files above to source
2206	distribution.
2207	* tests/test-diff-filter.cc (in_out_specs): Add the binary test
2208	inputs above to this test harness.
2209	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
2210	Adjust.
2211
22122020-05-07  Dodji Seketeli <dodji@redhat.com>
2213
2214	dwarf-reader: support several anonymous data members in a given class
2215	* include/abg-ir.h (class_or_union::find_anonymous_data_member):
2216	Declare a new member function.
2217	(class_or_union::find_data_member): Declare a new overload.
2218	(var_decl::get_anon_dm_reliable_name): Declare new member
2219	function.
2220	* src/abg-ir.cc (var_decl::get_pretty_representation): Make this
2221	work on a var_decl is going to be used to represent an anonymous
2222	data member even before the var_decl has been added to its finale
2223	scope.  This is useful to make class_or_union::find_data_member
2224	work on a var_decl that is to be used as an anonymous data member.
2225	(var_decl::get_anon_dm_reliable_name): Define new member function.
2226	(class_or_union::find_data_member): In the existing overload that
2227	takes a string, look for the named data member inside the
2228	anonymous data members.  Define a new overload that takes a
2229	var_decl_sptr, to look for anonymous data members.
2230	(class_or_union::find_anonymous_data_member): Define a new member
2231	function.
2232	(lookup_data_member): Use the existing
2233	class_or_union::find_data_member.
2234	* src/abg-reader.cc: (build_class_decl): Use the full anonymous
2235	variable for lookup, rather than its name which is empty and will
2236	thus give false positives.
2237	* src/abg-dwarf-reader.cc (add_or_update_class_type): Likewise.
2238	* src/abg-comparison.cc
2239	(class_or_union_diff::ensure_lookup_tables_populated): Name
2240	anonymous data members properly - as opposed to wrongly using
2241	their empty name.
2242	* src/abg-reporter-priv.cc (represent): In the overload for
2243	var_diff_sptr, make sure that changes to the /type/ of a variable
2244	declaration are always reported.
2245	* tests/data/test-abidiff-exit/test-member-size-report0.txt:
2246	Adjust as we now emit more detailed changes about anonymous data
2247	members.
2248	* tests/data/test-abidiff-exit/test-member-size-report1.txt:
2249	Likewise.
2250	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Adjust
2251	to reflect the fact that a class can now have several anonymous
2252	data members.
2253	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
2254	Likewise.
2255	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
2256	Likewise.
2257	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
2258	Likewise.
2259	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
2260	Likewise.
2261
22622020-05-07  Dodji Seketeli <dodji@redhat.com>
2263
2264	{default,leaf}-reporter: group data members changes reports together
2265	* include/abg-comparison.h
2266	(class_or_union_diff::{sorted_changed_data_members,
2267	count_filtered_changed_data_members,
2268	sorted_subtype_changed_data_members,
2269	count_filtered_subtype_changed_data_members}): Declare ...
2270	* src/abg-comparison.cc
2271	(class_or_union_diff::{sorted_changed_data_members,
2272	count_filtered_changed_data_members,
2273	sorted_subtype_changed_data_members,
2274	count_filtered_subtype_changed_data_members}): ... accessors for
2275	existing private data members.
2276	* src/abg-default-reporter.cc (default_reporter::report): In the
2277	class_or_union_diff& overload, group the reporting of the changes
2278	to data member sub-types with the replacement of data members.
2279	These are just data member changes after all.  Use the newly
2280	declared accessors for better measure.
2281	* src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise.
2282	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt: Adjust.
2283	* src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise.
2284	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
2285	Likewise.
2286
22872020-05-18  Dodji Seketeli <dodji@redhat.com>
2288
2289	Add -g back to ABIGAIL_DEVEL
2290	* configure.ac: Don't forget to set -g when ABIGAIL_DEVEL is set.
2291
22922020-05-15  Giuliano Procida <gprocida@google.com>
2293
2294	clang-format: set continuation indentation to 2
2295	* .clang-format: Set ContinuationIndentWidth to 2.
2296
22972020-05-15  Matthias Maennich <maennich@google.com>
2298
2299	configure: add more diagnostic options when ABIGAIL_DEVEL is set
2300	* configure.ac: add -D_FORTIFY_SOURCE=2 and -D_GLIBCXX_DEBUG
2301	compilation defines if ABIGAIL_DEVEL is set.  Note that with GCC 4.8.5,
2302	-D_FORTIFY_SOURCE=2 requires options to be set.  So I am setting
2303	the optimization level to -Og.
2304	* src/abg-dwarf-reader.cc (read_context::{compute_canonical_die,
2305	get_or_compute_canonical_die, associate_die_to_decl,
2306	set_canonical_die_offset, schedule_type_for_late_canonicalization,
2307	compare_dies}, get_scope_for_die, add_or_update_union_type)
2308	(read_debug_info_into_corpus, build_ir_node_from_die): Initialize
2309	the 'source' variable.
2310	* tests/test-diff-filter.cc (main): Check the return value of the
2311	system function.
2312	* tests/test-diff-pkg.cc (main): Likewise.
2313	* tests/test-read-write.cc (main): Likewise.
2314
23152020-05-15  Matthias Maennich <maennich@google.com>
2316
2317	configure: add ABIGAIL_DEBUG options
2318	* configure.ac: add ABIGAIL_DEBUG environment variable for
2319	improved debugging capabilities
2320
23212020-05-05  Giuliano Procida <gprocida@google.com>
2322
2323	Tidy get_pretty_representation qualified_name.
2324	* include/abg-ir.h (type_decl::get_pretty_representation)
2325	Change default for qualified_name parameter to true.
2326
23272020-05-13  Dodji Seketeli <dodji@redhat.com>
2328
2329	Bug 25986 - Wrong name of function type used in change report
2330	* src/abg-ir.cc (function_type::get_cached_name): Don't cache
2331	names for non-canonicalized types.
2332	* tests/data/test-abidiff-exit/test-fun-param-report.txt: Add
2333	reference output for new test.
2334	* tests/data/test-abidiff-exit/test-fun-param-v{0,1}.abi: Add new test
2335	input files.
2336	* tests/data/test-abidiff-exit/test-fun-param-v{0,1}.c: Add source
2337	files for the above.
2338	* tests/data/test-abidiff-exit/test-fun-param-v{0,1}.o: Add
2339	binaries for the above.
2340
23412020-05-11  Mark Wielaard <mark@klomp.org>
2342
2343	Don't iterate before the start of a RandomAccessOutputIterator.
2344	* include/abg-diff-utils.h (compute_diff): Put brackets around
2345	p[ux].[xy]() + 1 calculation.
2346
23472020-05-12  Giuliano Procida <gprocida@google.com>
2348
2349	doc: Fix sufficient suppression property lists.
2350	* doc/manuals/libabigail-concepts.rst: Add missing
2351	sufficient properties for suppress_file, suppress_function and
2352	suppress_variable. Use consistent language about what will
2353	happen when no property in the list in provided.
2354
23552020-05-11  Matthias Maennich <maennich@google.com>
2356
2357	cxx-compat: add test suite for cxx-compat
2358	* tests/Makefile.am: Add new test case runtestcxxcompat.
2359	* tests/test-cxx-compat.cc: New test source file.
2360	Reviewed-by: Giuliano Procida <gprocida@google.com>
2361
23622020-05-11  Matthias Maennich <maennich@google.com>
2363
2364	dwarf-reader: read_context: drop some unused accessor methods
2365	* src/abg-dwarf-reader.cc (read_context::fun_syms_sptr): Delete method.
2366	(read_context::fun_syms): Likewise.
2367	(read_context::var_syms_sptr): Likewise.
2368	(read_context::var_syms): Likewise.
2369	(read_context::undefined_fun_syms_sptr): Likewise.
2370	(read_context::undefined_fun_syms): Likewise. Both overloads.
2371	(read_context::undefined_var_syms_sptr): Likewise.
2372	(read_context::undefined_var_syms): Likewise. Both overloads.
2373	Reviewed-by: Giuliano Procida <gprocida@google.com>
2374
23752020-05-11  Matthias Maennich <maennich@google.com>
2376
2377	tests/.gitignore: ignore all files starting with runtest*
2378	* tests/.gitignore: gitignore all files named runtest*
2379	Reviewed-by: Giuliano Procida <gprocida@google.com>
2380
23812020-05-11  Matthias Maennich <maennich@google.com>
2382
2383	configure: set -Wno-error-overloaded-virtual for clang builds
2384	* configure.ac: set -Wno-error-overloaded-virtual for clang++
2385
23862020-05-05  Giuliano Procida <gprocida@google.com>
2387
2388	Let std::unordered_map::operator[] insert keys.
2389	* src/abg-reader.cc (read_context::key_type_decl): Rely on
2390	std::unordered_map::operator[] to create map entries if they
2391	are missing. (build_elf_symbol_db): Ditto.
2392
23932020-05-05  Giuliano Procida <gprocida@google.com>
2394
2395	abg-reader.cc: Remove key_replacement_type_map.
2396	* src/abg-reader.cc (key_replacement_type_map): Drop unused
2397	function.
2398
23992020-05-04  Giuliano Procida <gprocida@google.com>
2400
2401	Refactor read_parameter_spec_from_string logic.
2402	* src/abg-suppression.cc (read_parameter_spec_from_string):
2403	Use separate string and regex variables to simplify the
2404	creation of returned parameter specification.
2405	Reviewed-by: Matthias Maennich <maennich@google.com>
2406
24072020-05-04  Giuliano Procida <gprocida@google.com>
2408
2409	Use regex::match wrapper instead of regexec.
2410	* src/abg-corpus-priv.h: Mechanically substitute use of
2411	regexec with regex::match wrapper.
2412	* src/abg-suppression-priv.h: Ditto.
2413	* src/abg-suppression.cc: Ditto.
2414	Reviewed-by: Matthias Maennich <maennich@google.com>
2415
24162020-05-12  Giuliano Procida <gprocida@google.com>
2417
2418	Tidy checks for sufficient suppression properties.
2419	* src/abg-suppression.cc (check_sufficient_props): New helper
2420	function to check for sufficient properties in a section.
2421	(read_type_suppression): Replace conditional logic with call
2422	to check_sufficient_props.
2423	(read_function_suppression): Ditto.
2424	(read_variable_suppression): Ditto.
2425	(read_file_suppression): Ditto.
2426	* tests/data/test-diff-suppr/test15-suppr-added-fn-4.suppr:
2427	Explain why the suppression will be ignored.
2428	* tests/data/test-diff-suppr/test16-suppr-removed-fn-4.suppr:
2429	Ditto.
2430	* tests/data/test-diff-suppr/test17-suppr-added-var-4.suppr:
2431	Ditto.
2432	* tests/data/test-diff-suppr/test18-suppr-removed-var-4.suppr:
2433	Ditto.
2434
24352020-05-12  Dodji Seketeli <dodji@redhat.com>
2436
2437	Bug 25977 - runtestabidiffexit regression on EL7
2438	* abg-comparison.cc:
2439	(suppression_categorization_visitor::visit_end): Don't suppress
2440	the entire class of equivalence of a function diff node if that
2441	function diff node itself was not suppressed.
2442
24432020-05-04  Giuliano Procida <gprocida@google.com>
2444
2445	Use regex::compile wrapper instead of regcomp.
2446	* src/abg-corpus-priv.h: Mechanically substitute use of
2447	regcomp with regex::compile wrapper.
2448	* src/abg-suppression-priv.h: Ditto.
2449	There are no behavioural changes.
2450	Reviewed-by: Matthias Maennich <maennich@google.com>
2451
24522020-05-04  Giuliano Procida <gprocida@google.com>
2453
2454	Add POSIX regex wrapper functions.
2455	* include/abg-regex.h (compile): Declare new function.
2456	(match): Declare new function.
2457	* src/abg-regex.cc (compile): Add new function wrapping
2458	regcomp. (match): Add new function wrapping regexec.
2459	Reviewed-by: Matthias Maennich <maennich@google.com>
2460
24612020-05-04  Giuliano Procida <gprocida@google.com>
2462
2463	abg-suppression.cc: More uniform variable naming.
2464	* src/abg-suppression.cc (read_type_suppression): Rename "nil"
2465	variable to "result" and reset it instead of introducing
2466	"suppr" later on. (read_function_suppression): Rename "nil"
2467	variable to "result" and reset it instead of introducing
2468	"result" later on.
2469	Reviewed-by: Matthias Maennich <maennich@google.com>
2470
24712020-05-04  Giuliano Procida <gprocida@google.com>
2472
2473	Escape names used in symbol whitelisting regex.
2474	* include/regex.h (escape): New string reference holder
2475	class. (operator<<): Declaration of std::ostream,
2476	regex::escape overload.
2477	* include/regex.cc (operator<<): New std::ostream,
2478	regex::escape overload that outputs regex-escaped strings.
2479	* src/abg-tools-utils.cc
2480	(gen_suppr_spec_from_kernel_abi_whitelists): Make sure any
2481	special regex characters in symbol names are escaped.
2482	Reviewed-by: Matthias Maennich <maennich@google.com>
2483
24842020-05-04  Giuliano Procida <gprocida@google.com>
2485
2486	Document ^_^ regex in generate_from_strings.
2487	* src/abg-regex.cc (generate_from_strings): Document ^_^
2488	regex.
2489
24902020-05-04  Giuliano Procida <gprocida@google.com>
2491
2492	Tidy #includes in a few files.
2493	* src/abg-corpus-priv.h: Separate and sort #include
2494	directives.
2495	* src/abg-corpus.cc: Ditto.
2496	* src/abg-regex.cc: Ditto.
2497	* src/abg-suppression-priv.h: Ditto.
2498	* src/abg-suppression.cc: Ditto.
2499
25002020-05-01  Giuliano Procida <gprocida@google.com>
2501
2502	Hoist some common expressions evaluating offsets.
2503	* src/abg-suppression.cc (type_suppression::suppresses_diff):
2504	Hoist some constant expressions out of loops.
2505	Reviewed-by: Matthias Maennich <maennich@google.com>
2506
25072020-05-01  Giuliano Procida <gprocida@google.com>
2508
2509	Make set_drops_artifact_from_ir non-const.
2510	* include/abg-suppression.h
2511	(suppression_base::set_drops_artifact_from_ir):
2512	Drop const qualifier.
2513	* src/abg-suppression.cc
2514	(suppression_base::set_drops_artifact_from_ir):
2515	Drop const qualifier.
2516	Reviewed-by: Matthias Maennich <maennich@google.com>
2517
25182020-05-01  Giuliano Procida <gprocida@google.com>
2519
2520	Eliminate redundant conditional operators.
2521	* src/abg-corpus.cc (corpus::priv::build_unreferenced_symbols_tables):
2522	Eliminate redundant conditional operator.
2523	* src/abg-dwarf-reader.cc (build_reference_type): Ditto.
2524	* src/abg-reader.cc (read_static): Ditto.
2525	(read_is_artificial): Ditto. (build_function_parameter):
2526	Ditto. (build_function_decl): Ditto.
2527	(build_qualified_type_decl): Ditto.
2528	(build_reference_type_def): Ditto.
2529	Reviewed-by: Matthias Maennich <maennich@google.com>
2530
25312020-05-01  Giuliano Procida <gprocida@google.com>
2532
2533	Remove stray semicolons.
2534	* include/abg-diff-utils.h (display_edit_script): Remove
2535	redundant semicolon.
2536	* include/abg-fwd.h (lookup_basic_type): Ditto.
2537	* src/abg-comparison.cc (mark_diff_as_visited):
2538	Ditto.	(array_diff::has_local_changes): Ditto.
2539	(class_diff::ensure_lookup_tables_populated): Ditto.
2540	* src/abg-corpus.cc
2541	(corpus::priv::build_unreferenced_symbols_tables): Ditto.
2542	* src/abg-default-reporter.cc (default_reporter::report):
2543	Ditto.
2544	* src/abg-dwarf-reader.cc (finish_member_function_reading):
2545	Ditto.
2546	* src/abg-ir.cc (is_compatible_with_class_type): Ditto.
2547	(enum_type_decl::enumerator::set_name): Ditto.
2548	* src/abg-reader.cc (read_corpus_from_input): Ditto.
2549	(build_function_type): Ditto.
2550	* src/abg-suppression.cc (type_suppression::suppresses_type):
2551	Ditto.
2552	Reviewed-by: Matthias Maennich <maennich@google.com>
2553
25542020-05-01  Giuliano Procida <gprocida@google.com>
2555
2556	Remove excess whitespace.
2557	* src/abg-suppression.cc: Eliminate double blank lines.
2558	(read_parameter_spec_from_string): Eliminate space between
2559	++ operator and its operand.
2560	Reviewed-by: Matthias Maennich <maennich@google.com>
2561
25622020-01-12  Matthias Maennich <maennich@google.com>
2563
2564	corpus/writer: sort emitted translation units by path name
2565	* include/abg-fwd.h: remove translation_units fwd declaration.
2566	* include/abg-ir.h (struct shared_translation_unit_comparator):
2567	Define new class.
2568	(translation_units): Define new typedef.
2569	* src/abg-corpus.cc (corpus::add): do checked insert into the
2570	translation_units set (rather than vector::push_back)
2571	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust test data.
2572	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
2573	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
2574	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
2575	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
2576	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
2577	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
2578	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
2579
25802020-04-29  Matthias Maennich <maennich@google.com>
2581
2582	tests: reorder test execution to optimize 'make check' runtime
2583	* tests/Makefile.am(TESTS): split up in expensive and non
2584	expensive tests, sort the expensive ones by runime, the cheap
2585	ones alphabetically
2586
25872020-04-29  Matthias Maennich <maennich@google.com>
2588
2589	test-types-stability: parallelize test case alternatives
2590	* tests/test-types-stability.cc (test_task): add field no_default_sizes
2591	(test_task::perform) Switch on the new flag to test a different
2592	behaviour.
2593	(main): Schedule an additional test case to test with the new flag.
2594	Cc: Mark Wielaard <mark@klomp.org>
2595
25962020-05-04  Dodji Seketeli <dodji@redhat.com>
2597
2598	Fix compilation with g++ 4.8.5 on el7
2599	* include/abg-libxml-utils.h (build_sptr<xmlTextReader>): Wrap
2600	this specialization in the namespace sptr_utils and do away with
2601	the sptr_utils qualifier.
2602	* include/abg-regex.h (build_sptr<regex_t>): Likewise.
2603
26042020-04-24  Giuliano Procida <gprocida@google.com>
2605
2606	Simplify generation of symbol whitelist regex.
2607	* include/abg-regex.h (generate_from_strings): Declare new
2608	function to build a regex from some strings, representing a
2609	membership test.
2610	* src/abg-regex.cc (generate_from_strings): Implement new
2611	function to build a regex from some strings, representing a
2612	membership test, in a straightfoward fashion.
2613	* src/abg-tools-utils.cc
2614	(gen_suppr_spec_from_kernel_abi_whitelists): Replace
2615	regex-building code with a call to generate_from_strings.
2616	* tests/test-kmi-whitelist.cc: Update regexes in test.
2617
26182020-04-24  Giuliano Procida <gprocida@google.com>
2619
2620	Move libxml bits out of abg-sptr-utils.h.
2621	* include/abg-sptr-utils.h: Remove reader_sptr and
2622	xml_char_sptr typedefs, from namespace
2623	sptr_utils. (build_sptr): Remove corresponding template
2624	function specialisations for these types.
2625	* include/abg-libxml-utils.h: Add reader_sptr and
2626	xml_char_sptr typedefs, to namespace xml. (build_sptr): Add
2627	corresponding template function specialisations for these
2628	types.
2629
26302020-04-24  Giuliano Procida <gprocida@google.com>
2631
2632	Move regex definitions to own files.
2633	* include/Makefile.am: Add abg-regex.h.
2634	* src/Makefile.am: Remove abg-sptr-utils.h, add abg-regex.cc
2635	* include/abg-sptr-utils.h (regex_t_sptr): Remove this
2636	typedef, from namespace abigail::sptr_utils.
2637	(regex_t_deleter): Remove this struct, from namespace
2638	abigail::sptr_utils. (build_sptr): Remove these template
2639	specialisations, in duplicate, for regex_t_sptr.
2640	* include/abg-regex.h: New file, introduces namespace
2641	abigail::regex. (regex_t_sptr): Add this typedef, to namespace
2642	abigail::regex. (regex_t_deleter): Add this struct, to
2643	namespace abigail::regex. (build_sptr): Add these template
2644	specialisations for regex_t_sptr
2645	* src/abg-sptr-utils.cc: Remove this file.
2646	* src/abg-regex.cc: Add new file with contents effectively
2647	the same as abg-sptr-utils.cc.
2648	* src/abg-corpus-priv.h: Update regex_t_sptr namespace
2649	qualification.
2650	* src/abg-corpus.cc: Ditto.
2651	* src/abg-suppression-priv.h: Ditto.
2652	* src/abg-suppression.cc: Ditto.
2653
26542020-04-27  Mark Wielaard <mark@klomp.org>
2655
2656	Add --no-write-default-sizes option.
2657	* doc/manuals/abidw.rst: Document --no-write-default-sizes.
2658	* include/abg-writer.h (set_write_default_sizes): New function
2659	declaration.
2660	(set_common_options): Call set_write_default_sizes.
2661	* src/abg-reader.cc (build_function_decl): Get default size.
2662	(build_pointer_type_def): Likewise.
2663	(build_reference_type_def): Likewise.
2664	(build_function_type): Likewise.
2665	* src/abg-writer.cc (write_context): Add m_write_default_sizes
2666	bool.
2667	(get_write_default_sizes): New method.
2668	(set_write_default_sizes): Likewise.
2669	(write_size_and_alignment): Add default size and alignment
2670	parameters.
2671	(set_write_default_sizes): New function.
2672	(write_type_decl): Set default size and alignment.
2673	(write_pointer_type_def): Likewise.
2674	(write_reference_type_def): Likewise.
2675	(write_function_decl): Likewise.
2676	(write_function_type): Likewise.
2677	(write_class_decl_opening_tag): Likewise.
2678	(write_union_decl_opening_tag): Likewise.
2679	* tests/test-types-stability.cc (perform): Also test --abidiff
2680	with --no-write-default-sizes.
2681	* tools/abidw.cc (option): Add default_sizes bool.
2682	(parse_command_line): Parse --no-write-default-sizes.
2683	(display_usage): Add doc string for --no-write-default-sizes.
2684
26852020-04-26  Mark Wielaard <mark@klomp.org>
2686
2687	Rename read_elf_symbol_binding to read_elf_symbol_visibility.
2688	* src/abg-reader.cc (read_elf_symbol_binding): Renamed to...
2689	(read_elf_symbol_visibility): ...this.
2690
26912020-04-22  Giuliano Procida <gprocida@google.com>
2692
2693	abidiff: Omit declaration-only type size 0 diffs.
2694	* src/abg-reporter-priv.cc (report_size_and_alignment_changes):
2695	Filter out declaration-only / defined type size changes
2696	unconditionally.
2697	* tests/data/test-abidiff-exit/test-decl-struct-report.txt:
2698	Update test.
2699
27002020-04-22  Giuliano Procida <gprocida@google.com>
2701
2702	abidiff: Blank line after declaration-only diff.
2703	* src/abg-default-reporter.cc (default_reporter::report): In
2704	the class_or_union_diff overload, emit a new line at the end
2705	of the declaration-only reporting path.
2706	* tests/data/test-abidiff-exit/test-decl-struct-report.txt:
2707	Add missing blank lines.
2708
27092020-04-22  Giuliano Procida <gprocida@google.com>
2710
2711	Add tests for declaration-only struct diffs.
2712	* tests/data/Makefile.am: Add new test case files.
2713	* tests/data/test-abidiff-exit/test-decl-struct-report.txt:
2714	New test case generating "declaration-only" output.
2715	* tests/data/test-abidiff-exit/test-decl-struct-v0.c: Ditto.
2716	* tests/data/test-abidiff-exit/test-decl-struct-v0.o: Ditto.
2717	* tests/data/test-abidiff-exit/test-decl-struct-v1.c: Ditto.
2718	* tests/data/test-abidiff-exit/test-decl-struct-v1.o: Ditto.
2719	* tests/test-abidiff-exit.cc: Run new test case.
2720
27212020-04-24  Mark Wielaard <mark@klomp.org>
2722
2723	Add --no-elf-needed option to drop DT_NEEDED list from corpus.
2724	* doc/manuals/abidw.rst: Document --no-elf-needed.
2725	* include/abg-writer.h (set_write_elf_needed): New function.
2726	(set_common_options): Call it.
2727	* src/abg-writer.cc (write_context::m_write_elf_needed): New data
2728	member.
2729	(write_context::{g,s}et_write_elf_needed): Add new accessors.
2730	(set_write_elf_needed): New function.
2731	(write_context::write_corpus): Check write_elf_needed.
2732	* tools/abidw.cc (options): Add write_elf_needed bool.
2733	(display_usage): Describe --no-elf-needed.
2734	(parse_command_line): Parse --no-elf-needed.
2735
27362020-04-21  Mark Wielaard <mark@klomp.org>
2737
2738	Add no-parameter-names to drop function parameter names.
2739	* doc/manuals/abidw.rst: Add documentation for --no-parameter-names.
2740	* include/abg-writer.h (set_write_parameter_names): New function.
2741	(set_write_parameter_names): Call it.
2742	* src/abg-writer.cc (write_context): Add m_write_parameter_names
2743	bool, get_write_parameter_names and set_write_parameter_names
2744	functions.
2745	(write_context::write_function_decl): Check write_parameter_names.
2746	* tools/abidw.cc (options): Add write_parameter_names.
2747	(display_usage): Describe --no-parameter-names.
2748	(parse_command_line): Parse --no-parameter-names.
2749
27502020-04-24  Dodji Seketeli <dodji@redhat.com>
2751
2752	abipkgdiff: Fix race condition while using private types suppr specs
2753	* tools/abipkgdiff.cc (compare_args::private_types_suppr{1,2}):
2754	Make these data member *not* be a reference anymore.
2755	(maybe_create_private_types_suppressions): Rename this into ...
2756	(create_private_types_suppressions): ... this.  Also, make this
2757	function return a copy of the vector of suppression specifications
2758	for private types created.
2759	(compare_prepared_userspace_packages): Use the new
2760	create_private_types_suppressions to create a copy of private
2761	types suppression specifications, rather than sharing it from
2762	package::private_types_suppressions_.
2763	(extract_package_and_map_its_content): Adjust to avoid creating
2764	the shared suppression specifications for private types.
2765	(package::private_types_suppressions_): Remove this data member
2766	that was holding the shared suppressions for private types.
2767	(package::private_types_suppressions): Remove these accessors.
2768
27692020-04-22  Giuliano Procida <gprocida@google.com>
2770
2771	test24-soname-suppr*txt: Fix suppression syntax.
2772	* tests/data/test-diff-suppr/test24-soname-suppr-0.txt: Fix
2773	typo, change "reached_through" to "accessed_through".
2774	* tests/data/test-diff-suppr/test24-soname-suppr-1.txt: Ditto.
2775	* tests/data/test-diff-suppr/test24-soname-suppr-2.txt: Ditto.
2776	* tests/data/test-diff-suppr/test24-soname-suppr-3.txt: Ditto.
2777	* tests/data/test-diff-suppr/test24-soname-suppr-4.txt: Ditto.
2778
27792020-04-20  Giuliano Procida <gprocida@google.com>
2780
2781	test35-leaf.suppr: fix regex typo.
2782	* tests/data/test-diff-suppr/test35-leaf.suppr: Fix typo in
2783	regex, "*." -> ".*".
2784
27852020-04-21  Matthias Maennich <maennich@google.com>
2786
2787	abg-elf-helpers: migrate maybe_adjust_et_rel_sym_addr_to_abs_addr
2788	* src/abg-dwarf-reader.cc
2789	(maybe_adjust_et_rel_sym_addr_to_abs_addr)
2790	(drop the wrapped overload completely): Move out functions.
2791	* src/abg-elf-helpers.cc
2792	(maybe_adjust_et_rel_sym_addr_to_abs_addr): New function.
2793	* src/abg-elf-helpers.h
2794	(maybe_adjust_et_rel_sym_addr_to_abs_addr): New function
2795	declaration.
2796	Reviewed-by: Giuliano Procida <gprocida@google.com>
2797
27982020-04-21  Matthias Maennich <maennich@google.com>
2799
2800	abg-elf-helpers: migrate more elf helpers (architecture specific helpers)
2801	* src/abg-dwarf-reader.cc (elf_architecture_is_ppc64): Move
2802	function out and adjust callers to call the migrated
2803	functions.
2804	(elf_architecture_is_big_endian): Likewise.
2805	(architecture_word_size): Likewise.
2806	(current_elf_file_is_executable): Likewise.
2807	(current_elf_file_is_dso): Likewise.
2808	* src/abg-elf-helpers.cc (architecture_is_ppc64): Add new function.
2809	(architecture_is_big_endian): Likewise.
2810	(get_architecture_word_size): Likewise.
2811	(is_executable): Likewise.
2812	(is_dso): Likewise.
2813	* src/abg-elf-helpers.h (architecture_is_ppc64): Add new declaration.
2814	(architecture_is_big_endian): Likewise.
2815	(get_architecture_word_size): Likewise.
2816	(is_executable): Likewise.
2817	(is_dso): Likewise.
2818	Reviewed-by: Giuliano Procida <gprocida@google.com>
2819
28202020-04-21  Matthias Maennich <maennich@google.com>
2821
2822	abg-dwarf-reader: migrate more ELF helpers to elf-helpers
2823	* src/abg-dwarf-reader.cc (read_context::{opd_section_,
2824	ksymtab_section_, ksymtab_reloc_section_, ksymtab_gpl_section_,
2825	ksymtab_gpl_reloc_section_, ksymtab_strings_section_}): Make these
2826	data members mutable as they are set by their getter member
2827	functions, as an implementation detail.
2828	(read_context::find_symbol_table_section):
2829	adjust to new interface of elf_helpers::find_symbol_table_section.
2830	(find_opd_section): use elf_helpers::find_opd_section for lookup.
2831	(find_ksymtab_section): use elf_helpers::find_ksymtab_section.
2832	(find_ksymtab_gpl_section): use elf_helpers::find_ksymtab_gpl_section.
2833	(find_relocation_section): Move out function.
2834	(get_binary_load_address): Move out function.
2835	(find_ksymtab_reloc_section): use elf_helpers::find_relocation_section
2836	(find_ksymtab_gpl_reloc_section): use
2837	elf_helpers::find_relocation_section
2838	* src/elf-helpers.cc (find_symbol_table_section): change
2839	interface to match other find_*_section functions.
2840	(find_symbol_table_section_index): Adjust for the new interface of
2841	find_symbol_table_section.
2842	(find_opd_section): New function.
2843	(find_ksymtab_section): New function.
2844	(find_ksymtab_gpl_section): New function.
2845	(find_relocation_section): New function.
2846	(get_binary_load_address): New function.
2847	* src/elf-helpers.h (find_symbol_table_section): Change declaration.
2848	(find_opd_section): New function declaration.
2849	(find_ksymtab_section): New function declaration.
2850	(find_ksymtab_gpl_section): New function declaration.
2851	(find_relocation_section): New function declaration.
2852	(get_binary_load_address): New function declaration.
2853
28542020-04-21  Matthias Maennich <maennich@google.com>
2855
2856	abg-elf-helpers: consolidate the is_linux_kernel* helpers
2857	* src/abg-dwarf-reader.cc
2858	(read_context::function_symbol_is_exported): use is_linux_kernel
2859	from elf_helpers.
2860	(read_context::variable_is_exported): Likewise.
2861	(read_context::get_symtab_format): Likewise.
2862	(read_context::load_symbol_maps): Likewise.
2863	(read_debug_info_into_corpus): Likewise.
2864	(read_context::is_linux_kernel_binary): Drop function.
2865	(read_context::is_linux_kernel_module): Drop function.
2866	* src/abg-elf-helpers.cc (binary_is_linux_kernel): rename to
2867	is_linux_kernel
2868	(binary_is_linux_kernel_module): rename to is_linux_kernel_module
2869	(find_ksymtab_strings_section): Adjust to function renames.
2870	* src/abg-elf-helpers.h (binary_is_linux_kernel): rename to
2871	is_linux_kernel
2872	(binary_is_linux_kernel_module): rename to is_linux_kernel_module
2873	Reviewed-by: Giuliano Procida <gprocida@google.com>
2874
28752020-04-21  Matthias Maennich <maennich@google.com>
2876
2877	abg-elf-helpers: move some kernel helpers from abg-dwarf-reader
2878	* abg-dwarf-reader.cc (binary_is_linux_kernel): Move function out.
2879	(binary_is_linux_kernel_module): Likewise.
2880	(find_ksymtab_strings_section): Likewise.
2881	* abg-elf-helpers.cc (binary_is_linux_kernel): Move function in.
2882	(binary_is_linux_kernel_module): Likewise.
2883	(find_ksymtab_strings_section): Likewise.
2884	* abg-elf-helpers.h (binary_is_linux_kernel): Add declaration.
2885	(binary_is_linux_kernel_module): Likewise.
2886	(find_ksymtab_strings_section): Likewise.
2887	Reviewed-by: Giuliano Procida <gprocida@google.com>
2888
28892020-04-21  Matthias Maennich <maennich@google.com>
2890
2891	abg-elf-helpers: move some versioning helpers from abg-dwarf-reader
2892	* abg-dwarf-reader.cc (get_symbol_versionning_sections): Move function out.
2893	(get_version_definition_for_versym): Likewise.
2894	(get_version_needed_for_versym): Likewise.
2895	(get_version_for_symbol): Likewise.
2896	* abg-elf-helpers.cc (get_symbol_versionning_sections): Move function in.
2897	(get_version_definition_for_versym): Likewise.
2898	(get_version_needed_for_versym): Likewise.
2899	(get_version_for_symbol): Likewise.
2900	* abg-elf-helpers.h (get_symbol_versionning_sections): Add declaration.
2901	(get_version_definition_for_versym): Likewise.
2902	(get_version_needed_for_versym): Likewise.
2903	(get_version_for_symbol): Likewise.
2904	Reviewed-by: Giuliano Procida <gprocida@google.com>
2905
29062020-04-21  Matthias Maennich <maennich@google.com>
2907
2908	abg-elf-helpers: move some elf helpers from abg-dwarf-reader
2909	* abg-dwarf-reader.cc (stt_to_elf_symbol_type): Move function out.
2910	(stb_to_elf_symbol_binding): Likewise.
2911	(stv_to_elf_symbol_visibility): Likewise.
2912	(e_machine_to_string): Likewise.
2913	(find_section): Likewise.
2914	(find_symbol_table_section): Likewise.
2915	(find_symbol_table_section_index): Likewise.
2916	(enum hash_table_kind): Likewise.
2917	(find_hash_table_section_index): Likewise.
2918	(get_symbol_versionning_sections): Likewise.
2919	(find_text_section): Likewise.
2920	(find_bss_section): Likewise.
2921	(find_rodata_section): Likewise.
2922	(find_data_section): Likewise.
2923	(find_data1_section): Likewise.
2924	* abg-elf-helpers.cc (stt_to_elf_symbol_type): Move function in.
2925	(stb_to_elf_symbol_binding): Likewise.
2926	(stv_to_elf_symbol_visibility): Likewise.
2927	(e_machine_to_string): Likewise.
2928	(find_section): Likewise.
2929	(find_symbol_table_section): Likewise.
2930	(find_symbol_table_section_index): Likewise.
2931	(enum hash_table_kind): Likewise.
2932	(find_hash_table_section_index): Likewise.
2933	(get_symbol_versionning_sections): Likewise.
2934	(find_text_section): Likewise.
2935	(find_bss_section): Likewise.
2936	(find_rodata_section): Likewise.
2937	(find_data_section): Likewise.
2938	(find_data1_section): Likewise.
2939	* abg-elf-helpers.h (stt_to_elf_symbol_type): Add declaration.
2940	(stb_to_elf_symbol_binding): Likewise.
2941	(stv_to_elf_symbol_visibility): Likewise.
2942	(e_machine_to_string): Likewise.
2943	(find_section): Likewise.
2944	(find_symbol_table_section): Likewise.
2945	(find_symbol_table_section_index): Likewise.
2946	(enum hash_table_kind): Likewise.
2947	(find_hash_table_section_index): Likewise.
2948	(get_symbol_versionning_sections): Likewise.
2949	(find_text_section): Likewise.
2950	(find_bss_section): Likewise.
2951	(find_rodata_section): Likewise.
2952	(find_data_section): Likewise.
2953	(find_data1_section): Likewise.
2954	Reviewed-by: Giuliano Procida <gprocida@google.com>
2955
29562020-04-21  Matthias Maennich <maennich@google.com>
2957
2958	abg-dwarf-reader split: create abg-elf-helpers.{h,cc} and test case
2959	* src/Makefile.am: Add new source files abg-elf-helpers.{h,cc}.
2960	* src/abg-elf-helpers.cc: New source file.
2961	* src/abg-elf-helpers.h: New header file.
2962	* tests/.gitignore: Exclude runtestelfhelpers from being committed.
2963	* tests/Makefile.am: Add new test case runtestelfhelpers.
2964	* tests/test-elf-helpers.cc: New test source file.
2965	Reviewed-by: Giuliano Procida <gprocida@google.com>
2966
29672020-04-20  Matthias Maennich <maennich@google.com>
2968
2969	tests: parallelize diff-suppr test
2970	* tests/test-diff-suppr.cc(main): parallelize test execution.
2971	(test_task) new abigail::workers::task implementation to run
2972	test cases in this test as separate worker tasks.
2973
29742020-04-20  Matthias Maennich <maennich@google.com>
2975
2976	abg-dwarf-reader: simplify symbol map update
2977	* src/abg-dwarf-reader.cc
2978	(read_context::load_symbol_maps_from_symtab_section): simplify
2979	symbol map update for fun_syms_, undefined_fun_syms_, var_syms_,
2980	undefined_var_syms_.
2981
29822020-04-20  Matthias Maennich <maennich@google.com>
2983
2984	make: add distcheck-fast target
2985	* Makefile.am: add distcheck-fast make target
2986
29872020-04-14  Giuliano Procida <gprocida@google.com>
2988
2989	Fix variable suppression name_not_regex.
2990	* src/abg-suppression-priv.h: In get_symbol_name_not_regex
2991	method of variable_suppression::priv, fix typo causing
2992	miscompilation of regex.
2993
29942020-04-13  Mark Wielaard <mark@klomp.org>
2995
2996	Add --drop-undefined-syms to abidw.
2997	* include/abg-dwarf-reader.h (set_drop_undefined_syms):
2998	New declaration.
2999	* src/abg-dwarf-reader.cc (class read_context): Add private
3000	bool drop_undefined_syms_.
3001	(drop_undefined_syms): New getter and setter method.
3002	(set_drop_undefined_syms): New function.
3003	(function_is_suppressed): Check drop_undefined_syms on
3004	read_context.
3005	(variable_is_suppressed): Likewise.
3006	* src/abg-reader.cc (read_context): Add private bool
3007	m_drop_undefined_syms.
3008	(drop_undefined_syms): New getter and setter method.
3009	* tools/abidw.cc (struct options): Add drop_undefined_syms.
3010	(display_usage): Print --drop-undefined-syms.
3011	(parse_command_line): Parse --drop-undefined-syms.
3012	(main): Call set_drop_undefined_syms.
3013
30142020-04-12  Mark Wielaard <mark@klomp.org>
3015
3016	Add --drop-private-types to abidw.
3017	* tools/abidw.cc (options): Add drop_private_types bool.
3018	(display_usage): Add --drop-private-types.
3019	(parse_command_line): Parse --drop-private-types, set opts.
3020	(set_suppressions): Call set_drops_artifact_from_ir when
3021	drop_private_types set.
3022	* doc/manuals/abidw.rst: Document --drop-private-types.
3023
30242020-04-12  Mark Wielaard <mark@klomp.org>
3025
3026	Add --header-file option to add individual public header files.
3027	* include/abg-tools-utils.h (gen_suppr_spec_from_headers): Add
3028	hdr_files string vector argument.
3029	* src/abg-tools-utils.cc (handle_file_entry): New function that
3030	adds one specific file to the type_suppression. Implementation
3031	lifted from...
3032	(handle_fts_entry): ...here. Call handle_file_entry for each file.
3033	(gen_suppr_spec_from_headers): Also takes a header_files string
3034	vector as argument. Call handle_file_entry for each file entry.
3035	* tools/abidiff.cc (options): Add header_files1 and header_files2
3036	string vectors.
3037	(display_usage): Print --header-file1 and --header-file2 usage.
3038	(parse_command_line): Handle --header-file1, --hf1 and
3039	--header-file2, --hf2.
3040	(set_diff_context_from_opts): Call gen_suppr_spec_from_headers
3041	with header_files1 and header_files2.
3042	(set_suppressions): Likewise.
3043	* tools/abidw.cc (options): Add header_files string vector.
3044	(display_usage): Print --header-file usage.
3045	(parse_command_line): Handle --header-file1, --hf1.
3046	(maybe_check_header_files): New function.
3047	(set_suppressions): Call gen_suppr_spec_from_headers with
3048	header_files.
3049	(main): Call maybe_check_header_files.
3050	* tools/abilint.cc (options): Add header_files string vector.
3051	(display_usage): Print --header-file usage.
3052	(parse_command_line): Handle --header-file1, --hf1.
3053	(set_suppressions): Call gen_suppr_spec_from_headers with
3054	header_files.
3055	* doc/manuals/abidiff.rst: Document --header-file1, --hf1 and
3056	--header-file2, --hf2. Add new options to documentation of
3057	--drop-private-types.
3058	* doc/manuals/abidw.rst: Document --header-file, --hf.
3059	* doc/manuals/abilint.rst: Likewise.
3060
30612020-04-08  Giuliano Procida <gprocida@google.com>
3062
3063	abidiff: Document and refresh tests.
3064	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.cc:
3065	Comment test. Reorder members of ops to get better coverage.
3066	* tests/data/test-abidiff-exit/test-leaf-fun-type-v1.cc:
3067	Comment test.
3068	* tests/data/test-abidiff-exit/test-leaf-more-v1.cc: Ditto.
3069	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.cc:
3070	Comment test. Update comment on ops2.
3071	* tests/data/test-abidiff-exit/test-leaf-redundant-v1.c:
3072	Comment test.
3073	* tests/data/test-abidiff-exit/test-leaf-stats-v1.cc: Ditto.
3074	* tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt:
3075	Update locations. Update report to reflect deletion,
3076	insertion and changed members (was previously changed only).:
3077	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
3078	Update locations.
3079	* tests/data/test-abidiff-exit/test-leaf-redundant-report.txt:
3080	Ditto.:
3081	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.cc:
3082	Added one line comment referring to -v1 source file.
3083	* tests/data/test-abidiff-exit/test-leaf-fun-type-v0.cc: Ditto.
3084	* tests/data/test-abidiff-exit/test-leaf-more-v0.cc: Ditto.
3085	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.cc: Ditto.
3086	* tests/data/test-abidiff-exit/test-leaf-redundant-v0.c: Ditto.
3087	* tests/data/test-abidiff-exit/test-leaf-stats-v0.cc: Ditto.
3088	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.o: Recompiled.
3089	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.o: Ditto.
3090	* tests/data/test-abidiff-exit/test-leaf-fun-type-v0.o: Ditto.
3091	* tests/data/test-abidiff-exit/test-leaf-fun-type-v1.o: Ditto.
3092	* tests/data/test-abidiff-exit/test-leaf-more-v0.o: Ditto.
3093	* tests/data/test-abidiff-exit/test-leaf-more-v1.o: Ditto.
3094	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.o: Ditto.
3095	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.o: Ditto.
3096	* tests/data/test-abidiff-exit/test-leaf-redundant-v0.o: Ditto.
3097	* tests/data/test-abidiff-exit/test-leaf-redundant-v1.o: Ditto.
3098	* tests/data/test-abidiff-exit/test-leaf-stats-v0.o: Ditto.
3099	* tests/data/test-abidiff-exit/test-leaf-stats-v1.o: Ditto.
3100
31012020-04-14  Giuliano Procida <gprocida@google.com>
3102
3103	abg-reporter-priv.cc: Improve readability of represent helper function.
3104	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
3105	overload, rename pretty_representation to o_pretty_representation,
3106	introduce n_pretty_representation where needed and replace the
3107	duplicate tr1 and tr2 with these; rename all other variables foo1
3108	and foo2 to o_foo and n_foo respectively, using _type instead of
3109	_t; introduce o_anon and n_anon and use them to make the local
3110	variable is_strict_anonymous_data_member_change const, make
3111	ABG_ASSERT in anonymous data member handling more obvious in the
3112	case where anonymity has changed and allow simplification of
3113	formatting in this case; move declarations of const local
3114	variables above those of the non-const, state-tracking, variables.
3115
31162020-04-07  Giuliano Procida <gprocida@google.com>
3117
3118	abg-reporter-priv.cc: Fix anonymous member size change reports.
3119	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
3120	overload, factor out some expressions as local variables, rely
3121	on diff_to_be_reported to decide whether to emit a change,
3122	fold together local/non-local change reporting using
3123	local_changes to preserve current name formatting differences,
3124	keep track explicitly of whether size information has been
3125	emitted and ensure it happens if needed, make offset and size
3126	change reporting for anonymous data members more meaningful.
3127	* tests/test-abidiff-exit.cc: Run new test cases.
3128	* tests/data/Makefile.am: Add new test files.
3129	* tests/data/test-abidiff-exit/test-member-size-v0.cc: New
3130	test.
3131	* tests/data/test-abidiff-exit/test-member-size-v0.o: Ditto.
3132	* tests/data/test-abidiff-exit/test-member-size-v1.cc: Ditto.
3133	* tests/data/test-abidiff-exit/test-member-size-v1.o: Ditto.
3134	* tests/data/test-abidiff-exit/test-member-size-report0.txt:
3135	New test, default mode.
3136	* tests/data/test-abidiff-exit/test-member-size-report1.txt:
3137	New test, --leaf-changes-only mode.
3138	* tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt:
3139	Eliminate duplicate reporting of member sizes.
3140	* tests/data/test-abidiff-exit/test-leaf-more-report.txt: Ditto.
3141	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
3142	Ditto.
3143	* tests/data/test-abidiff-exit/test-no-stray-comma-report.txt:
3144	Ditto.
3145	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
3146	Add size report for anonymous data member.
3147	* tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt:
3148	Ditto.
3149	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt:
3150	Add missing size change report.
3151	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Remove
3152	size change report for previously reported type.
3153	* tests/data/test-diff-suppr/test46-PR25128-report-1.txt:
3154	Eliminate duplicate reporting of member size change.
3155	* tests/data/test-diff-suppr/test46-PR25128-report-2.txt:
3156	Ditto.
3157
31582020-04-07  Giuliano Procida <gprocida@google.com>
3159
3160	abidiff: More compact references to prior diffs.
3161	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
3162	overload, use consistent punctuation and keep to a single line
3163	of output when referring back to an existing type diff report.
3164	Remove unnecessary braces around single line conditional
3165	blocks.
3166	* src/abg-reporter-priv.h: In the macro
3167	RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use
3168	consistent punctuation when referring back to an existing type
3169	diff report.
3170	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust
3171	formatting of back references to existing type diff reports.
3172	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
3173	Ditto.
3174	* tests/data/test-diff-filter/test16-report-2.txt: Ditto.
3175	* tests/data/test-diff-filter/test17-1-report.txt: Ditto.
3176	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt:
3177	Ditto.
3178	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
3179	Ditto.
3180	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto.
3181
31822020-04-06  Giuliano Procida <gprocida@google.com>
3183
3184	test-abidiff-exit.cc: Drop redundant --redundant.
3185	* tests/test-abidiff-exit.cc: Drop obsolete --redundant flag
3186	and comment as --redundant is now implied by
3187	--leaf-changes-only.
3188
31892020-04-06  Giuliano Procida <gprocida@google.com>
3190
3191	Rename test-abidiff-exit/test-leaf[0-3] files.
3192	* tests/data/Makefile.am: Rename test files.
3193	* tests/test-abidiff-exit.cc: Rename test files.
3194	* tests/data/test-abidiff-exit/test-leaf-fun-type-report.txt:
3195	Renamed from test-leaf2-report.txt.
3196	* tests/data/test-abidiff-exit/test-leaf-fun-type-v0.cc:
3197	Renamed from test-leaf2-v0.cc.
3198	* tests/data/test-abidiff-exit/test-leaf-fun-type-v0.o:
3199	Renamed from test-leaf2-v0.o.
3200	* tests/data/test-abidiff-exit/test-leaf-fun-type-v1.cc:
3201	Renamed from test-leaf2-v1.cc.
3202	* tests/data/test-abidiff-exit/test-leaf-fun-type-v1.o:
3203	Renamed from test-leaf2-v1.o.
3204	* tests/data/test-abidiff-exit/test-leaf-more-report.txt:
3205	Renamed from test-leaf1-report.txt.
3206	* tests/data/test-abidiff-exit/test-leaf-more-v0.cc: Renamed
3207	from test-leaf1-v0.cc.
3208	* tests/data/test-abidiff-exit/test-leaf-more-v0.o: Renamed
3209	from test-leaf1-v0.o.
3210	* tests/data/test-abidiff-exit/test-leaf-more-v1.cc: Renamed
3211	from test-leaf1-v1.cc.
3212	* tests/data/test-abidiff-exit/test-leaf-more-v1.o: Renamed
3213	from test-leaf1-v1.o.
3214	* tests/data/test-abidiff-exit/test-leaf-redundant-report.txt:
3215	Renamed from test-leaf3-report.txt.
3216	* tests/data/test-abidiff-exit/test-leaf-redundant-v0.c:
3217	Renamed from test-leaf3-v0.c.
3218	* tests/data/test-abidiff-exit/test-leaf-redundant-v0.o:
3219	Renamed from test-leaf3-v0.o.
3220	* tests/data/test-abidiff-exit/test-leaf-redundant-v1.c:
3221	Renamed from test-leaf3-v1.c.
3222	* tests/data/test-abidiff-exit/test-leaf-redundant-v1.o:
3223	Renamed from test-leaf3-v1.o.
3224	* tests/data/test-abidiff-exit/test-leaf-stats-report.txt:
3225	Renamed from test-leaf0-report.txt.
3226	* tests/data/test-abidiff-exit/test-leaf-stats-v0.cc: Renamed
3227	from test-leaf0-v0.cc.
3228	* tests/data/test-abidiff-exit/test-leaf-stats-v0.o: Renamed
3229	from test-leaf0-v0.o.
3230	* tests/data/test-abidiff-exit/test-leaf-stats-v1.cc: Renamed
3231	from test-leaf0-v1.cc.
3232	* tests/data/test-abidiff-exit/test-leaf-stats-v1.o: Renamed
3233	from test-leaf0-v1.o.
3234
32352020-04-07  Dodji Seketeli <dodji@redhat.com>
3236
3237	Update the mailing list registration form on the web page
3238	* doc/website/mainpage.txt: Use the form at
3239	https://sourceware.org/mailman/listinfo/libabigail to register to
3240	the mailing list.
3241
32422020-03-30  Giuliano Procida <gprocida@google.com>
3243
3244	abg-dwarf-reader.cc: Avoid division by zero.
3245	* src/abg-dwarf-reader.cc (perform_late_type_canonicalizing):
3246	If total is zero, don't try to output percentages using it as
3247	a divisor.
3248
32492020-03-29  Giuliano Procida <gprocida@google.com>
3250
3251	abidiffpkg: Remove stray test report file.
3252	* tests/data/Makefile.am: Removed
3253	tests/data/test-diff-pkg/dirpkg-2-report-1.txt.
3254	* tests/data/test-diff-pkg/dirpkg-2-report-1.txt: Removed.
3255
32562020-03-29  Giuliano Procida <gprocida@google.com>
3257
3258	test-diff-suppr.cc: Add missing tests.
3259	* tests/test-diff-suppr.cc: Add stanzas for
3260	test6-fn-suppr-report-4, test16-suppr-removed-fn-report-5 and
3261	test22-suppr-removed-var-sym-report-5 and
3262	test23-alias-filter-report-4 tests.
3263	* tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt:
3264	Number parameters from 1 and update expected output to current
3265	formatting.
3266	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-5.txt:
3267	Update expected output to current formatting.
3268	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-5.txt:
3269	Update expected output to current formatting.
3270
32712020-03-29  Giuliano Procida <gprocida@google.com>
3272
3273	abidiff: Remove blank line after typedef changes.
3274	* include/abg-reporter.h
3275	(default_reporter::report_local_typedef_changes): Change
3276	return type to void.
3277	* src/abg-default-reporter.cc:
3278	(default_reporter::report_local_typedef_changes): Change
3279	return type to void, remove emit_nl state variable and logic.
3280	* tests/data/test-abidiff/test-PR18791-report0.txt: Remove
3281	blank lines.
3282	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt:
3283	Ditto.
3284	* tests/data/test-diff-suppr/test39-opaque-type-report-0.txt:
3285	Ditto.
3286
32872020-03-26  Giuliano Procida <gprocida@google.com>
3288
3289	Fix size calculations for multidimensional arrays.
3290	* include/abg-ir.h (array_type_def::append_subrange): Remove
3291	this function.
3292	* src/abg-ir.cc (array_type_def::set_element_type): Add a note
3293	about safe usage.
3294	(array_type_def::append_subrange): Inline this function into
3295	its only caller append_subranges and remove it.
3296	(array_type_def::append_subranges): Do correct multiplicative
3297	calculation of multidimensional array sizes.
3298	* src/abg-reader.cc (build_array_type_def): When checking
3299	calculated against read array sizes, warn once if value
3300	matches old behaviour rather than raising an assertion.
3301	Otherwise, before raising an assertion, emit an informative
3302	error message.
3303	* tests/data/test-annotate/test14-pr18893.so.abi: Correct
3304	array sizes.
3305	* tests/data/test-annotate/test17-pr19027.so.abi: Ditto.
3306	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
3307	Ditto.
3308	* tests/data/test-annotate/test7.so.abi: Ditto.
3309	* tests/data/test-diff-dwarf/test10-report.txt: Ditto.
3310	* tests/data/test-diff-dwarf/test11-report.txt: Ditto.
3311	* tests/data/test-read-write/test25.xml: Ditto.
3312	Reviewed-by: Matthias Maennich <maennich@google.com>
3313
33142020-03-27  Giuliano Procida <gprocida@google.com>
3315
3316	abidiff: Remove new lines after parameter diffs.
3317	* src/abg-default-reporter.cc: (report_local_function_type_changes):
3318	Remove unnecessary blank lines after lists of parameter changes.
3319	* tests/data/test-*/test*report*.txt: Remove blank lines after
3320	parameter change lists in 12 files.
3321	Reviewed-by: Matthias Maennich <maennich@google.com>
3322
33232020-03-27  Giuliano Procida <gprocida@google.com>
3324
3325	abidiff: Eliminate leaf mode double blank lines.
3326	* src/abg-leaf-reporter.cc: (report_diffs) Emit 1 instead of 2
3327	new lines between sections.
3328	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
3329	Replace double blank lines with single ones.
3330	* tests/data/test-diff-filter/libtest45-basic-type-change-report-1.txt:
3331	Ditto.
3332	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto.
3333	* tests/data/test-*/test*report*.txt:: Ditto.
3334	Reviewed-by: Matthias Maennich <maennich@google.com>
3335
33362020-03-27  Giuliano Procida <gprocida@google.com>
3337
3338	abidiff: Fix variable declaration formatting.
3339	* src/abg-reporter-priv.cc: (represent) In the var_diff_sptr
3340	overload, make sure the state variables begin_with_and and
3341	emitted are updated consistently; add a TODO for one case
3342	which may result in the end of the function being reached
3343	without having emitted a report; add missing new lines
3344	following reporting of anonymous member changes; only emit a
3345	final new line if begin_with_and hasn't tracked one already;
3346	document state variables.
3347	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
3348	Add missing blank line after anonymous member change text.
3349	* tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt:
3350	Add missing "and " continuation.
3351	Reviewed-by: Matthias Maennich <maennich@google.com>
3352
33532020-03-27  Giuliano Procida <gprocida@google.com>
3354
3355	abidiff: Remove member function diff blank lines.
3356	* src/abg-default-reporter.cc (report): In the
3357	class_or_union_diff overload, don't emit a new line after each
3358	list of member function, member type, template member
3359	function and template member class changes.
3360	* src/abg-leaf-reporter.cc (report): : In the
3361	class_or_union_diff overload, don't emit a new line after each
3362	list of member function changes.
3363	* tests/data/Makefile.am: Add new test case files.
3364	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.cc:
3365	New test case for --leaf-changes-only member function diffs.
3366	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.o:
3367	Ditto.
3368	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.cc:
3369	Ditto. Also add a TODO regarding a potentially bad diff.
3370	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.o:
3371	Ditto.
3372	* tests/data/test-abidiff/test-struct1-report.txt: Remove
3373	blank lines after member function changes lists.
3374	* tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt:
3375	Ditto.
3376	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
3377	Ditto.
3378	* tests/test-abidiff-exit.cc: Add new test case.
3379	Reviewed-by: Matthias Maennich <maennich@google.com>
3380
33812020-03-26  Giuliano Procida <gprocida@google.com>
3382
3383	abidiff: Fix enum impacted interfaces blank line.
3384	* src/abg-default-reporter.cc (report): In the enum_diff
3385	overload, don't emit a blank line before a possible "impacted
3386	interfaces" stanza. In the class_or_union overload, change a
3387	stray conditional to use the emitted state variable for
3388	consistency.
3389	* tests/data/test*report*.txt: Remove blank lines after enum
3390	diffs in 17 files.
3391	Reviewed-by: Matthias Maennich <maennich@google.com>
3392
33932020-03-26  Giuliano Procida <gprocida@google.com>
3394
3395	abidiff: Remove blank line after base class diffs.
3396	* src/abg-default-reporter.cc (report): In the class_diff
3397	overload, eliminate the extra blank line after base class
3398	changes and remove unneeded new line logic.
3399	* tests/data/test*report*.txt: Remove blank lines after base
3400	class diffs in 9 files.
3401	Reviewed-by: Matthias Maennich <maennich@google.com>
3402
34032020-03-26  Giuliano Procida <gprocida@google.com>
3404
3405	abidiff: Clean up new lines between sections.
3406	* src/abg-default-reporter.cc (report): In the corpus_diff
3407	override, add back the extra blank line per changed function
3408	but remove the extra one after all changed changed functions
3409	and variables; comment these.
3410	* src/abg-leaf-reporter.cc (report): In the corpus_diff
3411	override, add back the extra blank line per changed function
3412	but remove the extra one after all changed changed functions
3413	and variables; comment these.
3414	* src/abg-reporter-priv.cc
3415	(maybe_report_unreachable_type_changes): Remove extra blank
3416	line emitted after all unreachable type changes; comment
3417	this.
3418	* tests/data/test*report*.txt: Remove/add blank lines.
3419	Reviewed-by: Matthias Maennich <maennich@google.com>
3420
34212020-03-26  Giuliano Procida <gprocida@google.com>
3422
3423	abg-ir.cc: Add types_have_similar_structure tests.
3424	* src/abg-ir.cc (types_have_similar_structure): Update TODO
3425	regarding structure of arrays - multidimensional arrays are
3426	the issue.
3427	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
3428	Updated following changes.
3429	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.cc: Add
3430	more cases (see below).
3431	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.o:
3432	Updated.
3433	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.cc: Add
3434	comment about a potential change to local-change semantics;
3435	add test cases to demonstrate that * and & and * and *** are
3436	structurally different; add a TODO regarding multidimensional
3437	arrays where changes are sometimes missed in leaf mode.
3438	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.o
3439
34402020-03-28  Giuliano Procida <gprocida@google.com>
3441
3442	abg-reader.cc: Fix code indentation and tabify.
3443	* src/abg-reader.cc (build_elf_symbol_db): Fix code
3444	indentation.
3445	(build_array_type_def): Tabify.
3446
34472020-03-26  Dodji Seketeli <dodji@redhat.com>
3448
3449	Update tests/data/test-abidiff-exit/test-leaf-peeling-report.txt
3450	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
3451	Update output.
3452
34532020-03-25  Giuliano Procida <gprocida@google.com>
3454
3455	abidiff: Remove some more unnecessary blank lines.
3456	* src/abg-default-reporter.cc (report) In the
3457	class_or_union_diff overload, don't emit a new line after
3458	calls to represent. In the union_diff overload, emit a new
3459	line after a from/to change; fix indentation. In the
3460	corpus_diff overload, don't emit an extra new line after
3461	reporting a diff.
3462	* src/abg-leaf-reporter.cc (report_diffs) Don't emit a new
3463	line after reporting a canonical diff. In the
3464	class_or_union_diff overload, don't emit a new line after
3465	calls to represent. In the corpus_diff overload, don't emit an
3466	extra new line after reporting a diff.
3467	* src/abg-reporter-priv.cc (represent): Emit a final new line,
3468	but only if needed.
3469	(maybe_report_interfaces_impacted_by_diff): Emit a new line
3470	after the last impacted interface.
3471	* tests/data/test-*/*report*.txt: Remove blank lines (and add
3472	a missing one) to 77 test cases.
3473
34742020-03-25  Giuliano Procida <gprocida@google.com>
3475
3476	abg-ir.cc: Improve types_have_similar_structure.
3477	* include/abg-fwd.h (types_have_similar_structure): In both
3478	overloads, add an indirect_type argument, defaulting to
3479	false.
3480	* src/abg-ir.cc (reference_type_def constructor): Tabify.
3481	(types_have_similar_structure): In both overloads, add an
3482	indirect_type argument and update documentation text. In the
3483	type_base_sptr overload, pass indirect_type in the tail
3484	call. In the type_base* overload, replace was_indirect_type
3485	with indirect_type; peel CV qualifiers and typedefs without
3486	testing as the peel function does this; replace the
3487	indiscriminate peeling of qualifier/pointer/reference/array
3488	type components with code that checks the same
3489	pointer/reference/array type component is used on each side
3490	and makes recursive calls with indirect_type set to true; pass
3491	the indirect_type argument recursively when comparing other
3492	subtypes; move the typeid check earlier, document its purpose
3493	and remove unneccessary checks after later dynamic casts;
3494	remove an always-true conditional; add a TODO for comparing
3495	array types more accurately.
3496	* tests/data/Makefile.am: Add new test case files.
3497	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.cc: New
3498	test case.
3499	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.cc: Ditto.
3500	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
3501	Ditto.
3502	* tests/test-abidiff-exit.cc: Run new test case.
3503
35042020-03-19  Giuliano Procida <gprocida@google.com>
3505
3506	abg-ir.cc: Remove always-true check.
3507	* src/abg-ir.cc (types_have_similar_structure): Remove
3508	identical nested conditional.
3509	(reference_type_def::reference_type_def): Tabify.
3510	Reviewed-by: Matthias Maennich <maennich@google.com>
3511
35122020-03-19  Giuliano Procida <gprocida@google.com>
3513
3514	abg-ir.cc: Fix peel_typedef_type(const type_base*).
3515	* src/abg-ir.cc (peel_typedef_type): In the const type_base*
3516	overload, return the original argument rather than null if the
3517	type isn't actually a typedef.
3518
35192020-03-18  Giuliano Procida <gprocida@google.com>
3520
3521	Eliminate redundancy in representation of local change kinds.
3522	* include/abg-ir.h (change_kind): Remove redundant
3523	LOCAL_CHANGE_KIND member, renumber members and update
3524	comments.
3525	* src/abg-comparison.cc (distinct_diff::has_local_changes):
3526	Remove redundant LOCAL_CHANGE_KIND.
3527	(var_diff::has_local_changes
3528	* src/abg-ir.cc (equals): In the type_base,
3529	qualified_type_def, pointer_type_def, reference_type_def,
3530	array_type_def::subrange_type, array_type_def, enum_type_decl,
3531	typedef_decl, var_decl, function_type, function_decl,
3532	function_decl::parameter, class_or_union,
3533	class_decl::base_spec, class_decl, decl_base and scope_decl
3534	overloads, remove redundant LOCAL_CHANGE_KIND.
3535	(enum_has_non_name_change): Remove redundant
3536	LOCAL_CHANGE_KIND.
3537
35382020-03-20  Dodji Seketeli <dodji@redhat.com>
3539
3540	dwarf-reader: Fix bloom filter access in GNU_HASH section
3541	* src/abg-dwarf-reader.cc (bloom_word_at): Properly read an
3542	element from the bloom bitmasks array of 32-bits values as a
3543	64-bits value in a portable way.  Always return a 64 bits value.
3544	(lookup_symbol_from_gnu_hash_tab): Use a 64-bits value to store
3545	the bloom bitmask.
3546	* tests/data/test-lookup-syms/test1-32bits.so: New test input,
3547	compiled as a 32bits binary to test for ELFCLASS32 binaries.
3548	* tests/data/test-lookup-syms/test1.c.compiling.txt: Documentation
3549	about how to compile the test1[-21bits].so files.
3550	* tests/data/Makefile.am: Add the new test material above to
3551	source distribution.
3552	* tests/test-lookup-syms.cc (in_out_specs): Add the
3553	test1-32bits.so test case to this test harness.
3554
35552020-03-18  Giuliano Procida <gprocida@google.com>
3556
3557	Ensure change_kind enum values are used consistently.
3558	* src/abg-comparison.cc (distinct_diff::has_local_changes):
3559	Remove unnecessary parentheses around return expression.
3560	* src/abg-default-reporter.cc (report): In the reference_diff
3561	overload, replace test against LOCAL_CHANGE_KIND with test
3562	against ALL_LOCAL_CHANGES_MASK.
3563	* src/abg-ir.cc (equals): In the array_type_def and class_decl
3564	overloads, add missing LOCAL_TYPE_CHANGE_KIND. In the
3565	class_decl overload, also add missing LOCAL_CHANGE_KIND. In
3566	the enum_type_decl and function_decl::parameter overloads
3567	clarify pairing of LOCAL*CHANGE_KIND bits.
3568	(enum_has_non_name_change): Clarify pairing of
3569	LOCAL*CHANGE_KIND bits.
3570
35712020-03-18  Giuliano Procida <gprocida@google.com>
3572
3573	dwarf-reader: Use all bits of Bloom filter words.
3574	* src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab):
3575	Don't narrow calculated Bloom word to 8 bits before using it
3576	to mask the fetched Bloom word.
3577
35782020-03-15  Matthias Maennich <maennich@google.com>
3579
3580	dwarf-reader: remove superfluous ABG_ASSERT
3581	* src/abg-dwarf-reader.cc
3582	(maybe_adjust_et_rel_sym_addr_to_abs_addr): improve NULL check,
3583	remove superfluous ABG_ASSERT
3584	* tests/data/Makefile.am: Add new test case to the distribution.
3585	* tests/test-read-dwarf.cc: Likewise.
3586	* tests/data/test-read-dwarf/test27-bogus-binary.elf: New test case.
3587
35882020-03-15  Matthias Maennich <maennich@google.com>
3589
3590	test-read-dwarf: ensure in_elf_path exists and add missing test files
3591	* tests/data/Makefile.am: add missing test case files
3592	* tests/test-read-dwarf.cc (test_task::perform): assert the
3593	input elf file exists.
3594
35952020-03-18  Matthias Maennich <maennich@google.com>
3596
3597	configure: add support for memory sanitizer (--enable-msan)
3598	* configure.ac: Add configure options for -fsanitize=memory
3599
36002020-03-18  Dodji Seketeli <dodji@redhat.com>
3601
3602	abipkgdiff: fix documentation of --impacted-interface
3603	* tools/abipkgdiff.cc (display_usage): Use the same help string
3604	for the --impacted-interface option as abidiff does.
3605
36062020-03-15  Matthias Maennich <maennich@google.com>
3607
3608	abidiff: fix documentation of --impacted-interfaces
3609	* tools/abidiff.cc(display_usage): Fix doc string for
3610	--impacted-interfaces.
3611	Reported-by: Saravana Kannan <saravanak@google.com>
3612
36132020-03-17  Giuliano Procida <gprocida@google.com>
3614
3615	Tag add/remove/change lines unconditionally with [A], [D], [C].
3616	* src/abg-default-reporter.cc (report): In the corpus_diff
3617	override, remove calculations of number of changes (total) and
3618	comparisons against arbitrary threshold (large_num); emit [A],
3619	[D], [C] tags unconditionally.
3620	* src/abg-reporter-priv.cc
3621	(maybe_report_unreachable_type_changes): Remove comparisons of
3622	number of changes against arbitrary threshold (large_num);
3623	emit [A], [D], [C] tags unconditionally; fix quoting of
3624	deleted unreachable types; fix indentation of changed
3625	unreachable types.
3626	* tools/abipkgdiff.cc (compare_prepared_userspace_packages):
3627	Emit [D] and [A] tags for removed and added binaries.
3628	* tests/data/test-*/*report*.txt: In 109 report files, add
3629	tags [A], [D], [C] tags and correct some indentation and
3630	quoting.
3631
36322020-03-12  Matthias Maennich <maennich@google.com>
3633
3634	abg-workers: guard bring_workers_down to avoid dead lock
3635	* src/abg-workers.cc(do_bring_workers_down): keep
3636	task_todo_mutex locked while writing bring_workers_down,
3637	(wait_to_execute_a_task): rewrite the loop condition to ensure
3638	safe access to bring_workers_down.
3639
36402020-03-12  Matthias Maennich <maennich@google.com>
3641
3642	configure: add support for thread sanitizer (--enable-tsan)
3643	* configure.ac: Add configure options for -fsanitize=thread
3644
36452020-03-13  Matthias Maennich <maennich@google.com>
3646
3647	dwarf-reader: gnu_hash_tab lookup: fix overflow in bloom hash calculation
3648	* src/abg-dwarf-reader.cc(lookup_symbol_from_gnu_hash_tab): Fix
3649	signed integer overflow.
3650
36512020-03-12  Giuliano Procida <gprocida@google.com>
3652
3653	Treat function type changes as local.
3654	* src/abg-ir.cc (types_have_similar_structure): Always compare
3655	function types (instead of just returning true) regardless of
3656	whether they are components of pointer-to-function or
3657	reference-to-function types.
3658	* tests/data/Makefile.am: Add new test case files.
3659	* tests/data/test-abidiff-exit/test-leaf2-report.txt: New test
3660	case.
3661	* tests/data/test-abidiff-exit/test-leaf2-v0.cc: Ditto.
3662	* tests/data/test-abidiff-exit/test-leaf2-v0.o: Ditto.
3663	* tests/data/test-abidiff-exit/test-leaf2-v1.cc: Ditto.
3664	* tests/data/test-abidiff-exit/test-leaf2-v1.o: Ditto.
3665	* tests/test-abidiff-exit.cc: Run new test case.
3666
36672020-03-13  Giuliano Procida <gprocida@google.com>
3668
3669	Output 2-space indentation consistently.
3670	* src/abg-default-reporter.cc (report): In the
3671	class_or_union_diff override, use 2-space indentation when
3672	listing changed members. In the var_diff override, do the same
3673	for variable type changes.
3674	* src/abg-leaf-reporter.cc: Ditto.
3675	* tests/data/test-*/*report*.txt: Update many test cases.
3676
36772020-03-16  Giuliano Procida <gprocida@google.com>
3678
3679	Eliminate some unnecessary blank lines in diff output.
3680	* src/abg-default-reporter.cc (report): In the type_decl_diff,
3681	enum_diff, array_diff, class_diff, union_diff and var_diff
3682	overrides, simplify new line logic which no longer needs to be
3683	threaded through report_name_size_and_alignment_changes. In
3684	the distinct_diff override, simplify new line logic which no
3685	longer needs to be threaded through
3686	report_size_and_alignment_changes. In the enum_diff override,
3687	emit just one blank line after each enum. In the array_diff
3688	override, remove stray location reporting which doesn't appear
3689	to ever trigger; fix new line logic. In the
3690	class_or_union_diff override, simplify new line logic for
3691	deleted members; pass indentation to represent_data_member.
3692	* src/abg-leaf-reporter.cc (report): In the array_diff,
3693	class_diff, union_diff and var_diff overrides, simplify new
3694	line logic which no longer needs to be threaded through
3695	report_name_size_and_alignment_changes. In the distinct_diff
3696	override, simplify new line logic which no longer needs to be
3697	threaded through report_size_and_alignment_changes. In the
3698	array_diff override, remove stray location reporting which
3699	doesn't appear to ever trigger; fix new line handling. In the
3700	class_or_union_diff override, simplify new line logic for
3701	deleted members; pass indentation to represent_data_member.
3702	In the corpus_diff override, tabify source indentation.
3703	* src/abg-reporter-priv.cc (represent_data_member): Handle
3704	indentation; fix new line logic.
3705	(report_size_and_alignment_changes): Fix new line logic
3706	for "type size hasn't changed" message; simplify new line
3707	logic and replace local bool n with argument bool nl for
3708	clarity.
3709	(report_size_and_alignment_changes): Remove bool nl argument
3710	and associated code as it had become always false; take
3711	responsibility for emitting terminating new lines and change
3712	return type to void.
3713	(report_name_size_and_alignment_changes): Fix new line logic;
3714	remove bool nl argument and associated code as it had become
3715	always false; take responsibility for emitting terminating new
3716	lines and change return type to void.
3717	(maybe_report_interfaces_impacted_by_diff) In both overrides,
3718	remove new line prefix code and new_line_prefix argument.
3719	* src/abg-reporter-priv.h (represent_data_member): Add indent
3720	argument.
3721	(report_size_and_alignment_changes) Remove bool nl argument;
3722	change return type to void.
3723	(report_name_size_and_alignment_changes) Remove bool nl
3724	argument; change return type to void.
3725	(maybe_report_interfaces_impacted_by_diff) In both overrides,
3726	remove new_line_prefix argument.
3727	* tests/data/test-*/*report*.txt: Remove some blank lines.
3728
37292020-03-12  Giuliano Procida <gprocida@google.com>
3730
3731	abg-leaf-reporter.cc: Fix indentation of function parameter diffs.
3732	* src/abg-leaf-reporter.cc (report): In the fn_parm_diff
3733	override, indent the lines of detail by 2 spaces.
3734	* tests/data/test-abidiff-exit/test-leaf3-report.txt: Update
3735	report with correct indentation.
3736
37372020-03-12  Giuliano Procida <gprocida@google.com>
3738
3739	Fix interaction of --redundant and --leaf-changes-only options.
3740	* src/abg-comparison.cc (diff_context::show_leaf_changes_only):
3741	Remove "--leaf-changes-only implies --redundant" logic.
3742	* tools/abidiff.cc (display_usage): Mention that
3743	--leaf-changes-only implies --redundant.
3744	(set_diff_context_from_opts): Make --leaf-changes-only imply
3745	--redundant; document this behaviour in a comment.
3746	* tools/abipkgdiff.cc: Ditto.
3747	* tests/data/Makefile.am: Add new test case files.
3748	* tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new
3749	test case, to show --leaf-changes-only implies --redundant.
3750	* tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto.
3751	* tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto.
3752	* tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto.
3753	* tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto.
3754	* tests/test-abidiff-exit.cc: Run new test case.
3755	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
3756	Update abipkgdiff report with --redundant output.
3757	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt:
3758	Ditto.
3759	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
3760	Ditto.
3761
37622020-03-13  Giuliano Procida <gprocida@google.com>
3763
3764	Add more leaf change reporting.
3765	* doc/manuals/abidiff.rst: Update the documentation for
3766	--leaf-changes-only.
3767	* doc/manuals/abipkgdiff.rst: Likewise.
3768	* src/abg-comparison.cc (emit_diff_stats): Exclude non-leaf
3769	changes to variables from the reported total of leaf changes.
3770	* src/abg-default-reporter.cc (report): In the corpus_diff
3771	override, move some code and comments for clarity.
3772	* src/abg-leaf-reporter.cc (report): In the corpus_diff
3773	override, additionally report removed/added/changed variables
3774	and removed/added symbols absent from debug info.
3775	* tests/data/Makefile.am: Add new test case files.
3776	* tests/data/test-abidiff-exit/test-leaf0-report.txt: Update
3777	to include reporting of variable diff (change of type).
3778	* tests/data/test-abidiff-exit/test-leaf1-report.txt: New test
3779	case with added/removed variables/functions and changed
3780	variables (both local and non-local type changes).
3781	* tests/data/test-abidiff-exit/test-leaf1-v0.cc: Ditto.
3782	* tests/data/test-abidiff-exit/test-leaf1-v0.o: Ditto.
3783	* tests/data/test-abidiff-exit/test-leaf1-v1.cc: Ditto.
3784	* tests/data/test-abidiff-exit/test-leaf1-v1.o: Ditto.
3785	* tests/test-abidiff-exit.cc: Run new test case. Supply
3786	--redundant otherwise the test isn't meaningful.
3787
37882020-03-12  Dodji Seketeli <dodji@redhat.com>
3789
3790	Update fedabipkgdiff tests according to commit b602f46c
3791	* tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt:
3792	Adjust for useless whitespace removal.
3793	* tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt: Likewise.
3794	* tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt: Likewise.
3795	* tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt: Likewise.
3796	* tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt: Likewise.
3797
37982020-03-11  Giuliano Procida <gprocida@google.com>
3799
3800	Fix spurious new lines after diff sections.
3801	* src/abg-default-reporter.cc (report): In the corpus_diff
3802	overload, just use a local boolean emitted state variable
3803	within each section to determine whether or not to follow the
3804	section with an extra new line.
3805	* src/abg-leaf-reporter.cc: Ditto.
3806	* tests/data/test-*/*report*.txt: Remove unwanted new lines
3807	from 27 files.
3808
38092020-03-10  Giuliano Procida <gprocida@google.com>
3810
3811	abg-comparison.cc: Remove stray function declaration.
3812	* src/abg-comparison.cc (show_relative_offset_changes): Remove
3813	this stray function declaration.
3814
38152020-03-10  Giuliano Procida <gprocida@google.com>
3816
3817	abisym: Remove leading space in output.
3818	* tools/abisym.cc (main): Remove leading space from output.
3819	* tests/data/test-lookup-syms/test0-report.txt: Remove leading
3820	space from expected output.
3821	* tests/data/test-lookup-syms/test01-report.txt: Ditto.
3822	* tests/data/test-lookup-syms/test02-report.txt: Ditto.
3823	* tests/data/test-lookup-syms/test1-1-report.txt: Ditto.
3824
38252020-03-09  Giuliano Procida <gprocida@google.com>
3826
3827	Fix the reporting of leaf change statistics.
3828	* src/abg-comparison.cc
3829	(apply_filters_and_compute_diff_stats):	Increment the correct
3830	counter for leaf variable changes.
3831	* tests/data/Makefile.am: Add new test case files.
3832	* tests/data/test-abidiff-exit/test-leaf0-report.txt: New test
3833	case.
3834	* tests/data/test-abidiff-exit/test-leaf0-v0.cc: Ditto.
3835	* tests/data/test-abidiff-exit/test-leaf0-v0.o: Ditto.
3836	* tests/data/test-abidiff-exit/test-leaf0-v1.cc: Ditto.
3837	* tests/data/test-abidiff-exit/test-leaf0-v1.o: Ditto.
3838	* tests/test-abidiff-exit.cc: Run new test case.
3839	Reviewed-by: Matthias Maennich <maennich@google.com>
3840
38412020-03-05  Giuliano Procida <gprocida@google.com>
3842
3843	Add space missing between "[C]" tag and description of changed item.
3844	* src/abg-default-reporter.cc (report): In the overload for
3845	corpus_diff, output space after "[C]".
3846	* src/abg-leaf-reporter.cc (report): Likewise.
3847	* tests/data/test-*/*report*.txt: Update all the test
3848	reports.
3849
38502020-03-05  Giuliano Procida <gprocida@google.com>
3851
3852	Correct various inconsequential typos.
3853	* src/abg-leaf-reporter.cc (report): In the class_or_union_diff
3854	overoad, swap calls to report_mem_header to match the rest of the
3855	code.
3856	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
3857	overload, add some missing whitespace; remember we've emitted the
3858	pretty representation in 2 cases where this was omitted (though 1
3859	of these is the last case where it makes no difference).
3860	maybe_report_diff_for_symbol Add some missing whitespace; remember
3861	we've reported a diff (and need a trailing newline) in 1 case
3862	where this was omitted, also affecting the return value of the
3863	function (but no caller cares).
3864
38652020-03-05  Giuliano Procida <gprocida@google.com>
3866
3867	Correct spelling of "alignment".
3868	* src/abg-reporter-priv.cc: s/alignement/alignment/
3869	* tests/data/test-abidiff/test-struct0-report.txt: Ditto..
3870	* tests/data/test-abidiff/test-struct1-report.txt: Ditto.
3871	* tests/data/test-abidiff/test-var0-report.txt: Ditto.
3872
38732020-02-27  Dodji Seketeli <dodji@redhat.com>
3874
3875	Bump version number to 1.8
3876	* configure.ac: Update version number to 1.8
3877
38782020-02-26  Dodji Seketeli <dodji@redhat.com>
3879
3880	Update website for 1.7
3881	* doc/website/mainpage.txt: Update for 1.7
3882
38832020-02-25  Dodji Seketeli <dodji@redhat.com>
3884
3885	Update ChangeLog
3886	* ChangeLog: Automatically update by running:
3887	'make update-changelog'.
3888
38892020-02-25  Dodji Seketeli <dodji@redhat.com>
3890
3891	Update NEWS file for 1.7
3892	* NEWS: update for 1.7
3893
38942020-02-25  Dodji Seketeli <dodji@redhat.com>
3895
3896	gen-changelog.py: Update the script for python3
3897	* gen-changelog.py (process_commit): Use the functional notation
3898	for the print function invocation required by python3.
3899	(output_commits, get_rel_tags, ): Specify that the output stream
3900	of the subprocess running the git command is in the text format.
3901
39022020-02-26  Dodji Seketeli <dodji@redhat.com>
3903
3904	tools-utils: Drop redefinition of fopen when BAD_FTS is defined
3905	* src/abg-tools-utils.cc: Do not remap fopen to fopen64 as we
3906	don't use fopen explicitly anymore.
3907
39082020-02-21  Dodji Seketeli <dodji@redhat.com>
3909
3910	Update copyright year to 2020
3911	* include/abg-comp-filter.h: Update copyright year to 2020.
3912	* include/abg-comparison.h: Likewise.
3913	* include/abg-config.h: Likewise.
3914	* include/abg-corpus.h: Likewise.
3915	* include/abg-cxx-compat.h: Likewise.
3916	* include/abg-diff-utils.h: Likewise.
3917	* include/abg-dwarf-reader.h: Likewise.
3918	* include/abg-fwd.h: Likewise.
3919	* include/abg-hash.h: Likewise.
3920	* include/abg-ini.h: Likewise.
3921	* include/abg-interned-str.h: Likewise.
3922	* include/abg-ir.h: Likewise.
3923	* include/abg-libxml-utils.h: Likewise.
3924	* include/abg-libzip-utils.h: Likewise.
3925	* include/abg-reader.h: Likewise.
3926	* include/abg-reporter.h: Likewise.
3927	* include/abg-sptr-utils.h: Likewise.
3928	* include/abg-suppression.h: Likewise.
3929	* include/abg-tools-utils.h: Likewise.
3930	* include/abg-traverse.h: Likewise.
3931	* include/abg-viz-common.h: Likewise.
3932	* include/abg-viz-dot.h: Likewise.
3933	* include/abg-viz-svg.h: Likewise.
3934	* include/abg-workers.h: Likewise.
3935	* include/abg-writer.h: Likewise.
3936	* src/abg-comp-filter.cc: Likewise.
3937	* src/abg-comparison-priv.h: Likewise.
3938	* src/abg-comparison.cc: Likewise.
3939	* src/abg-config.cc: Likewise.
3940	* src/abg-corpus-priv.h: Likewise.
3941	* src/abg-corpus.cc: Likewise.
3942	* src/abg-default-reporter.cc: Likewise.
3943	* src/abg-diff-utils.cc: Likewise.
3944	* src/abg-dwarf-reader.cc: Likewise.
3945	* src/abg-hash.cc: Likewise.
3946	* src/abg-ini.cc: Likewise.
3947	* src/abg-internal.h: Likewise.
3948	* src/abg-ir-priv.h: Likewise.
3949	* src/abg-ir.cc: Likewise.
3950	* src/abg-leaf-reporter.cc: Likewise.
3951	* src/abg-libxml-utils.cc: Likewise.
3952	* src/abg-libzip-utils.cc: Likewise.
3953	* src/abg-reader.cc: Likewise.
3954	* src/abg-reporter-priv.cc: Likewise.
3955	* src/abg-reporter-priv.h: Likewise.
3956	* src/abg-sptr-utils.cc: Likewise.
3957	* src/abg-suppression-priv.h: Likewise.
3958	* src/abg-suppression.cc: Likewise.
3959	* src/abg-tools-utils.cc: Likewise.
3960	* src/abg-traverse.cc: Likewise.
3961	* src/abg-viz-common.cc: Likewise.
3962	* src/abg-viz-dot.cc: Likewise.
3963	* src/abg-viz-svg.cc: Likewise.
3964	* src/abg-workers.cc: Likewise.
3965	* src/abg-writer.cc: Likewise.
3966	* tests/print-diff-tree.cc: Likewise.
3967	* tests/test-abicompat.cc: Likewise.
3968	* tests/test-abidiff-exit.cc: Likewise.
3969	* tests/test-abidiff.cc: Likewise.
3970	* tests/test-alt-dwarf-file.cc: Likewise.
3971	* tests/test-core-diff.cc: Likewise.
3972	* tests/test-diff-dwarf-abixml.cc: Likewise.
3973	* tests/test-diff-dwarf.cc: Likewise.
3974	* tests/test-diff-filter.cc: Likewise.
3975	* tests/test-diff-pkg.cc: Likewise.
3976	* tests/test-diff-suppr.cc: Likewise.
3977	* tests/test-diff2.cc: Likewise.
3978	* tests/test-dot.cc: Likewise.
3979	* tests/test-ini.cc: Likewise.
3980	* tests/test-ir-walker.cc: Likewise.
3981	* tests/test-lookup-syms.cc: Likewise.
3982	* tests/test-read-dwarf.cc: Likewise.
3983	* tests/test-read-write.cc: Likewise.
3984	* tests/test-svg.cc: Likewise.
3985	* tests/test-tools-utils.cc: Likewise.
3986	* tests/test-types-stability.cc: Likewise.
3987	* tests/test-utils.cc: Likewise.
3988	* tests/test-utils.h: Likewise.
3989	* tests/test-write-read-archive.cc: Likewise.
3990	* tools/abiar.cc: Likewise.
3991	* tools/abicompat.cc: Likewise.
3992	* tools/abidiff.cc: Likewise.
3993	* tools/abidw.cc: Likewise.
3994	* tools/abilint.cc: Likewise.
3995	* tools/abipkgdiff.cc: Likewise.
3996	* tools/abisym.cc: Likewise.
3997	* tools/binilint.cc: Likewise.
3998	* tools/kmidiff.cc: Likewise.
3999	* update-copyright.sh: Fix the updating script to handle not just
4000	"Red Hat, Inc."
4001
40022020-02-21  Dodji Seketeli <dodji@redhat.com>
4003
4004	abixml-reader: Support SONAME related properties on file suppression
4005	* doc/manuals/libabigail-concepts.rst: Update the documentation to
4006	mention soname_regexp and soname_not_regexp is supported in the
4007	[suppress_file] section.
4008	* include/abg-suppression.h (suppression_matches_soname)
4009	(suppression_matches_soname_or_filename): Declare new functions.
4010	Make them be friends of class suppression_base.
4011	* src/abg-reader.cc
4012	(read_context::corpus_is_suppressed_by_soname_or_filename): Define
4013	new member function.
4014	(read_corpus_from_input): Apply file suppression.
4015	* src/abg-suppression.cc (read_file_suppression): Support
4016	"soname_regexp" and "soname_not_regexp" in the [suppress_file]
4017	section.
4018	(suppression_matches_soname)
4019	(suppression_matches_soname_or_filename): Define new functions.
4020	* tests/data/test-diff-suppr/libtest48-soname-abixml-report-{1,2}.txt:
4021	New test reference output files.
4022	Likewise.
4023	* tests/data/test-diff-suppr/libtest48-soname-abixml-suppr.txt:
4024	New test suppression file.
4025	* tests/data/test-diff-suppr/libtest48-soname-abixml-suppr-{2,3,4}.txt::
4026	Likewise.
4027	* tests/data/test-diff-suppr/libtest48-soname-abixml-v{0,1}.so: New
4028	test binary input files.
4029	* tests/data/test-diff-suppr/libtest48-soname-abixml-v{0,1}.so.abi:
4030	New abixml for the binary input files above.
4031	* tests/data/test-diff-suppr/test48-soname-abixml-v{0,1}.c: Source
4032	code of the binary input files above.
4033	* tests/data/Makefile.am: Add the above test material to source
4034	distribution.
4035	* tests/test-diff-suppr.cc (in_out_specs): Add the test input
4036	above to this test harness.
4037
40382020-02-21  Dodji Seketeli <dodji@redhat.com>
4039
4040	suppression: Better handle soname/filename properties evaluation
4041	* include/abg-suppression.h
4042	(suppression_base::has_{soname,file_name}_related_property): Add
4043	new member functions.
4044	* src/abg-dwarf-reader.cc (read_context::suppression_can_match):
4045	Fix the logic to make a difference between the case where the
4046	suppression doesn't have any soname/filename property and the case
4047	where the suppression does have a soname/filename property that
4048	does not match the current binary.
4049	* src/abg-reader.cc (read_context::suppression_can_match):
4050	Likewise.
4051	* src/abg-suppression-priv.h
4052	(suppression_base::priv::matches_soname): If the suppression does
4053	not have any soname related property then it doesn't match the
4054	soname we are looking at.
4055	(suppression_base::priv::matches_binary_name): If the suppression
4056	does not have any filename related property then it doesn't match
4057	the filename we are looking at.
4058	* src/abg-suppression.cc
4059	(suppression_base::has_{soname,file_name}_related_property):
4060	Define new member functions.
4061	(sonames_of_binaries_match): If the suppression does not have any
4062	soname related property then it doesn't match the corpora of the
4063	diff we are looking at.
4064	(names_of_binaries_match): If the suppression does not have any
4065	filename related property then it doesn't match the corpora of the
4066	diff we are looking at.
4067	(type_suppression::suppresses_type): Fix the logic to make a
4068	difference between the case where the suppression doesn't have any
4069	soname/filename property and the case where the suppression does
4070	have a soname/filename property that does not match the current
4071	binary.
4072	(function_suppression::suppresses_{function, function_symbol}):
4073	Likewise.
4074	(variable_suppression::suppresses_{variable, variable_symbol}):
4075	Likewise.
4076	(file_suppression::suppresses_file): Likewise.
4077
40782020-02-05  Giuliano Procida <gprocida@google.com>
4079
4080	Fix stray comma in leaf-changes-only mode.
4081	* src/abg-reporter-priv.cc (represent): Don't try to follow
4082	output of indented pretty representation with a comma, just
4083	emit "and" unconditionally; remove unnecessary intermediate
4084	ostringstream.
4085	* tests/data/Makefile.am: Add new test case files.
4086	* tests/data/test-abidiff-exit/test-no-stray-comma-*: New test
4087	cases.
4088	* tests/data/test-diff-suppr/test46-PR25128-report-?.txt:
4089	Replace unindented comma with indented "and".
4090	* tests/test-abidiff-exit.cc: Add no-stray-comma test case.
4091	Reviewed-by: Matthias Maennich <maennich@google.com>
4092
40932020-02-04  Giuliano Procida <gprocida@google.com>
4094
4095	Sort kernel module object files before processing them.
4096	* src/abg-tools-utils.cc (get_binary_paths_from_kernel_dist):
4097	Sort module_paths.
4098
40992020-02-04  Matthias Maennich <maennich@google.com>
4100
4101	abg-workers: Rework the worker queue to improve concurrent behaviour
4102	* include/abg-workers.h (workers::task): move entire
4103	implementation to header and drop superfluous forward declaration.
4104	* src/abg-workers.cc (workers::task):: Likewise.
4105	(workers::queue::priv): Drop queue_cond_mutex, rename queue_cond
4106	to tasks_todo_cond, add task_done_cond, make default_notify
4107	static.
4108	(workers::queue::priv::priv): Add default arguments to fully
4109	qualified constructor, drop the remaining ones.
4110	(workers::queue:prive::more_tasks_to_execute): Drop method.
4111	(workers::queue:prive::schedule_task): Do not synchronize access
4112	to the queue condition variable, but only on the mutex.
4113	(do_bring_workers_down): Likewise. Also await tasks_done to be
4114	empty.
4115	(workers::queue:prive::worker::wait_to_execute_a_task): Await
4116	tasks on the tasks_todo with tasks_todo_(cond|mutex) and signal
4117	task completion to tasks_done_cond.
4118
41192020-02-03  Matthias Maennich <maennich@google.com>
4120
4121	abg-dwarf-reader: zero initialize local Dwarf_Addr values
4122	* src/abg-dwarf-reader.cc
4123	(read_context::get_first_exported_fn_address_from_DW_AT_ranges):
4124	initialize local Dwarf_Addr variables.
4125	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4126
41272020-01-29  Matthias Maennich <maennich@google.com>
4128
4129	abg-comparison: prefer .empty() over implicit bool conversion of .size()
4130	* src/abg-comparison.cc (corpus_diff::has_changes): prefer
4131	!container.empty() over bool(container.size())
4132	[1] https://clang.llvm.org/extra/clang-tidy/checks/readability-container-size-empty.html
4133	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4134
41352020-01-29  Matthias Maennich <maennich@google.com>
4136
4137	Fix some parameter name inconsistencies
4138	* src/abg-comparison-priv.h
4139	(corpus_diff::priv::count_unreachable_types): use consistent
4140	parameter naming.
4141	* tools/abidiff.cc(main): Likewise.
4142	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4143
41442020-02-03  Giuliano Procida <gprocida@google.com>
4145
4146	Don't ignore options when diffing translation units (.bi files).
4147	* tests/data/Makefile.am: Add test case files.
4148	* tests/data/test-abidiff-exit/test-loc-*: New test cases.
4149	* tests/test-abidiff-exit.cc (in_out_specs): Add new test cases.
4150	* tools/abidiff.cc (main): Use populated ctxt for translation unit
4151	diff.
4152
41532020-01-29  Giuliano Procida <gprocida@google.com>
4154
4155	Fix typo in COMPILING.
4156	* COMPILING:
4157
41582020-01-29  Giuliano Procida <gprocida@google.com>
4159
4160	Remove redundant mention of libtool in COMPILING documentation.
4161	* COMPILING: Remove redundant mention of libtool.
4162
41632020-01-26  Matthias Maennich <maennich@google.com>
4164
4165	Testing: add Catch Unit test framework
4166	* tests/.gitignore: Add entry for .dirstamp
4167	* tests/Makefile.am: Add libcatch test library and use it for
4168	runtestkmiwhitelist.
4169	* tests/lib/catch.cc: New test driver implementation.
4170	* tests/lib/catch.hpp: Add Catch v1.12.2 header only test library.
4171	* tests/test-kmi-whitelist.cc: Migrate to use Catch test framework.
4172	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4173
41742020-01-25  Matthias Maennich <maennich@google.com>
4175
4176	abg-fwd: drop duplicate forward declaration for corpus_sptr
4177	* include/abg-fwd.h: drop superfluous forward declaration.
4178
41792020-01-25  Matthias Maennich <maennich@google.com>
4180
4181	Fix / add include guards
4182	* include/abg-dwarf-reader.h: Move include guard to the beginning.
4183	* include/abg-reporter-priv.h: Likewise.
4184	* include/abg-libxml-utils.h: Add include guard.
4185	* include/abg-libzip-utils.h: Likewise.
4186
41872020-01-25  Matthias Maennich <maennich@google.com>
4188
4189	dwarf-reader: handle binaries with missing symtab
4190	* src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section):
4191	Handle elf file with missing symtab.
4192	* tests/test-read-dwarf.cc (InOutSpec): add test case.
4193	* tests/data/test-read-dwarf/test26-bogus-binary.elf: new test data.
4194
41952020-01-24  Matthias Maennich <maennich@google.com>
4196
4197	dwarf-reader: handle symtab.section_header.sh_entsize == 0
4198	* src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section):
4199	Handle elf file with invalid sh_entsize.
4200	* tests/test-read-dwarf.cc (test_task::perform): handle empty
4201	in_abi_path and out_abi_path as 'read only' test.
4202	(InOutSpec): add test case.
4203	* tests/data/test-read-dwarf/test25-bogus-binary.elf: new test data.
4204
42052020-01-21  Matthias Maennich <maennich@google.com>
4206
4207	clang-format: Better approximation for binary operators and assignments
4208	* .clang-format: Add BreakBeforeBinaryOperators option.
4209
42102020-01-14  Matthias Maennich <maennich@google.com>
4211
4212	KMI Whitelists: Drop old whitelist extraction methods
4213	* include/abg-tools-utils.h
4214	(gen_suppr_spec_from_kernel_abi_whitelist): Delete declaration.
4215	* src/abg-tools-utils.cc
4216	(gen_suppr_spec_from_kernel_abi_whitelist): Delete definition
4217	and migrate users to gen_suppr_spec_from_kernel_abi_whitelists.
4218	* tools/abidiff.cc (set_suppressions): Migrate from using
4219	gen_suppr_spec_from_kernel_abi_whitelist to
4220	gen_suppr_spec_from_kernel_abi_whitelists.
4221	* tools/abidw.cc (set_suppressions): Likewise.
4222	* tools/abipkgdiff.cc: Drop unused using definition.
4223	* tools/kmidiff.cc: Likewise.
4224	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4225
42262020-01-14  Matthias Maennich <maennich@google.com>
4227
4228	KMI Whitelists: Add functionality to make whitelists additive
4229	* include/abg-tools-utils.h
4230	(gen_suppr_spec_from_kernel_abi_whitelists): New function.
4231	* src/abg-tools-utils.cc
4232	(gen_suppr_spec_from_kernel_abi_whitelists): Likewise.
4233	* tests/.gitignore: Ignore new test executable.
4234	* tests/Makefile.am: Add new test executable.
4235	* tests/data/test-kmi-whitelist/whitelist-with-another-single-entry:
4236	New test input file.
4237	* tests/data/test-kmi-whitelist/whitelist-with-duplicate-entry:
4238	Likewise.
4239	* tests/data/test-kmi-whitelist/whitelist-with-single-entry:
4240	Likewise.
4241	* tests/data/test-kmi-whitelist/whitelist-with-two-sections:
4242	Likewise.
4243	* tests/data/Makefile.am: Add above test material.
4244	* tests/test-kmi-whitelist.cc: Add new test executable.
4245	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4246
42472020-01-13  Matthias Maennich <maennich@google.com>
4248
4249	writer: completely skip over empty corpora
4250	* src/abg-writer.cc (write_corpus): completely skip empty
4251	corpora rather than creating an empty entry for them.
4252	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4253
42542020-01-13  Matthias Maennich <maennich@google.com>
4255
4256	corpus: is_empty: consider actual translation unit contents
4257	* src/abg-corpus.cc (corpus::is_empty): consider a list of
4258	empty members to be empty.
4259	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4260
42612020-01-13  Matthias Maennich <maennich@google.com>
4262
4263	abg-reader: handle empty corpus nodes in xml representation
4264	* src/abg-reader.cc (read_corpus_from_input): when assigning a
4265	corpus node, assure the node actually has children.
4266	* tests/test-abidiff.cc (main): Add test for variants of empty
4267	xml nodes to the test harness.
4268	* tests/data/test-abidiff/test-empty-corpus-0.xml: Test input
4269	containing an empty xml node that closes immediately.
4270	* tests/data/test-abidiff/test-empty-corpus-0.xml: Test input
4271	containing an empty xml node that closes immediately with a tag.
4272	* tests/data/test-abidiff/test-empty-corpus-0.xml: Test input
4273	containing an empty xml node that closes with a tag on a new line.
4274	* tests/data/test-abidiff/test-empty-corpus-report.txt:
4275	Expected test output (empty abidiff) for diffing xml with itself.
4276	* tests/data/Makefile.am: Add the new test input material above
4277	to source distribution.
4278	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4279
42802020-01-17  Dodji Seketeli <dodji@redhat.com>
4281
4282	Bug 25409 - Fix reading layout-offset-in-bits attribute of data-member
4283	* src/abg-reader.cc (read_offset_in_bits): Fix comment.  Use
4284	stroull rather than atoi.
4285	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0:
4286	Add new binary test input.
4287	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0-report-0.txt:
4288	Add new reference output.
4289	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
4290	Add new abixml representation for the binary test input above.
4291	* tests/data/Makefile.am: Add the new test material above to
4292	source distribution.
4293	* tests/test-diff-dwarf-abixml.cc (in_out_specs): Add the test
4294	input above to the test harness.
4295
42962020-01-13  Matthias Maennich <maennich@google.com>
4297
4298	abidiff/kmidiff: do not default-suppress added symbols
4299	* tools/abidiff.cc (adjust_diff_context_for_kmidiff): Drop
4300	default suppression of added symbols.
4301	* tools/kmidiff.cc (set_diff_context): Likewise.
4302	* tests/data/test-diff-suppr/test46-PR25128-report-1.txt: Adjust
4303	test expectation.
4304	* tests/data/test-diff-suppr/test46-PR25128-report-2.txt: Add
4305	test case for abidiff with flag --no-added-syms.
4306	* tests/data/Makefile.am: add new testcase.
4307	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4308
43092019-12-15  Matthias Maennich <maennich@google.com>
4310
4311	Add (undocumented) support for version suffixes
4312	* configure.ac: add substitution for VERSION_SUFFIX
4313	* include/abg-version.h.in: add define for ABIGAIL_VERSION_SUFFIX
4314	* include/abg-config.h(abigail_get_library_version): add support
4315	for a version suffix
4316	* src/abg-config.cc(abigail_get_library_version): Likewise.
4317	* src/abg-tools-utils.cc(get_library_version_string): Likewise.
4318	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4319
43202019-11-13  Matthias Maennich <maennich@google.com>
4321
4322	dwarf-reader: relax restriction about relocation sections in try_reading_first_ksymtab_entry
4323	* src/abg-dwarf-reader.cc (try_reading_first_ksymtab_entry):
4324	remove assertion and update documentation
4325	Fixes: 43679a610316 ("dwarf-reader: refactor try_reading_first_ksymtab_entry_using{pre,}_v4_19_format")
4326	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4327
43282019-11-11  Matthias Maennich <maennich@google.com>
4329
4330	abg-dwarf-reader: resolve relocation sections by index
4331	* src/abg-dwarf-reader.cc (find_relocation_section): New function.
4332	(find_ksymtab_reloc_section): Use find_relocation_section to
4333	resolve the ksymtab's relocation section.
4334	(find_ksymtab_gpl_reloc_section): Likewise.
4335	Fixes: e6870326e01a ("Support pre and post v4.19 ksymtabs for Linux kernel modules")
4336	Cc: Jessica Yu <jeyu@kernel.org>
4337	Cc: Android Kernel Team <kernel-team@android.com>
4338	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
4339
43402019-12-03  Dodji Seketeli <dodji@redhat.com>
4341
4342	Misc typo fixes
4343	* src/abg-comparison.cc
4344	(leaf_diff_node_marker_visitor::visit_begin): Fix typo in
4345	comments.
4346	* src/abg-corpus.cc
4347	(corpus::get_types_not_reachable_from_public_interfaces):
4348	Likewise.
4349	* src/abg-ir.cc (decl_base::set_has_anonymous_parent): Likewise.
4350	* src/abg-reader.cc (add_read_context_suppressions): Likewise.
4351
43522019-11-13  Dodji Seketeli <dodji@redhat.com>
4353
4354	Bug 24690 - Support comparing non-reachable types of a binary
4355	* include/abg-comparison.h (string_type_base_sptr_map): Define new
4356	typedef.
4357	(diff_context::show_unreachable_types): Declare new member
4358	functions.
4359	(corpus_diff::{deleted_unreachable_types,
4360	deleted_unreachable_types_sorted, added_unreachable_types,
4361	added_unreachable_types_sorted, changed_unreachable_types,
4362	changed_unreachable_types_sorted}): Likewise.
4363	(maybe_report_unreachable_type_changes): Declare this function a
4364	friend of class corpus_diff.
4365	(corpus_diff::diff_stats::{num_added_unreachable_types,
4366	num_added_unreachable_types_filtered_out,
4367	net_num_added_unreachable_types, num_removed_unreachable_types,
4368	num_removed_unreachable_types_filtered_out,
4369	net_num_removed_unreachable_types, num_changed_unreachable_types,
4370	num_changed_unreachable_types_filtered_out,
4371	net_num_changed_unreachable_types}): Likewise.
4372	* src/abg-comparison-priv.h
4373	(diff_context::priv::show_unreachable_types_): Define new data
4374	member.
4375	(diff_context::priv::priv): Initialize the new data member.
4376	(diff_comp::operator()): Use pretty representation of diff
4377	subjects to sort them, rather than just their name.  Also, add
4378	comment to the other member functions of diff_comp.
4379	(corpus_diff::{unreachable_types_edit_script_,
4380	deleted_unreachable_types_, deleted_unreachable_types_sorted_,
4381	suppressed_deleted_unreachable_types_, added_unreachable_types_,
4382	added_unreachable_types_sorted_,
4383	suppressed_added_unreachable_types_, changed_unreachable_types_,
4384	changed_unreachable_types_sorted_}): Define new data members.
4385	(corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types):
4386	Changed the name of
4387	corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars into
4388	this.
4389	(corpus_diff::priv::{added_unreachable_type_is_suppressed,
4390	deleted_unreachable_type_is_suppressed,
4391	changed_unreachable_types_sorted, count_unreachable_types}):
4392	Declare new member functions.
4393	(corpus_diff::diff_stats::priv::{num_added_unreachable_types,
4394	num_added_unreachable_types_filtered_out,
4395	num_removed_unreachable_types,
4396	num_removed_unreachable_types_filtered_out,
4397	num_changed_unreachable_types,
4398	num_changed_unreachable_types_filtered_out}): Define new data
4399	members.
4400	(sort_string_type_base_sptr_map): Declare new function.
4401	* src/abg-comparison.cc (sort_string_type_base_sptr_map)
4402	(diff_context::show_unreachable_types): Define new functions.
4403	(corpus_diff::diff_stats::{num_added_unreachable_types,
4404	num_added_unreachable_types_filtered_out,
4405	net_num_added_unreachable_types,
4406	net_num_removed_unreachable_types,
4407	num_removed_unreachable_types_filtered_out,
4408	num_removed_unreachable_types}): Define new member functions.
4409	(diff_maps::insert_diff_node): Do not update the map "diff ->
4410	impacted interfaces" if the current impacted interface is nil.
4411	This happens if we are looking at a diff node for a change on a
4412	type that is not reachable from any interfaces.
4413	(corpus_diff::priv::ensure_lookup_tables_populated): Handle the
4414	edit script for unreachable types.
4415	(corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types):
4416	Rename
4417	corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars
4418	into this.  Apply suppression specifications to added and removed
4419	unreachable types as well.
4420	(corpus_diff::priv::{added,deleted}_unreachable_type_is_suppressed):
4421	Define new member functions.
4422	(corpus_diff::priv::{count_unreachable_types,
4423	changed_unreachable_types_sorted}): Likewise.
4424	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Update
4425	statistics (including walking changed unreachable types to apply
4426	categorization and redundancy filters to them) related to
4427	unreachable types.
4428	(corpus_diff::priv::emit_diff_stats): Emit diff stats related to
4429	unreachable types.
4430	(corpus_diff::priv::maybe_dump_diff_tree): Dump diff tree nodes
4431	related to unreachable types.
4432	(corpus_diff::{deleted_unreachable_types,
4433	deleted_unreachable_types_sorted, added_unreachable_types,
4434	added_unreachable_types_sorted, changed_unreachable_types,
4435	changed_unreachable_types_sorted): Define new member functions.
4436	(corpus_diff::has_changes): Take deleted/added/changed unreachable
4437	types into account.
4438	(corpus_diff::has_incompatible_changes): Take net removed/changed
4439	unreachable types into account.
4440	(corpus_diff::has_net_subtype_changes): Take net removed and
4441	changed unreachable types into account.
4442	(corpus_diff::has_net_changes): Take net removed/added/changed
4443	unreachable types into account.
4444	(corpus_diff::traverse): When traversing the components of a
4445	corpus_diff node, make sure to traverse the changed unreachable
4446	types of the corpus.
4447	(leaf_diff_node_marker_visitor::visit_begin): Arrange for the fact
4448	that the current topmost interface can be nil if we are looking at
4449	types not reachable from global functions/variables.  Also, make
4450	sure that only leaf nodes that are reachable from a global
4451	function/variable are recorded as leaf nodes.
4452	(compute_diff): In the overload for corpus_sptr, compute the
4453	changes between types not reachable from global functions and
4454	variables, if the user wishes that we do so.  Also, add more
4455	comments.
4456	(apply_suppressions): Update for the name change of the function
4457	apply_suppressions_to_added_removed_fns_vars to
4458	apply_supprs_to_added_removed_fns_vars_unreachable_types.
4459	* include/abg-corpus.h
4460	(corpus::{record_type_as_reachable_from_public_interfaces,
4461	type_is_reachable_from_public_interfaces,
4462	get_types_not_reachable_from_public_interfaces}): Declare new
4463	member functions.
4464	(corpus::recording_types_reachable_from_public_interface_supported):
4465	Declare new virtual member function.
4466	(corpus_group::get_public_types_pretty_representations): Declare
4467	new member functons.
4468	(corpus_group::recording_types_reachable_from_public_interface_supported):
4469	Declare new virtual member function.
4470	* src/abg-corpus-priv.h
4471	(corpus::priv::{types_not_reachable_from_pub_ifaces_,
4472	pub_type_pretty_reprs_}): Define new data members.
4473	(corpus::priv::priv): Initialize the pub_type_pretty_reprs_ data
4474	member because it's a pointer.
4475	(corpus::priv::get_public_types_pretty_representations): Declare
4476	new member function.
4477	(corpus::priv::~priv): Declare a destructor.
4478	* src/abg-corpus.cc
4479	(corpus::priv::get_public_types_pretty_representations): Define
4480	new member function.
4481	(corpus::priv::~priv): Define new destructor to delete the new
4482	pub_type_pretty_reprs_ member pointer.
4483	(corpus::{record_type_as_reachable_from_public_interfaces,
4484	type_is_reachable_from_public_interfaces,
4485	get_types_not_reachable_from_public_interfaces,
4486	recording_types_reachable_from_public_interface_supported}):
4487	Define new member functions
4488	(corpus_group::get_public_types_pretty_representations): Likewise.
4489	* include/abg-diff-utils.h (struct deep_ptr_eq_functor): Document
4490	the equality operator.  Also, add an overload to the equality
4491	operator, for weak_ptr<T>.  The existing equality operator
4492	overload was just for shared_ptr<T>.
4493	* include/abg-fwd.h (is_user_defined_type): Declare function.
4494	* include/abg-ir.h (operator!=(const decl_base_sptr&, const
4495	decl_base_sptr&)): Declare new operator.
4496	(type_maps::get_types_sorted_by_name): Declare
4497	new member function.
4498	(decl_base::{g,s}et_is_artificial): Declare new member function.
4499	(function_decl::parameter::{g,s}et_artificial): Remove these
4500	member functions.
4501	* src/abg-ir.cc (operator!=(const decl_base_sptr&, const
4502	decl_base_sptr&)): Define new operator.
4503	(decl_base::priv::is_artificial_): Define new data
4504	member.
4505	(type_maps::priv::sorted_types_): Define new data member.
4506	(struct type_name_comp): Define new comparison functor to sort
4507	types based on their pretty representations.
4508	(decl_base::priv::priv): Initialize it.
4509	(decl_base::{g,s}et_is_artificial): Define new member functions.
4510	(type_maps::get_types_sorted_by_name): Define new member function.
4511	(is_user_defined_type): Define new function overloads.
4512	(strip_typedef, function_type::{function_type, set_parameters}):
4513	Adjust using decl_base::get_is_artificial rather than
4514	function_decl::parameter::get_artificial.
4515	(function_decl::parameter::priv::artificial_): Remove this data
4516	member.
4517	(function_decl::parameter::priv::priv): Adjust to the removal of
4518	function_decl::parameter::priv::artificial_.  This constructor
4519	does not take an "is_artificial" flag anymore.
4520	(function_decl::parameter::parameter): Adjust to the removal of
4521	the is_artificial flag from the arguments of the constructor of
4522	function_decl::parameter::parameter::priv.
4523	(function_decl::parameter::get_artificial): Remove this member
4524	function.
4525	* src/abg-reporter-priv.h (maybe_report_unreachable_type_changes):
4526	Declare new function.
4527	* src/abg-reporter-priv.cc
4528	(maybe_report_unreachable_type_changes): Define new function.
4529	* src/abg-default-reporter.cc (default_reporter::report): In the
4530	overload for corpus_diff&, report added/removed/changed types that
4531	are not reachable from global functions and variables using the
4532	new function maybe_report_unreachable_type_changes.
4533	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
4534	overload for corpus_diff, report changes to types unreachable from
4535	global functions or variables, using the new function
4536	maybe_report_unreachable_type_changes.
4537	* src/abg-dwarf-reader.cc (build_ir_node_from_die): When the user
4538	requests that all types be loaded, record relevant types as
4539	reachable from global functions and variables.
4540	(build_enum_type, add_or_update_class_type)
4541	(add_or_update_union_type): Read the 'is-artificial' DWARF
4542	attribute and set the corresponding decl_base property
4543	accordingly.
4544	(finish_member_function_reading, strip_typedef)
4545	(function_type::function_type): Adjust using
4546	decl_base::get_is_artificial, rather than
4547	function_decl::parameter::get_artificial.
4548	* include/abg-reader.h
4549	(consider_types_not_reachable_from_public_interfaces): Declare new
4550	function.
4551	* src/abg-reader.cc
4552	(read_context::m_tracking_non_reachable_types): Add new data
4553	member.
4554	(read_context::read_context): Initialize it.
4555	(read_context::tracking_non_reachable_types): Define accessors for
4556	the new data member above.
4557	(read_is_declaration_only): Re-indent.
4558	(read_is_artificial): Define new helper function.
4559	(build_function_parameter): Use the new read_is_artificial
4560	function here, rather than open-coding it.
4561	(build_enum_type_decl, build_class_decl, build_union_decl):
4562	Support reading the 'is-artificial' property by using the new
4563	read_is_artificial function.
4564	(read_corpus_from_input): If the user wants us to take
4565	non-reachable types into account, then make sure we do so.
4566	(read_tracking_non_reachable_types, read_is_non_reachable_type):
4567	Define new static functions.
4568	(handle_element_node, build_type): Read the "is-non-reachable"
4569	attribute on type element nodes if the user wants us to track
4570	non-reachable types.
4571	(consider_types_not_reachable_from_public_interfaces): Define new
4572	function.
4573	* src/abg-writer.cc (write_is_artificial): Define new static
4574	helper function.
4575	(annotate): Adjust using decl_base::get_is_artificial rather than
4576	function_decl::parameter::get_artificial.
4577	(write_enum_type_decl, write_class_decl_opening_tag)
4578	(write_union_decl_opening_tag): Support writing the
4579	"is-artificial" property, using the new write_is_artificial
4580	function.
4581	(write_function_type): Adjust this to use the new
4582	write_is_artificial rather than open-coding writing the
4583	'is-artificial' attribute.
4584	(write_is_non_reachable)
4585	(write_tracking_non_reachable_types): Define new static functions.
4586	(write_enum_type_decl, write_class_decl_opening_tag)
4587	(write_union_decl_opening_tag): Write the 'is-no-reachable'
4588	attribute when applicable.
4589	(write_corpus, write_corpus_group): Write the
4590	'tracking-non-reachable-types' attribute when applicable.
4591	* tools/abidiff.cc (options::options): Initialize ...
4592	(options::show_all_types): ... new data member.
4593	(display_usage): Add help string from the new
4594	--non-reachable-types option.
4595	(parse_command_line): Parse the new --non-reachable-types option.
4596	(set_diff_context_from_opts): Set the
4597	dwarf_reader::read_context::show_unreachable_types property.
4598	(set_native_xml_reader_options): Define new
4599	static function.
4600	(main): Load all types when analyzing the DWARF or the ABIXML
4601	files, if the user wants us to do so.
4602	* tools/abipkgdiff.cc (options::show_all_types): Define new data
4603	member.
4604	(options::options): Initialize it.
4605	(parse_command_line): Parse the --non-reachable-types option to
4606	set the options::show_all_types data member.
4607	(display_usage): Add a help string for the new
4608	--non-reachable-types option.
4609	(set_diff_context_from_opts): Set the
4610	dwarf_reader::read_context::show_unreachable_types property based
4611	on the options::show_all_type data member.
4612	(compare): Configure the read context to load all types while
4613	analyzing the DWARF info, depending on the options::show_all_type
4614	data member.
4615	* doc/manuals/abidiff.rst: Document the new --non-reachable-types
4616	option added to abidiff above.
4617	* doc/manuals/abipkgdiff.rst: Add documentation for the
4618	--non-reachable-types option.
4619	* tests/data/test-diff-suppr/test47-non-reachable-types-v{0,1}.c:
4620	Source code files of test binary input.
4621	* tests/data/test-diff-suppr/test47-non-reachable-types-suppr-{1,2,3,4,5}.txt:
4622	New test input files.
4623	* tests/data/test-diff-suppr/test47-non-reachable-types-report-{1,2,3,4,5,6,7,8,9,10}.txt:
4624	New test reference output files.
4625	* tests/data/test-diff-suppr/test47-non-reachable-types-v{0,1}.o.alltypes.abixml:
4626	New test input abixml.
4627	* tests/data/Makefile.am: Add the new test material to source
4628	distribution.
4629	* tests/test-diff-suppr.cc (in_out_specs): Add the new tests above
4630	to this test harness.
4631	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.
4632	* tests/data/test-diff-pkg/PR24690/flatpak-debuginfo-1.2.4-3.fc30.x86_64.rpm:
4633	New input binary RPM.
4634	* tests/data/test-diff-pkg/PR24690/flatpak-debuginfo-1.4.0-1.fc30.x86_64.rpm:
4635	Likewise.
4636	* tests/data/test-diff-pkg/PR24690/flatpak-devel-1.2.4-3.fc30.x86_64.rpm:
4637	Likewise.
4638	* tests/data/test-diff-pkg/PR24690/flatpak-devel-1.4.0-1.fc30.x86_64.rpm:
4639	Likewise.
4640	* tests/data/test-diff-pkg/PR24690/flatpak-libs-1.2.4-3.fc30.x86_64.rpm:
4641	Likewise.
4642	* tests/data/test-diff-pkg/PR24690/flatpak-libs-1.4.0-1.fc30.x86_64.rpm:
4643	Likewise.
4644	* tests/data/test-diff-pkg/PR24690/flatpak-libs-debuginfo-1.2.4-3.fc30.x86_64.rpm:
4645	Likewise.
4646	* tests/data/test-diff-pkg/PR24690/flatpak-libs-debuginfo-1.4.0-1.fc30.x86_64.rpm:
4647	Likewise.
4648	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: New test
4649	reference output.
4650	* tests/data/Makefile.am: Add the new test material above to
4651	source distribution.
4652	* tests/test-diff-pkg.cc (in_out_specs): Add the new test material
4653	above to this test harness.
4654
46552019-11-26  Dodji Seketeli <dodji@redhat.com>
4656
4657	Small style fix in abg-default-reporter.cc
4658	* src/abg-default-reporter.cc (default_reporter::report): In the
4659	overload for corpus_diff, break a line longer than 80 characters.
4660
46612019-10-21  Matthias Maennich <maennich@google.com>
4662
4663	dwarf-reader: add support for symbol namespaces in ksymtab entries
4664	* src/abg-dwarf-reader.cc
4665	(read_context::try_reading_first_ksymtab_entry): Add
4666	symbol_offset parameter.
4667	(read_context::get_ksymtab_entry_size): Add support for variable
4668	size ksymtab entries due to symbol namespaces.
4669	(load_kernel_symbol_table): only load nb_entries when needed
4670	[1] https://lore.kernel.org/lkml/20190906103235.197072-1-maennich@google.com/
4671
46722019-10-21  Matthias Maennich <maennich@google.com>
4673
4674	dwarf-reader: refactor try_reading_first_ksymtab_entry_using{pre,}_v4_19_format
4675	* src/abg-dwarf-reader.cc(try_reading_first_ksymtab_entry):
4676	New function to consolidate functionality for
4677	try_reading_first_ksymtab_entry_using_{pre,}v4_19_format functions.
4678	(try_reading_first_ksymtab_entry_using_v4_19_format,
4679	try_reading_first_ksymtab_entry_using_pre_v4_19_format):
4680	refactor to use try_reading_first_ksymtab_entry
4681
46822019-10-28  Dodji Seketeli <dodji@redhat.com>
4683
4684	Bug 25128 - Handle decl-only classes that differ only in size
4685	* include/abg-comp-filter.h (is_decl_only_class_with_size_change):
4686	Declare an overload.
4687	* include/abg-fwd.h (look_through_decl_only_class): Declare an
4688	overload.
4689	* src/abg-comp-filter.cc (is_decl_only_class_with_size_change):
4690	Define an overload that takes class_or_union& type. Re-write the
4691	previous overload in terms of this new one.
4692	* src/abg-ir.cc (look_through_decl_only_class): Define a new
4693	overload that takes a class_or_union&.  Rewrite the previous
4694	overload in terms of this one.
4695	(equals): In the overload for class_or_union&, use
4696	is_decl_only_class_with_size_change to detect cases of decl-only
4697	classes that differ only by their size attribute and avoid
4698	comparing them.
4699	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
4700	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
4701	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
4702
47032019-10-24  Dodji Seketeli <dodji@redhat.com>
4704
4705	Bug 25128 - Leaf diff reporter shouldn't compare decl-only classes
4706	* include/abg-comp-filter.h (is_decl_only_class_with_size_change):
4707	Declare new function.
4708	* src/abg-comp-filter.cc (is_decl_only_class_with_size_change):
4709	Define new function.
4710	* src/abg-comparison.cc
4711	(leaf_diff_node_marker_visitor::visit_begin): Use the newly
4712	defined is_decl_only_class_with_size_change above to ignore bogus
4713	decl-only classes with a size change.
4714	* tests/data/test-diff-suppr/test45-abi-report-1.txt: New test input.
4715	* tests/data/test-diff-suppr/test45-abi-wl.xml: Likewise.
4716	* tests/data/test-diff-suppr/test45-abi.xml: Likewise.
4717	* tests/data/test-diff-suppr/test45-abi.suppr.txt: New reference
4718	output for the test input above.
4719	* tests/data/test-diff-suppr/test46-PR25128-base.xml: New test input.
4720	* tests/data/test-diff-suppr/test46-PR25128-new.xml: Likewise.
4721	* tests/data/test-diff-suppr/test46-PR25128-report-1.txt: New
4722	reference input for the test input above.
4723	* tests/data/Makefile.am: Add the new test material to source distribution.
4724	* tests/test-diff-suppr.cc (in_out_spec): Add the new test input
4725	above to this test harness.
4726
47272019-10-18  Dodji Seketeli <dodji@redhat.com>
4728
4729	Bug 25095 - Apply symbol white lists to ELF symbols
4730	* src/abg-tools-utils.cc (gen_suppr_spec_from_kernel_abi_whitelist):
4731	Generate a suppression specification which considers the name of
4732	the symbol associated to a function/variable, rather than just the
4733	name of said function/variable.
4734
47352019-10-18  Dodji Seketeli <dodji@redhat.com>
4736
4737	Support symbol_name_not_regexp in [suppress_{function, variable}]
4738	* doc/manuals/libabigail-concepts.rst: Document the new
4739	symbol_name_not_regexp properties for the
4740	suppress_{function,variable} directives.
4741	* include/abg-suppression.h
4742	({function,variable}_suppression::{g,s}et_symbol_name_not_regex_str):
4743	Declare new member functions.
4744	* src/abg-dwarf-reader.cc
4745	(read_context::is_elf_symbol_suppressed): Define new member functions.
4746	(read_context::{load_symbol_maps_from_symtab_section,
4747	populate_symbol_map_from_ksymtab,
4748	populate_symbol_map_from_ksymtab_reloc}): Drop suppressed symbols
4749	when reading symbol tables.
4750	({function,variable}_is_suppressed): Consider that in C, the
4751	linkage name is _by default_ the same as the function/variable
4752	name. Remove local variable.
4753	* include/abg-ir.h (elf_symbol_is_{function,variable}): Add ...
4754	* src/abg-ir.cc (elf_symbol_is_{function,variable}): ... new
4755	functions.
4756	* src/abg-reader.cc (build_elf_symbol): Take an additional boolean
4757	to detect and drop suppressed symbols.
4758	(build_elf_symbol_db): Adjust the call to build_elf_symbol to make
4759	it detect and drop suppressed symbols.
4760	(read_corpus_from_input): Be mindful that the set of symbols for a
4761	given corpus can be empty because of suppression specifications.
4762	* src/abg-suppression-priv.h
4763	({function,variable}_suppression::priv::symbol_name_not_regex[_str_]):
4764	Add new data members.
4765	(function,variable}_suppression::priv::get_symbol_name_not_regex):
4766	Add new member functions.
4767	({function,variable}_is_suppressed): Guard against empty name.
4768	(is_elf_symbol_suppressed): Define new function template.
4769	* src/abg-suppression.cc
4770	({function,variable}_suppression::{g,s}et_symbol_name_not_regex_str):
4771	Define new member functions.
4772	({function,variable}_suppression::suppresses_function)
4773	(suppression_matches_{function,variable}_sym_name)
4774	(read_{function,variable}_suppression): Support the new
4775	"symbol_name_not_regex" property.
4776	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-1.txt:
4777	New test reference report.
4778	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-2.txt:
4779	Likewise.
4780	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v{0,1}.c:
4781	Sources of the new test input.
4782	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v{0,1}.o:
4783	New test input binaries.
4784	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v{0,1}.o.abi:
4785	New test input abixml files.
4786	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp.suppr.txt:
4787	Next test suppression specification.
4788	* tests/data/Makefile.am: Add the new test material above to
4789	source distribution.
4790	* tests/test-diff-suppr.cc (in_out_specs): Add the input tests
4791	above to the test harness.
4792
47932019-10-24  Dodji Seketeli <dodji@redhat.com>
4794
4795	[abg-comparison.cc] Fix comments typo
4796	* src/abg-comparison.cc
4797	(leaf_diff_node_marker_visitor::visit_begin): Fix typo in comment.
4798
47992019-10-04  Matthias Maennich <maennich@google.com>
4800
4801	kmidiff: fix help message
4802	* tools/kmidiff.c (display_usage): add missing line breaks to
4803	help text
4804
48052019-10-04  Matthias Maennich <maennich@google.com>
4806
4807	dwarf-reader: read_corpus_from_elf: unconditionally load elf properties
4808	* src/abg-dwarf-reader.cc (read_corpus_from_elf):
4809	unconditionally load elf properties into context
4810
48112019-10-04  Dodji Seketeli <dodji@redhat.com>
4812
4813	PR25058 - Better support fn DIEs referring to symbols using DW_AT_ranges
4814	* src/abg-dwarf-reader.cc
4815	(read_context::get_first_exported_fn_address_from_DW_AT_ranges):
4816	Rename read_context::get_first_address_from_DW_AT_ranges into
4817	this.  Walk through the addresses referred to by the DW_AT_ranges
4818	attribute until we find one that is for an exported function
4819	symbol, rather than just picking the first address of the set.
4820	(read_context::get_function_address): Adjust.
4821
48222019-10-03  Dodji Seketeli <dodji@redhat.com>
4823
4824	PR25058 - Support decl DIEs referring to symbols using DW_AT_ranges
4825	* src/abg-dwarf-reader.cc
4826	(read_context::get_first_address_from_DW_AT_ranges): Define new
4827	member function.
4828	(read_context::get_function_address): Use the new
4829	read_context::get_first_address_from_DW_AT_ranges here.
4830	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
4831	New reference test output.
4832	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl.so: New test
4833	input binary.
4834	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl2.10.so: New test
4835	input binary.
4836	* tests/data/Makefile.am: Add the new test materials above to
4837	source distribution.
4838	* tests/test-diff-dwarf.cc (in_out_specs): Add the new input test
4839	input binary files to this test harness.
4840
48412019-10-01  Dodji Seketeli <dodji@redhat.com>
4842
4843	Fix thinkos in DW_FORM_strx detection in configure.ac
4844	* configure.ac: Fix thinko when setting the HAVE_DW_FORM_strx
4845	macro.
4846
48472019-10-01  Dodji Seketeli <dodji@redhat.com>
4848
4849	Fix a typo in a comment of abg-dwar-reader.cc
4850	* src/abg-dwarf-reader.cc (compare_dies_string_attribute_value):
4851	Fix a typo in the comment of this function.
4852
48532019-09-30  Dodji Seketeli <dodji@redhat.com>
4854
4855	PR25042 - Support string form DW_FORM_strx{1,4} from DWARF 5
4856	* configure.ac: Detect the presence of the DW_FORM_strx{1,4}
4857	enumerators.
4858	* src/abg-dwarf-reader.cc (form_is_DW_FORM_strx): Define new
4859	function.
4860	(compare_dies_string_attribute_value): Use the new
4861	form_is_DW_FORM_strx here.
4862	* tests/data/Makefile.am: Add the new test input files below to
4863	source distribution.
4864	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0:
4865	New binary test input file.
4866	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
4867	Reference output of the new binary test input file.
4868	* tests/test-read-dwarf.cc (in_out_specs): Add the input test
4869	files above to the test harness, for platforms that support the
4870	DW_FORM_strx form.
4871
48722019-09-04  Dodji Seketeli <dodji@redhat.com>
4873
4874	Support the "name_not_regexp" property in the [suppress_type] section
4875	* doc/manuals/libabigail-concepts.rst: Update this to document the
4876	new name_not_regexp property of the suppress_type directive.
4877	* include/abg-suppression.h
4878	(type_suppression::{g,s}et_type_name_not_regex_str): Declare new accessors.
4879	* src/abg-suppression-priv.h
4880	(type_suppression::priv::{type_name_not_regex_str_,
4881	type_name_not_regex_}): Define new data members.
4882	(type_suppression::priv::{get_type_name_not_regex,
4883	set_type_name_not_regex, get_type_name_not_regex_str,
4884	set_type_name_not_regex_str}): Define new member functions.
4885	* src/abg-suppression.cc
4886	(type_suppression::get_type_name_regex_str): Fix comments.
4887	(type_suppression::{set_type_name_not_regex_str,
4888	get_type_name_not_regex_str}): Define new data members.
4889	(suppression_matches_type_name): Adapt to support the new
4890	type_name_not_regex property.
4891	(read_type_suppression): Support parsing the type_name_not_regexp
4892	property.
4893	* tests/data/test-diff-suppr/test42-negative-suppr-type-report-0.txt:
4894	New test reference output.
4895	* tests/data/test-diff-suppr/test42-negative-suppr-type-report-1.txt: Likewise.
4896	* tests/data/test-diff-suppr/test42-negative-suppr-type-suppr-1.txt:
4897	New test input.
4898	* tests/data/test-diff-suppr/test42-negative-suppr-type-suppr-2.txt: Likewise.
4899	* tests/data/test-diff-suppr/test42-negative-suppr-type-v0.{cc, o}: Likewise.
4900	* tests/data/test-diff-suppr/test42-negative-suppr-type-v1.{cc,
4901	o}: Likewise.
4902	* tests/data/Makefile.am: Add the test files above to source
4903	distribution.
4904	* tests/test-diff-suppr.cc (int_out_specs): Add the new tests to
4905	the harness.
4906
49072019-09-04  Dodji Seketeli <dodji@redhat.com>
4908
4909	Better propagation of suppressed-ness to function types
4910	* src/abg-comparison.cc
4911	(suppression_categorization_visitor::visit_end): Propagate
4912	suppression-ness from suppressed function type diff node to its
4913	parent function node if the latter doesn't have any local non-type
4914	change.
4915	* tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt:
4916	New test reference output.
4917	* tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-suppr-1.txt:
4918	New test input suppression file.
4919	* tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-v{0,1}.cc:
4920	Source code of input binary file.
4921	* tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-v{0,1}.o:
4922	Input binary files.
4923	* tests/data/Makefile.am: Add the new test input files above to
4924	source distribution.
4925	* tests/test-diff-suppr.cc (in_out_specs): Add the test input to
4926	test harness.
4927
49282019-09-04  Dodji Seketeli <dodji@redhat.com>
4929
4930	[has_type_change] Better detect type size changes
4931	* src/abg-comp-filter.cc (has_type_change): Support function
4932	parameters.
4933
49342019-09-23  Dodji Seketeli <dodji@redhat.com>
4935
4936	Fix reading of relocation sections when endianness mismatches
4937	* src/abg-dwarf-reader.cc
4938	(read_context::{get_ksymtab_format_module,
4939	populate_symbol_map_from_ksymtab_reloc}): Use elf_getdata rather
4940	than elf_rawdata.
4941
49422019-09-20  Dodji Seketeli <dodji@redhat.com>
4943
4944	Guard testing v4.19+ AARCH64 kernel module loading for EL6 support
4945	* tests/test-read-dwarf.cc: Do not run the test on
4946	PR25007-sdhci.ko if the macros R_AARCH64_PREL32 and
4947	R_AARCH64_ABS64 are not defined.
4948
49492019-09-19  Dodji Seketeli <dodji@redhat.com>
4950
4951	Remove the elf_symbol::get_value property
4952	* include/abg-ir.h (elf_symbol::{elf_symbol, create}): Remove the
4953	'val' parameter.
4954	* src/abg-dwarf-reader.cc (elf_symbol::get_value): Remove this
4955	member function declaration.
4956	(lookup_symbol_from_sysv_hash_tab)
4957	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
4958	(create_default_var_sym, create_default_fn_sym)
4959	(read_context::lookup_elf_symbol_from_index): Adjust calls to
4960	creating elf_symbol instances.
4961	* src/abg-ir.cc (elf_symbol::priv::value_): Remove this data
4962	member.
4963	(elf_symbol::{priv::priv, elf_symbol, create): Adjust.
4964	* src/abg-reader.cc (build_elf_symbol): Likewise.
4965
49662019-09-19  Dodji Seketeli <dodji@redhat.com>
4967
4968	Bug 25007 - Don't use section-relative symbol values on ET_REL binaries
4969	* src/abg-dwarf-reader.cc
4970	(read_context::{lookup_native_elf_symbol_from_index,
4971	maybe_adjust_et_rel_sym_addr_to_abs_addr}): Define new member
4972	functions.
4973	(read_context::lookup_elf_symbol_from_index): Add a new overload.
4974	Write the old overloads in terms of the new one.
4975	(read_context::{load_symbol_maps_from_symtab_section,
4976	populate_symbol_map_from_ksymtab_reloc}): Use the new
4977	maybe_adjust_et_rel_sym_addr_to_abs_addr function to translate the
4978	symbol value/address into a binary-relative address before adding
4979	it to the addr->sym maps.
4980	(read_context::maybe_adjust_{fn, var}_sym_address): Do not adjust
4981	DWARF-referred-to addresses of ET_REL symbols anymore.
4982	* tests/data/test-read-dwarf/PR25007-sdhci.ko: New binary test input.
4983	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: ABI
4984	representation of the above.
4985	* tests/test-read-dwarf.cc: Add the new test input to the harness.
4986	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
4987	* tests/data/test-diff-filter/test20-inline-report-0.txt: Likewise.
4988	* tests/data/test-diff-filter/test20-inline-report-1.txt: Likewise.
4989	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
4990	* tests/data/test-diff-filter/test9-report.txt: Likewise.
4991
49922019-09-18  Dodji Seketeli <dodji@redhat.com>
4993
4994	Detect the presence of R_AARCH64_{ABS64, PREL32} macros
4995	* configure.ac: Define macros HAVE_R_AARCH64_{ABS64, PREL32}_MACRO
4996	if the macros R_AARCH64_{ABS64, PREL32} are present.
4997	* src/abg-dwarf-reader.cc
4998	(read_context::get_ksymtab_format_module): Conditionalize the use
4999	of R_AARCH64_{ABS64, PREL32} using HAVE_R_AARCH64_{ABS64, PREL32}_MACRO.
5000
50012019-09-03  Jessica Yu <jeyu@kernel.org>
5002
5003	Support pre and post v4.19 ksymtabs for Linux kernel modules
5004	* include/abg-ir.h (elf_symbol::{elf_symbol, create}): Take new
5005	symbol value and shndx parameters.
5006	(elf_symbol::{get_value, get_shndx}): Declare new accessors.
5007	* src/abg-ir.cc (elf_symbol::priv::{value_, shndx_}): New data
5008	members.
5009	(elf_symbol::priv::priv): Adjust.
5010	(elf_symbol::elf_symbol): Take new value and is_linux_string_cst
5011	parameters.
5012	(elf_symbol::create): Likewise.
5013	(elf_symbol::{get_value, get_is_linux_string_cst}): Define new
5014	accessors.
5015	* src/abg-reader.cc (build_elf_symbol): Adjust.
5016	* src/abg-dwarf-reader.cc (binary_is_linux_kernel)
5017	(binary_is_linux_kernel): New static functions.
5018	(lookup_symbol_from_sysv_hash_tab)
5019	(lookup_symbol_from_gnu_hash_tab)
5020	(lookup_symbol_from_symtab): Adjust.
5021	(read_context::{ksymtab_reloc_section_,
5022	ksymtab_gpl_reloc_section_, ksymtab_strings_section_}): New data
5023	members.
5024	(read_context::read_context): Initialize ksymtab_reloc_section_,
5025	ksymtab_gpl_reloc_section_, ksymtab_strings_section_.
5026	(read_context::{find_ksymtab_reloc_section,
5027	find_ksymtab_gpl_reloc_section, find_ksymtab_strings_section,
5028	find_any_ksymtab_reloc_section, get_ksymtab_format_module,
5029	populate_symbol_map_from_ksymtab,
5030	populate_symbol_map_from_ksymtab_reloc, is_linux_kernel_module}):
5031	New member functions.
5032	(read_context::load_kernel_symbol_table): Adjust to call either
5033	populate_symbol_map_from_ksymtab{_reloc,} depending on ksymtab
5034	format.
5035	(read_context::get_ksymtab_format): Adjust to call
5036	get_ksymtab_format_module for linux kernel modules.
5037	(read_context::lookup_elf_symbol_from_index): Adjust.
5038	(create_default_var_sym, create_default_fn_sym): Adjust.
5039
50402019-08-02  Dodji Seketeli <dodji@redhat.com>
5041
5042	Serialize canonical types to avoid testing if types have been emitted
5043	* include/abg-fwd.h (is_decl_slow)
5044	(peel_pointer_or_reference_type): Declare new functions.
5045	* include/abg-ir.h (struct canonical_type_hash): Define new type.
5046	(type_base_ptr_set_type, type_base_ptrs_type)
5047	(type_base_sptrs_type, canonical_type_sptr_set_type): Define new
5048	typedefs.
5049	(environment::get_canonical_types_map): Declare new member
5050	function.
5051	(scope_decl::{get_canonical_types, get_sorted_canonical_types}):
5052	Declare new member functions.
5053	* src/abg-ir.cc (is_ptr_ref_or_qual_type)
5054	(peel_pointer_or_reference_type, is_decl_slow): Define new
5055	functions.
5056	(environment::{get_canonical_types_map}): Define new member
5057	functions.
5058	(canonical_type_hash::operator()): Likewise.
5059	(scope_decl::{get_canonical_types, get_sorted_canonical_types}):
5060	Likewise.
5061	(struct type_topo_comp): Define new comparison functor type.
5062	(environment::{sorted_canonical_types_}): Define new data member.
5063	(scope_decl::priv::{canonical_types_, sorted_canonical_types_}):
5064	Likewise.
5065	(scope_decl::is_empty): Take the presence of canonical types into
5066	account when determining if a scope is empty or not.
5067	(is_decl): Make this work for cases where the artifact at hand is
5068	a type which has a declaration, as opposed to being a pure
5069	declaration like a variable or a function.
5070	(canonicalize): Add the canonical type the list of canonical types
5071	of its scope.
5072	* src/abg-dwarf-reader.cc (read_context::die_is_in_cplus_plus):
5073	Define new member function.
5074	* src/abg-writer.cc (write_type, write_canonical_types_of_scope):
5075	Define new static functions.
5076	(fn_type_ptr_set_type): Define new typedef.
5077	(write_context::{m_referenced_fn_types_set,
5078	m_referenced_non_canonical_types_set}): Add new data members.
5079	(write_context::m_referenced_types_set): Renamed
5080	m_referenced_types_map into this.
5081	(write_context::get_referenced_types): Adjust.
5082	(write_context::get_referenced_{function_types,
5083	non_canonical_types}):
5084	(write_context::record_type_as_referenced): Adjust to add the
5085	referenced type in the proper set which would be one of the three
5086	following: write_context::{get_referenced_types,
5087	get_referenced_function_types,
5088	get_referenced_non_canonical_types}.
5089	(write_context::{type_is_referenced, clear_referenced}): Adjust.
5090	(write_translation_unit): Use the new
5091	write_canonical_types_of_scope.  Also emit declaration-only
5092	classes that have member types.  Do not test if a given type of a
5093	given scope has been emitted, in general, as this was super slow
5094	given the number of types.  Emit referenced function types (as
5095	these don't belong to any scope).  Rather than using the expensive
5096	"is_function_type" on *all* the referenced types, just walk the
5097	set write_context::get_referenced_function_types.  Likewise,
5098	rather than using type_base::get_naked_canonical_type on
5099	*all* the referenced types, just walk the set
5100	write_context::get_referenced_non_canonical_types
5101	(write_class): Use write_canonical_types_of_scope here.
5102	* tools/abilint.cc (main): Support linting corpus group abixml
5103	files.
5104	* tests/data/test-annotate/libtest23.so.abi: Adjust.
5105	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
5106	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
5107	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise.
5108	* tests/data/test-annotate/test0.abi: Likewise.
5109	* tests/data/test-annotate/test1.abi: Likewise.
5110	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
5111	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
5112	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
5113	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
5114	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
5115	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
5116	* tests/data/test-annotate/test2.so.abi: Likewise.
5117	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
5118	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
5119	* tests/data/test-annotate/test4.so.abi: Likewise.
5120	* tests/data/test-annotate/test6.so.abi: Likewise.
5121	* tests/data/test-annotate/test7.so.abi: Likewise.
5122	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
5123	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
5124	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
5125	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: Likewise.
5126	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
5127	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
5128	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
5129	* tests/data/test-read-dwarf/test0.abi: Likewise.
5130	* tests/data/test-read-dwarf/test1.abi: Likewise.
5131	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
5132	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
5133	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
5134	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
5135	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
5136	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
5137	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
5138	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
5139	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
5140	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
5141	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
5142	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
5143	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
5144	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
5145	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
5146	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
5147	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
5148	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
5149	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
5150	* tests/data/test-read-write/test10.xml: Likewise.
5151	* tests/data/test-read-write/test14.xml: Likewise.
5152	* tests/data/test-read-write/test15.xml: Likewise.
5153	* tests/data/test-read-write/test17.xml: Likewise.
5154	* tests/data/test-read-write/test18.xml: Likewise.
5155	* tests/data/test-read-write/test19.xml: Likewise.
5156	* tests/data/test-read-write/test2.xml: Likewise.
5157	* tests/data/test-read-write/test20.xml: Likewise.
5158	* tests/data/test-read-write/test21.xml: Likewise.
5159	* tests/data/test-read-write/test22.xml: Likewise.
5160	* tests/data/test-read-write/test23.xml: Likewise.
5161	* tests/data/test-read-write/test24.xml: Likewise.
5162	* tests/data/test-read-write/test25.xml: Likewise.
5163	* tests/data/test-read-write/test26.xml: Likewise.
5164	* tests/data/test-read-write/test27.xml: Likewise.
5165	* tests/data/test-read-write/test28-without-std-fns-ref.xml: Likewise.
5166	* tests/data/test-read-write/test28-without-std-vars-ref.xml: Likewise.
5167	* tests/data/test-read-write/test3.xml: Likewise.
5168	* tests/data/test-read-write/test6.xml: Likewise.
5169
51702019-07-24  Matthias Maennich <maennich@google.com>
5171
5172	abg-dwarf-reader: detect kernel modules without exports as such
5173	* src/abg-dwarf-reader.cc(is_linux_kernel_binary): consider
5174	binaries only having a .modinfo section to be kernel binaries
5175	Co-developed-by: Alessio Balsini <balsini@android.com>
5176
51772019-07-22  Matthias Maennich <maennich@google.com>
5178
5179	Ensure a consistent C++ standard use
5180	* configure.ac: add -std=c++11 flag to CXXFLAGS when compiling
5181	for C++11
5182	* src/Makefile.am: drop now obsolete setting of the -std flag
5183	* tests/Makefile.am: likewise
5184	Reported-by: Chun-Hung Wu <Chun-hung.Wu@mediatek.com>
5185
51862019-07-19  Dodji Seketeli <dodji@redhat.com>
5187
5188	Bug 24787 - Filter out enum changes into compatible integer types
5189	* include/abg-comparison.h (peel_typedef_or_qualified_type_diff):
5190	Declare new function.
5191	(peel_pointer_or_qualified_type_diff): Rename
5192	peel_pointer_or_qualified_type into this.
5193	* include/abg-fwd.h (is_enum_type): Declare a new overload for
5194	type_or_decl_base*.
5195	* src/abg-comp-filter.cc (has_harmless_enum_to_int_change): Define
5196	new static function.
5197	* src/abg-comparison.cc (categorize_harmless_diff_node): Use the
5198	new has_harmless_enum_to_int_change here.
5199	(peel_pointer_or_qualified_type_diff): Renamed
5200	peel_pointer_or_qualified_type into this.
5201	(is_diff_of_basic_type): Adjust.
5202	(peel_typedef_or_qualified_type_diff): Define new function.
5203	* test-diff-filter/PR24787-lib{one, two}.so: New test input
5204	binaries.
5205	* test-diff-filter/PR24787-{one, two}.c: Source files of the test
5206	input binaries above.
5207	* test-diff-filter/PR24787-report-0.txt: Test output reference.
5208	* tests/data/Makefile.am: Add the new testing material to source
5209	distribution.
5210	* tests/test-diff-filter.cc (in_out_specs): Add the new test to
5211	the test harness.
5212
52132019-07-19  Dodji Seketeli <dodji@redhat.com>
5214
5215	Add timing to the verbose logs of abidw
5216	* include/abg-tools-utils.h (class timer): Declare new type.
5217	(operator<<(ostream&, const timer&)): Declare new streaming
5218	operator for the new timer type.
5219	* src/abg-tools-utils.cc (struct timer::priv): Define new type.
5220	(timer::{timer, start, stop, value_in_seconds, value,
5221	value_as_string, ~timer}): Define member functions.
5222	(operator<<(ostream& o, const timer& t)): Define streaming
5223	operator.
5224	(build_corpus_group_from_kernel_dist_under): Add timing logs to
5225	the linux kernel reading process.
5226	* src/abg-dwarf-reader.cc
5227	(read_context::canonicalize_types_scheduled): Add timing logs to
5228	type canonicalization.
5229	(read_debug_info_into_corpus): Add timing logs for the whole debug
5230	info loading and internal representation building process.
5231	* tools/abidw.cc (load_corpus_and_write_abixml): Add timing logs
5232	for the binary loading and serizalization process.
5233	(load_kernel_corpus_group_and_write_abixml): Add timing logs the
5234	Linux Kernel binary loading and writing process.
5235
52362019-07-18  Dodji Seketeli <dodji@redhat.com>
5237
5238	[ir] Fix indentation and add comments
5239	* src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public):
5240	Fix indentation and add comments.
5241
52422019-07-15  Dodji Seketeli <dodji@redhat.com>
5243
5244	Implement fast comparison of Linux Kernel types when applicable
5245	* include/abg-corpus.h (corpus::origin): Add a new
5246	LINUX_KERNEL_BINARY_ORIGIN enumerator.
5247	(corpus::{s,g}et_group): Declare new member
5248	functions.
5249	(class corpus): Make the corpus_group class friend of this one.
5250	(corpus_group::get_main_corpus): Declare new member function.
5251	* src/abg-corpus-priv.h (corpus::priv::group): Define new data
5252	member.
5253	(corpus::priv::priv): Initialize the new corpus::priv::group data
5254	member.
5255	* src/abg-corpus.cc (corpus::{g,s}et_group): Define new member
5256	functions.
5257	(corpus_group::get_main_corpus): Likewise.
5258	(corpus_group::add_corpus): Use the new corpus::set_group() here
5259	to to make the corpus be aware of the group it belongs to.
5260	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Set the
5261	current corpus origin to the corpus::LINUX_KERNEL_BINARY_ORIGIN if
5262	we are looking at a Linux Kernel binary.
5263	(read_context::main_corpus_from_current_group): Use the
5264	corpus_group::get_main_corpus method.
5265	(should_reuse_type_from_corpus_group): Return the corpus group,
5266	rather than the main corpus.
5267	(read_debug_info_into_corpus): Add the current corpus to the
5268	current corpus group before the debug info reading is done.  That
5269	way, the corpus group will be accessible from the current corpus
5270	during the construction of the internal representation.
5271	(read_and_add_corpus_to_group_from_elf): Add the corpus to the
5272	group only if it wasn't added to it before.
5273	* include/abg-ir.h (operator{==,!=}): Declare new deep equality
5274	and inequality operators for class_or_union_sptr and
5275	union_decl_sptr.
5276	* src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public):
5277	Define a new static function.
5278	(type_base::get_canonical_type_for): Use the new
5279	types_defined_same_linux_kernel_corpus_public here to speed up
5280	type comparison.
5281	(equals): In the overload of class_or_union, use the new
5282	types_defined_same_linux_kernel_corpus_public as well, to speed up
5283	type comparison.
5284	(operator{==,!=}): Define new deep equality and inequality
5285	operators for class_or_union_sptr and union_decl_sptr.
5286	(maybe_update_types_lookup_map): In the overload function for
5287	type_decl_sptr, class_decl_sptr, union_decl_sptr,
5288	enum_type_decl_sptr, typedef_decl_sptr, qualified_type_def_sptr,
5289	reference_type_def_sptr, array_type_def_sptr,
5290	array_type_def::subrange_sptr, and function_type_sptr, update the
5291	type lookup maps of the containing corpus group as well, not just
5292	the ones of the current corpus.
5293	* src/abg-reader.cc (build_enum_type_decl): Forgot to set the
5294	"is-anonymous" flag.  Oops, fix this.
5295	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
5296	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
5297	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
5298	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
5299	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
5300
53012019-07-09  Matthias Maennich <maennich@google.com>
5302
5303	abg-tools-utils: add missing header include guards
5304	* include/abg-tools-utils.h: add header include guards
5305
53062019-07-05  Matthias Maennich <maennich@google.com>
5307
5308	Add compatibility layer for C++11 mode
5309	* include/abg-cxx-compat.h: new file introducing the abg_compat
5310	namespace to provide C++11 functionality from either std::tr1
5311	or std::
5312	* include/Makefile.am: Add the new abg-cxx-compat.h to source
5313	distribution.
5314	* include/abg-comparison.h: replace std::tr1 usage by abg_compat
5315	and adjust includes accordingly: likewise
5316	* include/abg-diff-utils.h: likewise
5317	* include/abg-fwd.h: likewise
5318	* include/abg-ini.h: likewise
5319	* include/abg-interned-str.h: likewise
5320	* include/abg-ir.h: likewise
5321	* include/abg-libxml-utils.h: likewise
5322	* include/abg-libzip-utils.h: likewise
5323	* include/abg-reporter.h: likewise
5324	* include/abg-sptr-utils.h: likewise
5325	* include/abg-suppression.h: likewise
5326	* include/abg-tools-utils.h: likewise
5327	* include/abg-workers.h: likewise
5328	* src/abg-comp-filter.cc: likewise
5329	* src/abg-comparison-priv.h: likewise
5330	* src/abg-corpus.cc: likewise
5331	* src/abg-dwarf-reader.cc: likewise
5332	* src/abg-hash.cc: likewise
5333	* src/abg-ir.cc: likewise
5334	* src/abg-reader.cc: likewise
5335	* src/abg-suppression.cc: likewise
5336	* src/abg-tools-utils.cc: likewise
5337	* src/abg-writer.cc: likewise
5338	* tests/test-diff-filter.cc: likewise
5339	* tests/test-diff-pkg.cc: likewise
5340	* tests/test-read-dwarf.cc: likewise
5341	* tests/test-read-write.cc: likewise
5342	* tests/test-types-stability.cc: likewise
5343	* tests/test-write-read-archive.cc: likewise
5344	* tools/abicompat.cc: likewise
5345	* tools/abidiff.cc: likewise
5346	* tools/abidw.cc: likewise
5347	* tools/abilint.cc: likewise
5348	* tools/abipkgdiff.cc: likewise
5349
53502019-07-05  Matthias Maennich <maennich@google.com>
5351
5352	Update tests/.gitignore to ignore runtesttoolsutils
5353	* tests/.gitignore: ignore runtesttoolsutils
5354
53552019-07-05  Matthias Maennich <maennich@google.com>
5356
5357	Drop requirement to compile with GNU extensions
5358	* include/abg-tools-utils.h (get_stream): Change return type to
5359	std::fstream
5360	* src/abg-corpus.cc: remove unused #include of ext/stdio_filebuf.h
5361	* src/abg-tools-utils (temp_file::priv): remove filebuf_ member,
5362	and replace iostream_ by fstream_ with changing the shared_ptr
5363	type accordingly
5364	(temp_file::priv::priv): initialize fstream_ based on
5365	temporary file name
5366	(temp_file::priv::~priv): adjust destruction accordingly
5367	(temp_file::is_good): test the fstream rather than the fd
5368	(temp_file::get_stream): adjust return type to std::fstream
5369	and adjust implementation based on the changes in temp_file::priv
5370	* src/Makefile.am: remove gnu extension from c++ standard flag
5371	* tests/Makefile.am: likewise
5372
53732019-07-09  Dodji Seketeli <dodji@redhat.com>
5374
5375	Misc indent cleanup
5376	* src/abg-dwarf-reader.cc (addr_elf_symbol_sptr_map_sptr): Fix a
5377	typo in the comment of this typedef.
5378	* src/abg-ir.cc (hash_type_or_decl): Fix typo in a comment.
5379	* src/abg-writer.cc (write_translation_unit): Remove useless
5380	vertical space.
5381
53822019-07-08  Dodji Seketeli <dodji@redhat.com>
5383
5384	[xml-writer] Remove a useless kludge
5385	* src/abg-writer.cc (write_context::type_is_emitted): Remove
5386	useless kludge from here.
5387
53882019-07-08  Dodji Seketeli <dodji@redhat.com>
5389
5390	[xml-writter] Speedup function_type::get_cached_name
5391	* src/abg-ir.cc (function_type::get_cached_name): Really cache the
5392	computed name of function_type instances.
5393
53942019-07-08  Dodji Seketeli <dodji@redhat.com>
5395
5396	[xml-writter] Avoid using RTTI when dynamically hashing types
5397	* include/abg-fwd.h (hash_type): Declare new function.
5398	* src/abg-ir.cc (hash_type): Define new function.
5399	* src/abg-writer.cc (type_hasher::operator()): Use the new
5400	hash_type rather than the old hash_type_or_decl.
5401
54022019-07-08  Dodji Seketeli <dodji@redhat.com>
5403
5404	Implement a poor-man's RTTI for performance
5405	* include/abg-fwd.h (is_type_decl): Replace the overloads
5406	that takes a type_base* and/or a decl_base* by one that takes a
5407	type_or_decl_base*.
5408	* include/abg-ir.h (type_or_decl_base::type_or_decl_kind): Define
5409	new enum.
5410	(type_or_decl_base::{kind, runtime_type_instance,
5411	type_or_decl_base_pointer}): Declare new accessors.
5412	(operator{|,|=,&,&=): Declare new operators for the new
5413	type_or_decl_base::type_or_decl_kind enum.
5414	(global_scope::global_scope): Move the definition of this
5415	constructor to ...
5416	* src/abg-ir.cc (global_scope::global_scope): ... here.
5417	(type_or_decl_base::priv::{kind_, rtti_, type_or_decl_ptr_}):
5418	Add new data members.
5419	(type_or_decl_base::priv::priv): Take a
5420	type_or_decl_base::type_or_decl_kind enum.
5421	(type_or_decl_base::priv::kind): Define new accessors.
5422	(operator{|,|=,&,&=): Define new operators for the new
5423	type_or_decl_base::type_or_decl_kind enum.
5424	(type_or_decl_base::type_or_decl_base): Take a
5425	type_or_decl_base::type_or_decl_kind enum.
5426	(type_or_decl_base::{kind, runtime_type_instance,
5427	type_or_decl_base_pointer}): Define new accessors.
5428	(decl_base::decl_base, scope_decl::scope_decl)
5429	(type_base::type_base, scope_type_decl::scope_type_decl)
5430	(class_or_union::class_or_union) : Adjust to set the runtime type
5431	identifier of the instances of these types.
5432	(global_scope::global_scope, type_decl::type_decl)
5433	(qualified_type_def::qualified_type_def)
5434	(pointer_type_def::pointer_type_def)
5435	(reference_type_def::reference_type_def
5436	array_type_def::subrange_type::subrange_type)
5437	(array_type_def::array_type_def, enum_type_decl::enum_type_decl)
5438	(typedef_decl::typedef_decl, var_decl::var_decl)
5439	(function_type::function_type, method_type::method_type)
5440	(function_decl::function_decl)
5441	(function_decl::parameter::parameter, method_decl::method_decl)
5442	(class_decl::class_decl, class_decl::base_spec::base_spec)
5443	(union_decl::union_decl, template_decl::template_decl)
5444	(type_tparameter::type_tparameter)
5445	(non_type_tparameter::non_type_tparameter)
5446	(template_tparameter::template_tparameter)
5447	(type_composition::type_composition)
5448	(function_tdecl::function_tdecl, function_tdecl::function_tdecl)
5449	(class_tdecl::class_tdecl):
5450	Likewise and call runtime_type_instance() here to set the runtime
5451	type instance pointers of the current instance.
5452	(is_decl, is_type, is_class_type, is_pointer_type): Adjust to use
5453	the new poor-man's rtti machinery.
5454	(is_type_decl): Replace the overloads that takes a type_base*
5455	and/or a decl_base* by one that takes a type_or_decl_base*.
5456	(pointer_type_def::operator==, class_decl::operator==): Use the
5457	poor-man's rtti machinery to replace dynamic_cast.
5458	hash_type_or_decl: Replace dynamic_cast<const type_base> by
5459	is_type() and dynamic_cast<const decl_base*> by is_decl().
5460
54612019-07-05  Dodji Seketeli <dodji@redhat.com>
5462
5463	[dwarf-reader] Make sure to canonicalize anonymous types
5464	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Add two new
5465	overloads.  One that takes type_base_sptr, one that takes a
5466	Dwarf_Die* and type_base_sptr.  These force canonicalization for
5467	anonymous types.
5468	(build_function_type): Schedule function types for
5469	canonicalization.
5470	(build_ir_node_from_die): For struct/classes and unions, use the
5471	new overload of maybe_canonicalize_type to schedule
5472	canonicalization.
5473	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
5474	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
5475	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
5476	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
5477	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
5478
54792019-07-04  Dodji Seketeli <dodji@redhat.com>
5480
5481	[dwarf-reader] Constify the first parameter of maybe_canonicalize_type
5482	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Make the
5483	first parameter const.
5484	(read_context::{get_canonical_die, lookup_artifact_from_die,
5485	lookup_type_from_die, schedule_type_for_late_canonicalization}):
5486	Adjust.
5487
54882019-06-26  Dodji Seketeli <dodji@redhat.com>
5489
5490	Make abidiff --harmless show harmless changes in unions
5491	* include/abg-fwd.h (get_class_or_union_flat_representation): Add
5492	a "qualified_name" boolean parameter.
5493	* include/abg-ir.h ({type_or_decl_base, decl_base, type_decl,
5494	namespace_decl, array_type_def::subrange_type, array_type_def,
5495	enum_type_decl, typedef_decl, var_decl, function_decl,
5496	function_decl::parameter, function_type, method_type, class_decl,
5497	union_decl}::get_pretty_representation): Likewise.
5498	* src/abg-ir.cc ({type_or_decl_base, decl_base, type_decl,
5499	namespace_decl, array_type_def::subrange_type, array_type_def, enum_type_decl,
5500	typedef_decl, var_decl, function_decl, function_decl::parameter,
5501	function_type, method_type, class_decl, union_decl,
5502	}::get_pretty_representation): Adjust the code to emit qualified
5503	or non-qualified names depending on the new "qualified_name"
5504	boolean parameter.
5505	(get_class_or_union_flat_representation): Likewise.
5506	* src/abg-default-reporter.cc (default_reporter::report): Use
5507	get_class_or_union_flat_representation with the new
5508	"qualified_name" boolean set to false.
5509	* tests/data/test-diff-dwarf/test38-union-report-0.txt: Adjust.
5510	* tests/test-diff-filter.cc (in_out_specs): Run the test harness
5511	on test-PR24731-v{0,1}.o make abidiff use the --harmless option.
5512
55132019-06-26  Dodji Seketeli <dodji@redhat.com>
5514
5515	Bug 24731 - Wrongly reporting union members order change
5516	* include/abg-comp-filter.h (union_diff_has_harmless_changes):
5517	Declare new function and ...
5518	* src/abg-comp-filter.cc (union_diff_has_harmless_changes):
5519	... define it here.
5520	(categorize_harmless_diff_node): Use the new
5521	union_diff_has_harmless_changes here.
5522	* include/abg-comparison.h (HARMLESS_UNION_CHANGE_CATEGORY): Add a
5523	new enumerator to diff_category enum.  Adjust the value of the
5524	other enumerators.
5525	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
5526	Add the new HARMLESS_UNION_CHANGE_CATEGORY in here.
5527	(operator<<(ostream& o, diff_category c)): Support the new
5528	HARMLESS_UNION_CHANGE_CATEGORY.
5529	* tests/data/test-diff-filter/test-PR24731-report-0.txt: Likewise.
5530	* tests/data/test-diff-filter/test-PR24731-report-1.txt: Likewise.
5531	* tests/data/test-diff-filter/test-PR24731-v0.c: Likewise.
5532	* tests/data/test-diff-filter/test-PR24731-v0.o: Likewise.
5533	* tests/data/test-diff-filter/test-PR24731-v1.c: Likewise.
5534	* tests/data/test-diff-filter/test-PR24731-v1.o: Likewise.
5535	* tests/data/Makefile.am: Add the new test material above to
5536	source distribution.
5537	* tests/test-diff-filter.cc (in_out_spec): Add the new test input
5538	to this test harness.
5539
55402019-06-20  Dodji Seketeli <dodji@redhat.com>
5541
5542	Fully account for anonymous-ness of scopes when comparing decl names
5543	* include/abg-ir.h (decl_base::{get_has_anonymous_parent,
5544	set_has_anonymous_parent,
5545	get_is_anonymous_or_has_anonymous_parent}): Declare new member
5546	functions.
5547	* src/abg-ir.cc (decl_base::priv::has_anonymous_parent_): Define
5548	new data member.
5549	(decl_base::priv): Initialize the new data member.
5550	(decl_base::{get_has_anonymous_parent, set_has_anonymous_parent,
5551	get_is_anonymous_or_has_anonymous_parent}): Define new member
5552	functions.
5553	(equals): In the overload for decl_base, use the new
5554	decl_names_equal for decls that have anonymous scopes.
5555	(scope_decl::add_member_decl): Propagate the
5556	decl_base::has_anonymous_parent_ property.
5557	* include/abg-tools-utils.h
5558	(get_anonymous_struct_internal_name_prefix)
5559	(get_anonymous_union_internal_name_prefix)
5560	(get_anonymous_enum_internal_name_prefix, decl_names_equal):
5561	Declare new functions.
5562	* src/abg-comp-filter.cc (has_harmless_name_change): Handle the
5563	case where the name change is actually from an anonymous name to
5564	another one, using the new decl_names_equal function.
5565	* src/abg-dwarf-reader.cc
5566	(get_internal_anonymous_die_prefix_name): Renamed
5567	get_internal_anonynous_die_base_name into this.  Use the new
5568	get_anonymous_{struct, union, enum}_internal_name_prefix functions
5569	here.
5570	(get_internal_anonymous_die_name, die_qualified_type_name)
5571	(build_enum_type, add_or_update_class_type)
5572	(add_or_update_union_type): Adjust.
5573	* src/abg-tools-utils.cc (get_anonymous_struct_internal_name_prefix)
5574	(get_anonymous_union_internal_name_prefix)
5575	(get_anonymous_enum_internal_name_prefix, decl_names_equal):
5576	Define new functions.
5577	* tests/test-tools-utils.cc: New test file.
5578	* tests/Makefile.am: Add new runtesttoolsutils test, built from
5579	test-tools-utils.cc.
5580	* tests/data/test-diff-dwarf/test46-rust-report-0.txt: Adjust.
5581	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
5582	Likewise.
5583	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
5584
55852019-06-12  Matthias Maennich <maennich@google.com>
5586
5587	abg-reporter.h: add missing includes / using declarations
5588	* include/abg-reporter.h: fix includes and using declarations
5589
55902019-06-17  Dodji Seketeli <dodji@redhat.com>
5591
5592	[dwarf-reader] Fix indentation in compare_dies_string_attribute_value
5593	* src/abg-dwarf-reader.cc (compare_dies_string_attribute_value):
5594	Fix indentation.
5595
55962019-06-17  Dodji Seketeli <dodji@redhat.com>
5597
5598	[dwarf-reader] Optimize speed of compare_as_decl_dies
5599	* src/abg-dwarf-reader.cc (die_is_class_type): Take a const
5600	pointer to Dwarf_Die.
5601	(compare_as_decl_dies): For classes/structs, call
5602	compare_dies_string_attribute_value just once to compare the
5603	DW_AT_name attribute values.
5604
56052019-06-13  Dodji Seketeli <dodji@redhat.com>
5606
5607	[dwarf-reader] Better use of linkage name for fn decl de-duplication
5608	* src/abg-dwarf-reader.cc (read_context::{die_is_in_c,
5609	die_is_in_c_or_cplusplus}): Define new member functions.
5610	(fn_die_equal_by_linkage_name): Define new static function.
5611	(compare_dies): In the case for for DW_TAG_subprogram, use the new
5612	fn_die_equal_by_linkage_name.
5613	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
5614	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
5615	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
5616	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
5617
56182019-06-13  Dodji Seketeli <dodji@redhat.com>
5619
5620	[dwarf-reader] Re-use function types inside a given TU
5621	* src/abg-dwarf-reader.cc (istring_fn_type_map_type): Declare new
5622	typedef.
5623	(die_is_function_type): Define new static function.
5624	(read_context::per_tu_repr_to_fn_type_maps_): Define new data
5625	member ...
5626	(read_context::per_tu_repr_to_fn_type_maps): ... and its accessor.
5627	(read_context::{associate_die_repr_to_fn_type_per_tu,
5628	lookup_fn_type_from_die_repr_per_tu}): Define new member
5629	functions.
5630	(build_function_type): Use the new
5631	read_context::lookup_fn_type_from_die_repr_per_tu and
5632	read_context::associate_die_repr_to_fn_type_per_tu functions,
5633	instead of read_context::lookup_type_from_die.
5634	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
5635	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
5636	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
5637	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
5638	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
5639	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
5640	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
5641
56422019-06-03  Dodji Seketeli <dodji@redhat.com>
5643
5644	[dwarf-reader] const-ify Dwarf_Die* use in many places
5645	* src/abg-dwarf-reader.cc (get_parent_die, get_scope_die)
5646	(die_is_anonymous, die_is_type, die_is_decl, die_is_namespace)
5647	(die_is_pointer_type, pointer_or_qual_die_of_anonymous_class_type)
5648	(die_is_reference_type, die_is_pointer_or_reference_type)
5649	(die_is_qualified_type, die_has_object_pointer)
5650	(die_is_at_class_scope, die_unsigned_constant_attribute)
5651	(die_signed_constant_attribute, die_attribute_is_signed)
5652	(die_attribute_is_unsigned, die_attribute_has_no_signedness)
5653	(die_name, die_location, die_qualified_type_name)
5654	(die_qualified_decl_name, die_qualified_name)
5655	(die_qualified_type_name_empty)
5656	(die_return_and_parm_names_from_fn_type_die)
5657	(die_function_signature, die_function_type_is_method_type)
5658	(die_pretty_print_type, die_pretty_print_decl, die_pretty_print)
5659	(maybe_canonicalize_type, build_subrange_type)
5660	(build_subranges_from_array_type_die, compare_dies)
5661	(read_context::get_container)
5662	(read_context::compute_canonical_die_offset)
5663	(read_context::get_or_compute_canonical_die)
5664	(read_context::get_die_source)
5665	(read_context::get_die_qualified_type_name)
5666	(read_context::get_die_pretty_representation)
5667	(read_context::get_die_language, read_context::odr_is_relevant)
5668	(read_context::set_canonical_die_offset)
5669	(read_context::associate_die_to_type, die_is_anonymous)
5670	(die_string_attribute, die_constant_attribute)
5671	(die_attribute_has_form, die_linkage_name)
5672	(die_decl_file_attribute, die_die_attribute, die_size_in_bits)
5673	(die_is_decl, die_is_namespace)
5674	(pointer_or_qual_die_of_anonymous_class_type, die_is_array_type)
5675	(die_is_pointer_reference_or_typedef_type)
5676	(die_peel_pointer_and_typedef, die_function_type_is_method_type)
5677	(die_virtuality, die_is_virtual)
5678	(compare_dies_string_attribute_value, compare_dies_cu_decl_file)
5679	(die_location_expr, die_member_offset)
5680	(get_internal_anonynous_die_base_name, compare_as_decl_dies)
5681	(compare_as_type_dies): Const-ify the Dwarf_Die* parameter(s) of
5682	these functions.
5683
56842019-06-05  Dodji Seketeli <dodji@redhat.com>
5685
5686	Take anonymous scopes into account when comparing decls
5687	* include/abg-interned-str.h (interned_string::clear): Add new
5688	member function.
5689	* src/abg-ir.cc (equals): In the overload for decl_base, consider
5690	the scope of the current (anonymous) decl.  If that scope is
5691	anonymous then take that into account as well.
5692	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
5693	Adjust.
5694	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
5695
56962019-05-21  Matthias Maennich <maennich@google.com>
5697
5698	.clang-format: Add more options for match existing coding style
5699	* .clang-format: Add options for ConstructorInitializers
5700	Set SortUsingDeclarations=false
5701	Set AlignConsecutiveDeclarations=true
5702
57032019-05-21  Matthias Maennich <maennich@google.com>
5704
5705	.gitignore: Add libabigail-?.* *.orig files
5706	* .gitignore: add entries for distribution artifacts
5707	* .gitignore: add *.orig files
5708
57092019-05-21  Matthias Maennich <maennich@google.com>
5710
5711	abg-writer: drop deprecated API
5712	* include/abg-fwd.h (ABG_DEPRECATED): Remove this macro.
5713	* include/abg-writer.h (write_translation_unit, write_corpus)
5714	(write_corpus_group): Drop the deprecated overloads of these
5715	declarations.
5716	* src/abg-writer.cc (write_translation_unit, write_corpus)
5717	(write_corpus_group): Drop the deprecated overloads of these
5718	definitions.
5719
57202019-05-21  Matthias Maennich <maennich@google.com>
5721
5722	abidw: add option to only emit file names (--short-locs)
5723	* include/abg-writer.h (set_short_locs): Declare new function.
5724	(set_common_options): Use it.
5725	set_opts
5726	* src/abg-writer.cc (write_context::m_short_locs): New data
5727	member.
5728	(write_context::write_context): Initialize it.
5729	(write_context::{g,s}et_short_locs): Define new accessors.
5730	(write_location, write_translation_unit, write_corpus): Honour the
5731	new write_context::get_short_locs property.
5732	(set_short_locs): Define new function.
5733	* tools/abidw.cc (options::short_locs): New data member.
5734	(display_usage): Help string for the new --no-show-locs option.
5735	(parse_command_line): Parse the new --no-show-locs option.
5736
57372019-05-21  Matthias Maennich <maennich@google.com>
5738
5739	abidw: add option to omit the compilation directory
5740	* include/abg-writer.h (set_write_comp_dir): Declare new function.
5741	(set_common_options): Use it.
5742	* src/abg-writer.cc (write_context::m_write_comp_dir): Define new
5743	data member.
5744	(write_context::write_context): Initialize it.
5745	(write_context::{g,s}et_write_comp_dir): Define new member
5746	accessors.
5747	(set_write_comp_dir): Define new free-form getter.
5748	(write_translation_unit): Teach to respect write_comp_dir flag of
5749	write_context.
5750	* tools/abidw.cc (options::write_corpus_path): Define new data
5751	member.
5752	(options::options): Initialize it.
5753	(display_usage): Add doc string for a new command line option: --no-comp-dir-path.
5754	(parse_command_line): Parse the new command line option --no-comp-dir-path.
5755
57562019-05-21  Matthias Maennich <maennich@google.com>
5757
5758	Make write_architecture and write_corpus_path flags in the write_context
5759	* include/abg-writer.h (set_write_architecture)
5760	(set_write_corpus_path): Declare new getter functions.
5761	(write_corpus): Take a new "member_of_group" argument.
5762	(set_common_options): Use set_write_{architecture, corpus_path}
5763	here.
5764	* src/abg-writer.cc (write_context::m_write_{architecture,
5765	corpus_path}}): Add new data members.
5766	(write_context::write_context): Initialize the new data members.
5767	(write_context::{s,g}et_write_{architecture, corpus}): Define new
5768	accessors.
5769	(set_write_{architecture, corpus}): Define new free-form getter
5770	functions.
5771	(write_corpus): Add flag to make aware if written as part of a
5772	group.
5773	* tools/abidw.cc (load_corpus_and_write_abixml)
5774	(load_kernel_corpus_group_and_write_abixml): Drop obsolete option
5775	handling as xml_writer::set_common_options now takes care of it.
5776	ldiff --git a/include/abg-writer.h b/include/abg-writer.h
5777	index 200b5f7..729b455 100644
5778	--- a/include/abg-writer.h
5779	+++ b/include/abg-writer.h
5780	@@ -53,6 +53,11 @@ set_show_locs(write_context& ctxt, bool flag);
5781	void
5782	set_annotate(write_context& ctxt, bool flag);
5783	+void
5784	+set_write_architecture(write_context& ctxt, bool flag);
5785	+
5786	+void
5787	+set_write_corpus_path(write_context& ctxt, bool flag);
5788	/// A convenience generic function to set common options (usually used
5789	/// by Libabigail tools) from a generic options carrying-object, into
5790	@@ -69,6 +74,8 @@ set_common_options(write_context& ctxt, const OPTS& opts)
5791	{
5792	set_annotate(ctxt, opts.annotate);
5793	set_show_locs(ctxt, opts.show_locs);
5794	+  set_write_architecture(ctxt, opts.write_architecture);
5795	+  set_write_corpus_path(ctxt, opts.write_corpus_path);
5796	}
5797	void
5798	@@ -105,7 +112,10 @@ write_corpus_to_archive(const corpus_sptr corp,
5799	const bool annotate = false);
5800	bool
5801	-write_corpus(write_context& ctxt, const corpus_sptr& corpus, unsigned indent);
5802	+write_corpus(write_context&	ctxt,
5803	+	     const corpus_sptr& corpus,
5804	+	     unsigned		indent,
5805	+	     bool		member_of_group = false);
5806	bool ABG_DEPRECATED
5807	write_corpus(const corpus_sptr& corpus, unsigned indent, write_context& ctxt);
5808
58092019-05-21  Matthias Maennich <maennich@google.com>
5810
5811	abidw: Consolidate setting options
5812	* include/abg-writer.h (set_common_option): Declare new function.
5813	* tools/abidw.cc (load_corpus_and_write_abixml)
5814	(load_kernel_corpus_group_and_write_abixml): Use the newly
5815	introduced set_common_option.
5816
58172019-05-21  Matthias Maennich <maennich@google.com>
5818
5819	write_context: allow mutating the ostream used
5820	* include/abg-writer.h (set_ostream): Declare new function.
5821	* src/abg-writer.cc (write_context::m_ostream): Make this data
5822	member be a pointer rather than a reference.
5823	(write_context::{write_context, get_ostream): Adjust.  member.
5824	(write_context::set_ostream): Define new member function.
5825	(set_ostream): Define new free-form function.
5826	* tools/abidw.cc (load_corpus_and_write_abixml)
5827	(load_kernel_corpus_group_and_write_abixml): Use the feature of
5828	mutating the ostream and reuse the write_context in most cases.
5829
58302019-05-21  Matthias Maennich <maennich@google.com>
5831
5832	abg-writer: Refactor write_corpus_group API
5833	* include/abg-writer.h (write_corpus_group): Introduce new
5834	overload write_corpus_group(ctxt, corpus_group, indent) and
5835	deprecate all others.
5836	* src/abg-writer.cc (write_corpus_group): Likewise for the
5837	definitions and adjust.
5838	* tools/abidw.cc (load_kernel_corpus_group_and_write_abixml):
5839	Migrate to new API of write_corpus_group()
5840
58412019-05-21  Matthias Maennich <maennich@google.com>
5842
5843	abg-writer: Refactor write_corpus API
5844	* include/abg-writer.h (write_corpus): Introduce new overload
5845	write_corpus(ctxt, corpus, indent) and deprecate all others.
5846	* src/abg-writer.cc (write_corpus): Likewise for the definitions
5847	and adjust.
5848	* tests/test-read-dwarf.cc (test_task::perform): Use the new
5849	write_corpus which requires a write_context.
5850	* tools/abidw.cc (load_corpus_and_write_abixml, ): Likewise.
5851	* tools/abilint.cc (main): Likewise. Also simplify logic around the
5852	locations as they now can be expressed with less code.
5853
58542019-05-21  Matthias Maennich <maennich@google.com>
5855
5856	abg-writer: Refactor write_translation_unit API
5857	* include/abg-writer.h (write_translation_unit): Declare a new
5858	overload write_translation_unit(ctxt, tu, indent) and deprecate
5859	all others.
5860	* src/abg-writer.cc (write_translation_unit): Likewise in the
5861	definitions.
5862	(write_corpus, dump, write_translation_unit): Adjust.
5863	* tools/abilint.cc (main): use new write_translation_unit() API
5864
58652019-05-21  Matthias Maennich <maennich@google.com>
5866
5867	Add deprecation facilities
5868	* include/abg-fwd.h: Introduce deprecation macro ABG_DEPRECATED
5869
58702019-05-21  Matthias Maennich <maennich@google.com>
5871
5872	abg-writer: Simplify 'annotate' propagation
5873	* src/abg-writer.cc (write_context::write_context): remove
5874	'annotate' parameter.
5875	(write_translation_unit, write_corpus, write_corpus_group, dump): Adjust.
5876
58772019-05-15  Matthias Maennich <maennich@google.com>
5878
5879	Add .clang-format approximation
5880	* .clang-format: New File.
5881
58822019-05-16  Dodji Seketeli <dodji@redhat.com>
5883
5884	Bug 24552 - abidiff fails comparing a corpus against a corpus group
5885	* include/abg-corpus.h (corpus{_group}::get_{fun,
5886	var}_symbol_map): Make these member functions virtual.
5887	* src/abg-corpus.cc (corpus::lookup_{function, variable}_symbol):
5888	Use the virtual corpus::get_{fun, var}_symbol_map() member
5889	function to get the symbols of the current corpus or corpus_group.
5890	* tests/data/Makefile.am: Add the new test input material below to
5891	source distribution.
5892	* tests/data/test-abidiff/test-PR24552-report0.txt: New test input.
5893	* tests/data/test-abidiff/test-PR24552-v0.abi: Likewise.
5894	* tests/data/test-abidiff/test-PR24552-v1.abi: Likewise.
5895	* tests/test-abidiff.cc (main): Support comparing corpus groups.
5896	(specs): Add the new test inputs to the harness.
5897
58982019-05-15  Dodji Seketeli <dodji@redhat.com>
5899
5900	Bug 24560 - Assertion failure on an abixml with an anonymous type
5901	* src/abg-reader.cc (read_context::maybe_canonicalize_type): Delay
5902	canonicalization of union types too.
5903	(build_class_decl, build_union_decl): Do not try to re-use
5904	anonymous types.
5905
59062019-05-13  Dodji Seketeli <dodji@redhat.com>
5907
5908	Handle Linux kernel binaries with no __ksymtab section
5909	* src/abg-dwarf-reader.cc (find_section): Use elf_getshdrstrndx
5910	rather than poking at the elf header on our own.
5911	(read_context::find_any_ksymtab_section): Define new member
5912	function.
5913	(read_context::{get_symtab_format,
5914	try_reading_first_ksymtab_entry_using_pre_v4_19_format}): Use the
5915	new find_any_ksymtab_section rather than find_ksymtab_section.
5916	(read_context::get_nb_ksymtab_entries): Handle the absence of
5917	__ksymtab.
5918	(read_context::get_nb_ksymtab_gpl_entries): Handle the absence of
5919	__ksymtab_gpl.
5920	(read_context::load_kernel_symbol_table): Handle the case of zero
5921	ksymtab entries.
5922	(read_context::{maybe_adjust_address_for_exec_or_dyn,
5923	maybe_adjust_fn_sym_address, load_kernel_symbol_table}): Handle an
5924	address that is zero.
5925
59262019-05-10  Dodji Seketeli <dodji@redhat.com>
5927
5928	Fix logic of get_binary_load_address
5929	* src/abg-dwarf-reader.cc (get_binary_load_address): Consider the
5930	load address pointed to by the program header pointer returned by
5931	gelf_getphdr rather than the program header itself.
5932
59332019-05-10  maennich@google.com <maennich@google.com>
5934
5935	Bug 24431 Treat __ksymtab as int32_t for v4.19+ kernels
5936	* src/abg-dwarf-reader.cc (maybe_adjust_sym_address_from_v4_19_ksymtab):
5937	treat passed addr as 32bit signed offset in case of v4.19+ __ksymtabs
5938
59392019-05-10  maennich@google.com <maennich@google.com>
5940
5941	Bug 24431 Read 32bit values when testing for the v4.19 symbol table format
5942	* src/abg-dwarf-reader.cc
5943	(try_reading_first_ksymtab_entry_using_v4_19_format): attempt to
5944	read first __ksymtab entry into int32_t to preserve sign
5945
59462019-05-10  maennich@google.com <maennich@google.com>
5947
5948	dwarf-reader: templatize read_int_from_array_of_bytes
5949	* src/abg-dwarf-reader.cc (read_int_from_array_of_bytes):
5950	templatize return type to allow passing of signed integer references
5951
59522019-05-10  maennich@google.com <maennich@google.com>
5953
5954	dwarf-reader: Fix comments for try_reading_first_ksymtab_entry_using_{pre_,}v4_19_format
5955	* src/abg-dwarf-reader.cc: swap the comments of
5956	try_reading_first_ksymtab_entry_using_{pre_,}v4_19_format
5957
59582019-05-09  Dodji Seketeli <dodji@redhat.com>
5959
5960	Better handle several anonymous types of the same kind
5961	*unqualified* name of its scope.  Unlike for qualified names, the
5962	scoped name won't have a "__anonymous_*__" string in its name if its
5963	directly containing scope is not anonymous; a qualified name might
5964	still have that string in its name because the decl has a parent scope
5965	(not necessarily its directly containing scope though) that is
5966	anonymous.
5967	The patch goes on to update the logic for comparison of decls that are
5968	anonymous.  For a decl which direct scope is *NOT* anonymous, the
5969	scoped name is what's used in the comparison.  Otherwise, only the
5970	name of the decl is used.
5971	The patch also updates how we detect changes in data members and
5972	member types, in the comparison engine.  It now uses the names of the
5973	data members, rather than their qualified name.  This is in the scope
5974	of the current class/union anyway.  The improvement is that the fact
5975	that the class/union itself is anonymous (even if its anonymous name
5976	changes to another anonymous name) won't have any spurious impact on
5977	the detection of name change of the members.
5978	The patch considers the change of an anonymous decl name which
5979	anonymous name changes to another anonymous name as being harmless.
5980	The patch updates the logic of category propagation in the comparison
5981	engine.  Although a public typedef to private underlying type needs to
5982	stay public and thus not propagate the PRIVATE_TYPE_CATEGORY from its
5983	child diff node to himself, it still needs to suppress the changes to
5984	the private underlying diff node that were suppressed (because of the
5985	private-ness), unless that typedef has local changes.
5986	* include/abg-ir.h (decl_base::get_scoped_name): Declare new
5987	member function.
5988	(scope_decl::get_num_anonymous_member_{classes, unions, enums}):
5989	Declare new virtual member functions.
5990	(class_decl::get_num_anonymous_member_{classes, unions, enums}):
5991	Adjust to make these virtual.  It's not necessary but I feel
5992	redundancy is a kind of self-documentation here.
5993	* src/abg-comp-filter.cc (has_harmless_name_change): Consider
5994	anonymous name changes as harmless.
5995	* src/abg-comparison.cc
5996	(class_or_union_diff::ensure_lookup_tables_populated): Consider
5997	the names of the members rather than their qualified names.
5998	(suppression_categorization_visitor::visit_end): Suppress the
5999	changes to the private underlying diff node that were suppressed
6000	because of the private-ness, unless that typedef has local
6001	changes.
6002	* src/abg-dwarf-reader.cc (build_enum_type)
6003	(add_or_update_class_type, add_or_update_union_type): Handle
6004	anonymous types in namespaces as well, not just in class/unions.
6005	* src/abg-ir.cc (decl_base::priv::scoped_name_): Define new data
6006	member.
6007	(decl_base::get_scoped_name): Define new member function.
6008	(equals): For the decl_base overload, use scoped name in the
6009	comparison, unless the decl belongs to an anonymous type.  For the
6010	class_or_union_diff, only consider scoped_name during comparison.
6011	Avoid name comparison between anonymous types.
6012	(scope_decl::get_num_anonymous_member_{classes, unions, enums}):
6013	Define new member functions.
6014	(types_have_similar_structure): Do not compare names between
6015	anonymous types.
6016	(qualified_name_setter::do_update): Update scoped names too.
6017	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
6018	* tests/data/test-annotate/libtest23.so.abi: Likewise.
6019	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
6020	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
6021	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
6022	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
6023	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt:
6024	Likewise.
6025	* tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise.
6026	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
6027	Likewise.
6028	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
6029	Likewise.
6030	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
6031	Likewise.
6032	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
6033	Likewise.
6034	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
6035	Likewise.
6036	* tests/data/test-diff-filter/test33-report-0.txt: Likewise.
6037	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
6038	Likewise.
6039	* tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt:
6040	Likewise.
6041	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt:
6042	Likewise.
6043	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
6044	Likewise.
6045	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
6046	Likewise.
6047	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt:
6048	Likewise.
6049	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
6050	Likewise.
6051	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
6052	Likewise.
6053	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
6054	Likewise.
6055	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
6056	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
6057	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
6058	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
6059	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
6060	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
6061	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
6062	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
6063	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
6064	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
6065	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
6066	Likewise.
6067	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
6068
60692019-05-07  Dodji Seketeli <dodji@redhat.com>
6070
6071	Handle several member anonymous types of the same kind
6072	* include/abg-ir.h
6073	(class_or_union::get_num_anonymous_member_{classes, unions,
6074	enums}): Declare new member functions.
6075	* src/abg-dwarf-reader.cc (get_internal_anonynous_die_base_name)
6076	(build_internal_anonymous_die_name)
6077	(get_internal_anonymous_die_name, is_anonymous_type_die): Define
6078	new static functions.
6079	(die_qualified_type_name): Use the new
6080	get_internal_anonymous_die_name.
6081	(get_scope_for_die): Fix this to put anonymous types that were
6082	wrongly emitted into the scope of DW_TAG_subroutine_type or
6083	DW_TAG_array_type by buggy DWARF emitters into the enclosing
6084	namespace, rather than into the enclosing class/union.
6085	(build_enum_type): Take the scope of the enum to have a chance to
6086	properly name potential anonymous enums.
6087	(lookup_class_typedef_or_enum_type_from_corpus): Take an anonymous
6088	member type index for when the DIE we are lookup up represents an
6089	anonymous type.  Support proper building of the internal anonymous
6090	name of the anonymous type we are lookup up.
6091	(add_or_update_class_type): Use the new
6092	get_internal_anonynous_die_base_name and
6093	build_internal_anonymous_die_name functions.  Support making sure
6094	that the anonymous member type we are adding to the class wasn't
6095	already there, especially for cases where we are updating a class
6096	type.
6097	(add_or_update_union_type): Use the new
6098	get_internal_anonynous_die_base_name and
6099	build_internal_anonymous_die_name functions.
6100	(build_ir_node_from_die): Adjust the use of build_enum_type to
6101	pass it the scope of the enum type we are building.
6102	* src/abg-ir.cc	(lookup_union_type): Add a new overload.
6103	(lookup_class_or_typedef_type): Use the new overload of
6104	lookup_union_type above to support looking up union types too.
6105	(class_or_union::get_num_anonymous_member_{classes, unions,
6106	enums}): Define new member functions.
6107	* src/abg-reporter-priv.cc (represent): Detect when anonymous
6108	types of anonymous data members have their internal names change,
6109	probably because anonymous member types were inserted in the scope.
6110	* tests/data/Makefile.am: Add the new test-anonymous-members-0.*
6111	test input files to the source distribution.
6112	* tests/data/test-annotate/test-anonymous-members-0.cc: New test
6113	input file.
6114	* tests/data/test-annotate/test-anonymous-members-0.o: Likewise.
6115	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise.
6116	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
6117	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
6118	Likewise.
6119	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6120	Likewise.
6121	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
6122	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
6123	Likewise.
6124	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
6125	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
6126	Likewise.
6127	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
6128	Likewise.
6129	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
6130	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
6131	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
6132	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
6133	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
6134	Likewise.
6135	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6136	Likewise.
6137	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
6138	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
6139	Likewise.
6140	* tests/test-annotate.cc (int_out_specs): Add the new test inputs
6141	to this test harness.
6142
61432019-04-24  Dodji Seketeli <dodji@redhat.com>
6144
6145	Use canonical types hash maps for type IDs in abixml writer
6146	* src/abg-writer.cc (write_context::{type_has_existing_id,
6147	get_id_for_type}): Save the canonical type of the type in the map,
6148	not the type itself.
6149	(write_context::{type_is_emitted}): Use the canonical type rather
6150	than the type itself.
6151	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
6152
61532019-04-24  Dodji Seketeli <dodji@redhat.com>
6154
6155	Don't try to de-duplicate all anonymous struct DIEs
6156	* include/abg-fwd.h (is_typedef): Remove the overloads for
6157	type_base_sptr and decl_base_sptr.  Replace those with an overload
6158	for type_or_decl_base_sptr.
6159	* src/abg-ir.cc (is_typedef): Do the same for the definitions.
6160	* src/abg-dwarf-reader.cc (add_or_update_class_type)
6161	(add_or_update_union_type): Do not de-duplicate anonymous
6162	struct/union DIEs.
6163	(build_typedef_type): Try to de-duplicate typedefs DIEs.
6164	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
6165	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6166	Likewise
6167	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
6168	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
6169	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
6170	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
6171	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
6172	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6173	Likewise.
6174	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
6175	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
6176
61772019-04-24  Dodji Seketeli <dodji@redhat.com>
6178
6179	Canonicalize types non tied to any DWARF DIE
6180	* src/abg-dwarf-reader.cc
6181	(read_context::extra_types_to_canonicalize_): Add new data member.
6182	(read_context::{initialize, clear_types_to_canonicalize}): Adjust.
6183	(read_context::extra_types_to_canonicalize): Create new accessor.
6184	(read_context::schedule_type_for_late_canonicalization): Add new
6185	overload for type_base_sptr.
6186	(read_context::perform_late_type_canonicalizing): Perform the
6187	canonicalization of the types created by the DWARF analyzer, but
6188	that are not tied to any DIE.
6189	(maybe_strip_qualification): Take a read_context&.  Schedule newly
6190	created types (during type edition) for late canonicalization.
6191	(build_ir_node_from_die): Adjust the call to
6192	maybe_strip_qualification to pass a read_context.
6193	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
6194	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
6195	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
6196	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
6197	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
6198	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
6199	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
6200	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
6201	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
6202	Likewise.
6203
62042019-04-18  Mark Wielaard <mark@klomp.org>
6205
6206	Don't try to read a build_id as string in find_alt_debug_info_link.
6207	* src/abg-dwarf-reader.cc (find_alt_debug_info_link): Remove
6208	build_id argument. Don't try to read the buildid chars as a
6209	string.
6210	(find_alt_debug_info): Don't call find_alt_debug_info_link
6211	with a build_id string argument.
6212
62132019-04-18  Mark Wielaard <mark@klomp.org>
6214
6215	Fix an undefined behaviour in has_var_type_cv_qual_change
6216	* src/abg-comp-filter.cc: (has_var_type_cv_qual_change):
6217	Initialize the ch_kind variable before using it.
6218
62192019-04-18  Dodji Seketeli <dodji@redhat.com>
6220
6221	Add --enable-{asan,ubsan} configure options
6222	* configure.ac: Add configure options for -fsanitize=address and
6223	-fsanitize=undefined.
6224
62252019-04-18  Dodji Seketeli <dodji@redhat.com>
6226
6227	abg-tools-utils.cc: Plug a leak in find_file_under_dir
6228	* src/abg-tools-utils.cc (find_file_under_dir): Call fts_close
6229	before return.
6230
62312019-04-18  Matthias Maennich <maennich@google.com>
6232
6233	dwarf-reader: fix undefined behaviour in get_binary_load_address
6234	* src/abg-dwarf-reader.cc (get_binary_load_address): Move the
6235	ph_mem and program_header variables out of the inner for-loop.
6236
62372019-04-18  Dodji Seketeli <dodji@redhat.com>
6238
6239	Delay canonicalization for array and qualified types
6240	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Delay the
6241	canonicalization of array and qualified types, just like what we
6242	do for classes and function types already.
6243	(maybe_strip_qualification):  Do not
6244	re-canonicalize array and qualified types here because it should
6245	not be necessary anymore.
6246
62472019-04-18  Dodji Seketeli <dodji@redhat.com>
6248
6249	Fix a memory leak in real_path
6250	* src/abg-tools-utils.cc (real_path): Fee the returned pointer of
6251	realpath.
6252
62532019-04-18  Dodji Seketeli <dodji@redhat.com>
6254
6255	Enable building with AddressSanitizer activated
6256	* configure.ac: If ABIGAIL_DEVEL_ASAN=on (in addition to
6257	ABIGAIL_DEVEL=on), then turn on AddressSanitizer in the build.
6258
62592019-04-17  Dodji Seketeli <dodji@redhat.com>
6260
6261	Bug 24431 - ELF reader fails to determine __ksymtab format
6262	* src/abg-dwarf-reader.cc
6263	(read_context::{try_reading_first_ksymtab_entry_using_pre_v4_19_format,
6264	try_reading_first_ksymtab_entry_using_v4_19_format}): Define new
6265	member functions.
6266	(read_context::maybe_adjust_sym_address_from_v4_19_ksymtab): Make
6267	member function this const.
6268	(read_context::get_ksymtab_format): Implement the new heuristic
6269	here, using try_reading_first_ksymtab_entry_using_pre_v4_19_format
6270	and try_reading_first_ksymtab_entry_using_v4_19_format, rather
6271	than assuming that if we have no relocations, then we are in the
6272	v4.19 format.
6273	(maybe_adjust_sym_address_from_v4_19_ksymtab): When on a 64 bits
6274	architecture, ensure the 32 bits address read from the v4.19
6275	format __ksymtab section is converted into a 64 bits address.
6276
62772019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6278
6279	Update .gitignore files to ignore typical dev side products
6280	* tests/.gitignore: exclude tests binaries and test results
6281	* tools/.gitignore: update to ignore produced binaries
6282
62832019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6284
6285	dwarf-reader: fix recursion in expr_result::operator&
6286	* src/abg-dwarf-reader.cc: fix expr_result::operator&
6287
62882019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6289
6290	distinct_diff: avoid expression with side effects within typeid
6291	* src/abg-comparison.cc: fix clang warning "potentially-evaluated-expression"
6292
62932019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6294
6295	ir: drop unused data members from {environment,qualified_name}_setter
6296	* src/abg-ir.cc: drop unused data members
6297
62982019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6299
6300	suppressions: drop unused parameter from type_is_suppressed
6301	* include/abg-suppression-priv.h: drop unused argument from type_is_suppressed
6302
63032019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6304
6305	viz-dot: remove unused members from dot
6306	* include/abg-viz-dot.h: remove unused data members from 'dot'
6307
63082019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6309
6310	add missing virtual destructors
6311	* include/abg-comparison.h: add virtual destructor for corpus_diff and diff_node_visitor
6312	* include/abg-corpus.h: add virtual destructor for corpus
6313	* include/abg-reporter.h: add virtual destructor for reporter_base
6314	* include/abg-traverse.h: add virtual destructor for traversable_base
6315
63162019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6317
6318	diff-utils: point: fix postfix decrement/increment operator
6319	* include/abg-diff-utils.h: fix postfix dec/inc operator
6320
63212019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6322
6323	abg-reader: clarify boolean use of assignment
6324	* src/abg-reader.cc: clarify boolean use of assignment
6325
63262019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6327
6328	abilint: fix return types bool -> int
6329	* tools/abilint.cc: return int in main rather than bool.
6330	* tests/print-diff-tree.cc: Likewise.
6331
63322019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
6333
6334	abg-fwd.h: fix mismatched tags for ir_node_visitor
6335	* include/abg-fwd.h: forward-declare ir_node_visitor as class
6336
63372019-04-16  Dodji Seketeli <dodji@redhat.com>
6338
6339	Bug 24431 - ELF reader can't interpret ksymtab with Kernel 4.19+
6340	* src/abg-dwarf-reader.cc (enum kernel_symbol_table_kind): Move this
6341	enum at the top.
6342	(enum ksymtab_format): Define new enum.
6343	(read_context::{ksymtab_format_, ksymtab_entry_size_,
6344	nb_ksymtab_entries_, nb_ksymtab_gpl_entries_}): Define new data
6345	members.
6346	(read_context::initiliaze): Initialize the new data members above.
6347	(read_context::{get_ksymtab_format, get_ksymtab_symbol_value_size,
6348	get_ksymtab_entry_size, get_nb_ksymtab_entries,
6349	get_nb_ksymtab_gpl_entries,
6350	maybe_adjust_sym_address_from_v4_19_ksymtab}): Define new member
6351	functions.
6352	(read_context::load_kernel_symbol_table): Support loading from
6353	both pre and post v4.19 linux kernels with their different ksymtab
6354	formats.  Add more comments.
6355
63562019-04-10  Dodji Seketeli <dodji@redhat.com>
6357
6358	Bug 24430 - Fold away const for array types
6359	* include/abg-fwd.h (is_array_of_qualified_element): Declare 2
6360	overloads of this function.
6361	(re_canonicalize): Declare a new function.
6362	* include/abg-ir.h (class {decl_base, type_base}): Declare
6363	re_canonicalize as a friend of these classes.
6364	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Detect
6365	qualified array types and appropriately qualifies the array
6366	element type, instead of qualifying the array type itself.
6367	Re-canonicalize the resulting type if necessary.
6368	* src/abg-ir.cc (is_array_of_qualified_element): Define 2
6369	overloads of this function.
6370	(re_canonicalize): Define new function.
6371	* tests/data/Makefile.am: The two new test binary input files
6372	PR24430-fold-qualified-array-clang and
6373	PR24430-fold-qualified-array-gcc to source distribution, as well
6374	as the expected reference output.
6375	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
6376	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
6377	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6378	Likewise.
6379	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
6380	* tests/data/test-diff-filter/PR24430-fold-qualified-array-clang:
6381	New binary test input coming from the bug report.
6382	* tests/data/test-diff-filter/PR24430-fold-qualified-array-gcc:
6383	Likewise.
6384	* tests/data/test-diff-filter/PR24430-fold-qualified-array-report-0.txt:
6385	Expected reference abi difference.
6386	* tests/data/test-diff-filter/test33-report-0.txt: Adjust.
6387	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
6388	Likewise.
6389	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
6390	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
6391	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
6392	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
6393	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6394	Likewise.
6395	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
6396	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
6397	Likewise.
6398	* tests/test-diff-filter.cc: Add the new binary test input to this
6399	test harness.
6400
64012019-04-09  Dodji Seketeli <dodji@redhat.com>
6402
6403	Fix "Add test for the fix for PR24410"
6404	* tests/data/test-diff-pkg/PR24410-new/poppler-debuginfo-0.73.0-8.fc30.x86_64.rpm:
6405	Really add this.
6406	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-0.73.0-8.fc30.x86_64.rpm:
6407	Likewise.
6408	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-debuginfo-0.73.0-8.fc30.x86_64.rpm:
6409	Likewise.
6410	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-devel-0.73.0-8.fc30.x86_64.rpm:
6411	Likewise.
6412	* tests/data/test-diff-pkg/PR24410-old/poppler-debuginfo-0.73.0-4.fc30.x86_64.rpm:
6413	Likewise.
6414	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-0.73.0-4.fc30.x86_64.rpm:
6415	Likewise.
6416	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-debuginfo-0.73.0-4.fc30.x86_64.rpm:
6417	Likewise.
6418	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-devel-0.73.0-4.fc30.x86_64.rpm:
6419	Likewise.
6420	* tests/data/test-diff-pkg/PR24410-report-0.txt: Likewise.
6421
64222019-04-09  Dodji Seketeli <dodji@redhat.com>
6423
6424	Add test for the fix for PR24410
6425	* tests/data/test-diff-pkg/PR24410-new/poppler-debuginfo-0.73.0-8.fc30.x86_64.rpm:
6426	Add new test input.
6427	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-0.73.0-8.fc30.x86_64.rpm:
6428	Add new test input.
6429	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-debuginfo-0.73.0-8.fc30.x86_64.rpm:
6430	Add new test input.
6431	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-devel-0.73.0-8.fc30.x86_64.rpm:
6432	Add new test input.
6433	* tests/data/test-diff-pkg/PR24410-old/poppler-debuginfo-0.73.0-4.fc30.x86_64.rpm:
6434	Add new test input.
6435	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-0.73.0-4.fc30.x86_64.rpm:
6436	Add new test input.
6437	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-debuginfo-0.73.0-4.fc30.x86_64.rpm:
6438	Add new test input.
6439	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-devel-0.73.0-4.fc30.x86_64.rpm:
6440	Add new test input.
6441	* tests/data/test-diff-pkg/PR24410-report-0.txt: Add new test
6442	input.
6443	* tests/data/Makefile.am: Add the test input above to source
6444	distribution.
6445	* tests/test-diff-pkg.cc: Make this test harness use the new input
6446	rpms above.
6447
64482019-04-05  Dodji Seketeli <dodji@redhat.com>
6449
6450	Propagate private type diff category through refs/qualified type diffs
6451	* src/abg-comparison.cc
6452	(suppression_categorization_visitor::visit_end): Propagate
6453	suppressed and private type diff categories for reference and
6454	qualified types.  For qualified types, make sure they don't have
6455	local changes.  Even when there are no local changes, do not
6456	propagate private diff categories to typedefs.
6457	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
6458	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
6459	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
6460	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
6461	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
6462	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
6463	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
6464	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
6465	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
6466	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
6467	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
6468
64692019-04-05  Dodji Seketeli <dodji@redhat.com>
6470
6471	Fix anonymous union constructed under the wrong context
6472	* src/abg-dwarf-reader.cc (add_or_update_class_type)
6473	(add_or_update_union_type): Only reuse anonymous class/union types
6474	which have the same scope as the current one.
6475
64762019-04-08  Dodji Seketeli <dodji@redhat.com>
6477
6478	Internal pretty repr of union cannot be flat representation
6479	* src/abg-ir.cc (union_decl::get_pretty_representation):
6480	Anonymous internal pretty representation of unin is its fully
6481	qualified name.
6482
64832019-04-08  Dodji Seketeli <dodji@redhat.com>
6484
6485	Misc comment fixes
6486	* src/abg-comp-filter.cc (has_harmless_name_change): Fix comment.
6487	* src/abg-ir.cc (var_decl::get_qualified_name): Likewise.
6488
64892019-03-29  Dodji Seketeli <dodji@redhat.com>
6490
6491	Bump version number to 1.7
6492	* configure.ac: Bump version number to 1.7
6493
64942019-03-28  Dodji Seketeli <dodji@redhat.com>
6495
6496	Update website mainpage for 1.6 release
6497	* doc/website/mainpage.txt: Update for 1.6 release.
6498
64992019-03-27  Dodji Seketeli <dodji@redhat.com>
6500
6501	Update ChangeLog
6502	* ChangeLog: Update automatically by using "make
6503	update-changelog".
6504
65052019-03-27  Dodji Seketeli <dodji@redhat.com>
6506
6507	Update NEWS file for 1.6
6508	* NEWS: Update for 1.6
6509
65102019-03-27  Dodji Seketeli <dodji@redhat.com>
6511
6512	Add missing assignment operators
6513	* include/abg-interned-str.h (interned_string::operator=): Define
6514	assignment operator.
6515	* include/abg-ir.h
6516	({location, enum_type_decl::enumerator}::operator=): Declare
6517	assignment operator.
6518	* src/abg-ir.cc (enum_type_decl::enumerator::operator=): Define
6519	assignment operator.
6520
65212019-03-25  Dodji Seketeli <dodji@redhat.com>
6522
6523	Bug 24378 - DW_TAG_subroutine_type as a DIE scope causes infinite loop
6524	* src/abg-dwarf-reader.cc (get_scope_die): Look through
6525	DW_TAG_subroutine_type to get the scope of a given DIE.
6526	* tests/data/Makefile.am: Add the two new files below to source
6527	distribution.
6528	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: New
6529	reference test output.
6530	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.o: New binary
6531	test input.
6532	* tests/test-read-dwarf.cc (in_out_specs): Add the new test input
6533	to the test harness.
6534
65352019-03-22  Dodji Seketeli <dodji@redhat.com>
6536
6537	Misc cleanups
6538	* src/abg-dwarf-reader.cc (build_function_type): Cleanup
6539	indentation and comments.
6540
65412019-03-21  Dodji Seketeli <dodji@redhat.com>
6542
6543	Better pointer name equality optimization in DIE de-duplication code
6544	* src/abg-dwarf-reader.cc
6545	(die_is_pointer_reference_or_typedef_type)
6546	(die_peel_pointer_and_typedef): Define new static functions.
6547	(compare_dies_string_attribute_value): Turn this function into a
6548	static one.
6549	(compare_dies_cu_decl_file): Make this function compare the cu
6550	decl file name of the leaf type of the pointer, not just the one
6551	of the pointer itself.
6552	(compare_as_decl_dies): Compare the DWARF tags too.
6553	(compare_dies): Simplify logic.
6554
65552019-03-21  Dodji Seketeli <dodji@redhat.com>
6556
6557	Add ir::{lookup_data_member, get_function_parameter}
6558	* include/abg-ir.h (lookup_data_member, get_function_parameter):
6559	Declare new functions.
6560	* src/abg-ir.cc (lookup_data_member, get_function_parameter):
6561	Define them.
6562
65632019-03-21  Dodji Seketeli <dodji@redhat.com>
6564
6565	Better detection of void* to something* change
6566	* include/abg-ir.h (is_void_type): Add a new overload that takes
6567	type_base*.
6568	* src/abg-ir.cc (is_void_type): Define the new overload that takes
6569	type_base*.
6570	(is_void_pointer_type): Look through typedefs in
6571	the pointed-to type.
6572
65732019-03-21  Dodji Seketeli <dodji@redhat.com>
6574
6575	PR24257 - Handle DW_TAG_typedef with no underlying type
6576	* src/abg-dwarf-reader.cc (build_typedef_type): DW_TAG_typedef
6577	with no underlying type means typedef void foo.
6578	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
6579	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
6580	Likewise.
6581	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6582	Likewise.
6583	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
6584	Likewise.
6585	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
6586	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
6587	Likewise.
6588	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
6589	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
6590	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
6591	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
6592	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
6593	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
6594	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
6595	Likewise.
6596	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6597	Likewise.
6598	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
6599	Likewise.
6600	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
6601	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
6602	Likewise.
6603	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
6604
66052019-02-20  Dodji Seketeli <dodji@redhat.com>
6606
6607	Do not build DIE -> parent map just because we see an asm TU
6608	* src/abg-dwarf-reader.cc:
6609
66102019-02-19  Dodji Seketeli <dodji@redhat.com>
6611
6612	Avoid over-suppressing fns & vars when analysing the Kernel
6613	* include/abg-dwarf-reader.h (get_ignore_symbol_table): Take a
6614	const read_context&.
6615	* src/abg-dwarf-reader.cc (get_ignore_symbol_table): Likewise.
6616	(function_is_suppressed): When the symbol table optimization is in
6617	flight -- that is, when no symbol table has been loaded -- do not
6618	try to see if a given function symbol was exported at the ELF
6619	level or not.  Just look at if the function was suppressed or not.
6620	(variable_is_suppressed): Likewise for variables.
6621
66222019-02-08  Dodji Seketeli <dodji@redhat.com>
6623
6624	Bug 24188 - Assertion failed while analysing a Fortran binary
6625	* src/abg-dwarf-reader.cc (compare_as_type_dies): Handle
6626	DW_TAG_string_type DIEs here.
6627	(compare_dies): Handle DW_TAG_string_type DIEs by using
6628	compare_as_type_dies.
6629	* tests/data/test-diff-pkg/netcdf-fortran-debuginfo-4.4.4-10.fc29.x86_64.rpm:
6630	New test RPM.
6631	* tests/data/test-diff-pkg/netcdf-fortran-debuginfo-4.4.4-11.fc30.x86_64.rpm:
6632	Likewise.
6633	* tests/data/test-diff-pkg/netcdf-fortran-mpich-4.4.4-10.fc29.x86_64-4.4.4-11.fc30.x86_64-report-0.txt:
6634	New expected test reference output.
6635	* tests/data/test-diff-pkg/netcdf-fortran-mpich-4.4.4-10.fc29.x86_64.rpm:
6636	New test RPM.
6637	* tests/data/test-diff-pkg/netcdf-fortran-mpich-4.4.4-11.fc30.x86_64.rpm:
6638	Likewise.
6639	* tests/data/test-diff-pkg/netcdf-fortran-mpich-debuginfo-4.4.4-10.fc29.x86_64.rpm:
6640	Likewise.
6641	* tests/data/test-diff-pkg/netcdf-fortran-mpich-debuginfo-4.4.4-11.fc30.x86_64.rpm:
6642	Likewise.
6643	* tests/data/test-diff-pkg/netcdf-fortran-mpich-devel-4.4.4-10.fc29.x86_64.rpm:
6644	Likewise.
6645	* tests/data/test-diff-pkg/netcdf-fortran-mpich-devel-4.4.4-11.fc30.x86_64.rpm:
6646	Likewise.
6647	* tests/data/Makefile.am: Add the new test input material above to
6648	source distribution.
6649	* tests/test-diff-pkg.cc (in_out_spec): Add the new test RPMs
6650	above to the set of RPMs to use as test input.
6651
66522019-02-06  Dodji Seketeli <dodji@redhat.com>
6653
6654	Bug 24157 - Wrong support of Ada ranges
6655	* include/abg-ir.h (array_type_def::subrange_type::bound_value):
6656	Define new class.
6657	(array_type_def::subrange_type::subrange_type): Adjust to use the
6658	new bound_value type for bound values.
6659	(array_type_def::subrange_type::{get_upper_bound, get_lower_bound,
6660	set_upper_bound, set_lower_bound}): Return or take int64_t rather
6661	than size_t.
6662	(array_type_def::subrange_type::get_length): Return uint64_t
6663	rather than size_t.
6664	* src/abg-dwarf-reader.cc (die_signed_constant_attribute)
6665	(die_constant_attribute, die_attribute_has_form)
6666	(die_attribute_is_signed, die_attribute_is_unsigned)
6667	(die_attribute_has_no_signedness): Define new static functions.
6668	(get_default_array_lower_bound): Return uint64_t rather than int.
6669	(build_subrange_type): Use the new
6670	array_type_def::subrange_type::bound_value type for bound values.
6671	Use the new die_constant_attribute function, rather than
6672	die_unsigned_constant_attribute to fecth the bound values.
6673	* src/abg-ir.cc
6674	(array_type_def::subrange_type::bound_value::{bound_value,
6675	get_signedness, set_signedness, get_signed_value,
6676	get_unsigned_value, set_unsigned, set_signed}): Define new member
6677	functions.
6678	(array_type_def::subrange_type::priv::{lower_bound_,
6679	upper_bound}): Use the new class bound_value.
6680	(array_type_def::subrange_type::priv::priv): Adjust to use the new
6681	bound_value class to hold bound values.
6682	(array_type_def::subrange_type::subrange_type): Likewise.
6683	(array_type_def::subrange_type::{get_upper_bound, get_lower_bound,
6684	set_upper_bound, set_lower_bound}): Return or take int64_t rather
6685	than size_t.
6686	(array_type_def::subrange_type::get_length): Return uint64_t
6687	rather than size_t.
6688	(types_have_similar_structure): Handle array_type_def::subrange_type
6689	* src/abg-reader.cc (build_subrange_type): Use the new
6690	array_type_def::subrange_type::bound_value to hold bound values.
6691	* tests/data/test-diff-pkg/GtkAda-debuginfo-2.24.2-29.fc29.x86_64.rpm:
6692	New binary RPM as test input.
6693	* tests/data/test-diff-pkg/GtkAda-debuginfo-2.24.2-30.fc30.x86_64.rpm:
6694	Likewise.
6695	* tests/data/test-diff-pkg/GtkAda-devel-2.24.2-29.fc29.x86_64.rpm:
6696	Likewise.
6697	* tests/data/test-diff-pkg/GtkAda-devel-2.24.2-30.fc30.x86_64.rpm:
6698	Likewise.
6699	* tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt:
6700	New expected test output.
6701	* tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64.rpm:
6702	New binary RPM as test input.
6703	* tests/data/test-diff-pkg/GtkAda-gl-2.24.2-30.fc30.x86_64.rpm:
6704	Likewise.
6705	* tests/data/test-diff-pkg/GtkAda-gl-debuginfo-2.24.2-29.fc29.x86_64.rpm:
6706	Likewise.
6707	* tests/data/test-diff-pkg/GtkAda-gl-debuginfo-2.24.2-30.fc30.x86_64.rpm:
6708	Likewise.
6709	* tests/data/Makefile.am: Add the new test material above to source
6710	distribution.
6711	* tests/test-diff-pkg.cc (in_out_specs): Add the new input testing
6712	RPMs in here.
6713
67142019-01-30  Dodji Seketeli <dodji@redhat.com>
6715
6716	Small apidoc fix
6717	* src/abg-comparison.cc (enum_diff::changed_enumerators): Fix apidoc.
6718
67192019-01-30  Dodji Seketeli <dodji@redhat.com>
6720
6721	Bug 24139 - Support suppressing some enumerator changes
6722	* doc/manuals/libabigail-concepts.rst: Document the new
6723	'changed_enumerators' property.
6724	* include/abg-suppression.h
6725	(type_suppression::{g, s}et_changed_enumerator_names): Declare two
6726	new member functions.
6727	* src/abg-suppression-priv.h
6728	(type_suppression::priv::changed_enumerator_names_): Add a new
6729	data member.
6730	* src/abg-suppression.cc
6731	(type_suppression::{g,s}et_changed_enumerator_names): Define two
6732	new member functions.
6733	(type_suppression::suppresses_diff): Support evaluating the new
6734	'changed_enumerators = <vector of changed enumerators>'.
6735	(read_type_suppression): Read the new list
6736	property'changed_enumerators" and store it into the
6737	type_suppression using the new
6738	type_suppression::set_changed_enumerator_names ().
6739	* tests/data/test-diff-suppr/libtest4{0,1}-enumerator-changes-v{0,1}.so:
6740	Add new test inpujts.
6741	* tests/data/test-diff-suppr/test4{0,1}-enumerator-changes-0.suppr:
6742	Add a new suppr spec for this new test.
6743	* tests/data/test-diff-suppr/test4{0,1}-enumerator-changes-report-0.txt:
6744	The default report.
6745	* tests/data/test-diff-suppr/test4{0,1}-enumerator-changes-v{0,1}.cc:
6746	Add Source code of libtest4{0,1}-enumerator-changes-v{0,1}.so.
6747	* tests/data/Makefile.am: Add the test files above to source
6748	distribution.
6749	* tests/test-diff-suppr.cc: Add the test input files above to the
6750	harness.
6751
67522019-01-25  Dodji Seketeli <dodji@redhat.com>
6753
6754	Better comments in the comparison engine
6755	* include/abg-comparison.h (enum diff_category): Add comments to
6756	describe what to update when a new enumerator is added to this enum.
6757	* src/abg-comp-filter.cc (has_fn_return_type_cv_qual_change): Fix
6758	comment thinko here.
6759
67602019-01-25  Dodji Seketeli <dodji@redhat.com>
6761
6762	Bug 20175 - Classify CV qual changes in variable type as harmless
6763	* include/abg-comparison.h (VAR_TYPE_CV_CHANGE_CATEGORY): Add new
6764	enumerator to diff_category enum.
6765	(EVERYTHING_CATEGORY): Update this enumerator.
6766	* src/abg-comp-filter.cc (type_diff_has_cv_qual_change_only):
6767	Support array diff nodes carrying a cv qual change on the element
6768	type.
6769	(has_var_type_cv_qual_change): Define new static function.
6770	(categorize_harmless_diff_node): Use the new
6771	has_var_type_cv_qual_change to categorize variable diff node with
6772	cv qual change on its type as harmless.
6773	* src/abg-comparison.cc
6774	(get_default_harmless_categories_bitmap): Update this.
6775	(operator<<(ostream& o, diff_category c)): Likewise.
6776	* include/abg-ir.h (equals_modulo_cv_qualifier): Declare new ...
6777	* src/abg-ir.cc (equals_modulo_cv_qualifier): ... function.
6778	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt:
6779	Update expected test output.
6780	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
6781	* tests/data/Makefile.am: Add the new test material below to
6782	source distribution.
6783	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
6784	New expecte test output.
6785	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64.rpm: New
6786	test input.
6787	* tests/data/test-diff-pkg/nss-3.24.0-1.0.fc23.x86_64.rpm: Likewise.
6788	* tests/data/test-diff-pkg/nss-debuginfo-3.23.0-1.0.fc23.x86_64.rpm: Likewise.
6789	* tests/data/test-diff-pkg/nss-debuginfo-3.24.0-1.0.fc23.x86_64.rpm: Likewise.
6790	* tests/data/test-diff-pkg/nss-devel-3.23.0-1.0.fc23.x86_64.rpm: Likewise.
6791	* tests/data/test-diff-pkg/nss-devel-3.24.0-1.0.fc23.x86_64.rpm: Likewise.
6792	* tests/test-diff-pkg.cc (in_out_specs): Add the test input above
6793	to the test harness.
6794
67952019-01-24  Dodji Seketeli <dodji@redhat.com>
6796
6797	Properly add the new rust tests to EXTRA_DIST
6798	* tests/data/Makefile.am: Add the new rust tests to
6799	EXTRA_DIST.
6800
68012019-01-24  Dodji Seketeli <dodji@redhat.com>
6802
6803	Conditionalize the Rust support regression test
6804	* tests/test-diff-dwarf.cc: Run the rust support regression test
6805	only if we support Rust on the platform.
6806	* tests/test-utils.h: Include config.h.
6807
68082019-01-24  Dodji Seketeli <dodji@redhat.com>
6809
6810	Fix a typo in the recent Rust support and update regression tests
6811	* configure.ac: Fix the typo HAS_LANG_Rust into HAS_DW_LANG_Rust.
6812	* tests/data/test-diff-dwarf/test46-readme.txt: Add new file to
6813	the test suite.
6814	* tests/data/test-diff-dwarf/test46-rust-libone.so: Likewise.
6815	* tests/data/test-diff-dwarf/test46-rust-libtwo.so: Likewise.
6816	* tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise.
6817	* tests/test-diff-dwarf.cc (in_out_specs): Update the tests array
6818	to compare the two new binaries included above.
6819
68202019-01-18  Dodji Seketeli <dodji@redhat.com>
6821
6822	Overhaul detection the DW_LANG_* enumerators from dwarf.h
6823	* configure.ac: Detect the presence of DW_LANG_{UPC, D, Python,
6824	Go, C11, C_plus_plus_03, C_plus_plus_11, C_plus_plus_14,
6825	Mips_Assembler, Rust} and define the corresponding
6826	HAVE_DW_LANG_*_enumerator macro accordingly.
6827	* include/abg-ir.h (LANG_C_plus_plus_03): Define this new
6828	enumerator in the translation_unit::language enum.
6829	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Use the
6830	new HAVE_DW_LANG_*_enumerator macros.
6831	(get_default_array_lower_bound): Support the
6832	translation_unit::LANG_C_plus_plus_03 enumerator.
6833	* src/abg-ir.cc (is_cplus_plus_language): Support the
6834	translation_unit::LANG_C_plus_plus_03 enumerator.
6835
68362019-01-18  Dodji Seketeli <dodji@redhat.com>
6837
6838	Fix a thinko
6839	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Fix a
6840	thinko in the detection of the support of the DW_LANG_Rust enumerator.
6841
68422019-01-17  Mark Wielaard <mark@klomp.org>
6843
6844	Conditionalize the use of DW_LANG_C_plus_plus_03 and DW_LANG_Rust
6845	* include/abg-ir.h (LANG_C_plus_plus_03): Add this new language
6846	enum to "enum translation_unit::language".
6847	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Do not
6848	use DW_LANG_Rust or DW_LANG_C_plus_plus_03 if these are not
6849	defined.
6850	(get_default_array_lower_bound): Handle the new
6851	translation_unit::LANG_C_plus_plus_03 enumerator.
6852
68532019-01-17  Dodji Seketeli <dodji@redhat.com>
6854
6855	Support some new DWARF language encoding for C and C++
6856	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Support
6857	new DW_LANG_{C11, C_plus_plus_03, C_plus_plus_11, C_plus_plus_14}
6858	enumerators.
6859
68602019-01-17  Dodji Seketeli <dodji@redhat.com>
6861
6862	Add (very) basic support for Rust
6863	* include/abg-ir.h (LANG_Rust): Add this new enumerator to the
6864	"enum language" enum.
6865	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Handle
6866	the Rust language.
6867	(get_default_array_lower_bound): Likewise.
6868
68692019-01-15  Dodji Seketeli <dodji@redhat.com>
6870
6871	Separate public types of first binary from those of the second
6872	* include/abg-dwarf-reader.h (read_context_get_path): Declare new
6873	function.
6874	* include/abg-reader.h (read_context_get_path): Likewise.
6875	* src/abg-dwarf-reader.cc (read_context_get_path): Define new function.
6876	* src/abg-reader.cc (read_context_get_path): Likewise.
6877	* tools/abidiff.cc (set_suppressions): Set the suppression
6878	specification derived from the --headers-dir1 option only for the first
6879	binary, and similarly, from the --headers-dir2 option only for the
6880	second binary.
6881
68822019-01-09  Dodji Seketeli <dodji@redhat.com>
6883
6884	Bug 23044 - Assertions with side effects
6885	* configure.ac:
6886	* include/abg-diff-utils.h:
6887	* include/abg-fwd.h:
6888	* src/abg-comp-filter.cc:
6889	* src/abg-comparison-priv.h:
6890	* src/abg-comparison.cc:
6891	* src/abg-corpus-priv.h:
6892	* src/abg-corpus.cc:
6893	* src/abg-default-reporter.cc:
6894	* src/abg-diff-utils.cc:
6895	* src/abg-dwarf-reader.cc:
6896	* src/abg-hash.cc:
6897	* src/abg-ini.cc:
6898	* src/abg-ir.cc:
6899	* src/abg-leaf-reporter.cc:
6900	* src/abg-reader.cc:
6901	* src/abg-reporter-priv.cc:
6902	* src/abg-suppression.cc:
6903	* src/abg-tools-utils.cc:
6904	* src/abg-workers.cc:
6905	* src/abg-writer.cc:
6906	* tests/test-diff-filter.cc:
6907	* tests/test-diff-pkg.cc:
6908	* tests/test-read-dwarf.cc:
6909	* tests/test-read-write.cc:
6910	* tests/test-types-stability.cc:
6911	* tools/abicompat.cc:
6912	* tools/abidw.cc:
6913	* tools/abipkgdiff.cc:
6914
69152019-01-07  Dodji Seketeli <dodji@redhat.com>
6916
6917	Update copyright for 2019
6918	* include/abg-comp-filter.h: Update copyright for 2019
6919	* include/abg-comparison.h: Update copyright for 2019
6920	* include/abg-config.h: Update copyright for 2019
6921	* include/abg-corpus.h: Update copyright for 2019
6922	* include/abg-diff-utils.h: Update copyright for 2019
6923	* include/abg-dwarf-reader.h: Update copyright for 2019
6924	* include/abg-fwd.h: Update copyright for 2019
6925	* include/abg-hash.h: Update copyright for 2019
6926	* include/abg-ini.h: Update copyright for 2019
6927	* include/abg-interned-str.h: Update copyright for 2019
6928	* include/abg-ir.h: Update copyright for 2019
6929	* include/abg-libxml-utils.h: Update copyright for 2019
6930	* include/abg-libzip-utils.h: Update copyright for 2019
6931	* include/abg-reader.h: Update copyright for 2019
6932	* include/abg-reporter.h: Update copyright for 2019
6933	* include/abg-sptr-utils.h: Update copyright for 2019
6934	* include/abg-suppression.h: Update copyright for 2019
6935	* include/abg-tools-utils.h: Update copyright for 2019
6936	* include/abg-traverse.h: Update copyright for 2019
6937	* include/abg-viz-common.h: Update copyright for 2019
6938	* include/abg-viz-dot.h: Update copyright for 2019
6939	* include/abg-viz-svg.h: Update copyright for 2019
6940	* include/abg-workers.h: Update copyright for 2019
6941	* include/abg-writer.h: Update copyright for 2019
6942	* src/abg-comp-filter.cc: Update copyright for 2019
6943	* src/abg-comparison-priv.h: Update copyright for 2019
6944	* src/abg-comparison.cc: Update copyright for 2019
6945	* src/abg-config.cc: Update copyright for 2019
6946	* src/abg-corpus-priv.h: Update copyright for 2019
6947	* src/abg-corpus.cc: Update copyright for 2019
6948	* src/abg-default-reporter.cc: Update copyright for 2019
6949	* src/abg-diff-utils.cc: Update copyright for 2019
6950	* src/abg-dwarf-reader.cc: Update copyright for 2019
6951	* src/abg-hash.cc: Update copyright for 2019
6952	* src/abg-ini.cc: Update copyright for 2019
6953	* src/abg-internal.h: Update copyright for 2019
6954	* src/abg-ir-priv.h: Update copyright for 2019
6955	* src/abg-ir.cc: Update copyright for 2019
6956	* src/abg-leaf-reporter.cc: Update copyright for 2019
6957	* src/abg-libxml-utils.cc: Update copyright for 2019
6958	* src/abg-libzip-utils.cc: Update copyright for 2019
6959	* src/abg-reader.cc: Update copyright for 2019
6960	* src/abg-reporter-priv.cc: Update copyright for 2019
6961	* src/abg-reporter-priv.h: Update copyright for 2019
6962	* src/abg-sptr-utils.cc: Update copyright for 2019
6963	* src/abg-suppression-priv.h: Update copyright for 2019
6964	* src/abg-suppression.cc: Update copyright for 2019
6965	* src/abg-tools-utils.cc: Update copyright for 2019
6966	* src/abg-traverse.cc: Update copyright for 2019
6967	* src/abg-viz-common.cc: Update copyright for 2019
6968	* src/abg-viz-dot.cc: Update copyright for 2019
6969	* src/abg-viz-svg.cc: Update copyright for 2019
6970	* src/abg-workers.cc: Update copyright for 2019
6971	* src/abg-writer.cc: Update copyright for 2019
6972	* tests/print-diff-tree.cc: Update copyright for 2019
6973	* tests/test-abicompat.cc: Update copyright for 2019
6974	* tests/test-abidiff-exit.cc: Update copyright for 2019
6975	* tests/test-abidiff.cc: Update copyright for 2019
6976	* tests/test-alt-dwarf-file.cc: Update copyright for 2019
6977	* tests/test-core-diff.cc: Update copyright for 2019
6978	* tests/test-diff-dwarf-abixml.cc: Update copyright for 2019
6979	* tests/test-diff-dwarf.cc: Update copyright for 2019
6980	* tests/test-diff-filter.cc: Update copyright for 2019
6981	* tests/test-diff-pkg.cc: Update copyright for 2019
6982	* tests/test-diff-suppr.cc: Update copyright for 2019
6983	* tests/test-diff2.cc: Update copyright for 2019
6984	* tests/test-ini.cc: Update copyright for 2019
6985	* tests/test-ir-walker.cc: Update copyright for 2019
6986	* tests/test-lookup-syms.cc: Update copyright for 2019
6987	* tests/test-read-dwarf.cc: Update copyright for 2019
6988	* tests/test-read-write.cc: Update copyright for 2019
6989	* tests/test-types-stability.cc: Update copyright for 2019
6990	* tests/test-utils.cc: Update copyright for 2019
6991	* tests/test-utils.h: Update copyright for 2019
6992	* tests/test-write-read-archive.cc: Update copyright for 2019
6993	* tools/abiar.cc: Update copyright for 2019
6994	* tools/abicompat.cc: Update copyright for 2019
6995	* tools/abidiff.cc: Update copyright for 2019
6996	* tools/abidw.cc: Update copyright for 2019
6997	* tools/abilint.cc: Update copyright for 2019
6998	* tools/abipkgdiff.cc: Update copyright for 2019
6999	* tools/abisym.cc: Update copyright for 2019
7000	* tools/binilint.cc: Update copyright for 2019
7001	* tools/kmidiff.cc: Update copyright for 2019
7002	* update-copyright.sh: Update new year to 2019
7003
70042018-12-06  Xiao Jia via libabigail <libabigail@sourceware.org>
7005
7006	Some documentation fixes
7007	* COMPILING: Add the pkg-config dependency.
7008	* doc/manuals/kmidiff.rst: Replace the redundant --full-impact
7009	documentation with the proper --impacted-interfaces one.
7010
70112018-11-29  Dodji Seketeli <dodji@redhat.com>
7012
7013	Add basic support for Fortran binaries
7014	* src/abg-dwarf-reader.cc (die_pretty_print_type): Support
7015	DW_TAG_string_type DIEs.  They all have the same representation
7016	for now.
7017
70182018-11-08  Dodji Seketeli <dodji@redhat.com>
7019
7020	Some light style change in abidiff.cc
7021	* tools/abidiff.cc (adjust_diff_context_for_kmidiff): Take a
7022	reference to diff_context rather than a pointer.
7023	(main): Adjust.
7024
70252018-11-08  Dodji Seketeli <dodji@redhat.com>
7026
7027	Add a --fail-no-debug-info to abidiff
7028	* doc/manuals/abidiff.rst: Document the new --fail-no-debug-info
7029	option.
7030	* tools/abidiff.cc (options::fail_no_debug_info): Define new data
7031	member.
7032	(display_usage): Provide a help string for the new
7033	--fail-no-debug-info option.
7034	(parse_command_line): Parse the new option.
7035	(main): If --fail-no-debug-info and no debug info was found, or
7036	not alternate debuginfo file was found, bail out.
7037
70382018-11-08  Dodji Seketeli <dodji@redhat.com>
7039
7040	Support having several debuginfo search dirs for a binary
7041	* doc/manuals/abidiff.rst: Adjust doc for the
7042	--debug-info-dir{1,2} that can now be provided several times.
7043	* include/abg-dwarf-reader.h ({create, reset}_read_context)
7044	(read_corpus_from_elf): Take a vector of debug info root dirs.
7045	* include/abg-tools-utils.h (trim_leading_string)
7046	(find_file_under_dir, make_path_absolute_to_be_freed)
7047	(convert_char_stars_to_char_star_stars): Declare new functions.
7048	* src/abg-dwarf-reader.cc (find_alt_debug_info_link): Renamed
7049	find_alt_debug_info_location into this.
7050	(find_alt_debug_info_path): Define new static function.
7051	(find_alt_debug_info): Take a vector of debug info root dirs.  Use
7052	the new find_alt_debug_info_path to look into the debug info root
7053	dirs for the alt debug info.
7054	(read_context::debug_info_root_paths_): Define new data member.
7055	(read_context::read_context): Take a vector of debug info root
7056	dirs and initialize the new read_context::debug_info_root_paths_.
7057	(read_context::{initialize, create_default_dwfl}): Take a vector
7058	of debug info root dirs and adjust.
7059	(read_context::{add_debug_info_root_paths,
7060	add_debug_info_root_path, find_alt_debug_info}): Define new member
7061	functions.
7062	(read_context::load_debug_info): Look into the debug info roots
7063	for split debug info files.
7064	(create_read_context, read_corpus_from_elf): Take a vector of
7065	debug info root dirs and adjust.
7066	(has_alt_debug_info): Adjust.
7067	* src/abg-tools-utils.cc (trim_leading_string)
7068	(make_path_absolute_to_be_freed, find_file_under_dir)
7069	(convert_char_stars_to_char_star_stars): Define new functions.
7070	(entry_of_file_with_name): Define new static function.
7071	(build_corpus_group_from_kernel_dist_under): Adjust.
7072	* tests/print-diff-tree.cc (main): Adjust.
7073	* tests/test-diff-dwarf.cc (main): Adjust.
7074	* tests/test-ir-walker.cc (main): Adjust.
7075	* tests/test-read-dwarf.cc (main): Adjust.
7076	* tools/abicompat.cc (main): Adjust.
7077	* tools/abidiff.cc (options::di_root_paths{1,2}): Changed
7078	di_root_path{1,2} into this, change their types into vectors of
7079	allocated char*.
7080	(options::prepared_di_root_paths{1,2}): Define new data members.
7081	(options::~options): Define new destructor.
7082	(parse_command_line): Adjust.
7083	(prepare_di_root_paths): Define new static function.
7084	(handle_error): Remove arguments input_file_name,
7085	debug_info_dir{1,2}.  Now just take an instance of options
7086	instead.  Adjust.
7087	(main): Adjust.
7088	* tools/abidw.cc (options::dir_root_paths): Renamed dir_root_path
7089	into this and make it be a vector of allocated char*.
7090	(options::prepared_di_root_paths): Define new data member.
7091	(options::~options): Free the allocated char* in
7092	options::dir_root_paths.
7093	(parse_command_line): Support several --debug-info-dir.
7094	(load_corpus_and_write_abixml): Adjust.
7095	(prepare_di_root_paths): Define static function.
7096	(main): Adjust.
7097	* tools/abilint.cc (main): Adjust.
7098	* tools/abipkgdiff.cc (compare): Adjust.
7099
71002018-10-26  Dodji Seketeli <dodji@redhat.com>
7101
7102	Update website for 1.5
7103	* doc/website/mainpage.txt: Update website for 1.5
7104
71052018-10-26  Dodji Seketeli <dodji@redhat.com>
7106
7107	Bump version number to 1.6
7108	* configure.ac: Bump version number to 1.6
7109
71102018-10-25  Dodji Seketeli <dodji@redhat.com>
7111
7112	Update ChangeLog for 1.5
7113	* ChangeLog: Update automatically by calling make
7114	update-changelog.
7115
71162018-10-25  Dodji Seketeli <dodji@redhat.com>
7117
7118	Update NEWS file for 1.5
7119	* NEWS: Update for 1.5
7120
71212018-10-18  Dodji Seketeli <dodji@redhat.com>
7122
7123	Bug rhbz1638554 - assertion failed in is_mostly_distinct_diff
7124	* src/abg-comp-filter.cc (is_mostly_distinct_diff): Handle the
7125	case of the type diff of the function parameter diff being a
7126	distinct diff.
7127
71282018-10-17  Dodji Seketeli <dodji@redhat.com>
7129
7130	Define UINT64_MAX when it's not defined
7131	* src/abg-dwarf-reader.cc: Define UINT64_MAX when it's not defined.
7132
71332018-10-16  Dodji Seketeli <dodji@redhat.com>
7134
7135	Better support array with unknown upper bound
7136	* include/abg-comparison.h
7137	(BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY): A new enumerator in the
7138	diff_category enum.
7139	(EVERYTHING_CATEGORY): Adjust.
7140	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
7141	Adjust.
7142	(operator<<(ostream& o, diff_category)): Likewise.
7143	* include/abg-ir.h (array_type_def::subrange_type::is_infinite):
7144	Declare new member function.
7145	* src/abg-ir.cc (array_type_def::subrange_type::priv::infinite_):
7146	New data member.
7147	(array_type_def::subrange_type::priv::priv): Initialize it.
7148	(array_type_def::subrange_type::get_length): Better support
7149	unknown sized subrange.
7150	(array_type_def::subrange_type::is_infinite): Define new member
7151	function.
7152	* src/abg-comp-filter.cc (has_benign_infinite_array_change):
7153	Define new static function.
7154	(categorize_harmless_diff_node): Use the new
7155	has_benign_infinite_array_change above.
7156	* src/abg-dwarf-reader.cc (build_subrange_type): Better recognize a
7157	subrange type with unknown upper bound.  Represent that with the
7158	new array_type_def::subrange_type::is_infinite member property.
7159	* src/abg-reader.cc (build_subrange_type): Likewise.
7160	* tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Adjust.
7161	* tests/data/test-annotate/libtest23.so.abi: Likewise.
7162	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
7163	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
7164	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
7165	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
7166	Likewise.
7167	* tests/data/test-annotate/test7.so.abi: Likewise.
7168	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
7169	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
7170	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
7171	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
7172	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
7173	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
7174	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
7175	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
7176	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
7177
71782018-10-11  Dodji Seketeli <dodji@redhat.com>
7179
7180	Add default suppression specification for the libvirt project
7181	* default.abignore: Suppress changes on functions with symbol
7182	version LIBVIRT_PRIVATE in libvirt.so.* shared objects.
7183
71842018-10-11  Dodji Seketeli <dodji@redhat.com>
7185
7186	Add default suppression specification for the krb5 project
7187	* default.abignore: Ignore changes about functions starting with
7188	krb5int_.*.
7189
71902018-10-03  Dodji Seketeli <dodji@redhat.com>
7191
7192	Misc comment fix
7193	* src/abg-suppression.cc (type_suppression::suppresses_diff): Fix
7194	comment.
7195
71962018-10-03  Dodji Seketeli <dodji@redhat.com>
7197
7198	Bug 23708 - categorize void* to pointer change as harmless
7199	* include/abg-comparison.h (VOID_PTR_TO_PTR_CHANGE_CATEGORY): New
7200	enumerator in the diff_category enum.  Also, adjust the
7201	EVERYTHING_CATEGORY enumerator.
7202	* include/abg-fwd.h (is_void_pointer_type): Declare new function.
7203	* src/abg-comp-filter.cc (has_void_ptr_to_ptr_change): Define new
7204	static function and ...
7205	(categorize_harmless_diff_node): ... use it here.
7206	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
7207	Add the new abigail::comparison::VOID_PTR_TO_PTR_CHANGE_CATEGORY
7208	category in here.
7209	(operator<<(ostream& o, diff_category c)): Add support for the new
7210	VOID_PTR_TO_PTR_CHANGE_CATEGORY.
7211	* src/abg-ir.cc	(is_void_pointer_type): Define new function.
7212	* tests/data/Makefile.am: Add the new test material below to source distribution.
7213	* tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt:
7214	New test reference output.
7215	* tests/data/test-diff-filter/test47-filter-void-ptr-change-v{0,1}.c:
7216	Source code of the new binary test input below.
7217	* tests/data/test-diff-filter/test47-filter-void-ptr-change-v{0,1}.o:
7218	New binary test input.
7219	* tests/test-diff-filter.cc: Add the test input/output above to
7220	test harness.
7221
72222018-10-02  Dodji Seketeli <dodji@redhat.com>
7223
7224	Categorize CV qualifier changes on fn return types as harmless
7225	* include/abg-comparison.h (FN_RETURN_TYPE_CV_CHANGE_CATEGORY):
7226	New enumerator for diff_category.
7227	(EVERYTHING_CATEGORY): Update.
7228	* src/abg-comp-filter.cc (type_diff_has_cv_qual_change_only):
7229	Factorize this function out of ...
7230	(has_fn_parm_type_cv_qual_change): ... this one.
7231	(has_fn_return_type_cv_qual_change): Define new static function.
7232	(categorize_harmless_diff_node): Use the new
7233	has_fn_return_type_cv_qual_change.
7234	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
7235	Adjust to add the new FN_RETURN_TYPE_CV_CHANGE_CATEGORY category.
7236	(operator<<(ostream& o, diff_category c)): Support the new
7237	FN_RETURN_TYPE_CV_CHANGE_CATEGORY.
7238	* tests/data/Makefile.am: Add the new test material below to
7239	source distribution.
7240	* tests/data/test-diff-filter/test46-fn-return-qual-change-report-0.txt:
7241	New reference output for the new input test.
7242	* tests/data/test-diff-filter/test46-fn-return-qual-change-v{0,1}.c:
7243	New source code for the new binary test input.
7244	* tests/data/test-diff-filter/test46-fn-return-qual-change-v{0,1}.o:
7245	New binary test input files.
7246	* tests/test-diff-filter.cc: Add the new test input above to test
7247	harness.
7248
72492018-10-01  Dodji Seketeli <dodji@redhat.com>
7250
7251	Fix propagation of private type suppression category
7252	* include/abg-comp-filter.h (has_harmful_name_change): Declare new
7253	function overloads.
7254	* include/abg-comparison.h (PRIVATE_TYPE_CATEGORY): New enumerator
7255	for diff_category;
7256	(EVERYTHING_CATEGORY): Adjust this enumerator in diff_category;
7257	(is_suppressed): Take an output parameter to say if the
7258	suppression is a private type suppression.
7259	* include/abg-suppression.h (is_private_type_suppr_spec): Take a
7260	const reference parameter and add an overload for a shared
7261	pointer.
7262	* src/abg-comp-filter.cc (has_harmful_name_change): Define new
7263	function.
7264	* src/abg-comparison-priv.h (diff::priv::is_filtered_out): Diffs
7265	of category PRIVATE_TYPE_CATEGORY are also considered filtered
7266	out.
7267	* src/abg-comparison.cc (diff::is_filtered_out): Adjust to account
7268	for canonical diffs of category PRIVATE_TYPE_CATEGORY.
7269	(diff::is_suppressed): Add an overload that takes a
7270	is_private_type output parameter.  Re-write the old overload in
7271	terms of the new one.
7272	(operator<<(ostream& o, diff_category c)): Handle
7273	PRIVATE_TYPE_CATEGORY.
7274	(category_propagation_visitor::visit_end):  Do not propagate
7275	PRIVATE_TYPE_CATEGORY here. Do not propagate
7276	HARMLESS_DECL_NAME_CHANGE_CATEGORY either, when the class does
7277	have a harmful decl name change.
7278	(suppression_categorization_visitor::visit_begin): Set the new
7279	PRIVATE_TYPE_CATEGORY category but do not propagate it.
7280	(suppression_categorization_visitor::visit_end): Add some
7281	comments.
7282	* src/abg-default-reporter.cc (default_reporter::report): Avoid
7283	reporting typedef underlying types that are in the
7284	PRIVATE_TYPE_CATEGORY category.
7285	* src/abg-suppression.cc (type_suppression::suppresses_diff): Do
7286	not peel typedefs if we are a private type suppression.
7287	(is_private_type_suppr_spec): Take a const reference.
7288	* tests/data/Makefile.am: Add the new test material below to
7289	source distribution.
7290	* tests/test-diff-suppr.cc: Use new test binary input.
7291	* tests/data/test-diff-filter/test7-report.txt: Adjust.
7292	* tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: New
7293	test reference output.
7294	* tests/data/test-diff-suppr/test39-opaque-type-v{0,1}.c: Source
7295	code of new test binary input.
7296	* tests/data/test-diff-suppr/test39-opaque-type-v{0,1}.o: New test
7297	binary input.
7298	* tests/data/test-diff-suppr/test39-public-headers-dir/test39-header-v{0,1}.h:
7299	Source code of new test binary input.
7300
73012018-09-25  Dodji Seketeli <dodji@redhat.com>
7302
7303	PR23641 - confusion when a type definition DIE is matched by a supprspec and its decl DIEs aren't
7304	* src/abg-dwarf-reader.cc (get_opaque_version_of_type): If no
7305	pre-existing opaque version was found, a new one is created and
7306	returned.  Take a needed "where_offset" parameter.
7307	(build_ir_node_from_die): Adjust the call to
7308	get_opaque_version_of_type.
7309
73102018-09-21  Dodji Seketeli <dodji@redhat.com>
7311
7312	PR23641 - Type definition DIE matched by a supprspec but not its decl
7313	*definition* of T, they will be dropped too.
7314	We'll end up with those two libraries that are identical (modulo the
7315	order in which libabigail sees type declarations and their
7316	definitions) and are considered different when a suppression
7317	specification makes us drop T: the second library appears to
7318	libabigail as if T was removed from it.
7319	This is the problem addressed by this patch.
7320	When the definition of a type T is suppressed because it's considered
7321	private then we look if there was a forward declaration for it
7322	elsewhere, that is not matched by the private type suppression
7323	specification.  If we encountered such a type declaration then it
7324	means that declaration is in effect an "opaque" version of T.  So
7325	rather than just dropping T altogether, we keep (and build an IR) for
7326	its opaque version only.  And we drop the definition of T.
7327	This seems to fix the issue.
7328	I can't seem to reproduce the slight re-ordering of DIEs descriptions that
7329	uncover the issue so I'll rely on integration tests to catch future
7330	regressions on this issue, rather than on unit tests.  Sigh.
7331	* include/abg-tools-utils.h (PRIVATE_TYPES_SUPPR_SPEC_NAME):
7332	Remove this extern constant definition.
7333	* src/abg-dwarf-reader.cc (type_is_suppressed): Add an overload
7334	that takes an additional type_is_private output parameter.
7335	(get_opaque_version_of_type): New static function.
7336	(build_ir_node_from_die): For class types, get the opaque version
7337	for suppressed private types rather than dropping them altogether.
7338	* src/abg-reader.cc (type_is_suppressed): Adjust.
7339	* src/abg-suppression-priv.h (type_is_suppressed): Add an overload
7340	that takes a type_is_private output parameter.
7341	* include/abg-suppression.h (get_private_types_suppr_spec_label)
7342	(is_private_type_suppr_spec): Declare new functions.
7343	* src/abg-suppression.cc
7344	(get_private_types_suppr_spec_label, is_private_type_suppr_spec):
7345	Define new functions.
7346	(suppression_matches_type_name_or_location): Use the new
7347	get_private_types_suppr_spec_label rather than a global extern
7348	variable.
7349	* src/abg-tools-utils.cc (handle_fts_entry): Adjust to use the new
7350	get_private_types_suppr_spec_label.
7351	(gen_suppr_spec_from_headers): Handle the case or an empty headers
7352	root dir.
7353
73542018-09-03  Dodji Seketeli <dodji@redhat.com>
7355
7356	Add option to avoid walking abigail::ir nodes twice
7357	* include/abg-ir.h (struct ir_node_visitor): Make this be a class.
7358	Add a private data member to it, following the 'pimpl' idiom.
7359	(ir_node_visitor::{allow_visiting_already_visited_type_node,
7360	mark_type_node_as_visited, forget_visited_type_nodes,
7361	type_node_has_been_visited}): Declare new member functions.
7362	* src/abg-ir.cc ({type_base, type_decl, scope_type_decl,
7363	qualified_type_decl, pointer_type_def, reference_type_def,
7364	array_type_def, enum_type_decl, typedef_decl, class_or_union,
7365	class_decl, union_decl}::traverse): Avoid re-visiting the type
7366	node if the visitor was configured as such.
7367	(struct ir_node_visitor::priv): Define new struct.
7368	(ir_node_visitor::{allow_visiting_already_visited_type_node,
7369	mark_type_node_as_visited, forget_visited_type_nodes,
7370	type_node_has_been_visited}): Define new member functions.
7371	* tests/test-ir-walker.cc
7372	(name_printing_visitor::name_printing_visitor): Avoid visiting a
7373	type node twice.
7374
73752018-08-31  Dodji Seketeli <dodji@redhat.com>
7376
7377	Fix apidoc of dwarf_reader::get_soname_of_elf_file
7378	* src/abg-dwarf-reader.cc (get_soname_of_elf_file): Document the
7379	first parameter.  Remove bogus documentation of the previous 'elf'
7380	parameter.
7381
73822018-08-30  Dodji Seketeli <dodji@redhat.com>
7383
7384	Bug 23533 - Accept '=' in ini property values
7385	* src/abg-ini.cc (char_is_delimiter): Take a new include_equal
7386	flag to control is the equal character should be considered as a
7387	delimiter or not.
7388	(char_is_property_value_char): Accept the equal character as a
7389	valid property value character.
7390	* tests/Makefile.am: Build a new runtestini test from the new
7391	tests/test-ini.cc source file.
7392	* tests/data/Makefile.am: Add the two new test inputs below to
7393	source distribution.
7394	* tests/data/test-ini/test01-equal-in-property-string.{abignore,
7395	abignore.expected}: New test inputs.
7396	* tests/test-ini.cc: New test harness.
7397
73982018-08-06  Dodji Seketeli <dodji@redhat.com>
7399
7400	Make test-ir-walker work on ELF binaries directly
7401	* test-ir-walker.cc (main): Load an ABI corpus from an elf file
7402	and walk its translation units.
7403
74042018-07-17  Dodji Seketeli <dodji@redhat.com>
7405
7406	Allow use of python even when fedabipkgdiff is disabled
7407	* configure.ac: Detect the presence and version of python even
7408	when fedabipkgdiff is disabled.
7409
74102018-07-16  Dodji Seketeli <dodji@redhat.com>
7411
7412	Bump version number to 1.5
7413	* configure.ac: Bump version number to 1.5
7414
74152018-07-13  Dodji Seketeli <dodji@redhat.com>
7416
7417	Update ChangeLog for 1.4 release
7418	* ChangeLog: Update this using make update-changelog
7419
74202018-07-13  Dodji Seketeli <dodji@redhat.com>
7421
7422	Update NEWS file for 1.4 release
7423	* NEWS: Added 1.4 entries
7424
74252018-07-13  Dodji Seketeli <dodji@redhat.com>
7426
7427	Properly add test materials for test-diff-suppr/test38-char-class-in-ini*
7428	* tests/data/Makefile.am: Add proper path for
7429	test-diff-suppr/test38-char-class-in-ini*.
7430
74312018-07-12  Dodji Seketeli <dodji@redhat.com>
7432
7433	Allow square brackets in ini property values
7434	* src/abg-ini.cc (char_is_delimiter): Possibly disallow square
7435	bracket characters into the set of delimiters.
7436	* tests/data/test-diff-suppr/test38-char-class-in-ini-report-0.txt:
7437	New reference output.
7438	* tests/data/test-diff-suppr/test38-char-class-in-ini-v{0,1}.c:
7439	Source code new test binaries.
7440	* tests/data/test-diff-suppr/test38-char-class-in-ini-v{0,1}.o:
7441	New test binaries.
7442	* tests/data/test-diff-suppr/test38-char-class-in-ini.abignore:
7443	New test abi suppression file.
7444	* tests/data/Makefile.am: Add the new test materials above to
7445	source distribution.
7446	* tests/test-diff-suppr.cc: Add the test materials above to the
7447	set of tests to run.
7448
74492018-07-10  Dodji Seketeli <dodji@redhat.com>
7450
7451	Fix race between runtestdefaultsupprs{py3.sh,.py}
7452	* tests/Makefile.am: Run runtestdefaultsupprspy3.sh if we are in
7453	python3 mode otherwise run runtestdefaultsupprs.py.
7454
74552018-06-29  Dodji Seketeli <dodji@redhat.com>
7456
7457	Ensure die_function_type_is_method_type returns a class type die
7458	* src/abg-dwarf-reader.cc (die_peel_typedef): Define new static
7459	function.
7460	(die_function_type_is_method_type): Use the function above to peel
7461	the class die from potential typedefs wrapping it.
7462
74632018-06-28  Dodji Seketeli <dodji@redhat.com>
7464
7465	Misc style adjustements
7466	* include/abg-suppression.h
7467	(function_suppression::ADDED_FUNCTION_CHANGE_KIND): Fix the
7468	comment of this enumerator.
7469	(suppresses_variable): Cleanup parameter name.
7470	* src/abg-comparison.cc: Remove useless horizontal space.
7471	* src/abg-suppression.cc
7472	(variable_suppression::suppresses_variable): Fix typo.
7473
74742018-06-28  Dodji Seketeli <dodji@redhat.com>
7475
7476	Initial basic support of union type in suppression specifications
7477	* src/abg-suppression.cc (suppression_matches_type_no_name):
7478	Support union types.
7479
74802018-06-28  Dodji Seketeli <dodji@redhat.com>
7481
7482	Filter out changes like type to const type
7483	* include/abg-comparison.h (FN_PARM_TYPE_CV_CHANGE_CATEGORY): Add
7484	this new enumerator to the diff_category enum.  Also, OR this to
7485	the value of the EVERYTHING_CATEGORY enumerator.
7486	* src/abg-comp-filter.cc (has_fn_parm_type_top_cv_qual_change):
7487	Rename has_fn_parm_type_cv_qual_change into this.
7488	(has_fn_parm_type_cv_qual_change): New function.
7489	(categorize_harmless_diff_node): Categorize cv qual changes as
7490	being of category FN_PARM_TYPE_CV_CHANGE_CATEGORY.
7491	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
7492	Add FN_PARM_TYPE_CV_CHANGE_CATEGORY to the default harmless
7493	categories.
7494	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust.
7495
74962018-06-28  Dodji Seketeli <dodji@redhat.com>
7497
7498	Fix redundancy detection through fn ptr and typedef paths
7499	* include/abg-comparison.h
7500	(is_function_type_diff_with_local_changes)
7501	(is_reference_or_pointer_diff_to_non_basic_distinct_types)
7502	(peel_typedef_diff): Declare new functions.
7503	* src/abg-comparison.cc
7504	(is_function_type_diff_with_local_changes)
7505	(is_reference_or_ptr_diff_to_non_basic_nor_distinct_types)
7506	(peel_typedef_diff): Define new functions.
7507	(is_reference_or_pointer_diff): Peel typedefs before operating.
7508	(redundancy_marking_visitor::visit_begin): Only sibbling parameter
7509	diff node that carry basic type changes (or distinct type changes)
7510	are *not* marked as redundant.  All other kinds of sibbling
7511	parameter diff nodes are markes redundant.  Also, rather than
7512	never marking function type diffs as redundant by fear of missing
7513	local changes on these, just avoid marking function type diff
7514	nodes with local changes.  It's possible to be that precise now
7515	that we can detect that a diff node carries local changes.
7516	* tests/data/test-diff-suppr/test37-opaque-type-v{0,1}.o: New
7517	binary tests input.
7518	* tests/data/test-diff-suppr/test37-opaque-type-v{0,1}.c: Source
7519	code of the binary tests input above.
7520	* tests/data/test-diff-suppr/test37-opaque-type-header-dir/test37-opaque-type-header-v{0,1}.h:
7521	Headers of the binary tests input above.
7522	* tests/data/test-diff-suppr/test37-opaque-type-report-0.txt:
7523	Reference output for this new test.
7524	* tests/data/Makefile.am: Add the new test material above to
7525	source distribution.
7526	* tests/test-diff-suppr.cc (in_out_specs): Add the new test input
7527	above to the test harness.
7528
75292018-06-08  Dodji Seketeli <dodji@redhat.com>
7530
7531	Fix indentation of help string in abipkgdiff
7532	* tools/abipkgdiff.cc (display_usage): Fix indentation of help
7533	string.
7534
75352018-06-08  Dodji Seketeli <dodji@redhat.com>
7536
7537	Identify a function using its symbol name and version
7538	* src/abg-default-reporter.cc (default_reporter::report): In C,
7539	tell the user about the underlying function symbol name only if
7540	said symbol name is different from the name of the function.
7541	* src/abg-ir.cc (function_decl::get_id): If the function has an
7542	underlying symbol, use the symbol name and version as the function
7543	ID.  But if the function symbol has an alias then use the linkage
7544	name as the ID.
7545	* tests/data/test-diff-pkg/elfutils-debuginfo-0.170-4.el7.x86_64.rpm:
7546	New binary test input.
7547	* tests/data/test-diff-pkg/elfutils-debuginfo-0.171-1.el7.x86_64.rpm: Likewise.
7548	* tests/data/test-diff-pkg/elfutils-devel-0.170-4.el7.x86_64.rpm: Likewise.
7549	* tests/data/test-diff-pkg/elfutils-devel-0.171-1.el7.x86_64.rpm: Likewise.
7550	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64.rpm: Likewise.
7551	* tests/data/test-diff-pkg/elfutils-libs-0.171-1.el7.x86_64.rpm: Likewise.
7552	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt:
7553	New reference test output.
7554	* tests/data/Makefile.am: Add the new test material above to
7555	source distribution.
7556	* tests/test-diff-pkg.cc (in_out_specs): Integrate the new test
7557	inputs above into the harness.
7558
75592018-06-06  Dodji Seketeli <dodji@redhat.com>
7560
7561	Bump version to 1.4
7562	* configure.ac: Bump version to 1.4
7563
75642018-06-06  Dodji Seketeli <dodji@redhat.com>
7565
7566	Explicitely detect anonymous data member changes
7567	* include/abg-comp-filter.h (has_anonymous_data_member_change):
7568	Add new function declaration.
7569	* include/abg-fwd.h (is_data_member, is_anonymous_data_member):
7570	declare new overloads.
7571	* src/abg-comp-filter.cc (has_anonymous_data_member_change):
7572	Define new overloads.
7573	* src/abg-ir.cc (is_data_member, is_anonymous_data_member): Define
7574	new overloads.
7575	* src/abg-reporter-priv.cc (represent): In the var_diff overload,
7576	detect when we have anonymous data member changes and emit
7577	explicit error messages then.
7578	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
7579	New test material.
7580	* tests/data/test-diff-dwarf/test45-anon-dm-change-v0.cc: Likewise.
7581	* tests/data/test-diff-dwarf/test45-anon-dm-change-v0.o: Likewise.
7582	* tests/data/test-diff-dwarf/test45-anon-dm-change-v1.cc: Likewise.
7583	* tests/data/test-diff-dwarf/test45-anon-dm-change-v1.o: Likewise.
7584	* tests/data/Makefile.am: Add the new test material above to source
7585	distribution.
7586	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test
7587	material above to the test harness.
7588	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
7589	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
7590	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
7591	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
7592
75932018-06-05  Dodji Seketeli <dodji@redhat.com>
7594
7595	Add test44-anon-struct-union-v{0,1}.o to source distribution
7596	* tests/data/Makefile.am: Add
7597	test-diff-dwarf/test44-anon-struct-union-v{0,1}.o files to source
7598	distribution.
7599
76002018-06-04  Dodji Seketeli <dodji@redhat.com>
7601
7602	Use the flat representation for anonymous struct/unions
7603	* src/abg-ir.cc (get_class_or_union_flat_representation): Take a
7604	const class_or_union* (like what the declaration in the header
7605	file says), rather than just a class_or_union*.
7606	({class,union}_decl::get_pretty_representation): For anonymous
7607	classes and unions, use the flat representation.
7608	* tests/data/test-annotate/libtest23.so.abi: Adjust.
7609	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
7610	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
7611	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
7612	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
7613	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
7614	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
7615	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
7616	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
7617	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
7618	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
7619	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise.
7620	* tests/data/test-diff-dwarf/test44-anon-struct-union-report-0.txt:
7621	New test reference output.
7622	* tests/data/test-diff-dwarf/test44-anon-struct-union-v{0,1}.cc:
7623	Source code of new test binary outputs.
7624	* tests/data/test-diff-dwarf/test44-anon-struct-union-v{0,1}.o:
7625	New test binary outputs.
7626	* tests/data/Makefile.am: Add the new test materials above to
7627	source districution.
7628	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test
7629	material above to the test harness here.
7630	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
7631	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
7632	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
7633	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
7634	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise.
7635	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
7636	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
7637
76382018-06-01  Dodji Seketeli <dodji@redhat.com>
7639
7640	Better detect when pointer and qualified types carry local changes
7641	* src/abg-comparison.cc
7642	(leaf_diff_node_marker_visitor::visit_begin): Do not mark
7643	qualified types as leaf diff nodes.
7644	(redundancy_marking_visitor::visit_end): Changes to qualified type
7645	are never considered local.  This is just as for pointer and
7646	reference types.
7647	* src/abg-default-reporter.cc
7648	(default_reporter::report_local_reference_type_changes): Display
7649	structural changes of the pointed-to type.
7650	(default_reporter::report): In the overload for reference_diff,
7651	better detect and handle when we have local changes, or not.
7652	* src/abg-ir.cc (equals): In the overload for qualified_type_def
7653	and reference_type_de, report local type changes of the underlying
7654	type as local changes.  Add comments in the overload for pointer
7655	type, and make it look like the the overload for reference_type.
7656	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
7657	overload for pointer_diff, remove end of line.
7658	* tests/data/test-diff-filter/libtest45-basic-type-change-report-1.txt: Adjust.
7659	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
7660	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
7661	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
7662	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
7663
76642018-05-23  Dodji Seketeli <dodji@redhat.com>
7665
7666	Better detect when diff nodes only carry local type changes
7667	* include/abg-comparison.h ({diff, type_diff_base, decl_diff_base,
7668	distinct_diff, var_diff, pointer_diff, reference_diff, array_diff,
7669	qualified_type, enum_diff, class_or_union_diff, class_diff,
7670	base_diff, scope_diff, fn_parm_diff, function_type_diff,
7671	function_decl_diff, typedef_diff,
7672	translation_unit_diff}::has_local_changes): Return an enum
7673	change_kind, rather than just a bool.
7674	(is_diff_of_basic_type): Declare an overload that takes a boolean
7675	flag.
7676	(is_qualified_type_diff, peel_pointer_diff, peel_reference_diff)
7677	(peel_qualified_type, peel_pointer_or_qualified_type): Declare new
7678	functions
7679	* include/abg-fwd.h (peel_qualified_type):
7680	* include/abg-ir.h (enum change_kind::{LOCAL_TYPE_CHANGE_KIND,
7681	LOCAL_NON_TYPE_CHANGE_KIND, ALL_LOCAL_CHANGES_MASK}): Add these
7682	three new enumerators.
7683	* src/abg-comparison.cc ({distinct_diff, var_diff, pointer_diff,
7684	array_diff, reference_diff, qualified_type_diff, enum_diff,
7685	class_or_union_diff, class_diff, base_diff, scope_diff,
7686	fn_parm_diff, function_type_diff, function_decl_diff,
7687	type_decl_diff, typedef_diff,
7688	translation_unit_diff}::has_local_changes): Adjust to return an
7689	enum change_kind, rather than just a bool.
7690	(has_local_type_change_only): Define new functions.
7691	(has_basic_type_change_only): Use the new
7692	has_local_type_change_only function and the new overload for
7693	is_diff_of_basic_type.
7694	(is_diff_of_basic_type): Define an overload that takes a boolean
7695	flag.
7696	(is_qualified_type_diff, peel_pointer_diff, peel_reference_diff)
7697	(peel_qualified_type, peel_pointer_or_qualified_type): Define new
7698	functions.
7699	* src/abg-ir.cc (equals): In the overloads for decl_base,
7700	scope_decl, type_base, qualified_type_diff, pointer_type_def,
7701	reference_type_def, array_type_def, enum_type_decl, typedef_decl,
7702	var_decl, function_type, function_decl, function_decl::parameter,
7703	class_or_union, class_decl::base_spec and class_decl, properly set
7704	the new abigail::ir::{LOCAL_CHANGE_KIND,
7705	LOCAL_NON_TYPE_CHANGE_KIND, LOCAL_TYPE_CHANGE_KIND} bits.
7706	(types_have_similar_structure): Peel qualified types and typedefs
7707	off, first thing.
7708	(peel_qualified_or_typedef_type): Define new function.
7709	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
7710	Adjust.
7711	* tests/data/test-diff-filter/libtest45-basic-type-change-report-{0,1}.txt:
7712	New reference test reports.
7713	* tests/data/test-diff-filter/libtest45-basic-type-change-v{0,1}.so:
7714	New input test binaries.
7715	* tests/data/test-diff-filter/test45-basic-type-change-v{0,1}.cc:
7716	Source code of the input test binaries above.
7717	* tests/data/Makefile.am: Add the new test file above to source
7718	distribution.
7719	* tests/test-diff-filter.cc: Add the test input above to the test
7720	harness.
7721
77222018-05-18  Dodji Seketeli <dodji@redhat.com>
7723
7724	Improve detection of local *type* changes
7725	* include/abg-fwd.h (is_type_decl): Declare new overload for
7726	type_base*.
7727	(types_have_similar_structure): Declare new function.
7728	* src/abg-comparison.cc
7729	(class_or_union_diff::priv::count_filtered_changed_dm): Even when
7730	looking at local changes only, do not forget to count nodes that
7731	were filtered out.
7732	* src/abg-ir.cc (types_have_similar_structure): Define new
7733	function.
7734	(is_type_decl): Define new overload for
7735	type_base*.
7736	(is_enum_type):
7737	(equals): In the overload for var_decl, use the new
7738	types_have_similar_structure function to detect local (type)
7739	changes.
7740	* src/abg-reporter-priv.cc (represent): In the overload for
7741	var_decl, use the diff::has_local_changes function to detect local
7742	changes, now that we can better detect local changes.
7743	* tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt:
7744	Adjust.
7745	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise.
7746
77472018-05-16  Dodji Seketeli <dodji@redhat.com>
7748
7749	Remove references, arrays and fn parms from leaf diff nodes
7750	* src/abg-comparison.cc
7751	(leaf_diff_node_marker_visitor::visit_begin): Do not mark
7752	references, array and fn parms diff nodes as leaf nodes.
7753	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
7754	Adjust.
7755
77562018-05-23  Dodji Seketeli <dodji@redhat.com>
7757
7758	Fix typo in tests/runtestdefaultsupprs.py
7759	* tests/runtestdefaultsupprs.py.in: Fix typo.
7760
77612018-05-17  Dodji Seketeli <dodji@redhat.com>
7762
7763	Update ChangeLog
7764	* ChangeLog: Update this file automatically by running the "make
7765	update-changelog" command.
7766
77672018-05-17  Dodji Seketeli <dodji@redhat.com>
7768
7769	Update NEWS file for 1.3 release
7770	* NEWS: Update for 1.3.
7771
77722018-05-16  Dodji Seketeli <dodji@redhat.com>
7773
7774	Don't bail because "rpm" issued an error
7775	* src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Do not fail
7776	when the rpm command issues an error.  Rather rely on the presence
7777	of a valid output or not.  Also, make sure to filter out error
7778	outputs so that they don't appear in the general output of tools
7779	using this function.
7780
77812018-05-16  Dodji Seketeli <dodji@redhat.com>
7782
7783	Handle cases where no python2 interpreter is found
7784	* configure.ac: When no python2 is found and only python3 is
7785	found, then use python3.
7786
77872018-05-16  Dodji Seketeli <dodji@redhat.com>
7788
7789	Use the correct python interpreter in runtestdefaultsupprs.py
7790	* configure.ac: Make the PYTHON environemnt variable usable in
7791	auto-generated files.
7792	* tests/runtestdefaultsupprs.py.in: Use the python interpreter
7793	detected by configure.
7794
77952018-05-16  Dodji Seketeli <dodji@redhat.com>
7796
7797	Use the dynamically selected python for Koji configure tests
7798	* configure.ac: Use the python interpreter that was selected by
7799	the configure script for the Koji version test.
7800
78012018-05-14  Dodji Seketeli <dodji@redhat.com>
7802
7803	Sort the output of the leaf reporter
7804	* include/abg-comparison.h (diff_ptrs_type): Define new typedef.
7805	* src/abg-comparison-priv.h (sort_string_diff_ptr_map): Declare
7806	new function.
7807	* src/abg-comparison.cc (sort_string_diff_sptr_map): Update
7808	comment.
7809	(sort_string_diff_ptr_map): Define new function.
7810	* src/abg-leaf-reporter.cc (report_diffs): Sort the diff nodes
7811	before reporting about them.
7812	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Adjust.
7813
78142018-05-14  Dodji Seketeli <dodji@redhat.com>
7815
7816	Show data member offsets in bytes too
7817	* src/abg-reporter-priv.cc (represent): In the overload for
7818	var_diff_sptr, use the function show_offset_or_size, rather than
7819	emit_num_value.
7820	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
7821	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
7822	* tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt: Adjust.
7823	* tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt: Adjust.
7824
78252018-05-09  Dodji Seketeli <dodji@redhat.com>
7826
7827	Initial support of anonymous data members
7828	* include/abg-comparison.h (is_class_or_union_diff)
7829	(is_anonymous_class_or_union_diff): Declare new functions.
7830	* include/abg-fwd.h (is_class_type): Declare new overload for
7831	type_or_decl_base&.
7832	(is_data_member): Declare new overload for decl_base*.
7833	(is_anonymous_data_member)
7834	(anonymous_data_member_to_class_or_union)
7835	(get_class_or_union_flat_representation)
7836	(data_member_has_anonymous_type): Declare new functions.
7837	(is_at_class_scope): Return the class or union scope.
7838	* include/abg-ir.h (var_decl::get_qualified_name): New virtual
7839	data member which overloads decl_base::get_qualified_name.
7840	* src/abg-comparison.cc (is_class_or_union_diff)
7841	(is_anonymous_class_or_union_diff): Define new functions
7842	(leaf_diff_node_marker_visitor::visit_begin): Don't mark anonymous
7843	class or union diff nodes as diff nodes.
7844	* src/abg-ir.cc (is_data_member): Define new overload for
7845	decl_base*.
7846	(is_class_type, is_union_type): Define new overload for type_or_decl_base&.
7847	(is_anonymous_data_member)
7848	(anonymous_data_member_to_class_or_union)
7849	(get_class_or_union_flat_representation)
7850	(data_member_has_anonymous_type): Define new function overloads.
7851	(var_decl::get_qualified_name): Define new virtual member
7852	function.
7853	(is_at_class_scope): Return the class or union scope.
7854	(var_decl::get_pretty_representation): Support anonymous data
7855	members.
7856	(equals): In the overload for class_or_union_diff, mark data
7857	member textual representation changes as local changes.
7858	* src/abg-reporter-priv.cc (represent): In the overload for
7859	var_diff, support changes to anonymous data members.
7860	* src/abg-leaf-reporter.cc (leaf_reporter::report): Report sorted
7861	-- by offset -- data member changes before the ones that are
7862	sorted by other things.
7863	* tests/data/test-diff-filter/libtest44-anonymous-data-member-v{0,1}.so:
7864	New binary test input
7865	* tests/data/test-diff-filter/test44-anonymous-data-member-report-{0,1}.txt:
7866	New reference test outputs.
7867	* tests/data/test-diff-filter/test44-anonymous-data-member-v{0,1}.c:
7868	Source code of the new binary test output above.
7869	* tests/data/Makefile.am: Add the new test files above to the
7870	source distribution.
7871	* tests/data/test-annotate/libtest23.so.abi: Adjust test reference
7872	output.
7873	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
7874	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
7875	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
7876	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
7877	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
7878	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
7879	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
7880	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
7881	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
7882	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
7883	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise.
7884	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
7885	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
7886	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
7887	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
7888	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
7889	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
7890	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise.
7891	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
7892
78932018-04-20  Dodji Seketeli <dodji@redhat.com>
7894
7895	Represent sizes and offsets in bytes and hexadecimal values
7896	* doc/manuals/abidiff.rst: Add documentation for the new
7897	--show-bits, --show-bytes, --show-hex and --show-dec options.
7898	* doc/manuals/abipkgdiff.rst: Likewise.
7899	* doc/manuals/kmidiff.rst: Likewise.
7900	* include/abg-comparison.h (diff_context::{show_hex_values,
7901	show_offsets_sizes_in_bits}): Declare new member functions.
7902	* src/abg-comparison-priv.h (diff_context::priv::{hex_values_,
7903	show_offsets_sizes_in_bits_}): Declare new data members.
7904	(diff_context::priv::priv): Initialize them.
7905	* src/abg-comparison.cc (diff_context::{show_hex_values,
7906	show_offsets_sizes_in_bits}): Define new member functions.
7907	* src/abg-default-reporter.cc (default_reporter::report): Adjust
7908	the call to maybe_report_diff_for_symbol.
7909	* src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise.
7910	* src/abg-reporter-priv.h (convert_bits_to_bytes)
7911	(maybe_convert_bits_to_bytes, emit_num_value, show_offset_or_size)
7912	(show_numerical_change): Declare new functions.
7913	(maybe_report_diff_for_symbol): Take a diff_context in parameter.
7914	* src/abg-reporter-priv.cc (convert_bits_to_bytes, emit_num_value)
7915	(maybe_convert_bits_to_bytes, show_numerical_change)
7916	(show_offset_or_size): Define new functions.
7917	(represent): In the overload for method_decl, var_decl, use the
7918	new emit_num_value function.
7919	(represent_data_member): Use the new show_offset_or_size function.
7920	(maybe_show_relative_offset_change): Use the new
7921	convert_bits_to_bytes, diff_context::show_offsets_sizes_in_bits,
7922	emit_num_value functions.
7923	(maybe_show_relative_offset_change): Likewise.
7924	(report_size_and_alignment_changes): Use the new emit_num_value
7925	and show_numerical_change functions.
7926	(maybe_report_diff_for_symbol): Tak a diff_context in argument.
7927	Use the new show_numerical_change function.
7928	* tests/test-diff-filter.cc (in_out_spec): Add a new entry to test
7929	hexa and bytes output.
7930	* tools/abidiff.cc (options::{show_hexadecimal_values,
7931	show_offsets_sizes_in_bits}): New data members.
7932	(options::options): Initialize them.
7933	(display_usage): New help strings for the new
7934	--show{bytes,bits,hex,dec} options.
7935	(parse_command_line): Parse the new --show{bytes,bits,hex,dec} options.
7936	(set_diff_context_from_opts) Set the diff context wrt hex and
7937	bytes values.
7938	* tools/abipkgdiff.cc (options::{show_hexadecimal_values,
7939	show_offsets_sizes_in_bits}): New data members.
7940	(options::options): Initialize them.
7941	(display_usage): New help strings for the new
7942	--show{bytes,bits,hex,dec} options.
7943	(set_diff_context_from_opts): Set the diff context wrt hex and
7944	bytes values.
7945	(parse_command_line): Parse the new --show{bytes,bits,hex,dec}
7946	options.
7947	* tools/kmidiff.cc (options::{show_hexadecimal_values,
7948	show_offsets_sizes_in_bits}): New data members.
7949	(options::options): Initialize them.
7950	(display_usage):New help strings for the new
7951	--show{bytes,bits,hex,dec} options.
7952	(parse_command_line): Parse the new --show{bytes,bits,hex,dec}
7953	options.
7954	(set_diff_context): Set the diff context wrt hex and bytes values.
7955	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
7956	New reference test output.
7957	* tests/data/Makefile.am: Add the new reference test output above
7958	to source distribution.
7959	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
7960	* tests/data/test-abicompat/test0-fn-changed-report-2.txt: Likewise.
7961	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Likewise.
7962	* tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise.
7963	* tests/data/test-abicompat/test6-var-changed-report-0.txt: Likewise.
7964	* tests/data/test-abicompat/test6-var-changed-report-1.txt: Likewise.
7965	* tests/data/test-abicompat/test7-fn-changed-report-0.txt: Likewise.
7966	* tests/data/test-abicompat/test7-fn-changed-report-1.txt: Likewise.
7967	* tests/data/test-abicompat/test7-fn-changed-report-2.txt: Likewise.
7968	* tests/data/test-abicompat/test8-fn-changed-report-0.txt: Likewise.
7969	* tests/data/test-abicompat/test9-fn-changed-report-0.txt: Likewise.
7970	* tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
7971	* tests/data/test-abidiff/test-qual-type0-report.txt: Likewise.
7972	* tests/data/test-abidiff/test-struct0-report.txt: Likewise.
7973	* tests/data/test-abidiff/test-struct1-report.txt: Likewise.
7974	* tests/data/test-abidiff/test-var0-report.txt: Likewise.
7975	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
7976	* tests/data/test-diff-dwarf/test1-report.txt: Likewise.
7977	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
7978	* tests/data/test-diff-dwarf/test11-report.txt: Likewise.
7979	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
7980	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Likewise.
7981	* tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise.
7982	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Likewise.
7983	* tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: Likewise.
7984	* tests/data/test-diff-dwarf/test3-report.txt: Likewise.
7985	* tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise.
7986	* tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise.
7987	* tests/data/test-diff-dwarf/test34-pr19173-libfoo-report-0.txt: Likewise.
7988	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang-report-0.txt: Likewise.
7989	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc-report-0.txt: Likewise.
7990	* tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: Likewise.
7991	* tests/data/test-diff-dwarf/test37-union-report-0.txt: Likewise.
7992	* tests/data/test-diff-dwarf/test39-union-report-0.txt: Likewise.
7993	* tests/data/test-diff-dwarf/test40-report-0.txt: Likewise.
7994	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise.
7995	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
7996	* tests/data/test-diff-dwarf/test9-report.txt: Likewise.
7997	* tests/data/test-diff-filter/test0-report.txt: Likewise.
7998	* tests/data/test-diff-filter/test01-report.txt: Likewise.
7999	* tests/data/test-diff-filter/test1-report.txt: Likewise.
8000	* tests/data/test-diff-filter/test10-report.txt: Likewise.
8001	* tests/data/test-diff-filter/test11-report.txt: Likewise.
8002	* tests/data/test-diff-filter/test13-report.txt: Likewise.
8003	* tests/data/test-diff-filter/test14-0-report.txt: Likewise.
8004	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.
8005	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
8006	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.
8007	* tests/data/test-diff-filter/test16-report-2.txt: Likewise.
8008	* tests/data/test-diff-filter/test16-report.txt: Likewise.
8009	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
8010	* tests/data/test-diff-filter/test17-1-report.txt: Likewise.
8011	* tests/data/test-diff-filter/test2-report.txt: Likewise.
8012	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
8013	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
8014	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise.
8015	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
8016	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
8017	* tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt: Likewise.
8018	* tests/data/test-diff-filter/test3-report.txt: Likewise.
8019	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
8020	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
8021	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
8022	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
8023	* tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise.
8024	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
8025	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise.
8026	* tests/data/test-diff-filter/test37-report-0.txt: Likewise.
8027	* tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
8028	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise.
8029	* tests/data/test-diff-filter/test6-report.txt: Likewise.
8030	* tests/data/test-diff-filter/test9-report.txt: Likewise.
8031	* tests/data/test-diff-pkg/dirpkg-1-report-1.txt: Likewise.
8032	* tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise.
8033	* tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise.
8034	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise.
8035	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Likewise.
8036	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
8037	* tests/data/test-diff-pkg/symlink-dir-test1-report0.txt: Likewise.
8038	* tests/data/test-diff-pkg/tarpkg-0-report-0.txt: Likewise.
8039	* tests/data/test-diff-pkg/tarpkg-1-report-0.txt: Likewise.
8040	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise.
8041	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise.
8042	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise.
8043	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise.
8044	* tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise.
8045	* tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise.
8046	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
8047	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
8048	* tests/data/test-diff-suppr/test11-add-data-member-report-0.txt: Likewise.
8049	* tests/data/test-diff-suppr/test12-add-data-member-report-0.txt: Likewise.
8050	* tests/data/test-diff-suppr/test12-add-data-member-report-2.txt: Likewise.
8051	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-0.txt: Likewise.
8052	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise.
8053	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise.
8054	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise.
8055	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-0.txt: Likewise.
8056	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise.
8057	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-5.txt: Likewise.
8058	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt: Likewise.
8059	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise.
8060	* tests/data/test-diff-suppr/test17-suppr-added-var-report-0.txt: Likewise.
8061	* tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise.
8062	* tests/data/test-diff-suppr/test17-suppr-added-var-report-5.txt: Likewise.
8063	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-0.txt: Likewise.
8064	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-2.txt: Likewise.
8065	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-5.txt: Likewise.
8066	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
8067	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
8068	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise.
8069	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise.
8070	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise.
8071	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
8072	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
8073	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
8074	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise.
8075	* tests/data/test-diff-suppr/test25-typedef-report-0.txt: Likewise.
8076	* tests/data/test-diff-suppr/test26-loc-suppr-report-0.txt: Likewise.
8077	* tests/data/test-diff-suppr/test26-loc-suppr-report-3.txt: Likewise.
8078	* tests/data/test-diff-suppr/test29-soname-report-3.txt: Likewise.
8079	* tests/data/test-diff-suppr/test29-soname-report-6.txt: Likewise.
8080	* tests/data/test-diff-suppr/test29-soname-report-8.txt: Likewise.
8081	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
8082	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
8083	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
8084	* tests/data/test-diff-suppr/test30-report-0.txt: Likewise.
8085	* tests/data/test-diff-suppr/test31-report-1.txt: Likewise.
8086	* tests/data/test-diff-suppr/test32-report-0.txt: Likewise.
8087	* tests/data/test-diff-suppr/test32-report-1.txt: Likewise.
8088	* tests/data/test-diff-suppr/test33-report-0.txt: Likewise.
8089	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise.
8090	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise.
8091	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise.
8092	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise.
8093	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise.
8094	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
8095	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
8096	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
8097	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
8098	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
8099	* tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise.
8100	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise.
8101	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise.
8102	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise.
8103	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise.
8104	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
8105	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
8106	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
8107	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
8108	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
8109	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
8110	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise.
8111	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise.
8112	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Likewise.
8113	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise.
8114	* tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Likewise.
8115
81162018-04-18  Dodji Seketeli <dodji@redhat.com>
8117
8118	Use absolute builddir paths in automake test files
8119	* tests/runtestdefaultsupprs.py.in: Use abs_top_builddir rather
8120	than top_builddir.
8121
81222018-04-10  Jonathan Wakely <jwakely@redhat.com>
8123
8124	Use std::string::substr instead of appending single chars
8125	* src/abg-ini.cc (trim_white_space): Use std::string::substr
8126	instead of appending single chars.
8127
81282018-04-10  Jonathan Wakely <jwakely@redhat.com>
8129
8130	Rename misleading remove_trailing_white_spaces functions
8131	* include/abg-tools-utils.h (trim_white_space): Renamed
8132	remove_trailing_white_spaces into this.
8133	* src/abg-ini.cc (trim_white_space): Likewise.
8134	* src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Adjust.
8135
81362018-04-10  Jonathan Wakely <jwakely@redhat.com>
8137
8138	Remove unused local set<string> variables
8139	* src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Remove unsed
8140	set<string> variable.
8141	* tools/abipkgdiff.cc (maybe_create_public_dso_sonames_set):
8142	Likewise.
8143
81442018-04-10  Jonathan Wakely <jwakely@redhat.com>
8145
8146	Remove assertion with side-effects
8147	* src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Fix
8148	std::string::sbustr and remove assert with side effect.
8149
81502018-04-13  Dodji Seketeli <dodji@redhat.com>
8151
8152	Misc style changes
8153	* src/abg-comparison.cc (category_propagation_visitor): Adjust comment.
8154	* src/abg-default-reporter.cc
8155	(default_reporter::report_local_function_type_changes): Remove
8156	useless new line.
8157
81582018-04-13  Dodji Seketeli <dodji@redhat.com>
8159
8160	Update tests for the "better leaf mode redundancy management" patchset
8161	* tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust.
8162	* tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
8163	* tests/data/test-abidiff/test-enum0-report.txt: Likewise.
8164	* tests/data/test-abidiff/test-enum1-report.txt: Likewise.
8165	* tests/data/test-diff-filter/test1-report.txt: Likewise.
8166	* tests/data/test-diff-filter/test14-0-report.txt: Likewise.
8167	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
8168	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
8169	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
8170	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
8171	* tests/data/test-diff-filter/test3-report.txt: Likewise.
8172	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
8173	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
8174	* tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise.
8175	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
8176	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise.
8177	* tests/data/test-diff-filter/test4-report.txt: Likewise.
8178	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
8179	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise.
8180	* tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise.
8181	* tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise.
8182	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise.
8183	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise.
8184	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise.
8185	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise.
8186	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
8187	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise.
8188	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise.
8189	* tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise.
8190	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
8191	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise.
8192	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise.
8193	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise.
8194	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise.
8195	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise.
8196	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise.
8197	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise.
8198	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise.
8199	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise.
8200	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise.
8201	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise.
8202	* tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise.
8203	* tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise.
8204	* tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise.
8205	* tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise.
8206	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise.
8207	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise.
8208	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise.
8209	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
8210	* tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise.
8211	* tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise.
8212	* tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise.
8213	* tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise.
8214	* tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise.
8215	* tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise.
8216	* tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise.
8217	* tests/data/test-diff-suppr/test30-report-1.txt: Likewise.
8218	* tests/data/test-diff-suppr/test34-report-0.txt: Likewise.
8219	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise.
8220	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise.
8221	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
8222	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
8223	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
8224	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
8225	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
8226	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
8227	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
8228	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
8229	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
8230	* tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise.
8231	* tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise.
8232	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
8233	* tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise.
8234	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise.
8235
82362018-04-13  Dodji Seketeli <dodji@redhat.com>
8237
8238	[abipkgdiff]: in leaf mode we always show redundant changes
8239	* tools/abipkgdiff.cc (set_diff_context_from_opts):
8240	diff_context::show_leaf_changes_only automatically makes us show
8241	redundant changes.  So do not try to show redundant changes in
8242	that case.
8243
82442018-04-13  Dodji Seketeli <dodji@redhat.com>
8245
8246	When we say an a change was reported earlier give its source location
8247	* src/abg-reporter-priv.h
8248	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER2)
8249	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER3): Report the
8250	location of the artifact.
8251
82522018-04-13  Dodji Seketeli <dodji@redhat.com>
8253
8254	Avoid reporting an enum change if it has already been reported
8255	* src/abg-default-reporter.cc (default_reporter::report): In the
8256	enum_diff overload, do not report a node if it's always been
8257	reported; rather, say that it has been reported earlier.
8258
82592018-04-13  Dodji Seketeli <dodji@redhat.com>
8260
8261	Always show redundant changes in leaf mode
8262	* src/abg-comparison.cc (diff_context::show_leaf_changes_only):
8263	Show redundant changes when in leaf mode.
8264
82652018-04-12  Dodji Seketeli <dodji@redhat.com>
8266
8267	Fix leaf report of class data member changes
8268	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
8269	class_or_uion_diff overload, do not emit the data member changes
8270	header twice.
8271	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
8272	overload, show data member changes when its textual representation
8273	changed.
8274
82752018-04-12  Dodji Seketeli <dodji@redhat.com>
8276
8277	Only show leaf type changes in the leaf type changes section
8278	* src/abg-leaf-reporter.cc (report_type_changes_from_diff_maps):
8279	Split this out from leaf_reporter::report_changes_from_diff_maps
8280	and make it report only about leaf *type* changes.
8281	(leaf_reporter::report_changes_from_diff_maps): Use the new
8282	report_type_changes_from_diff_maps function.
8283	(leaf_reporter::report): In the overload for corpus_diff, use the
8284	new report_type_changes_from_diff_maps function, instead of the
8285	report_changes_from_diff_maps function.
8286
82872018-04-12  Dodji Seketeli <dodji@redhat.com>
8288
8289	Don't filter out typedef changes with redundant underlying type changes
8290	* src/abg-default-reporter.cc (default_reporter::report): In the
8291	overload for typedef, report underlying type changes een when they
8292	are redundant, if the whole typedef change needs to be repoted.
8293
82942018-04-12  Dodji Seketeli <dodji@redhat.com>
8295
8296	Improve function changes reporting in leaf and default mode
8297	* src/abg-default-reporter.cc (default_reporter::report): In the
8298	overload for fn_parm_diff, consider that parameter type changes are
8299	never redundant.
8300	* src/abg-ir.cc (equals): In the overload for function_type,
8301	consider that if the textual representation of the function return
8302	type or a function parameter changed, then that's a local change
8303	for the current instance of function_type.  Likewise, in the
8304	overload for  function_decl, consider that a change in the textual
8305	representation of the function_decl is a local change.  Likewise,
8306	in the overload of function_decl::parameter, consider that a
8307	change in the textual representation of the parameter type is a
8308	local change.
8309	* src/abg-leaf-reporter.cc (leaf_reporter::report): Report leaf
8310	changes to functions.
8311
83122018-04-12  Dodji Seketeli <dodji@redhat.com>
8313
8314	Better handle category propagation of pointer changes
8315	* src/abg-comparison.cc
8316	(leaf_diff_node_marker_visitor::visit_begin): Do not consider
8317	local pointer changes as being leaf changes.
8318	(suppression_categorization_visitor::visit_end):
8319	Allow propagation of the SUPPRESSED_CATEGORY category to pointer
8320	diff nodes.
8321	(redundancy_marking_visitor::visit_end): Allow propagation of the
8322	REDUNDANT_CATEGORY category to pointer diff nodes.
8323	* src/abg-ir.cc (equals): In the pointer_type_def overload,
8324	consider changes where the textual representation of the
8325	pointed-to changed as being local to the pointer type.
8326	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
8327	pointer_diff overload, report the change in the textual
8328	representation of the pointer.
8329
83302018-04-11  Dodji Seketeli <dodji@redhat.com>
8331
8332	Fix meaning of "harmless name change" to avoid overfiltering
8333	* include/abg-ir.h (enum_has_non_name_change): Declare new
8334	* function.  Make it a friend of class enum_type_decl.
8335	* src/abg-comp-filter.cc (has_harmless_name_change): A typedef
8336	name change cannot be harmless if the textual representation of
8337	the underlying type changes too.  Also, use the new
8338	enum_has_non_name_change to tighten the harmless name change
8339	definition for an enum.
8340	* src/abg-default-reporter.cc
8341	(default_reporter::report_local_typedef_changes): If the name of
8342	the typedef changed, report it no matter what.
8343	* src/abg-ir.cc (enum_has_non_name_change): Define new function.
8344
83452018-04-11  Dodji Seketeli <dodji@redhat.com>
8346
8347	Do not mark "distinct" diff nodes as being redundant
8348	* include/abg-comp-filter.h (is_mostly_distinct_diff): Declare new
8349	function.
8350	* include/abg-fwd.h (peel_typedef_pointer_or_reference_type): Take
8351	a boolean to decide to peel qualified types or not.
8352	* src/abg-comp-filter.cc (is_mostly_distinct_diff): Define this function.
8353	* src/abg-comparison.cc (redundancy_marking_visitor::visit_begin):
8354	Do not mark distinct_diff nodes as being redundant.
8355	* src/abg-ir.cc (peel_typedef_pointer_or_reference_type):
8356	Implement taking a boolean to decide to peel qualified types or
8357	not.
8358
83592018-04-11  Dodji Seketeli <dodji@redhat.com>
8360
8361	Overhaul of the report diff stats summary
8362	* include/abg-comparison.h
8363	(corpus_diff::diff_stats::{num_leaf_type_changes,
8364	num_leaf_type_changes_filtered_out, net_num_leaf_type_changes,
8365	num_leaf_func_changes, num_leaf_func_changes_filtered_out,
8366	net_num_leaf_func_changes, num_leaf_var_changes,
8367	num_leaf_var_changes_filtered_out, net_num_leaf_var_changes}):
8368	Declare new member functions.
8369	* src/abg-comparison-priv.h
8370	(corpus_diff::priv::count_leaf_type_changes): Declare new member
8371	function.
8372	* src/abg-comparison.cc
8373	(corpus_diff::diff_stats::net_num_leaf_changes): Fix comment.
8374	(corpus_diff::diff_stats::{num_leaf_type_changes,
8375	num_leaf_type_changes_filtered_out, net_num_leaf_type_changes,
8376	num_leaf_func_changes, num_leaf_func_changes_filtered_out,
8377	net_num_leaf_func_changes, num_leaf_var_changes,
8378	num_leaf_var_changes_filtered_out, net_num_leaf_var_changes}):
8379	Define these member functions.
8380	(do_count_diff_map_changes): Move this macro out of ...
8381	(corpus_diff::priv::count_leaf_changes): ... this.  Also, use
8382	the new function corpus_diff::priv::count_leaf_type_changes.
8383	(corpus_diff::priv::count_leaf_type_changes): Splitted this out of
8384	the previous corpus_diff::priv::count_leaf_changes function.
8385	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Account
8386	for (filtered) types, functions and variables, in a leaf change
8387	manner.
8388	(corpus_diff::priv::emit_diff_stats): Emit a better stat summary
8389	that takes into account leaf-changed types, functions and
8390	variables.
8391
83922018-04-10  Dodji Seketeli <dodji@redhat.com>
8393
8394	Do not show decl-only-to-def changes in the leaf reporter
8395	* include/abg-comp-filter.h (has_class_decl_only_def_change):
8396	Declare this function.
8397	* src/abg-comp-filter.cc (has_class_decl_only_def_change): Make
8398	this function be non-static.
8399	* src/abg-comparison.cc
8400	(leaf_diff_node_marker_visitor::visit_begin): Use it to avoid
8401	marking class-decl-only-def changes as being leaf changes.
8402	* libtest43-decl-only-def-change-leaf-report-v0.so: New test input file.
8403	* libtest43-decl-only-def-change-leaf-report-v1.so: Likewise.
8404	* test43-decl-only-def-change-leaf-report-0.txt: Likewise.
8405	* test43-decl-only-def-change-leaf-report-v0.cc: Likewise.
8406	* test43-decl-only-def-change-leaf-report-v1.cc: Likewise.
8407	* tests/test-diff-filter.cc (in_out_specs): Run the test over the
8408	new test input.
8409	* tests/data/Makefile.am: Add the new test materials to source
8410	distribution.
8411
84122018-03-30  Dodji Seketeli <dodji@redhat.com>
8413
8414	Don't possibly forget type definition when reading a CorpusGroup
8415	* src/abg-dwarf-reader.cc (add_or_update_class_type): Look for
8416	declaration-only-ness to determine if we've already seen the same
8417	type from the main corpus of the group.
8418
84192018-03-30  Dodji Seketeli <dodji@redhat.com>
8420
8421	Don't crash when invoking kmidiff with no debug info root dir
8422	* tools/kmidiff.cc (main): Do not crash on empty debug info root
8423	dir.
8424
84252018-03-30  Dodji Seketeli <dodji@redhat.com>
8426
8427	Do not enable fedabipkgdiff tests if fedabipkgdiff itself is disabled
8428	* tests/Makefile.am: Run runtestfedabipkgdiff{py3?}.py only if
8429	fedabipkgdiff itself is enabled.
8430
84312018-03-25  Chenxiong Qi <cqi@redhat.com>
8432
8433	Bug 22722 - Make fedabipkgdiff and its tests support both python 3 and 2
8434	* configure.ac: Add new option --enable-python3. Add new
8435	test runner file tests/runtestdefaultsupprs-py3 and
8436	tests/runtestfedabipkgdiffpy3.sh. Add required six Python module.
8437	* tests/Makefile.am: Add new test files
8438	tests/runtestdefaultsupprspy3.sh and
8439	tests/runtestfedabipkgdiffpy3.sh accordingly.
8440	* tests/mockfedabipkgdiff.in: Convert print statement to
8441	six.print_. Replace call to function filter with list
8442	comprehension. Replace basestring with six.string_types.
8443	* tests/runtestdefaultsupprspy3.sh.in: New shell script to run
8444	test runtestdefaultsupprs with Python 3.
8445	* tests/runtestdefaultsupprs.py.in: Repalce a few tabs with
8446	proper number of spaces which is detected by Python 3
8447	interpreter.
8448	* tests/runtestfedabipkgdiffpy3.sh.in: New shell script to run
8449	test runtestfedabipkgdiff with Python 3.
8450	* tests/runtestfedabipkgdiff.py.in: Use python from env in
8451	shebang instead of a fixed path to a Python interpreter.
8452	* tools/fedabipkgdiff: Globally replace print statement with a
8453	function call to print which is available by importing
8454	print_function from __future__ module. Use six.print_ to output
8455	string to stderr instead. Convert function call to map to
8456	for-loop. (cmp_nvr): Change argument to handle a Koji build
8457	mapping instead of only the nvr. (Brew.listBuilds): use the new
8458	cmp_nvr to sort builds.
8459
84602018-03-29  Dodji Seketeli <dodji@redhat.com>
8461
8462	Detect the presence of 'rpm' as it's now needed by abipkgdiff
8463	* configure.ac: Detect that the 'rpm' is present. Otherwise,
8464	disable rpm support.
8465
84662018-03-28  Dodji Seketeli <dodji@redhat.com>
8467
8468	Make abipkgdiff avoid comparing private DSOs from RPMs
8469	* doc/manuals/abipkgdiff.rst: Add documentation for the new
8470	--private-dso option.
8471	* include/abg-tools-utils.h (execute_command_and_get_output)
8472	(execute_command_and_get_output, remove_trailing_white_spaces):
8473	Declare new functions.
8474	* src/abg-tools-utils.cc (execute_command_and_get_output)
8475	(get_dsos_provided_by_rpm, remove_trailing_white_spaces): Define
8476	new functions.
8477	* tests/test-diff-pkg.cc (in_out_specs): Add the new --private-dso
8478	option where it makes sense.
8479	* tools/abipkgdiff.cc (options::compare_private_dsos): Add new
8480	data member.
8481	(options::options): Initialize it.
8482	(package::public_dso_sonames_): Add new data member.
8483	(package::public_dso_sonames): Add new accessors pair.
8484	(display_usage): Add a help string for the new --private-dso
8485	option.
8486	(maybe_create_public_dso_sonames_set)
8487	(must_compare_public_dso_only): Define new static functions.
8488	(create_maps_of_package_content): Call the new
8489	maybe_create_public_dso_sonames_set.  Skip packages which SONAME
8490	is not in the set of public SONAMES.
8491	(parse_command_line): Parse the new --private-dso option.
8492
84932018-03-16  Dodji Seketeli <dodji@redhat.com>
8494
8495	Skip changes to function *types* in the leaf reporter
8496	* src/abg-leaf-reporter.cc
8497	(leaf_reporter::report_changes_from_diff_maps): Don't report
8498	function type changes.
8499
85002018-03-16  Dodji Seketeli <dodji@redhat.com>
8501
8502	Report change locations in leaf reports
8503	* src/abg-leaf-reporter.cc (report_diffs): Report the source
8504	location of the diff.
8505	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt:
8506	Update test reference output.
8507	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
8508	Likewise.
8509	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise.
8510	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise.
8511
85122018-03-06  Dodji Seketeli <dodji@redhat.com>
8513
8514	Make the "upload-release" target be usable in parallel
8515	* Makefile.am: Re-arrange the upload-release target to make it
8516	usable with 'make upload-release -jN'.
8517
85182018-03-06  Dodji Seketeli <dodji@redhat.com>
8519
8520	Bump version number to 1.3
8521	* configure.ac: Now that 1.2 is out of the door, bump version
8522	number to 1.3
8523
85242018-03-06  Dodji Seketeli <dodji@redhat.com>
8525
8526	Update website for 1.2
8527	* doc/website/mainpage.txt: Update link to download the tarball,
8528	for 1.2.
8529
85302018-03-06  Dodji Seketeli <dodji@redhat.com>
8531
8532	Update ChangeLog for 1.2
8533	* ChangeLog: Updated automatically by running make update-changelog.
8534
85352018-03-06  Dodji Seketeli <dodji@redhat.com>
8536
8537	Update NEWS file for 1.2
8538	* NEWS: Update for 1.2
8539
85402018-01-31  Dodji Seketeli <dodji@redhat.com>
8541
8542	Fix typo in abipkgdiff documenation
8543	* doc/manuals/abipkgdiff.rst: Fix a typo
8544
85452018-01-31  Dodji Seketeli <dodji@redhat.com>
8546
8547	Update abipkgdiff documentation wrt suppression specifications
8548	* doc/manuals/abipkgdiff.rst: Mention the .abignore file that is
8549	read by the tool and considered as a suppression specification
8550	file.
8551
85522018-03-06  Dodji Seketeli <dodji@redhat.com>
8553
8554	Fix indentation in the DWARF reader
8555	* src/abg-dwarf-reader.cc (build_subrange_type): Fix indentation.
8556
85572018-03-02  Dodji Seketeli <dodji@redhat.com>
8558
8559	Fix the output indentation of abidiff --help
8560	* tools/abidiff.cc (display_usage): Fix indentation of the help
8561	string for the --drop-private-types option.
8562
85632018-03-02  Dodji Seketeli <dodji@redhat.com>
8564
8565	Bug 22913 - Correctly de-duplicate pointers to anonymous structs inside a given
8566	* src/abg-dwarf-reader.cc
8567	(pointer_or_qual_die_of_anonymous_class_type)
8568	(die_is_qualified_type): Define new functions.
8569	(compare_dies): If pointers, reference or qualified type have an
8570	anonymous struct as their underlying type, then we need to
8571	structurally compare the underlying anonymous struct.
8572	* tests/data/test-diff-dwarf/libtest43-PR22913-v{0,1}.so: New
8573	binary test input files.
8574	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: New
8575	reference output of the comparison of the two binaries above.
8576	* tests/data/test-diff-dwarf/test43-PR22913-v{0,1}.c: Source code
8577	of the binaries above.
8578	* tests/test-diff-dwarf.cc (in_out_specs): Make the test harness
8579	compare the two binaries above.
8580	* tests/data/Makefile.am: Add the new test files above to the
8581	source distribution.
8582
85832018-02-27  Dodji Seketeli <dodji@redhat.com>
8584
8585	Initial support for Ada ranges
8586	* include/abg-ir.h (type_maps::subrange_types): Declare new
8587	accessors.
8588	(is_ada_language, is_subrange_type): Declare new functions.
8589	(class array_type_def::subrange_type): Make this extend type_base
8590	and decl_base.
8591	(array_type_def::subrange_type::{get_language, operator==,
8592	get_pretty_representation, traverse}): Declare new member
8593	functions.
8594	(ir_node_visitor::visit_begin): Add new overloads for
8595	array_type::def::subrange_type.
8596	* src/abg-dwarf-reader.cc (build_subrange_type): Define new static
8597	function.
8598	(build_subranges_from_array_type_die): Cleanup the parameters of
8599	this function.
8600	(build_array_type): Adjust.
8601	(build_ir_node_from_die): Support free-form DW_TAG_subrange_type.
8602	(read_context::odr_is_relevant): Handle Ada.
8603	(die_qualified_type_name): Support DW_TAG_subrange_type.
8604	(die_pretty_print_type): Likewise.  Make the handling of
8605	DW_TAG_subrange_type use die_qualified_type_name.  Adjust the use
8606	of build_subranges_from_array_type_die.
8607	(get_scope_die): a DW_TAG_array_type cannot be a scope.  Rather,
8608	it's its scope that can be a scope.
8609	* src/abg-ir.cc (type_maps::priv::subrange_types_): New data
8610	member.
8611	(type_maps::empty): Adjust.
8612	(type_maps::subrange_types): Define new accessors.
8613	(is_ada_language, is_subrange_type): Define new functions.
8614	(odr_is_relevant): Support Ada.
8615	(maybe_update_types_lookup_map): Add an overload for
8616	array_type_def::subrange_type.  In the decl_base_sptr overload,
8617	add support for the array_type_def::subrange_type type.
8618	(struct array_type_def::subrange_type::priv::location_): Remove
8619	this as it's now carried by the parent decl_base type.
8620	(array_type_def::subrange_type::subrange_type): Adjust.  Take an
8621	environement pointer, a name, an underlying type and a language.
8622	(array_type_def::subrange_type::{g,s}et_underlying_type): Define
8623	new accessors.
8624	(array_type_def::subrange_type::{get_language,
8625	get_pretty_representation, traverse}): Define new member
8626	functions.
8627	(array_type_def::subrange_type::as_string): Add a representation
8628	for Ada.
8629	(equals): Define new overload for array_type_def::subrange_type.
8630	(array_type_def::subrange_type::operator==): Define three new
8631	overloads for decl_base, type_base and subrange_type.
8632	(array_type_def::subrange_type::operator!=): Define new operator.
8633	(get_type_representation): In the overload for array_type_def,
8634	support Ada.
8635	(array_type_def::get_language): Define new member function.
8636	(ir_node_visitor::visit_{begin,end}): Define new overloads for
8637	array_type_def::subrange_type.
8638	* src/abg-reader.cc (build_subrange_type): Adjust documentation.
8639	Support the new 'id', 'name', and 'type-id' properties.
8640	* src/abg-writer.cc (write_array_subrange_type): Define new static
8641	function.
8642	(write_array_type_def): Use the new write_array_subrange_type
8643	function.
8644	* tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Adjust.
8645	* tests/data/test-annotate/libtest23.so.abi: Likewise.
8646	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
8647	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
8648	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
8649	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
8650	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
8651	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
8652	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
8653	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
8654	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
8655	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
8656	* tests/data/test-annotate/test7.so.abi: Likewise.
8657	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
8658	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
8659	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
8660	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
8661	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
8662	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
8663	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
8664	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
8665	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
8666	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
8667	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
8668	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
8669	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
8670	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
8671	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
8672	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
8673	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
8674	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
8675	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
8676	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
8677	* tests/data/test-read-write/test25.xml: Likewise.
8678
86792018-02-06  Dodji Seketeli <dodji@redhat.com>
8680
8681	Add newline at end of version string display
8682	* tools/abidiff.cc (main): Add a newline at the end of the version
8683	string line.
8684	* tools/abidw.cc (main): Likewise.
8685	* tools/abipkgdiff.cc (main): Likewise.
8686	* tools/kmidiff.cc (main): Likewise.
8687
86882018-01-31  Dodji Seketeli <dodji@redhat.com>
8689
8690	Bump version number to 1.2
8691	* configure.ac: Bump version number to 1.2
8692
86932018-01-25  Dodji Seketeli <dodji@redhat.com>
8694
8695	Update website for 1.1
8696	* doc/website/mainpage.txt: Update for 1.1.
8697
86982018-01-25  Dodji Seketeli <dodji@redhat.com>
8699
8700	Update ChangeLog for 1.1
8701	* ChangeLog: Automatically update using 'make update-changelog'.
8702
87032018-01-25  Dodji Seketeli <dodji@redhat.com>
8704
8705	Update NEWS file for 1.1
8706	* NEWS: Update for 1.1
8707
87082018-01-29  Dodji Seketeli <dodji@redhat.com>
8709
8710	Correctly link with pthread
8711	* src/Makefile.am: use -lpthread, not -pthread.
8712
87132018-01-18  Dodji Seketeli <dodji@redhat.com>
8714
8715	Skip class types with changed names in leaf reports
8716	* include/abg-comp-filter.h (has_class_or_union_type_name_change)
8717	(has_basic_or_class_type_name_change): Declare new functions.
8718	* include/abg-comparison.h (is_diff_of_class_or_union_type):
8719	Likewise.
8720	* src/abg-comp-filter.cc (has_class_or_union_type_name_change)
8721	(has_basic_or_class_type_name_change):
8722	* src/abg-comparison.cc
8723	(leaf_diff_node_marker_visitor::visit_begin): Use the new
8724	filtering::has_basic_or_class_type_name_change to test if a basic
8725	or class/union diff type carries a name change.  Update comment.
8726	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
8727	Adjust.
8728
87292018-01-16  Dodji Seketeli <dodji@redhat.com>
8730
8731	Only consider local changes when filtering subtype changes
8732	* src/abg-comparison-priv.h
8733	(class_or_union_diff::priv::{count_filtered_subtype_changed_dm,
8734	count_filtered_changed_dm}): Take an additional flag.
8735	* src/abg-comparison.cc
8736	(class_or_union_diff::priv::{count_filtered_subtype_changed_dm,
8737	count_filtered_changed_dm}): Likewise.  When asked, only consider
8738	local changes.
8739	* src/abg-leaf-reporter.cc (leaf_reporter::report): Consider
8740	reporting only the *net local* data member changes.
8741
87422018-01-16  Dodji Seketeli <dodji@redhat.com>
8743
8744	Make kmidiff show the wrong option when it complains about it
8745	* tools/kmidiff.cc (parse_command_line): Don't forget to record
8746	the wrong option in options::wrong_option.
8747
87482018-01-12  Dodji Seketeli <dodji@redhat.com>
8749
8750	Fix typo in abipkgdiff.cc
8751	* tools/abipkgdiff.cc (compare_task::perform): Fix a typo in a
8752	comment.
8753
87542018-01-12  Dodji Seketeli <dodji@redhat.com>
8755
8756	Suppress duplicates when listing package content
8757	* tools/abipkgdiff.cc (maybe_update_package_content): Rename
8758	maybe_update_vector_of_package_content into this.  Take a set of
8759	strings, rather than a vector of strings.
8760	(get_interesting_files_under_dir): Adjust.
8761
87622018-01-12  Dodji Seketeli <dodji@redhat.com>
8763
8764	Fix symlinks paths handling in abipkgdiff
8765	* include/abg-tools-utils.h (real_path): Declare new function.
8766	* src/abg-tools-utils.cc (real_path): Define it.
8767	* tools/abipkgdiff.cc (package::convert_path_to_relative): Use the
8768	new real_path function to consider real path (where symlinks are
8769	resolved) of the extraction directory of the package.
8770	(get_interesting_files_under_dir): Similarly, use the new
8771	real_path function to consider the real path of the directory we
8772	are exploring.
8773
87742018-01-12  Dodji Seketeli <dodji@redhat.com>
8775
8776	Fix logic in common_prefix
8777	* src/abg-tools-utils.cc (common_prefix): Fix logic error.
8778
87792018-01-12  Dodji Seketeli <dodji@redhat.com>
8780
8781	abipkgdiff --verbose shouldn't trigger --fail-no-dbg
8782	* tools/abipkgdiff.cc (compare): In the overload for elf_files,
8783	separate the effect of --verbose from the one of --fail-no-dbg.
8784
87852018-01-10  Dodji Seketeli <dodji@redhat.com>
8786
8787	Bug 22692 - Consider Java as a language that supports the ODR
8788	* include/abg-ir.h (is_java_language): Declare new function.
8789	* src/abg-dwarf-reader.cc (odr_is_relevant): Adjust to consider
8790	that Java also respects the ODR.
8791	* src/abg-ir.cc (is_java_language): Define new function.
8792	(odr_is_relevant): Adjust to consider that Java also respects the
8793	ODR.
8794
87952018-01-09  Dodji Seketeli <dodji@redhat.com>
8796
8797	Fix version revision number printing in tools --help option
8798	* configure.ac: Properly set the VERSION_REVISION macro.
8799	* include/abg-tools-utils.h (get_library_version_string): Declare
8800	new function.
8801	* src/abg-tools-utils.cc (get_library_version_string): Define the
8802	new function.
8803	(gen_suppr_spec_from_kernel_abi_whitelist): Dis-ambiguate the use
8804	of the 'config' type.
8805	* tools/abicompat.cc (main): Use the new
8806	abigail::tools_utils::get_library_version_string function.
8807	* tools/abidiff.cc (main): Likewise.
8808	* tools/abidw.cc (main): Likewise.
8809	* tools/abilint.cc (main): Likewise.
8810	* tools/abipkgdiff.cc (main): Likewise.
8811	* tools/abisym.cc (main): Likewise.
8812	* tools/kmidiff.cc (main): Likewise.
8813
88142018-01-09  Dodji Seketeli <dodji@redhat.com>
8815
8816	Bug 22684 - Add --d{1,2} options to kmidiff
8817	* doc/manuals/kmidiff.rst: Add documentation for the new options.
8818	* tools/kmidiff.cc (options::{di_root_path{1,2}): New data
8819	members.
8820	(display_usage): Add help strings for the new options.
8821	(parse_command_line): Parse the new options.
8822	(main): Pass the debug info root directory to
8823	build_corpus_group_from_kernel_dist_under.
8824
88252018-01-08  Dodji Seketeli <dodji@redhat.com>
8826
8827	Update copyright notice for all source files
8828	* update-copyright.sh: New sed-based script to update the year
8829	in the copyright notice.
8830	* include/abg-comp-filter.h: Updated the year in the copyright
8831	notice.
8832	* include/abg-comparison.h: Likewise.
8833	* include/abg-config.h: Likewise.
8834	* include/abg-corpus.h: Likewise.
8835	* include/abg-diff-utils.h: Likewise.
8836	* include/abg-dwarf-reader.h: Likewise.
8837	* include/abg-fwd.h: Likewise.
8838	* include/abg-hash.h: Likewise.
8839	* include/abg-ini.h: Likewise.
8840	* include/abg-interned-str.h: Likewise.
8841	* include/abg-ir.h: Likewise.
8842	* include/abg-libxml-utils.h: Likewise.
8843	* include/abg-libzip-utils.h: Likewise.
8844	* include/abg-reader.h: Likewise.
8845	* include/abg-reporter.h: Likewise.
8846	* include/abg-sptr-utils.h: Likewise.
8847	* include/abg-suppression.h: Likewise.
8848	* include/abg-tools-utils.h: Likewise.
8849	* include/abg-traverse.h: Likewise.
8850	* include/abg-viz-common.h: Likewise.
8851	* include/abg-viz-dot.h: Likewise.
8852	* include/abg-viz-svg.h: Likewise.
8853	* include/abg-workers.h: Likewise.
8854	* include/abg-writer.h: Likewise.
8855	* src/abg-comp-filter.cc: Likewise.
8856	* src/abg-comparison-priv.h: Likewise.
8857	* src/abg-comparison.cc: Likewise.
8858	* src/abg-config.cc: Likewise.
8859	* src/abg-corpus-priv.h: Likewise.
8860	* src/abg-corpus.cc: Likewise.
8861	* src/abg-default-reporter.cc: Likewise.
8862	* src/abg-diff-utils.cc: Likewise.
8863	* src/abg-dwarf-reader.cc: Likewise.
8864	* src/abg-hash.cc: Likewise.
8865	* src/abg-ini.cc: Likewise.
8866	* src/abg-internal.h: Likewise.
8867	* src/abg-ir-priv.h: Likewise.
8868	* src/abg-ir.cc: Likewise.
8869	* src/abg-leaf-reporter.cc: Likewise.
8870	* src/abg-libxml-utils.cc: Likewise.
8871	* src/abg-libzip-utils.cc: Likewise.
8872	* src/abg-reader.cc: Likewise.
8873	* src/abg-reporter-priv.cc: Likewise.
8874	* src/abg-reporter-priv.h: Likewise.
8875	* src/abg-sptr-utils.cc: Likewise.
8876	* src/abg-suppression-priv.h: Likewise.
8877	* src/abg-suppression.cc: Likewise.
8878	* src/abg-tools-utils.cc: Likewise.
8879	* src/abg-traverse.cc: Likewise.
8880	* src/abg-viz-common.cc: Likewise.
8881	* src/abg-viz-dot.cc: Likewise.
8882	* src/abg-viz-svg.cc: Likewise.
8883	* src/abg-workers.cc: Likewise.
8884	* src/abg-writer.cc: Likewise.
8885	* tests/print-diff-tree.cc: Likewise.
8886	* tests/test-abicompat.cc: Likewise.
8887	* tests/test-abidiff-exit.cc: Likewise.
8888	* tests/test-abidiff.cc: Likewise.
8889	* tests/test-alt-dwarf-file.cc: Likewise.
8890	* tests/test-core-diff.cc: Likewise.
8891	* tests/test-diff-dwarf-abixml.cc: Likewise.
8892	* tests/test-diff-dwarf.cc: Likewise.
8893	* tests/test-diff-filter.cc: Likewise.
8894	* tests/test-diff-pkg.cc: Likewise.
8895	* tests/test-diff-suppr.cc: Likewise.
8896	* tests/test-diff2.cc: Likewise.
8897	* tests/test-ir-walker.cc: Likewise.
8898	* tests/test-lookup-syms.cc: Likewise.
8899	* tests/test-read-dwarf.cc: Likewise.
8900	* tests/test-read-write.cc: Likewise.
8901	* tests/test-types-stability.cc: Likewise.
8902	* tests/test-utils.cc: Likewise.
8903	* tests/test-utils.h: Likewise.
8904	* tests/test-write-read-archive.cc: Likewise.
8905	* tools/abiar.cc: Likewise.
8906	* tools/abicompat.cc: Likewise.
8907	* tools/abidiff.cc: Likewise.
8908	* tools/abidw.cc: Likewise.
8909	* tools/abilint.cc: Likewise.
8910	* tools/abipkgdiff.cc: Likewise.
8911	* tools/abisym.cc: Likewise.
8912	* tools/binilint.cc: Likewise.
8913	* tools/kmidiff.cc: Likewise.
8914
89152017-12-15  Dodji Seketeli <dodji@redhat.com>
8916
8917	Bug 22437 - Make fedabipkgdiff use all debug info RPMs of a sub-RPM
8918	* tools/fedabipkgdiff (RPM::get_all_debuginfo_rpms): Define new
8919	member function.
8920	(RPM::generate_comparison_halves): The ancillary debuginfo RPM of
8921	a given RPM now has a list type; there can be more than one
8922	debuginfo RPM associated to a given RPM, especially if the RPM is
8923	a devel one.
8924	(format_debug_info_pkg_options): Define new function.
8925	(abipkgdiff): Use the new function above.
8926
89272017-12-15  Dodji Seketeli <dodji@redhat.com>
8928
8929	Improve comments wording in fedabipkgdiff
8930	* tools/fedabipkgdiff (class RPM): Fix wording.
8931	(RPM::__init__): Likewise.
8932
89332017-12-11  Dodji Seketeli <dodji@redhat.com>
8934
8935	Update & cleanup the tools manuals summary
8936	* doc/manuals/abidw.rst: Use the same header structure as or the
8937	other tools manual.
8938	* doc/manuals/kmidiff.rst: Likewise.
8939	* doc/manuals/libabigail-tools.rst: Add the new kmidiff tool to
8940	the summary.
8941
89422017-12-01  Dodji Seketeli <dodji@redhat.com>
8943
8944	Bug 22488 - Make abipkgdiff handle different binaries with same basename
8945	* include/abg-tools-utils.h (string_suffix)
8946	(sorted_strings_common_prefix): Declare new functions.
8947	(dir_name): Take a new keep_separator_at_end parameter at the end.
8948	* src/abg-tools-utils.cc (dir_name): Take a new
8949	keep_separator_at_end parameter at the end.  Add a comment for it
8950	and update.
8951	(string_suffix, sorted_strings_common_prefix): Define new
8952	functions.
8953	(common_prefix): Define new static function.
8954	* tools/abipkgdiff.cc (get_interesting_files_under_dir): Forward
8955	declare this pre-existing static function.
8956	(package::{common_paths_prefix_, elf_file_paths_}): New data
8957	members.
8958	(package::{common_paths_prefix, elf_file_paths,
8959	convert_path_to_relative, convert_path_to_unique_suffix,
8960	load_elf_file_paths}): New member functions.
8961	(create_maps_of_package_content): Use the new
8962	package::{load_elf_file_paths, convert_path_to_unique_suffix}
8963	functions.
8964	(compare_prepared_userspace_packages): Show relative paths of
8965	package elements in reported.
8966	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
8967	Update test ouptut.
8968	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt:
8969	Likewise.
8970
89712017-12-01  Dodji Seketeli <dodji@redhat.com>
8972
8973	Fully report diagnostic about alternate debug info file not found
8974	* src/abg-dwarf-reader.cc (status_to_diagnostic_string): Report
8975	textual diagnostic for the STATUS_ALT_DEBUG_INFO_NOT_FOUND case
8976	too.
8977
89782017-11-27  Dodji Seketeli <dodji@redhat.com>
8979
8980	Bug 22436 - make abipkgdiff accept several debuginfo packages
8981	* doc/manuals/abipkgdiff.rst: Document the fact that --d{1,2} can
8982	be provided several times on the command line.
8983	* tools/abipkgdiff.cc (options::debug_packages{1,2}): Rename the
8984	debug_package{1,2} data members into this, and make them be vector
8985	of strings, rather than just strings.
8986	(package::debug_info_packages_): Renamed
8987	package::debug_info_package_ into this and make it be a vector of
8988	package_sptr, rather than just a package_sptr.
8989	(package::debug_info_packages): Renamed the method
8990	package::debug_info_package into this and -- for the getter
8991	overload -- make it return a vector of package_sptr, rather than
8992	just a package_sptr.  Likewise for the setter overload.  Add a
8993	non-const getter overload.
8994	(package::erase_extraction_directories)
8995	(extract_package_and_map_its_content): Adjust.
8996	(extract_rpm, extract_deb): Do not erase the content of the
8997	extraction directory (if it was pre-existing) prior to extracting
8998	the RPM/deb into it.
8999	(pkg_extraction::pkgs): Renamed pkg_extraction::pkg into this and
9000	make it be a vector of packages, rather than just a package.
9001	(pkg_extraction::pkg_extraction): Adjust to take a package_sptr
9002	rather than just a package.  Add an overload to take a vector of
9003	packages_sptr.
9004	(pkg_extraction::perform): Extract the vector of package that the
9005	task is not responsible for, not just one random package.
9006	(extract_package_and_map_its_content): Adjust.
9007	(prepare_packages): Take smart pointers to package rather than
9008	just packages.  Adjust accordingly.
9009	(compare_prepared_package): Make the overload that takes two
9010	packages to take two smart pointers of packages.
9011	(compare): Make the overload that takes two package take two
9012	package_sptr.
9013	(parse_command_line): Parse having --d{1,2} several times for a
9014	given input package.
9015	(main): Take several debug info packages for one input file.
9016	* include/abg-tools-utils.h (split_string): Declare ...
9017	* src/abg-tools-utils.cc (split_string): ... new function.
9018	* tests/data/test-diff-pkg/libxfce4ui-debuginfo-4.12.1-8.fc27.ppc64.rpm:
9019	Add a new RPM test input file.
9020	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-ok-0.txt:
9021	new reference output file.
9022	* tests/data/Makefile.am: Add the new test input files above to source
9023	distribution.
9024	* tests/test-diff-pkg.cc (in_out_spec): Add new test entry to
9025	specify two debug info packages for one input package.
9026	(test_task::perform): Support having several debug info package
9027	paths in the IntOutSpec::{first,second}_in_debug_package_path data
9028	member.  The debug info packages paths are separated by either a
9029	white space or commas.
9030
90312017-11-22  Dodji Seketeli <dodji@redhat.com>
9032
9033	Update version number to 1.1
9034	* configure.ac: Update version number to 1.1
9035
90362017-11-22  Dodji Seketeli <dodji@redhat.com>
9037
9038	Bug 22076 - Disable fedabipkgdiff for old koji clients
9039	* configure.ac: Try to invoke the koji.read_config method.  If it
9040	fails then disable the fedabipkgdiff feature.
9041
90422017-11-22  Dodji Seketeli <dodji@redhat.com>
9043
9044	Update the release text template after 1.0
9045	* release-text-template.txt: Update some wording.
9046
90472017-11-22  Dodji Seketeli <dodji@redhat.com>
9048
9049	Update website for 1.0
9050	* doc/website/mainpage.txt: Update after 1.0 release.
9051
90522017-11-21  Dodji Seketeli <dodji@redhat.com>
9053
9054	Update NEWS file for 1.0
9055	* NEWS: Update for 1.0
9056
90572017-11-21  Dodji Seketeli <dodji@redhat.com>
9058
9059	Automatically Update ChangeLog for 1.0
9060	* ChangeLog: Automatically update for 1.0
9061
90622017-11-21  Dodji Seketeli <dodji@redhat.com>
9063
9064	Bug 22438 - Emit a clear message when debug info is not found
9065	* include/abg-dwarf-reader.h (enum abigail::dwarf_reader::status):
9066	Add a new STATUS_ALT_DEBUG_INFO_NOT_FOUND enumerator there.
9067	(refers_to_alt_debug_info): Declare new function.
9068	* src/abg-dwarf-reader.cc (read_corpus_from_elf): Detect when the
9069	referred-to alternate debug info file is not found and flip the
9070	STATUS_ALT_DEBUG_INFO_NOT_FOUND bit of the status accordingly.  If
9071	the debug info was found but not the alternate debug info, then do
9072	not try to read the debug info at all.
9073	(refers_to_alt_debug_info): Define new function.
9074	* tools/abidiff.cc (handle_error): Define new static function.
9075	(main): Use it, rather than handling errors preventing libabigail
9076	from reading the corpus on a case by case basis.
9077	tools/abipkgdiff.cc (compare): Handle the case where no alternate
9078	debug info was found.
9079	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt:
9080	New test output reference.
9081	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64.rpm:
9082	New test input RPM.
9083	* tests/data/test-diff-pkg/libxfce4ui-devel-debuginfo-4.12.1-8.fc27.ppc64.rpm:
9084	Likewise.
9085	* tests/data/Makefile.am: Add the new test files above to source
9086	distribution.
9087	* tests/test-diff-pkg.cc (in_out_specs): Add a new test case from
9088	the new input files above.
9089
90902017-11-13  Dodji Seketeli <dodji@redhat.com>
9091
9092	Support systems where fts.h can't be used with _FILE_OFFSET_BITS set
9093	* configure.ac: Detect if we are on a system where fts.h cannot be
9094	included with _FILE_OFFSET_BITS defined.  If that is the case,
9095	then define the BAD_FTS macro.
9096	* src/abg-tools-utils.cc: If BAD_FTS is defined then include fts.h
9097	with _FILE_OFFSET_BITS not defined (that is, before config.h) but
9098	then make sure that open and fopen are 64 bits aware.
9099	* tools/abipkgdiff.cc: Likewise.
9100
91012017-11-08  Dodji Seketeli <dodji@redhat.com>
9102
9103	Edit the NEWS file a tiny little bit for 1.0
9104	* NEWS: Cleanup.
9105
91062017-11-06  Dodji Seketeli <dodji@redhat.com>
9107
9108	Automatically Update ChangeLog for 1.0
9109	* ChangeLog: Update this file by running "make update-changelog".
9110
91112017-11-06  Dodji Seketeli <dodji@redhat.com>
9112
9113	Update NEWS file for 1.0 changes
9114	* NEWS: Update for 1.0 changes
9115
91162017-11-06  Dodji Seketeli <dodji@redhat.com>
9117
9118	Bump version number to 1.0
9119	* configure.ac: Bump version number to 1.0
9120
91212017-11-08  Dodji Seketeli <dodji@redhat.com>
9122
9123	Don't make system headers depend on config.h
9124	* tools/abipkgdiff.cc: Include config.h after system headers and
9125	before libabigail's headers.
9126
91272017-11-02  Dodji Seketeli <dodji@redhat.com>
9128
9129	Wire the --no-show-locs option to abidw
9130	* doc/manuals/abidw.rst: Update the documentation.
9131	* tests/test-annotate.cc: Now that --no-show-locs has an effect on
9132	the ABIXML output, let's not use it here, because it changes the
9133	output and we don't want that.
9134	* tools/abidw.cc (display_usage): Fix a typo in the help string.
9135	(load_corpus_and_write_abixml): Set the "show-locs" option to the
9136	write_context object that we use.
9137
91382017-11-02  Dodji Seketeli <dodji@redhat.com>
9139
9140	Allow setting options to instances of xml_writer::write_context
9141	* include/abg-writer.h (create_write_context, set_show_locs)
9142	(set_annotate): Declare new functions.
9143	(write_corpus, write_corpus_group): Remove the output stream and
9144	the annotate parameters as these can be retrieved from the
9145	context.
9146	* src/abg-writer.cc (write_context::m_show_locs): New data member.
9147	(write_context::write_context): Initialize it.
9148	(write_context::{get_show_locs, set_show_locs}): Add new member
9149	functions.
9150	(write_location): Take a write_context, rather than an output
9151	stream.  From the context, we detect if the user did set the "show
9152	loc" option and act accordingly.  Write the second overload in
9153	terms of the first one.
9154	(create_write_context, set_show_locs, set_annotate): Define new
9155	functions.
9156	(write_type_decl, write_qualified_type_def)
9157	(write_pointer_type_def, write_reference_type_def)
9158	(write_array_type_def, write_enum_type_decl, write_typedef_decl)
9159	(write_var_decl, write_function_decl)
9160	(write_class_decl_opening_tag, write_union_decl_opening_tag)
9161	(write_type_tparameter, write_non_type_tparameter)
9162	(write_function_tdecl, write_class_tdecl): Adjust the invocation
9163	of write_location.
9164	(write_corpus, write_corpus_group): Remove the output stream and
9165	the annotate parameters as these can be retrieved from the
9166	context.  Adjust.
9167	* tools/abidw.c: (load_corpus_and_write_abixml): Create a
9168	write_context object, set the 'annotate' option to it and use that
9169	object to actually write out the corpus.
9170
91712017-11-02  Dodji Seketeli <dodji@redhat.com>
9172
9173	Remove useless vertical space from src/abg-writer.cc
9174	* src/abg-writer.cc (class write_context): Remove useless vertical
9175	space near the end of the class definition.
9176
91772017-10-16  Dodji Seketeli <dodji@redhat.com>
9178
9179	Add a --suppressions option to fedabipkgdiff
9180	* tools/fedabipkgdiff (abipkgdiff): If a suppression file was
9181	provided, pass it to the underlying abipkgdiff tool.
9182	(build_commandline_args_parser): Parse the new --suppressions
9183	option.
9184	* docs/manuals/fedabipkgdiff.rst: Add documentation for the new
9185	--suppressions option.
9186
91872017-10-16  Dodji Seketeli <dodji@redhat.com>
9188
9189	Handle exceptions when global_config is not yet set in fedabipkgdiff
9190	* tools/fedabipkgdiff: When handling an exception, if the
9191	global_config object is not yet set then just let the exception
9192	through.
9193
91942017-10-11  Dodji Seketeli <dodji@redhat.com>
9195
9196	Fix a indentation warning from GCC 7.2.1
9197	* tools/abipkgdiff.cc (compare): In the overload of elf_file, fix
9198	a mis-indentation pointed out by a GCC 7.2.1 warning.
9199
92002017-10-11  Dodji Seketeli <dodji@redhat.com>
9201
9202	Cleanup a switch-case logic to avoid a GCC 7.2.1 warning
9203	* src/abg-dwarf-reader.cc (die_qualified_type_name): Cleanup a
9204	switch case to make the form support more what we meant, and shut
9205	down a GCC 7.2.1 warning.
9206
92072017-10-09  Mark Wielaard <mark@klomp.org>
9208
9209	Fix -Wmisleading-indentation warning in abg-leaf-reporter.cc.
9210	* src/abg-leaf-reporter.cc (leaf_reporter::report): Fix misleading
9211	indentation.
9212
92132017-10-06  Dodji Seketeli <dodji@redhat.com>
9214
9215	Add --impacted-changes option to kmidiff
9216	* doc/manuals/kmidiff.rst: Document the new --impacted-changes
9217	option.
9218	* tools/kmidif.cc (options::show_impacted_interfaces): Add new
9219	data member.
9220	(options::options): Initialize the new data member to false.
9221	(display_usage): Add a description string for the new
9222	--impacted-changes option.
9223	(parse_command_line): Parse the new --impacted-changes option.
9224	(set_diff_context): Update the 'show-impacted-interface' property
9225	accordingly.
9226
92272017-10-04  Dodji Seketeli <dodji@redhat.com>
9228
9229	Add --full-impact option to kmidiff
9230	* doc/manuals/kmidiff.rst: Add documentation for the new
9231	--full-impact|-f option.
9232	* tools/kmidiff.cc (options::leaf_changes_only): Add new data
9233	member.
9234	(option::option): Initialize the new data member.
9235	(display_usage): Add a documentation string for the new
9236	--full-impact|-f option.
9237	(parse_command_line): Parse the new --full-impact|-f option.
9238	(set_diff_context): Set the diff context appropriately.
9239
92402017-09-18  Dodji Seketeli <dodji@redhat.com>
9241
9242	Add a --leaf-changes-only option to abipkgdiff
9243	* doc/manuals/abipkgdiff.rst: Add documentation for the new
9244	--leaf-change-only, --impacted-interfaces and --full-impact
9245	options.
9246	* tools/abipkgdiff.cc (options::{leaf_changes_only,
9247	show_impacted_interfaces, show_full_impact_report): Add new data
9248	members.
9249	(options::options): Initialize them.
9250	(display_usage): Add help strings for the new --leaf-change-only,
9251	--impacted-interfaces and --full-impact|-f options.
9252	(set_diff_context_from_opts): Set the diff context for the
9253	'leaf-changes-only' and 'show-impacted-interfaces' flags.
9254	(parse_command_line): Parse the --leaf-change-only,
9255	--impacted-interfaces and --full-impact options.  Handle the case
9256	where the --linux-kernel-abi-whitelist|-w option is given a
9257	whitelist *package*.
9258	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
9259	New test output reference.
9260	* tests/test-diff-pkg.cc (in_out_spec): Compare
9261	data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64.rpm and
9262	data/test-diff-pkg/spice-server-0.12.8-1.el7.x86_64.rpm with the
9263	new --leaf-changes-only and --impacted-interfaces options, using
9264	the new output reference above.
9265	* tests/data/Makefile.am: Add the new test material to source
9266	distribution.
9267
92682017-08-02  Dodji Seketeli <dodji@redhat.com>
9269
9270	Initial implementation of a --leaf-changes-only option to abidiff
9271	* doc/manuals/abidiff.rst: Add documentation the new
9272	--leaf-changes-only and --impacted-interfaces options.
9273	* src/abg-leaf-reporter.cc: New file.
9274	* src/Makefile.am: Add the new src/abg-leaf-reporter.cc file to
9275	source distribution.
9276	* include/abg-fwd.h (get_var_size_in_bits)
9277	(function_decl_is_less_than): Declare new functions.
9278	(get_name): Add new overload for type_or_decl_base*.
9279	* include/abg-ir.h (struct type_or_decl_hash, type_or_decl_equal)
9280	(type_or_decl_base_comp): Define new types.
9281	(artifact_sptr_set_type, artifact_ptr_set_type): Define new
9282	typedefs.
9283	* include/abg-comp-filter.h: Update copyright year.
9284	(has_basic_type_name_change): Add new function declaration.
9285	* src/abg-comp-filter.cc (decl_name_changed): Take a
9286	type_or_decl_base rather than just a decl.  Add an overload for
9287	diff*.
9288	(has_basic_type_name_change): Define new function.
9289	* include/abg-comparison.h: Update copyright year.
9290	(string_diff_ptr_map): Define this new typedef.
9291	(class diff_maps): Define this new class.
9292	(diff_context::{set_corpora}): Remove this member function.
9293	(diff_context::{set_corpus_diff, get_corpus_diff,
9294	show_leaf_changes_only, show_impacted_interfaces,
9295	forbid_visiting_a_node_twice_per_interface}): Declare these new
9296	member functions.
9297	(diff_node_visitor::priv_): Add a new pimpl data member.
9298	(diff_node_visitor::{diff_node_visitor, get_visiting_kind,
9299	set_visiting_kind}): Turn these into out-of-line member functions.
9300	(diff_node_visitor::{set,get}_current_topmost_iface_diff): Add new
9301	member functions.
9302	(class {scope_diff, function_type_diff, corpus_diff}): Add class
9303	leaf_reporter as a friend.
9304	(corpus_diff::mark_leaf_diff_nodes, get_leaf_diffs): Declare new
9305	member functions.
9306	(diff::{visiting_a_node_twice_is_forbidden_per_interface,
9307	parent_interface_node}): Define new member functions.
9308	(is_diff_of_basic_type): Return a type_decl_diff* rather than just
9309	a bool.
9310	(is_enum_diff, is_array_diff, is_function_type, is_typedef_diff)
9311	(is_corpus_diff): Declare new functions.
9312	(corpus_diff::diff_stats::{num_leaf_changes,
9313	num_leaf_changes_filtered_out, net_num_leaf_changes}): Add new
9314	member functions.
9315	(is_distinct_diff): Declare new function.
9316	* include/abg-reporter.h: Forward-declare "class diff_maps".
9317	(reporter_base::diff_to_be_reported): Declare a new virtual member
9318	function.
9319	(reporter_base::{report_local_typedef_changes,
9320	report_local_reference_type_changes,
9321	report_local_function_type_changes}): Declare new member
9322	functions.
9323	(class leaf_reporter): Define new type.
9324	* src/abg-comparison-priv.h (struct diff_hash, diff_equal): Define
9325	new types.
9326	(diff_artifact_set_map_type): Define new typedef.
9327	(diff_context::priv::{first_corpus_, second_corpus_}): Remove
9328	these data members.
9329	(diff_context::priv::{corpus_diff_, leaf_changes_only_,
9330	reset_visited_diffs_for_each_interface_,
9331	show_impacted_interfaces_}): Add new data members.
9332	(diff_context::priv::priv): Adjust.
9333	(corpus_diff::priv::{leaf_diffs_, parent_interface_}): Add new
9334	data member.
9335	(corpus_diff::diff_stats::priv::{num_leaf_changes,
9336	num_leaf_changes_filtered_out}): Add new data members.
9337	(corpus_diff::priv::count_leaf_changes): Define new member
9338	function.
9339	(sort_artifacts_set, get_fn_decl_or_var_decl_diff_ancestor)
9340	(is_diff_of_global_decls): Declare new functions.
9341	(function_comp::operator()): Factorize this out into the new
9342	function abigail::ir::function_decl_is_less_than.
9343	* src/abg-ir.cc (get_var_size_in_bits)
9344	(function_decl_is_less_than): Define new functions.
9345	(get_name): Define new overload for type_or_decl_base*.
9346	* src/abg-comparison.cc (is_enum_diff, is_typedef_diff)
9347	(is_array_diff, is_function_type_diff, is_corpus_diff)
9348	(is_distinct_diff, sort_artifacts_set, is_diff_of_global_decls):
9349	Define new functions.
9350	(is_union_diff): Fix comment.
9351	(diff_context::forbid_visiting_a_node_twice_per_interface): Define
9352	new member functions.
9353	(diff_context::set_corpus_diff, get_corpus_diff)
9354	(diff_context::show_leaf_changes_only)
9355	(diff_context::visiting_a_node_twice_is_forbidden_per_interface)
9356	(diff_context::show_impacted_interfaces): Define new member
9357	functions.
9358	(diff_context::get_reporter): Create the reporter that matches
9359	what diff_context::show_leaf_changes_only says.
9360	(diff_node_visitor::priv): Define a new type.
9361	(diff_node_visitor::{diff_node_visitor, get_visiting_kind,
9362	set_visiting_kind, or_visiting_kind,
9363	set_current_topmost_iface_diff, get_current_topmost_iface_diff}):
9364	Define new out-of-line member functions.
9365	(struct diff_maps::priv): Define new type.
9366	(diff_maps::{diff_maps, get_type_decl_diff_map,
9367	get_type_decl_diff_map, get_enum_diff_map, get_class_diff_map,
9368	get_union_diff_map, get_typedef_diff_map, get_array_diff_map,
9369	get_function_type_diff_map, get_function_decl_diff_map,
9370	get_var_decl_diff_map, get_reference_diff_map,
9371	get_fn_parm_diff_map, get_distinct_diff_map, insert_diff_node,
9372	lookup_impacted_interfaces}): Define member functions.
9373	(corpus_diff::{mark_leaf_diff_nodes, get_leaf_diffs}): Define new
9374	member functions.
9375	(struct leaf_diff_node_marker_visitor): Define new type.
9376	(corpus_diff::apply_filters_and_suppressions_before_reporting):
9377	Mark diff nodes in here.
9378	(corpus_diff::traverse): Appropriately set the current topmost
9379	interface into the visitor before visiting a diff node.
9380	(compute_diff): In the overload for corpus_sptr, adjust to reflect
9381	that we are now storing the corpus_diff in the diff context.
9382	(is_diff_of_basic_type): Return a type_decl_diff*, not just a
9383	bool.
9384	(corpus_diff::priv::count_leaf_changes): Define a new member
9385	function.
9386	(corpus_diff::diff_stats::{num_leaf_changes,
9387	num_leaf_changes_filtered_out, net_num_leaf_changes}): Define new
9388	member functions.
9389	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the
9390	new corpus_diff::priv::count_leaf_changes to compute the number of
9391	leaf changes.
9392	(corpus_diff::priv::emit_diff_stats): Emit the report about leaf
9393	type changes when necessary.
9394	* src/abg-reporter-priv.h (report_mem_header): Declare new
9395	overload.
9396	(maybe_show_relative_offset_change,): Pass the var_diff_sptr
9397	parameter by const reference.
9398	(represent): Pass the var_diff_sptr parameter by const reference
9399	and take a new "local-only" flag.
9400	(maybe_show_relative_size_change)
9401	(maybe_report_interfaces_impacted_by_diff): Declare new functions.
9402	* src/abg-default-reporter.cc: Adjust copyright year.
9403	(default_reporter::{report_local_typedef_changes,
9404	report_local_qualified_type_changes,
9405	report_local_reference_type_changes,
9406	report_local_function_type_changes}): Define new member functions.
9407	(default_reporter::report): Adjust.  Add an overload for
9408	function_type_diff&. In the overload for qualified_type_diff, if
9409	the name of the underlying type changed, do not detail the changes
9410	any further.  In the overload for function_decl_diff, Adjust to
9411	use the new diff_context::get_{first, second}_corpus member
9412	function.  In the overload for enum_diff, call the new
9413	maybe_report_interfaces_impacted_by_diff that is advertised below.
9414	* src/abg-reporter-priv.cc (represent): Adjust the overload for
9415	var_diff_sptr.
9416	(report_mem_header): Define new overload.
9417	(maybe_show_relative_size_change)
9418	(maybe_report_interfaces_impacted_by_diff): Define new functions.
9419	(reporter_base::diff_to_be_reported): Define new member function.
9420	(maybe_show_relative_offset_change): Pass the var_diff_sptr
9421	parameter by const reference.
9422	(represent): In the overload for var_diff_sptr, pass the
9423	var_diff_sptr parameter by reference.  Take a 'local_only' flag.
9424	Iisplay type changes only if we are not displaying "local changes
9425	only".  Display size changes of data members too, when in
9426	"local-only" mode.
9427	* src/abg-suppression.cc (sonames_of_binaries_match)
9428	(names_of_binaries_match): Adjust.
9429	* tools/abidiff.cc (options::{leaf_changes_only,
9430	show_impacted_interfaces}): Add new data members.
9431	(display_usage): Emit usage string for the new --leaf-changes-only
9432	and --impacted-interfaces options.
9433	(parse_command_line): Parse the new --leaf-changes-only and the
9434	--impacted-interfaces options.
9435	(set_diff_context_from_opts): Set the 'show-leaf-changes' and the
9436	'show-impacted-interfaces' flags.
9437	* tests/data/test-diff-filter/libtest42-leaf-report-v{0,1}.so: New
9438	test input.
9439	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt: New
9440	test reference output.
9441	* tests/data/test-diff-filter/test42-leaf-report-v{0,1}.cc: Source
9442	code of the new test inputs.
9443	* tests/test-diff-filter.cc (in_out_specs): Use the new test
9444	inputs above in this harness.
9445	* tests/data/test-diff-suppr/libtest35-leaf-v0.so: New test input.
9446	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: New test
9447	reference output.
9448	* tests/data/test-diff-suppr/test35-leaf-v{0,1}.cc: Source code of
9449	the new test inputs.
9450	* tests/data/test-diff-suppr/test35-leaf.suppr: Suppression
9451	specification to use for the test35 test.
9452	* tests/data/test-diff-suppr/libtest36-leaf-v0.so: New test input.
9453	* tests/data/test-diff-suppr/libtest36-leaf-v1.so: Likewise.
9454	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: New
9455	reference test output.
9456	* tests/data/test-diff-suppr/test36-leaf-v0.cc: Source code of
9457	test input above.
9458	* tests/data/test-diff-suppr/test36-leaf-v1.cc: Likewise.
9459	* tests/test-diff-suppr.cc (in_out_specs): Use the new test inputs
9460	above in this harness.
9461	* tests/data/Makefile.am: Add the new test inputs above to source
9462	distribution.
9463
94642017-07-17  Dodji Seketeli <dodji@redhat.com>
9465
9466	Allow several kinds of reports to be emitted
9467	* include/Makefile.am: Add the new abg-reporter.h header file to
9468	source distribution.
9469	* include/abg-comparison.h: Include the new abg-reporter.h header
9470	file.
9471	(diff_context::{g,s}et_reporter): Declare new accessors.
9472	({type_diff_base, decl_diff_base, corpus_diff}::priv): Make this
9473	be a struct rather than a class.
9474	({decl_diff_base, class_diff, scope_diff, function_type_diff,
9475	corpus_diff}): Declare default_reporter a friend class of these.
9476	* include/abg-reporter.h: New file.
9477	* src/Makefile.am: Add abg-comparison-priv.h,
9478	abg-reporter-priv.{h,cc} and abg-default-reporter.cc files to
9479	source distribution.
9480	* src/abg-comparison-priv.h: New file.
9481	* src/abg-comparison.cc (sort_enumerators)
9482	(sort_changed_enumerators, sort_data_members)
9483	(sort_string_function_ptr_map)
9484	(sort_string_function_decl_diff_sptr_map)
9485	(sort_string_var_diff_sptr_map, sort_string_elf_symbol_map)
9486	(sort_string_var_ptr_map, sort_string_data_member_diff_sptr_map)
9487	(sort_unsigned_data_member_diff_sptr_map)
9488	(sort_string_diff_sptr_map, sort_string_base_diff_sptr_map)
9489	(sort_string_base_sptr_map, sort_string_fn_parm_diff_sptr_map)
9490	(sort_string_parm_map, get_leaf_type, sort_enumerators)
9491	(sort_changed_enumerators): Make these functions non-static and
9492	move them at the beginning of the file.  These functions are now
9493	declared in abg-compared-priv.h so they can be shared privately
9494	with other files in src/.
9495	(diff_context::{g,s}et_reporter): Define new accessors.
9496	({diff_context, diff, type_diff_base, decl_diff_base,
9497	distinct_diff, pointer_diff, array_diff, reference_diff,
9498	qualified_type_diff, enum_diff, class_or_union_diff, class_diff,
9499	base_diff, scope_diff, fn_parm_diff, function_type_diff,
9500	function_decl_diff, type_decl_diff, typedef_diff,
9501	translation_unit_diff, corpus_diff::diff_stats,
9502	corpus_diff}::priv)
9503	(diff_less_than_functor, enumerator_value_comp)
9504	(changed_enumerator_comp, base_spec_comp, base_diff_comp)
9505	(data_member_diff_comp, diff_comp, fn_parm_diff_comp, parm_comp)
9506	(elf_symbol_comp, function_comp, function_decl_diff_comp)
9507	(var_diff_sptr_comp): Move these type definitions to
9508	abg-comparison-priv.h
9509	(report_size_and_alignment_changes, report_loc_info)
9510	(maybe_report_diff_for_member, maybe_report_diff_for_symbol)
9511	(represent, represent_data_member)
9512	(maybe_show_relative_offset_change, represent)
9513	(report_size_and_alignment_changes, report_loc_info)
9514	(report_name_size_and_alignment_changes, report_mem_header)
9515	(maybe_report_diff_for_member, maybe_report_diff_for_symbol)
9516	(show_linkage_name_and_aliases): Move these definitions to
9517	abg-reporter-priv.cc.
9518	({distinct_diff, var_diff, pointer_diff, array_diff,
9519	reference_diff, qualified_type_diff, enum_diff,
9520	class_or_union_diff, class_diff, base_diff, union_diff,
9521	scope_diff, fn_parm_diff, function_type_diff, type_decl_diff,
9522	typedef_diff, corpus_diff}::report): Use the reporter object to
9523	report about the changes carried by the the current diff node.
9524	* src/abg-default-reporter.cc: New file.
9525	* src/abg-reporter-priv.h: Likewise.
9526
95272017-10-04  Dodji Seketeli <dodji@redhat.com>
9528
9529	Update copyright year to tools/abidiff.cc
9530	* tools/abidiff.cc: Update copyright year.
9531
95322017-10-04  Dodji Seketeli <dodji@redhat.com>
9533
9534	Add missing comment to type declaration
9535	* include/abg-comparison.h (struct diff_sptr_hasher): Add missing
9536	comment.
9537
95382017-10-04  Dodji Seketeli <dodji@redhat.com>
9539
9540	Misc style fixes in abg-writer.cc
9541	* src/abg-writer.cc (type_hasher): Add comment.
9542	(write_context::record_decl_as_emitted): Remove useless newline.
9543
95442017-10-04  Dodji Seketeli <dodji@redhat.com>
9545
9546	Initialize naked canonical type
9547	* src/abg-ir.cc (type_base::priv::priv): Initialize the naked
9548	canonical type data member.
9549
95502017-10-04  Dodji Seketeli <dodji@redhat.com>
9551
9552	[abixml writer] Use an unordered set when appropriate
9553	* src/abg-writer.cc (write_context::m_emitted_decl_only_set):
9554	Renamed m_emitted_decl_only_map into this and make the type be a
9555	set, rather than a map.
9556	(write_context::{record_decl_only_type_as_emitted,
9557	decl_only_type_is_emitted}): Adjust.
9558
95592017-09-29  Dodji Seketeli <dodji@redhat.com>
9560
9561	[abixml writer] Store pointers to emitted types rather than type-ids
9562	* src/abg-writer.cc (type_ptr_set_type): Declare new typedef.
9563	(writer_context::m_emitted_type_id_map): Remove this data member.
9564	(writer_context::m_emitted_type_set): Add a new data member.
9565	(writer_context::{record_type_id_as_emitted, type_id_is_emitted,
9566	clear_emitted_types_map}): Remove these member functions.
9567	(writer_context::{record_type_as_emitted, type_is_emitted}): Use
9568	the new m_emitted_type_set data member above.
9569
95702017-09-27  Dodji Seketeli <dodji@redhat.com>
9571
9572	Use an unordered map for canonical DIE offsets
9573	* src/abg-dwarf-reader.cc
9574	(read_context::canonical_type_die_offsets_): Renamed the
9575	canonical_type_die_vecs_ data member into this.
9576	(read_context::canonical_decl_die_offsets_): Renamed the
9577	canonical_decl_die_vecs_ data member into this.
9578	(read_context::{initialize, compute_canonical_die_offset,
9579	compute_canonical_die, get_canonical_die,
9580	get_or_compute_canonical_die, set_canonical_die_offset,
9581	get_canonical_die_offset}): Adjust.
9582
95832017-09-27  Dodji Seketeli <dodji@redhat.com>
9584
9585	Bug 22190 - crash in read_context::get_or_compute_canonical_die
9586	* src/abg-dwarf-reader.cc:
9587
95882017-09-27  Dodji Seketeli <dodji@redhat.com>
9589
9590	Remove redundant (useless) typedef declaration
9591	* src/abg-dwarf-reader.cc (dwarf_offsets_type): There are two
9592	instances of this typedef declaration, remove one.
9593
95942017-09-27  Dodji Seketeli <dodji@redhat.com>
9595
9596	Renamed offset_offset_map type name into offset_offset_map_type
9597	* src/abg-dwarf-reader.cc (offset_offset_map_type): Renamed
9598	offset_offset_map into this.
9599	(read_context::{primary_die_parent_map_,
9600	alternate_die_parent_map_, type_section_die_parent_map_}): Adjust
9601	the type of these data members.
9602	(read_context::{die_parent_map, type_section_die_parent_map}):
9603	Adjust the type of these member functions.
9604	(read_context::{build_die_parent_relations_under,
9605	get_parent_die}): Adjust for the type name in these functions.
9606
96072017-09-27  Dodji Seketeli <dodji@redhat.com>
9608
9609	Add missing newlines to kmidiff's usage strings
9610	* tools/kmidiff.cc (display_usage): Add newlines after the lines
9611	for --vmlinux1 and --vmlinux2.
9612
96132017-09-21  Dodji Seketeli <dodji@redhat.com>
9614
9615	22160 - Annotate state flag unitialized in abidw
9616	* tools/abidw.cc (options::options): Initialize the annotate data
9617	member.
9618
96192017-09-18  Dodji Seketeli <dodji@redhat.com>
9620
9621	Don't crash on classes that differ in their virtual member fn count
9622	* src/abg-ir.cc (equals): In the overload for class_decl, when we
9623	detect that the virtual member function counts are different, get
9624	out, even when we are being asked about the kind of the change.
9625
96262017-09-18  Dodji Seketeli <dodji@redhat.com>
9627
9628	Avoid adding the same data member twice in the DWARF reader
9629	* src/abg-dwarf-reader.cc (add_or_update_class_type): After a we
9630	try to create a data member type, look *again* if the data member
9631	wasn't added recursively by the creation of the data member type.
9632
96332017-09-11  Mark Wielaard <mark@klomp.org>
9634
9635	Bug 22075 - data_member_diff_comp forgets data members names
9636	* src/abg-comparison.cc (data_member_diff_comp): Make the
9637	comparison take the qualified name of the data member into
9638	account.  Also, if the initial offset and qualified names of the
9639	data members of the diff nodes are equal, consider the offset and
9640	qualified names of the new data members.
9641
96422017-09-11  Dodji Seketeli <dodji@redhat.com>
9643
9644	Bug 22122 - Fail to represent 'const array'
9645	* src/abg-dwarf-reader.cc (die_is_array_type): Define new static
9646	function.
9647	(die_is_pointer_or_reference_type): Also test that the DIE can be
9648	an array.
9649	* tests/data/test-read-dwarf/PR22122-libftdc.so: New binary test input.
9650	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: New reference output.
9651	* tests/data/Makefile.am: Add the two new test files above to
9652	source distribution.
9653	* tests/test-read-dwarf.cc (in_out_specs): Run this test harness
9654	over the new test input.
9655
96562017-09-08  Dodji Seketeli <dodji@redhat.com>
9657
9658	Finer detection of local changes of var_decl type
9659	* src/abg-ir.cc (equals): In the var_decl overload detect size
9660	changes of type as being a local change.
9661
96622017-09-08  Dodji Seketeli <dodji@redhat.com>
9663
9664	Misc style fixes
9665	* include/abg-fwd.h (get_pretty_representation): Add missing white
9666	space.
9667	* src/abg-ir.cc (get_name): Fix typo in comment.
9668
96692017-09-02  Mark Wielaard <mark@klomp.org>
9670
9671	readdir_r() is deprecated, use readdir().
9672	* src/abg-tools-utils.cc (dir_is_empty): Use readdir() instead
9673	of readdir_r().
9674
96752017-09-02  Mark Wielaard <mark@klomp.org>
9676
9677	Declare eval_last_constant_dwarf_sub_expr with [u]int64_t not [s]size_t.
9678	* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
9679	Declare expr_len as uint64_t and value as int64_t.
9680
96812017-08-28  Dodji Seketeli <dodji@redhat.com>
9682
9683	Bug 22015 - Failing to return global scope of a DIE in certain cases
9684	* src/abg-dwarf-reader.cc (get_scope_for_die): If the translation
9685	unit of the parent die hasn't yet been constructed, then return
9686	the global scope of the current translation unit.
9687	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so: New
9688	binary test input.
9689	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
9690	New reference test output.
9691	* tests/data/Makefile.am: Add the new test materials above to
9692	source distribution.
9693	* tests/test-read-dwarf.cc (in_out_specs): Add the new test input
9694	to the test suite.
9695
96962017-07-17  Dodji Seketeli <dodji@redhat.com>
9697
9698	Fix some make distcheck failures
9699	* tests/data/Makefile.am: Add
9700	test-diff-dwarf/test42-PR21296-libgcc.so,
9701	test-diff-dwarf/test42-PR21296-libclang.so,
9702	test-diff-dwarf/test42-PR21296-clanggcc-report0.txt to the source
9703	distribution.  Also look for test-diff-filter/test39* tests inputs
9704	in the test-diff-filter/test39/ directory.
9705
97062017-07-17  Dodji Seketeli <dodji@redhat.com>
9707
9708	Avoid crashing when the elf file could not be read
9709	* src/abg-dwarf-reader.cc
9710	(read_context::elf_architecture_is_ppc64): Do not crash if the elf
9711	handle is nil.
9712
97132017-07-10  Dodji Seketeli <dodji@redhat.com>
9714
9715	Bug 21730 - Make abipkgdiff compare Linux Kernel packages as expected
9716	* include/abg-tools-utils.h (get_vmlinux_path_from_kernel_dist):
9717	Declare new function.
9718	(get_binary_paths_from_kernel_dist): Re-organize order of
9719	parameters.
9720	(file_is_kernel_package, file_is_kernel_debuginfo_package): Make
9721	the file_path parameter be const.
9722	(build_corpus_group_from_kernel_dist_under): Take an additional
9723	debug_info_root parameter.
9724	* src/abg-tools-utils.cc (file_is_kernel_package)
9725	(file_is_kernel_debuginfo_package): Const-ify the file_name
9726	parameter.
9727	(find_vmlinux_path): Define new static function.
9728	(get_binary_paths_from_kernel_dist): Re-organize the order of
9729	parameters.  The debug_info_root_path parameter is now an input
9730	parameter.
9731	(get_vmlinux_path_from_kernel_dist): Define new function.
9732	(get_binary_paths_from_kernel_dist): Adjust invocation of
9733	get_binary_paths_from_kernel_dist.
9734	(build_corpus_group_from_kernel_dist_under): Take an additional
9735	debug_info_root parameter.
9736	* tools/abidw.cc (load_kernel_corpus_group_and_write_abixml):
9737	Adjust invocation to build_corpus_group_from_kernel_dist_under.
9738	* tools/abipkgdiff.cc (create_maps_of_package_content):  Don't map
9739	the content of a Linux Kernel package.
9740	(compare_prepared_userspace_packages)
9741	(compare_prepared_linux_kernel_packages, compare_prepared): Define
9742	new functions.
9743	(compare): Use the new functions above here.
9744	* tools/kmidiff.cc (print_kernel_dist_binary_paths_under): Adjust
9745	the invocation of get_binary_paths_from_kernel_dist.
9746	(main): Adjust the invocation of
9747	build_corpus_group_from_kernel_dist_under.  Make sure that a
9748	kernel package is accompanied by a debug info package.
9749
97502017-07-11  Dodji Seketeli <dodji@redhat.com>
9751
9752	Support up to two --wp options for abipkgdiff
9753	* doc/manuals/abipkgdiff.rst: Update the documentation to say that
9754	--wp can be provided twice, but not more than that.
9755	* tools/abipkgdiff.cc (options::kabi_whitelist_packages): Rename
9756	kabi_whitelist_package to this, and make be of vector<string>
9757	type.
9758	(package::erase_extraction_directories): Erase the white list
9759	package extracted data.
9760	(maybe_handle_kabi_whitelist_pkg, parse_command_line): Adjust.
9761	(main): Make sure there is no more than 2 --wp on the command
9762	line.  Associate a white list package to each kernel package on
9763	the command line.
9764
97652017-07-11  Dodji Seketeli <dodji@redhat.com>
9766
9767	Fix support of the --wp option of abipkgdiff
9768	* tools/abipkgdiff.cc (parse_command_line): Consider the absolute
9769	path of the package given in argument to --wp.
9770
97712017-07-11  Dodji Seketeli <dodji@redhat.com>
9772
9773	Use shorter lines in abipkgdiff.cc
9774	* tools/abipkgdiff.cc (parse_command_line): Use shorter lines
9775	here.
9776
97772017-07-11  Dodji Seketeli <dodji@redhat.com>
9778
9779	Add missing space in abipkgdiff error message
9780	* tools/abipkgdiff.cc (extract_package): Add missing space here.
9781
97822017-07-11  Dodji Seketeli <dodji@redhat.com>
9783
9784	Replace --lkaw with -w and --lkaw-pkg with --wp
9785	* doc/manuals/abipkgdiff.rst: Adjust the documentation.
9786	* tools/abipkgdiff.cc (display_usage): Adjust the usage string.
9787	(parse_command_line): Parse -w instead of --lkaw and --wp
9788	insteadof --lkaw-pkg.
9789
97902017-07-11  Dodji Seketeli <dodji@redhat.com>
9791
9792	speed up class type lookup in a corpus
9793	* src/abg-ir.cc (lookup_class_type): In the overload that looks
9794	for a class name denoted by an interned_string in the corpus, do
9795	not look for the class in the translation units when the type
9796	wasn't found in the type map of the corpus.
9797	(maybe_update_types_lookup_map): Remove the
9798	erase_if_exists_already parameter and the code that uses it.
9799	(lookup_class_type_through_translation_units): Remove this
9800	function that is now useless.
9801
98022017-07-06  Dodji Seketeli <dodji@redhat.com>
9803
9804	Bug 21644 - abipkgdiff does not emit diagnostics about comparison errors
9805	* include/abg-dwarf-reader.h (status_to_diagnostic_string):
9806	Declare new function.
9807	* src/abg-dwarf-reader.cc (status_to_diagnostic_string): Define
9808	new function.
9809	* tools/abipkgdiff.cc (compare): Take a new detailed_error_status
9810	parameter.
9811	(compare_task::perform): Get the details of the error, in case the
9812	status of the comparison is ABIDIFF_ERROR.
9813
98142017-07-05  Dodji Seketeli <dodji@redhat.com>
9815
9816	Bug 21153 - abipkgdiff reports undetermined interface subtype changes
9817	* src/abg-ir.cc (get_name_of_qualified_type): A noop-qualified
9818	type has an empty string as reprsentation for its qualifier.
9819	* src/abg-dwarf-reader.cc (die_qualified_type_name): Adjust to
9820	comply with what is done in get_name_of_qualified_type.  Adjust
9821	comment too.
9822	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
9823	Adjust.
9824	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
9825	New reference test output.
9826	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64.rpm: New
9827	test binary input.
9828	* tests/data/test-diff-pkg/libcdio-0.94-2.fc26.x86_64.rpm: Likewise.
9829	* tests/data/test-diff-pkg/libcdio-debuginfo-0.94-1.fc26.x86_64.rpm: Likewise.
9830	* tests/data/test-diff-pkg/libcdio-debuginfo-0.94-2.fc26.x86_64.rpm Likewise.
9831	* tests/data/Makefile.am: Add the new test inputs to source distribution.
9832	* tests/test-diff-pkg.cc (in_out_specs): Make this test harness run on
9833	the new test inputs above.
9834
98352017-07-03  Dodji Seketeli <dodji@redhat.com>
9836
9837	Fix typo in comments
9838	* src/abg-ir.cc (type_base::get_canonical_type_for): Fix a typo in
9839	a command.
9840
98412017-07-03  Dodji Seketeli <dodji@redhat.com>
9842
9843	Fix a typo when reporting size change wrt a decl-only class
9844	* src/abg-comparison.cc (report_size_and_alignment_changes): Fix
9845	typo.
9846
98472017-07-03  Dodji Seketeli <dodji@redhat.com>
9848
9849	Better handle decl-only classes being different from their definition
9850	* src/abg-comparison.cc (function_decl_diff::report): Don't report
9851	possible vtable changes between a decl-only class and its
9852	definition.
9853	* src/abg-ir.cc (type_base::get_canonical_type_for): Consider that
9854	a decl-only class is different from its definition when comparing
9855	types for the purpose of type canonicalization.
9856	(equals): In the class_or_union overload, only consider the global
9857	decl_only_class_equals_definition() property to know when to
9858	consider that a decl-only class is different from its definition
9859	when comparing two classes.
9860	* src/abg-reader.cc (build_class_decl): Read the size property of
9861	a class, even if it's a decl-only class.
9862	* src/abg-writer.cc (write_class_decl_opening_tag): Write size
9863	property of types even if the types are decl-only classes.
9864	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
9865	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
9866	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
9867	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
9868	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9869	Likewise.
9870	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9871	Likewise.
9872	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
9873	Likewise.
9874	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
9875	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
9876	Likewise.
9877	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
9878	Likewise.
9879	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
9880	Likewise.
9881	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
9882	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
9883	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
9884	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
9885	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
9886	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9887	Likewise.
9888	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9889	Likewise.
9890	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
9891	Likewise.
9892	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
9893	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
9894	Likewise.
9895	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
9896
98972017-06-28  Dodji Seketeli <dodji@redhat.com>
9898
9899	Don't add empty translation unit to corpus
9900	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
9901	A translation unit DIE that has no child DIE shall not be added to
9902	the current ABI corpus.
9903
99042017-06-27  Dodji Seketeli <dodji@redhat.com>
9905
9906	Bug 21631 - Forgot a "break" statement in stv_to_elf_symbol_visibility
9907	* src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Add a
9908	missing break statement.
9909
99102017-06-26  Dodji Seketeli <dodji@redhat.com>
9911
9912	Bug 21630 - A this pointer DIE can be const
9913	* src/abg-dwarf-reader.cc (die_this_pointer_is_const): If the DIE
9914	is not a DW_TAG_pointer_type then don't crash.
9915
99162017-06-23  Dodji Seketeli <dodji@redhat.com>
9917
9918	Bug 21629 - equivalent DIEs must be of the same DIE source
9919	* src/abg-dwarf-reader.cc (compare_dies): Don't propagate
9920	a canonical DIE to a DIE that comes from a different source.
9921
99222017-06-22  Dodji Seketeli <dodji@redhat.com>
9923
9924	Bug 21627 - Libabigail doesn't consider translation unit compile dir
9925	*if* that translation unit has already been seen in the current
9926	binary, instead of creating a new one altogether.
9927	This patch doesn't carry a regression test as the problem was found
9928	while running the
9929	https://pagure.io/libabigail-selfcheck/blob/master/f/selfcheck.py
9930	script over the Fedora 25 critpath packages.
9931	The patch does however update existing reference outputs of existings
9932	tests where appropriate.
9933	* include/abg-ir.h (translation_unit::{get_compilation_dir_path,
9934	set_compilation_dir_path, get_absolute_path}):
9935	* src/abg-corpus.cc (corpus::add): Use the new
9936	translation_unit::get_absolute_path() as the key for the tu path
9937	-> tu map.
9938	* src/abg-dwarf-reader.cc
9939	(read_context::resolve_declaration_only_classes):  Use the new
9940	translation_unit::get_absolute_path().
9941	(build_translation_unit_and_add_to_ir): Set the compilation
9942	directory of the translation unit.
9943	* src/abg-ir-priv.h (translation_unit::priv::{comp_dir_path_,
9944	abs_path_}):
9945	* src/abg-ir.cc (translation_unit::set_path): Update comment.
9946	(translation_unit::{get_compilation_dir_path,
9947	set_compilation_dir_path, get_absolute_path}): Define new member
9948	functions.
9949	* src/abg-reader.cc (read_translation_unit): Take the new
9950	'comp-dir-path' attribute into account.
9951	* src/abg-writer.cc (write_translation_unit): Emit the new
9952	'comp-dir-path' attribute.
9953	* tests/data/test-annotate/libtest23.so.abi: Adjust.
9954	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
9955	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust.
9956	* tests/data/test-annotate/test0.abi: Adjust.
9957	* tests/data/test-annotate/test1.abi: Adjust.
9958	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
9959	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
9960	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
9961	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
9962	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
9963	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
9964	* tests/data/test-annotate/test2.so.abi: Adjust.
9965	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
9966	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
9967	* tests/data/test-annotate/test3.so.abi: Adjust.
9968	* tests/data/test-annotate/test4.so.abi: Adjust.
9969	* tests/data/test-annotate/test5.o.abi: Adjust.
9970	* tests/data/test-annotate/test6.so.abi: Adjust.
9971	* tests/data/test-annotate/test7.so.abi: Adjust.
9972	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Adjust.
9973	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
9974	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
9975	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
9976	* tests/data/test-read-dwarf/test0.abi: Adjust.
9977	* tests/data/test-read-dwarf/test1.abi: Adjust.
9978	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
9979	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
9980	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
9981	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
9982	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
9983	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
9984	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
9985	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
9986	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
9987	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
9988	* tests/data/test-read-dwarf/test2.so.abi: Adjust.
9989	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
9990	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
9991	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
9992	* tests/data/test-read-dwarf/test3.so.abi: Adjust.
9993	* tests/data/test-read-dwarf/test4.so.abi: Adjust.
9994	* tests/data/test-read-dwarf/test5.o.abi: Adjust.
9995	* tests/data/test-read-dwarf/test6.so.abi: Adjust.
9996	* tests/data/test-read-dwarf/test7.so.abi: Adjust.
9997	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust.
9998	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
9999
100002017-05-04  Dodji Seketeli <dodji@redhat.com>
10001
10002	Misc style fixes
10003	* src/abg-dwarf-reader.cc (read_context::{die_wip_classes_map,
10004	die_wip_function_types_map, types_to_canonicalize,
10005	tu_die_imported_unit_points_map, die_parent_map,
10006	load_kernel_symbol_table}): Add missing space to statement.
10007	(get_parent_die): Likewise.
10008	(build_enum_type): Fix typo in comment.
10009	(e_machine_to_string, get_version_definition_for_versym)
10010	(lookup_public_function_symbol_from_elf)
10011	(lookup_public_variable_symbol_from_elf)
10012	(lookup_data_tag_from_dynamic_segment, die_is_declaration_only)
10013	(die_is_reference_type, die_function_type_is_method_type): Fix
10014	indentation.
10015	(read_context::{resolve_declaration_only_classes,
10016	fixup_functions_with_no_symbols,
10017	load_symbol_maps_from_symtab_section, load_dt_soname_and_needed,
10018	load_elf_architecture, load_elf_properties,
10019	maybe_adjust_address_for_exec_or_dyn, maybe_adjust_fn_sym_address,
10020	address_is_in_opd_section, load_elf_architecture,
10021	build_die_parent_maps}): Likewise.
10022	(op_pushes_constant_value, op_manipulates_stack): Use the
10023	dwarf_expr_eval_context::push method.
10024	(op_is_control_flow, die_return_and_parm_names_from_fn_type_die)
10025	(die_function_signature, die_pretty_print_type)
10026	(get_default_array_lower_bound)
10027	(build_translation_unit_and_add_to_ir, build_enum_type)
10028	(add_or_update_class_type, build_function_type)
10029	(build_function_decl, build_ir_node_from_die)
10030	(lookup_public_function_symbol_from_elf): Fix indentation.
10031	* src/abg-ir.cc (maybe_update_types_lookup_map): Remove useless space.
10032
100332017-05-31  Dodji Seketeli <dodji@redhat.com>
10034
10035	Fix doc glitch in abidiff.rst
10036	* doc/manuals/abidiff.rst: Fix glitch.
10037
100382017-06-12  Dodji Seketeli <dodji@redhat.com>
10039
10040	Symbols with the same zero value are not aliases
10041	* src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section):
10042	Do not consider symbols with zero value as being aliases.
10043	* tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
10044	* tests/data/test-diff-filter/test20-inline-report-1.txt:
10045	Likewise.
10046	* test-diff-filter/test41-PR21486-abg-writer.gcc.o: New test
10047	binary input.
10048	* tests/data/test-diff-filter/test41-PR21486-abg-writer.llvm.o:
10049	Likewise.
10050	* tests/data/Makefile.am: Add the new test material to source
10051	distribution.
10052	* tests/test-diff-filter.cc (in_out_specs): Run the test harness
10053	on the new test input above.
10054	* tests/data/test-diff-dwarf/test5-report.txt: Adjust.
10055	* tests/data/test-diff-filter/test9-report.txt: Adjust.
10056	* tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
10057	* tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust.
10058
100592017-06-12  Dodji Seketeli <dodji@redhat.com>
10060
10061	Support ELF symbol visibility property
10062	* include/abg-ir.h (enum elf_symbol::visibility): Define new enum.
10063	(elf_symbol::{elf_symbol, create}): Take a visibility parameter.
10064	(elf_symbol::{set, get}_visibility): Declare new accessors.
10065	(string_to_elf_symbol_binding): Declare new function.
10066	* src/abg-ir.cc (elf_symbol::priv::visibility_): New data member.
10067	(elf_symbol::priv::priv): Adjust.
10068	(elf_symbol::elf_symbol): Take a visibility parameter.
10069	(elf_symbol::create): Likewise
10070	(elf_symbol::{s,g}et_visibility): Define new accessors.
10071	(elf_symbol::is_public): Adjust.
10072	(operator<<(std::ostream&, elf_symbol::visibility)): Define new
10073	operator.
10074	(string_to_elf_symbol_visibility): Define new function.
10075	* src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Define
10076	new static function.
10077	(lookup_symbol_from_sysv_hash_tab)
10078	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
10079	(create_default_var_sym, create_default_fn_sym): Adjust.
10080	* src/abg-reader.cc (read_elf_symbol_binding): Define new
10081	function.
10082	(build_elf_symbol): Adjust.
10083	* src/abg-writer.cc (write_elf_symbol_visibility): Define new
10084	function.
10085	* tests/data/test-annotate/libtest23.so.abi: Adjust.
10086	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
10087	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust.
10088	* tests/data/test-annotate/test0.abi: Adjust.
10089	* tests/data/test-annotate/test1.abi: Adjust.
10090	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
10091	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
10092	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
10093	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
10094	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
10095	Adjust.
10096	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
10097	Adjust.
10098	* tests/data/test-annotate/test2.so.abi: Adjust.
10099	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
10100	Adjust.
10101	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
10102	* tests/data/test-annotate/test3.so.abi: Adjust.
10103	* tests/data/test-annotate/test4.so.abi: Adjust.
10104	* tests/data/test-annotate/test5.o.abi: Adjust.
10105	* tests/data/test-annotate/test6.so.abi: Adjust.
10106	* tests/data/test-annotate/test7.so.abi: Adjust.
10107	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi:
10108	Adjust.
10109	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
10110	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
10111	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
10112	* tests/data/test-read-dwarf/test0.abi: Adjust.
10113	* tests/data/test-read-dwarf/test1.abi: Adjust.
10114	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
10115	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
10116	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
10117	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
10118	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
10119	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
10120	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
10121	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
10122	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
10123	Adjust.
10124	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
10125	Adjust.
10126	* tests/data/test-read-dwarf/test2.so.abi: Adjust.
10127	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
10128	Adjust.
10129	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
10130	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
10131	Adjust.
10132	* tests/data/test-read-dwarf/test3.so.abi: Adjust.
10133	* tests/data/test-read-dwarf/test4.so.abi: Adjust.
10134	* tests/data/test-read-dwarf/test5.o.abi: Adjust.
10135	* tests/data/test-read-dwarf/test6.so.abi: Adjust.
10136	* tests/data/test-read-dwarf/test7.so.abi: Adjust.
10137	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
10138	Adjust.
10139	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
10140	* tests/data/test-read-write/test26.xml: Adjust.
10141	* tests/data/test-read-write/test27.xml: Adjust.
10142	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
10143	Adjust.
10144	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
10145	Adjust.
10146
101472017-06-09  Dodji Seketeli <dodji@redhat.com>
10148
10149	Filter top cv qualifier changes on function parameter types
10150	* include/abg-comparison.h (enum diff_category): Add a new
10151	FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY enumerator.  "Or" the
10152	enumerator to the EVERYTHING_CATEGORY enumerator.
10153	* src/abg-comp-filter.cc (has_fn_parm_type_cv_qual_change): Define
10154	new static function.
10155	(categorize_harmless_diff_node): Categorize changes to top cv
10156	qualifiers on function parameter types into the new
10157	FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
10158	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
10159	Add the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY category to the
10160	set of harmless categories.
10161	(operator<<(ostream&, diff_category)): Adjust to serialize
10162	the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
10163	* tests/data/test-diff-filter/libtest40-v0.so: New test input binary.
10164	* tests/data/test-diff-filter/libtest40-v1.so: Likewise.
10165	* tests/data/test-diff-filter/test40-report-0.txt: New test
10166	reference output.
10167	* tests/data/test-diff-filter/test40-v0.cc: Source code of the
10168	test binary above.
10169	* tests/data/test-diff-filter/test40-v1.cc: Likewise.
10170	* tests/data/Makefile.am: Add the new test material above to
10171	source distribution.
10172	* tests/test-diff-filter.cc (in_out_specs): Add new binaries to
10173	compare.
10174	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
10175	Adjust.
10176	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
10177	Likewise.
10178	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
10179	Likewise.
10180	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
10181	Likewise.
10182
101832017-05-28  Dodji Seketeli <dodji@redhat.com>
10184
10185	Do not report about voffset when it's not set in debug info
10186	* include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel):
10187	Initialize the virtual offset to -1.
10188	* src/abg-comparison.cc (represent): In the overload to represent
10189	a method_decl, do not represent the vofffset if it's not set.
10190	* src/abg-writer.cc (write_voffset): The virtual offset is signed
10191	because if it's -1, it means no offset is set.
10192	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
10193	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
10194	Adjust.
10195	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
10196	Adjust.
10197	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
10198	Adjust.
10199	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
10200	Adjust.
10201	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
10202	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
10203	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
10204	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
10205	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
10206	Adjust.
10207	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
10208	Adjust.
10209	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
10210	Adjust.
10211	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
10212	Adjust.
10213
102142017-05-17  Dodji Seketeli <dodji@redhat.com>
10215
10216	Allow selective resolution of class declaration
10217	* include/abg-fwd.h (type_base_wptrs_type)
10218	(istring_type_base_wptrs_map_type): Define new typedefs.
10219	(lookup_class_types): Declare new functions.
10220	* include/abg-ir.h
10221	(environment::decl_only_class_equals_definition): Declare new
10222	accessor.
10223	(type_maps::{*_types}): Make these accessors return
10224	istring_type_base_wptrs_map_type& instead of
10225	istring_type_base_wptr_map_type&.
10226	* src/abg-dwarf-reader.cc
10227	(read_context::resolve_declaration_only_classes): Implement the
10228	new selective declaration resolution scheme.
10229	* src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of
10230	these data members from istring_type_base_wptr_map_type to
10231	istring_type_base_wptrs_map_type.
10232	(type_maps::{*_types}): Make these accessors definitions return
10233	istring_type_base_wptrs_map_type& instead of
10234	istring_type_base_wptr_map_type&.
10235	(translation_unit::bind_function_type_life_time): Adjust.
10236	(environment::priv::decl_only_class_equals_definition_): New data
10237	member.
10238	(environment::priv::priv): Initialize it.  By default, a decl-only
10239	class is now considered different from its definition.
10240	(environment::decl_only_class_equals_definition): Define new
10241	accessor.
10242	(lookup_types_in_map, lookup_class_types): Define new functions.
10243	(lookup_type_in_map, lookup_union_type_per_location)
10244	(lookup_basic_type, lookup_basic_type_per_location)
10245	(lookup_class_type, lookup_class_type_per_location)
10246	(lookup_union_type, lookup_enum_type)
10247	(lookup_enum_type_per_location, lookup_typedef_type)
10248	(lookup_typedef_type_per_location, lookup_qualified_type)
10249	(lookup_pointer_type, lookup_reference_type, lookup_array_type)
10250	(lookup_function_type, maybe_update_types_lookup_map)
10251	(maybe_update_types_lookup_map<class_decl>)
10252	(maybe_update_types_lookup_map<function_type>): Adjust.
10253	(type_base::get_canonical_type_for): When doing type comparison
10254	here, we can now consider that an unresolved class declaration
10255	compares different to an incompatible class definition of the same
10256	name.  So no need to look through decl-only classes in that case.
10257	(equals): In the overload for class_or_union, if
10258	environment::decl_only_class_equals_definition() is false, then an
10259	unresolved class declaration of name "N" compares different to a
10260	class definition named "N".
10261	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
10262	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust
10263	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
10264	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
10265	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
10266	Adjust.
10267	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
10268	Adjust.
10269	* tests/data/test-diff-filter/test38/Makefile: New test material.
10270	* tests/data/test-diff-filter/test38/test38-a.c: Likewise.
10271	* tests/data/test-diff-filter/test38/test38-b.c: Likewise.
10272	* tests/data/test-diff-filter/test38/test38-c.c: Likewise.
10273	* tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise.
10274	* tests/data/test-diff-filter/test38/test38-v0: Likewise.
10275	* tests/data/test-diff-filter/test38/test38-v1: Likewise.
10276	* tests/data/test-diff-filter/test38/test38.h: Likewise.
10277	* tests/data/test-diff-filter/test39/Makefile: Likewise.
10278	* tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise.
10279	* tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise.
10280	* tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise.
10281	* tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise.
10282	* tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise.
10283	* tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise.
10284	* tests/data/test-diff-filter/test39/test39-main.c: Likewise.
10285	* tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
10286	* tests/data/test-diff-filter/test39/test39-v0: Likewise.
10287	* tests/data/test-diff-filter/test39/test39-v1: Likewise.
10288	* tests/data/test-diff-filter/test39/test39.h: Likewise.
10289	* tests/data/Makefile.am: Add the new test material above to the
10290	source distribution.
10291	* tests/test-diff-filter.cc (in_out_specs): Add the new test
10292	inputs above to the test harness.
10293
102942017-05-31  Dodji Seketeli <dodji@redhat.com>
10295
10296	Add documentation for the kmidiff tool
10297	* doc/manuals/kmidiff.rst: New doc file.
10298	* doc/manuals/Makefile.am: Add the above file to source
10299	distribution.
10300
103012017-05-31  Dodji Seketeli <dodji@redhat.com>
10302
10303	Allow re-using the ELF/DWARF read_context when loading a corpus group
10304	* include/abg-dwarf-reader.h (reset_read_context): Declare new
10305	function.
10306	* src/abg-dwarf-reader.cc (read_context::elf_paths_): Make this to
10307	be non const.
10308	(read_context::initialize): New function to initialize all data
10309	members.
10310	(read_context::read_context): Use the new read_context::initialize
10311	function, rather than initializing data members 'inline' here.
10312	(reset_read_context): Define a new function to reset a
10313	read_context so that it can be re-used to load a new corpus.
10314
103152017-05-31  Dodji Seketeli <dodji@redhat.com>
10316
10317	Add --vmlinux{1,2} option to abidw and kmidiff
10318	* include/abg-tools-utils.h
10319	(build_corpus_group_from_kernel_dist_under): Add a new
10320	vmlinux_path parameter.
10321	* src/abg-tools-utils.cc (find_vmlinux_and_module_paths): Do not
10322	try to find a vmlinux binary if we already have the path to one.
10323	(build_corpus_group_from_kernel_dist_under): Add a new
10324	vmlinux_path parameter.
10325	* tools/abidw.cc (options::vmlinux): New data member.
10326	(display_usage): Add a usage string for --vmlinux
10327	(parse_command_line): Parse the new --vmlinux option.
10328	(load_kernel_corpus_group_and_write_abixml): Fix some return code
10329	when the function fails.  Verify the presence of the vmlinux
10330	binary that was given.  Adjust.
10331	* tools/kmidiff.cc (options::{vmlinux1, vmlinux2}): New data
10332	members.
10333	(display_usage): Add a usage string for --vmlinux1 and --vmlinux2.
10334	(parse_command_line):  Parse the --vmlinux1 and --vmlinux2
10335	options.
10336	(main): Adjust.
10337
103382017-05-18  Dodji Seketeli <dodji@redhat.com>
10339
10340	Cache function type name computation results
10341	* src/abg-ir.cc (get_type_name): Cache function type names.
10342
103432017-05-29  Dodji Seketeli <dodji@redhat.com>
10344
10345	Fix innacurate test condition when reading an enum type from abixml
10346	* src/abg-reader.cc (build_enum_type_decl): Do not check for
10347	errno which might have been set earlier by something else.
10348	Rather, check the returned value for overflow or underflow.
10349
103502017-05-28  Dodji Seketeli <dodji@redhat.com>
10351
10352	Do not report about voffset when it's not set in debug info
10353	* include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel):
10354	Initialize the virtual offset to -1.
10355	* src/abg-comparison.cc (represent): In the overload to represent
10356	a method_decl, do not represent the vofffset if it's not set.
10357	* src/abg-writer.cc (write_voffset): The virtual offset is signed
10358	because if it's -1, it means no offset is set.
10359	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
10360	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
10361	Adjust.
10362	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
10363	Adjust.
10364	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
10365	Adjust.
10366	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
10367	Adjust.
10368	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
10369	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
10370	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
10371	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
10372	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
10373	Adjust.
10374	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
10375	Adjust.
10376	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
10377	Adjust.
10378	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
10379	Adjust.
10380
103812017-05-18  Dodji Seketeli <dodji@redhat.com>
10382
10383	Speedup DIE representation computing esp function signature in C
10384	* src/abg-dwarf-reader.cc (die_function_signature): For C DIEs,
10385	just return the (linkage) name of the function.
10386	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
10387	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
10388	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
10389	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
10390
103912017-05-17  Dodji Seketeli <dodji@redhat.com>
10392
10393	Allow selective resolution of class declaration
10394	* include/abg-fwd.h (type_base_wptrs_type)
10395	(istring_type_base_wptrs_map_type): Define new typedefs.
10396	(lookup_class_types): Declare new functions.
10397	* include/abg-ir.h
10398	(environment::decl_only_class_equals_definition): Declare new
10399	accessor.
10400	(type_maps::{*_types}): Make these accessors return
10401	istring_type_base_wptrs_map_type& instead of
10402	istring_type_base_wptr_map_type&.
10403	* src/abg-dwarf-reader.cc
10404	(read_context::resolve_declaration_only_classes): Implement the
10405	new selective declaration resolution scheme.
10406	* src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of
10407	these data members from istring_type_base_wptr_map_type to
10408	istring_type_base_wptrs_map_type.
10409	(type_maps::{*_types}): Make these accessors definitions return
10410	istring_type_base_wptrs_map_type& instead of
10411	istring_type_base_wptr_map_type&.
10412	(translation_unit::bind_function_type_life_time): Adjust.
10413	(environment::priv::decl_only_class_equals_definition_): New data
10414	member.
10415	(environment::priv::priv): Initialize it.  By default, a decl-only
10416	class is now considered different from its definition.
10417	(environment::decl_only_class_equals_definition): Define new
10418	accessor.
10419	(lookup_types_in_map, lookup_class_types): Define new functions.
10420	(lookup_type_in_map, lookup_union_type_per_location)
10421	(lookup_basic_type, lookup_basic_type_per_location)
10422	(lookup_class_type, lookup_class_type_per_location)
10423	(lookup_union_type, lookup_enum_type)
10424	(lookup_enum_type_per_location, lookup_typedef_type)
10425	(lookup_typedef_type_per_location, lookup_qualified_type)
10426	(lookup_pointer_type, lookup_reference_type, lookup_array_type)
10427	(lookup_function_type, maybe_update_types_lookup_map)
10428	(maybe_update_types_lookup_map<class_decl>)
10429	(maybe_update_types_lookup_map<function_type>): Adjust.
10430	(type_base::get_canonical_type_for): When doing type comparison
10431	here, we can now consider that an unresolved class declaration
10432	compares different to an incompatible class definition of the same
10433	name.  So no need to look through decl-only classes in that case.
10434	(equals): In the overload for class_or_union, if
10435	environment::decl_only_class_equals_definition() is false, then an
10436	unresolved class declaration of name "N" compares different to a
10437	class definition named "N".
10438	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
10439	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust
10440	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
10441	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
10442	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
10443	Adjust.
10444	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
10445	Adjust.
10446	* tests/data/test-diff-filter/test38/Makefile: New test material.
10447	* tests/data/test-diff-filter/test38/test38-a.c: Likewise.
10448	* tests/data/test-diff-filter/test38/test38-b.c: Likewise.
10449	* tests/data/test-diff-filter/test38/test38-c.c: Likewise.
10450	* tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise.
10451	* tests/data/test-diff-filter/test38/test38-v0: Likewise.
10452	* tests/data/test-diff-filter/test38/test38-v1: Likewise.
10453	* tests/data/test-diff-filter/test38/test38.h: Likewise.
10454	* tests/data/test-diff-filter/test39/Makefile: Likewise.
10455	* tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise.
10456	* tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise.
10457	* tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise.
10458	* tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise.
10459	* tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise.
10460	* tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise.
10461	* tests/data/test-diff-filter/test39/test39-main.c: Likewise.
10462	* tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
10463	* tests/data/test-diff-filter/test39/test39-v0: Likewise.
10464	* tests/data/test-diff-filter/test39/test39-v1: Likewise.
10465	* tests/data/test-diff-filter/test39/test39.h: Likewise.
10466	* tests/data/Makefile.am: Add the new test material above to the
10467	source distribution.
10468	* tests/test-diff-filter.cc (in_out_specs): Add the new test
10469	inputs above to the test harness.
10470
104712017-05-04  Dodji Seketeli <dodji@redhat.com>
10472
10473	Avoid de-duplicating different C types that have identical name
10474	* src/abg-dwarf-reader.cc (die_decl_map_type, die_type_map_type):
10475	Remove these typedefs.
10476	(die_artefact_map_type, istring_dwarf_offsets_map_type): New
10477	typedefs.
10478	(die_is_at_class_scope, die_qualified_type_name)
10479	(die_qualified_decl_name, die_qualified_type_name_empty)
10480	(die_return_and_parm_names_from_fn_type_die)
10481	(die_function_type_is_method_type):
10482	Const-ify the read_context& parameter.
10483	(read_context::die_source_dependant_container_set::get_container):
10484	Likewise.
10485	(read_context::{name_artefacts_map_, per_tu_name_artefacts_map_,
10486	die_decl_map_, alternate_die_decl_map_, type_unit_die_decl_map_,
10487	die_type_map_, alternate_die_type_map_, type_unit_die_type_map_}):
10488	Remove data members.
10489	(read_context::{die_decl_map, alternate_die_decl_map,
10490	associate_die_to_decl_primary, associate_die_to_decl_alternate,
10491	associate_die_to_decl_from_type_unit,
10492	lookup_decl_from_die_offset_primary,
10493	lookup_decl_from_die_offset_alternate,
10494	lookup_decl_from_type_unit_die_offset,
10495	lookup_type_artifact_from_die_per_tu,
10496	lookup_artifact_from_per_tu_die_representation,
10497	associate_die_to_artifact_by_repr,
10498	associate_die_to_artifact_by_repr_internal, clear_die_type_maps}):
10499	Remove member functions.
10500	(read_context::{decl_die_repr_die_offsets_maps_,
10501	type_die_repr_die_offsets_maps_, decl_die_artefact_maps_,
10502	type_die_artefact_maps_, dwarf_expr_eval_context_}): Add new data
10503	members.
10504	(read_context::clear_per_translation_unit_data): Don't clear
10505	read_context::per_tu_name_artefacts_map_ data member as it's
10506	removed.
10507	(read_context::clear_per_corpus_data): Don't clear
10508	read_context::name_artefacts_map_ and all the other relevant data
10509	members that got removed.
10510	(read_context::{dwarf_per_die_source,
10511	decl_die_repr_die_offsets_maps, type_die_repr_die_offsets_maps,
10512	get_canonical_die, get_die_from_offset, decl_die_artefact_maps,
10513	type_die_artefact_maps, dwarf_expr_eval_ctxt}): Add new member
10514	functions.
10515	(compare_dies, compare_as_decl_dies)
10516	(compare_as_type_dies, maybe_finish_function_decl_reading)
10517	(die_is_anonymous): Define new functions.
10518	(read_context::associate_die_to_decl): Remove the
10519	do_associate_by_repr_per_tu parameter.  Use the new
10520	read_context::{decl_die_artefact_maps_, get_canonical_die} member
10521	functions.
10522	(read_context::lookup_decl_from_die_offset): Use Dwarf_Off rather
10523	than size_t for the type of the die_offset parameter.  Use the
10524	lookup_artifact_from_die_offset member function.
10525	(read_context::lookup_type_artifact_from_die): Const-ify.  In one
10526	overload, take a new 'die_as_type' parameter.  Use the new
10527	get_canonical_die, type_die_artefact_maps and
10528	decl_die_artefact_maps member functions.  In the second overload,
10529	use the first overload.
10530	(read_context::odr_is_relevant): Add an overload that takes a DIE.
10531	(read_context::associate_die_to_type): Remove the
10532	do_associate_by_repr and do_associate_per_tu parameters.  Use the
10533	new get_canonical_die and type_die_artefact_maps member functions.
10534	(read_context::lookup_type_from_die): Use the new
10535	lookup_artifact_from_die member function.
10536	(read_context::lookup_type_from_die_offset): Use the new
10537	type_die_artefact_maps member function.  When the found artifact
10538	is a function_decl, return its type.
10539	(read_context::schedule_type_for_late_canonicalization):  Use the
10540	new get_canonical_die and type_die_artefact_maps member functions.
10541	(die_function_signature): Const-ify.  Get the scope name right
10542	even for scopes that are not types.
10543	(die_member_offset): Make eval_last_constant_dwarf_sub_expr use
10544	the new cached DWARF expression evalution context.
10545	(get_parent_die): Support where_offset equals to zero.  This means
10546	we are looking at a C binary, basically.
10547	(build_enum_type) : Use the new overload of
10548	read_context::odr_is_relevant that takes a DIE.  Adjust.
10549	(add_or_update_union_type, add_or_update_class_type): Don't lookup
10550	classes/unions per location anymore.  Now that we can compare DIEs
10551	in a fined grain manner, the approximation of the location is not
10552	useful anymore.
10553	(build_pointer_type)
10554	(build_function_type): Associate DIE to type if we reuse an
10555	existing type.
10556	(build_or_get_fn_decl_if_not_suppressed):  When re-using a
10557	function decl internal representation from an equivalent DIE that
10558	we've seen before, it can happen that we want to augment that
10559	function decl internal representation with new properties coming
10560	from the DIE we are currently looking at; do that here.
10561	(is_function_for_die_a_member_of_class): Remove the "where_offset"
10562	parameter.
10563	(add_or_update_member_function): Adjust.
10564	* tests/data/test-annotate/libtest23.so.abi: Adjust.
10565	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
10566	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
10567	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
10568	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
10569	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
10570	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
10571	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
10572	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
10573	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust.
10574	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Adjust.
10575	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Adjust.
10576	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Adjust.
10577	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
10578	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
10579	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
10580	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
10581	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
10582	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
10583	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
10584	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
10585	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
10586	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
10587	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
10588	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
10589	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
10590	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
10591	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
10592
105932017-04-14  Dodji Seketeli <dodji@redhat.com>
10594
10595	Speedup access to unreferenced symbols when loading corpus_group
10596	* src/abg-corpus.cc (corpus_group::unrefed_{fun, var}_symbol_map):
10597	New data members.
10598	(corpus_group::priv::priv): Adjust.
10599	(corpus_group::priv::add_unref_{fun,var}_symbols): Define new
10600	member functions.
10601	(corpus_group::add_corpus): Update the map of unreferenced
10602	symbols.
10603	(corpus_group::get_unreferenced_{function,variable}_symbols)
10604	Adjust logic.
10605
106062017-04-07  Dodji Seketeli <dodji@redhat.com>
10607
10608	Initial support of de-serializing the KMI of a Linux Kernel Tree
10609	* include/abg-libxml-utils.h (advance_to_next_sibling_element):
10610	Declare new function.
10611	* src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay)
10612	(advance_to_next_sibling_element): Define new functions.
10613	* include/abg-reader.h (read_corpus_group_from_input)
10614	(read_corpus_group_from_native_xml)
10615	(read_corpus_group_from_native_xml_file): Declare new functions.
10616	* src/abg-reader.cc (read_context::m_corpus_group): New data
10617	member.
10618	(read_context::{get_corpus_group, set_corpus_group}): Define new
10619	member functions.
10620	(read_translation_unit_from_input): Cleanup logic.
10621	(read_corpus_from_input): Don't assume that the document is
10622	starting with an 'abi-corpus' element.  Support the mode where a
10623	caller called the xmlTextReaderExpand function (and so we are
10624	given an expanded xmlNodePtr) and the mode where we need to use
10625	the xmlTextReader API to walk through the 'abi-corpus' element.
10626	Also, if we are building a corpus group, do not clear what used to
10627	be 'per-corpus' data.  That data must be shared by all the corpora
10628	of a given abi-corpus-group.
10629	(read_corpus_group_from_input, read_corpus_group_from_native_xml)
10630	(read_corpus_group_from_native_xml_file): Define new functions.
10631	* include/abg-tools-utils.h (FILE_TYPE_XML_CORPUS_GROUP): New
10632	enumerator of the file_type enum.
10633	* src/abg-tools-utils.cc (operator<<): In the overload for
10634	file_type, add a case for the new FILE_TYPE_XML_CORPUS_GROUP.
10635	(guess_file_type): Dectect abi-corpus-group xml element.
10636	* tools/abidiff.cc (adjust_diff_context_for_kmidiff): Define new
10637	static function.
10638	(main): Adjust to handle the new FILE_TYPE_XML_CORPUS_GROUP.  That
10639	is, compare two FILE_TYPE_XML_CORPUS_GROUP if they are present.
10640	* tools/abilint.cc (main): Likewise.
10641	* tools/kmidiff.cc (main): Detect that one of two .kmi files are
10642	passed.  In that case, load the .kmi file(s), build a corpus_group
10643	of it and use it in the comparison.
10644
106452017-04-06  Dodji Seketeli <dodji@redhat.com>
10646
10647	Initial support of the serialization of the KMI of a Linux Kernel Tree
10648	* include/abg-tools-utils.h (check_dir)
10649	(get_binary_paths_from_kernel_dist)
10650	(build_corpus_group_from_kernel_dist_under): Declare new
10651	functions.  The last two functions are being moved from
10652	tools/kmidiff.cc so that they can be re-used.
10653	* include/abg-writer.h (write_corpus): Declare one overload that
10654	takes a write_context parameter.
10655	(write_corpus_group): Declare three overloads of this new function.
10656	* src/abg-tools-utils.cc (check_dir): Define new function.
10657	(load_generate_apply_suppressions, is_vmlinux, is_kernel_module)
10658	(find_vmlinux_and_module_paths)
10659	(get_binary_paths_from_kernel_dist)
10660	(build_corpus_group_from_kernel_dist_under): Define new functions.
10661	* src/abg-writer.cc (write_context::set_annotate): Define new
10662	member function.
10663	(write_corpus): Add an overload that takes a write_context.  Adapt
10664	the existing overload to make it use this new one.
10665	(write_corpus_group): Define this new function and two additional
10666	overloads for it.
10667	* tools/kmidiff.cc (set_suppressions, is_vmlinux)
10668	(is_kernel_module, find_vmlinux_and_module_paths)
10669	(get_binary_paths_from_kernel_dist)
10670	(build_corpus_group_from_kernel_dist_under): Remove.
10671	(main): Adjust the call to
10672	build_corpus_group_from_kernel_dist_under as its arguments are now
10673	adapted since it's been factorized out into abg-tools-utils.h.
10674	* tools/abidw.cc (options::corpus_group_for_linux): Define new
10675	data member.
10676	(options::options): Adjust.
10677	(display_usage): Add help strings for the new --linux-tree option.
10678	(load_corpus_and_write_abixml): Factorize this function out of the
10679	main function.
10680	(load_kernel_corpus_group_and_write_abixml): Define new function.
10681	(main): Use the factorized load_corpus_and_write_abixml and the
10682	new load_corpus_and_write_abixml functions.
10683	* tests/test-read-write.cc: Adjust.
10684	* doc/manuals/abidw.rst: Add documentation for the new
10685	--linux-tree option.
10686
106872017-04-06  Dodji Seketeli <dodji@redhat.com>
10688
10689	Adjust test reference outputs after changes in abg-writer.cc
10690	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
10691	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
10692	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
10693	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
10694	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
10695	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
10696	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
10697	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
10698	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
10699	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
10700	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
10701	Adjust.
10702
107032017-04-06  Dodji Seketeli <dodji@redhat.com>
10704
10705	Fix indentation glitch before the </abi-corpus> tag in abixml
10706	* src/abg-writer.cc (write_corpus): Indent before emitting the
10707	closing </abi-corpus> tag.
10708
107092017-04-06  Dodji Seketeli <dodji@redhat.com>
10710
10711	Avoid emitting some empty translation units to abixml
10712	* src/abg-writer.cc (write_corpus):  Do not emit a translation
10713	unit that appears empty beforehand.
10714
107152017-04-06  Dodji Seketeli <dodji@redhat.com>
10716
10717	Avoid emitting duplicated decls in abixml
10718	* src/abg-writer.cc (write_context::m_emitted_decls_map): New data
10719	member.
10720	(write_context::{decl_name_is_emitted, record_decl_as_emitted}):
10721	Define new memeber functions.
10722	(write_translation_unit): Do not emit a decl that has already been
10723	emitted.
10724	(write_var_decl, write_function): Record the decl as emitted.
10725
107262017-04-04  Dodji Seketeli <dodji@redhat.com>
10727
10728	Rename write_corpus_to_native_xml into write_corpus
10729	* include/abg-writer.h (write_corpus): Rename
10730	write_corpus_to_native_xml to this.
10731	* src/abg-writer.cc (write_corpus): Rename
10732	write_corpus_to_native_xml to this.
10733	* tests/test-read-dwarf.cc (test_task::perform): Adjust.
10734	* tests/test-read-write.cc: Remove a useless "using
10735	abigail::xml_writer::write_corpus_to_native_xml".
10736	* tools/abidw.cc (main): Adjust.
10737	* tools/abilint.cc (main): Adjust.
10738
107392017-04-04  Dodji Seketeli <dodji@redhat.com>
10740
10741	Update the reference output of regression tests after kabidiff work
10742	* tests/data/test-annotate/test0.abi: Adjust.
10743	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
10744	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
10745	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
10746	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
10747	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
10748	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
10749	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
10750	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
10751	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
10752	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Adjust.
10753	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Adjust.
10754	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Adjust.
10755	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust.
10756	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Adjust.
10757	* tests/data/test-read-dwarf/test0.abi: Adjust.
10758	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
10759	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
10760	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
10761	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
10762	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
10763	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
10764	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
10765	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
10766	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
10767	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
10768	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
10769	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
10770	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
10771	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
10772
107732017-06-12  Dodji Seketeli <dodji@redhat.com>
10774
10775	Introduce the --kmi-whitelist option to abidiff
10776	* doc/manuals/abidiff.rst: Add documentation for the
10777	--kmi-whitelist option.
10778	* tools/abidiff.cc (display_usage): Emit help string for the
10779	--kmi-whitelist option
10780	(parse_command_line): Parse the new --kmi-whitelist option, of the
10781	-w shortcut.
10782
107832017-04-04  Dodji Seketeli <dodji@redhat.com>
10784
10785	Make abidw support the --kmi-whitelist option
10786	* tools/abidw.cc (options::{kabi_whitelist_paths,
10787	kabi_whitelist_supprs}): New data members.
10788	(display_usage): Add a help string for the new --kmi-whitelist
10789	option.
10790	(parse_command_line): Parse the new --kmi-whitelist option.
10791	(maybe_check_suppression_files): Check the presence of the linux
10792	kernel abi white list passed by the option --kmi-whitelist.
10793	(main): Ignore loading the symbol table if the kernel abi white
10794	list is provided.
10795	* doc/manuals/abidw.rst: Add documentation for the new option.
10796
107972017-04-03  Dodji Seketeli <dodji@redhat.com>
10798
10799	Make abipkgdiff compare two kernel packages
10800	* include/abg-suppression.h
10801	(variable_suppression::variable_suppression): Add default arguments
10802	to the parameters.
10803	* include/abg-tools-utils.h (dir_exists, dir_is_empty)
10804	(string_begins_with, get_rpm_name, get_rpm_arch, get_deb_name)
10805	(file_is_kernel_package, file_is_kernel_debuginfo_package):
10806	Declare new functions.
10807	* src/abg-tools-utils.cc (dir_exists, dir_is_empty)
10808	(string_begins_with, get_deb_name, get_rpm_name, get_rpm_arch)
10809	(file_is_kernel_package, file_is_kernel_debuginfo_package): Define
10810	new functions.
10811	(gen_suppr_spec_from_kernel_abi_whitelist): The kernel ABI
10812	whitelist is made of ELF symbols names that ought to match
10813	functions *and* variables that have ELF symbols with those names.
10814	So generate variable suppression specifications as well.  Not just
10815	function suppression specifications.
10816	* tools/abipkgdiff.cc (options::{kabi_whitelist_package,
10817	show_symbols_not_referenced_by_debug_info, kabi_whitelist_paths,
10818	kabi_suppressions}): New data members.
10819	(options::options): Adjust.
10820	(package::KIND_KABI_WHITELISTS): New enumerator in the
10821	package::kind enum.
10822	(package::kabi_whitelist_package_): New data member.
10823	(package::{base_name, kabi_whitelist_package, }): New member
10824	functions.
10825	(display_usage): Add a help string to the new
10826	--linux-kernel-abi-whitelist and --no-unreferenced-symbols
10827	options.
10828	(parse_command_line): Parse the new --no-unreferenced-symbols,
10829	--linux-kernel-abi-whitelist and --lkaw-pkg options.
10830	(maybe_check_suppression_files): Check the presence of kabi
10831	whitelist files.
10832	(set_diff_context_from_opts): Consider (not) showing symbols not
10833	referenced by debug info.
10834	(compare): If we are looking at linux kernel packages, take the
10835	kernel abi whitelist into account, apply the suppressions
10836	resulting from the kabi whitelists to the ELF read context.
10837	(maybe_collect_kabi_whitelists)
10838	(get_kabi_whitelists_from_arch_under_dir)
10839	(maybe_handle_kabi_whitelist_pkg, maybe_collect_kabi_whitelists)
10840	(get_interesting_files_under_dir): Define new functions.
10841	(maybe_update_vector_of_package_content): Take a new
10842	file_name_to_look_for parameter.
10843	(create_maps_of_package_content)
10844	(extract_package_and_map_its_content): Consider the case of the
10845	package being a linux kernel package.
10846	(main): Take the potential --lkaw-pkg into account.
10847	* doc/manuals/abipkgdiff.rst: Add documentation for options
10848	--linux-kernel-abi-whitelist, --lkaw-pkg and
10849	--no-unreferenced-symbols.
10850
108512017-04-03  Dodji Seketeli <dodji@redhat.com>
10852
10853	Avoid loading a translation unit twice from abixml
10854	* src/abg-reader.cc (read_translation_unit): Take (in parameter) a
10855	reference as the resulting translation unit.
10856	(get_or_read_and_add_translation_unit): Define new static
10857	function.
10858	(read_context::get_scope_for_node)
10859	(read_translation_unit_from_input): Use the new
10860	get_or_read_and_add_translation_unit.
10861
108622017-04-03  Dodji Seketeli <dodji@redhat.com>
10863
10864	Support loading and comparing two kernel trees
10865	* include/abg-dwarf-reader.h (set_read_context_corpus_group)
10866	(read_and_add_corpus_to_group_from_elf, set_ignore_symbol_table)
10867	(get_ignore_symbol_table): Declare new functions.
10868	* abg-dwarf-reader.cc (read_context::options_type): Define new
10869	type.
10870	(die_dependant_container_set::clear): Define new member function.
10871	(read_context::{bss, tesxt, rodata, data, data1}_section_): Add
10872	new data members.
10873	(read_context::{symbol_versionning_sections_loaded_,
10874	symbol_versionning_sections_found_}): Likewise.
10875	(read_context::corpus_group_): Likewise.
10876	(read_context::{load_in_linux_kernel_mode, load_all_types,
10877	show_stats, do_log_}): Replace these options by ..
10878	(read_context::options_): ... this instance of the new
10879	read_context:options_type.
10880	(read_context::read_context): Adjust.
10881	(read_context::{clear_alt_debug_info_data, clear_per_corpus_data,
10882	env, get_data_section_for_variable_address, load_all_types,
10883	load_in_linux_kernel_mode, show_stats, do_log}): Adjust.
10884	(create_read_context): Adjust.
10885	(read_context::~read_context): Define destructor.
10886	(read_context::{options, bss_section, text_section,
10887	rodata_section, data_section, data1_section, current_corpus_group,
10888	has_corpus_group, main_corpus_from_current_group,
10889	main_corpus_from_current_group,
10890	current_corpus_is_main_corpus_from_current_group,
10891	should_reuse_type_from_corpus_group}): Define new member
10892	functions.
10893	(read_context::get_die_qualified_type_name): Handle the name of
10894	the current translation unit.
10895	(read_context::load_symbol_maps): Really don't load (linux kernel
10896	specific) symbol maps if we were told to ignore the ELF symbol
10897	table.
10898	(set_ignore_symbol_table, get_ignore_symbol_table)
10899	(create_default_var_sym, create_default_fn_sym, add_symbol_to_map)
10900	(set_read_context_corpus_group)
10901	(read_and_add_corpus_to_group_from_elf): Define new functions.
10902	(build_type_decl, build_typedef_type, build_enum_type)
10903	(add_or_update_class_type)
10904	(add_or_update_union_type): Reuse the type being built, from the
10905	main corpus of the corpus group.
10906	(build_qualified_type): Cleanup logic.
10907	(build_var_decl, build_function_decl): Create a default symbol for
10908	the variable or function if we are supposed to ignore the symbol
10909	table of the current binary.  Add that symbol to the symbol table
10910	that is created in the read context.
10911	(read_debug_info_into_corpus): Don't load the ELF symbol table
10912	information if we are asked to ignore the symbol table.  But set
10913	the symbol table that we built artificially while loading
10914	functions and variables, into the ABI corpus being built.
10915	(read_context::maybe_adjust_var_sym_address): Adjust.
10916	(build_ir_node_from_die): Add ir node to its logical scope.  For
10917	the C language, the scope of a type is the global scope.
10918	(read_corpus_from_elf): Don't load ELF properties if we were asked
10919	to avoid the ELF symbol table.
10920	* include/abg-comparison.h (compute_diff): Declare ...
10921	* src/abg-comparison.cc (compute_diff): ... an overload to compare
10922	corpus_group.
10923	* tools/kmidiff.cc: New tool.
10924
109252017-03-31  Dodji Seketeli <dodji@redhat.com>
10926
10927	Initial support to lookup types per location
10928	* include/abg-fwd.h (get_name_of_qualified_type)
10929	(get_name_of_reference_to_type, lookup_basic_type_per_location)
10930	(lookup_class_type_per_location, lookup_union_type_per_location)
10931	(lookup_enum_type_per_location, lookup_typedef_type)
10932	(lookup_typedef_type_per_location, lookup_pointer_type)
10933	(lookup_reference_type, lookup_type_per_location)
10934	(lookup_type_through_translation_units)
10935	(lookup_type_from_translation_unit, odr_is_relevant): Declare new
10936	functions or new function overloads.
10937	* include/abg-ir.h (location::expand): Declare new member
10938	function.
10939	(type_maps::empty): Likewise.
10940	(operator|=): Declare an overload for qualified_type_def::CV.
10941	(get_string_representation_of_cv_quals)
10942	(get_name_of_qualified_type, lookup_qualified_type): Declare new functions.
10943	* src/abg-ir.cc (location::expand): Define new member function.
10944	(type_maps::empty): Likewise.
10945	(odr_is_relevant): Likewise.
10946	(get_string_representation_of_cv_quals)
10947	(get_name_of_reference_to_type, get_name_of_qualified_type)
10948	(lookup_union_type_per_location): Define new functions or overloads.
10949	(lookup_basic_type, lookup_enum_type, lookup_typedef_type)
10950	(lookup_qualified_type, lookup_pointer_type)
10951	(lookup_reference_type, lookup_type_from_translation_unit)
10952	(lookup_basic_type_per_location, lookup_basic_type_per_location)
10953	(lookup_class_type_per_location, lookup_class_type_per_location)
10954	(lookup_enum_type_per_location, lookup_enum_type_per_location)
10955	(lookup_typedef_type_per_location)
10956	(lookup_typedef_type_per_location, lookup_type_per_location):
10957	Define new overloads.
10958	(maybe_update_types_lookup_map)
10959	(maybe_update_types_lookup_map<class_decl>)
10960	(maybe_update_types_lookup_map<function_type>): Add a new
10961	use_type_name_as_key parameter.  If it's false, then associates
10962	the type to its location rather than to its name.
10963	(maybe_update_types_lookup_map): In the overloads for type_decl,
10964	class_decl, union_decl, enum_type, typedef_decl, array_type_def,
10965	record the type in the lookup map per location, in addition to the
10966	per-name recording.
10967	(qualified_type_def::build_name): Use the new
10968	get_name_of_qualified_type.
10969	(qualified_type_def::get_cv_quals_string_prefix): Use the new
10970	get_string_representation_of_cv_quals.
10971	(operator|=): Define a new overload for qualified_type_def::CV.
10972	(pointer_type_def::get_qualified_name): Use the new
10973	get_name_of_pointer_to_type.
10974	(reference_type_def::get_qualified_name): Use the new
10975	get_name_of_reference_to_type.
10976
109772017-03-30  Dodji Seketeli <dodji@redhat.com>
10978
10979	Create a Corpus Group API extension
10980	* include/abg-corpus.h (corpus::{find_translation_unit,
10981	get_type_per_loc_map}): Declare new member functions.
10982	(corpus::{get_architecture_name, is_empty}): Make these member functions
10983	const.
10984	(corpus::{get_sorted_fun_symbols, get_functions, get_variables,
10985	get_unreferenced_function_symbols,
10986	get_unreferenced_variable_symbols}): Make these member functions
10987	virtual.
10988	(class corpus_group): Declare a new type.
10989	* include/abg-fwd.h (corpus_sptr, corpus_group_sptr)
10990	(string_tu_map_type, istring_var_decl_ptr_map_type)
10991	(istring_function_decl_ptr_map_type): Define new typedefs.
10992	* src/abg-corpus-priv.h (corpus_priv::{path_tu_map,
10993	type_per_loc_map_}): Add new data members.
10994	* src/abg-corpus.cc (corpus_add): Complete the function comment.
10995	Assert that at most one translation unit of a given path can be
10996	added to the corpus.
10997	(corpus::{find_translation_unit, get_type_per_loc_map}): Define
10998	new member functions.
10999	(corpus::{get_architecture_name}): Make this member function
11000	const.
11001	(struct corpus_group::priv): Define new type.
11002	(corpus_group::{corpus_group, ~corpus_group, add_corpus,
11003	get_corpora, is_empty, get_functions, get_variables,
11004	get_var_symbol_map, get_fun_symbol_map, get_sorted_fun_symbols,
11005	get_sorted_var_symbols, get_unreferenced_function_symbols,
11006	get_unreferenced_variable_symbols}): Define member functions of
11007	the new corpus_group type.
11008
110092017-07-03  Dodji Seketeli <dodji@redhat.com>
11010
11011	Fix some typos in abidiff.cc
11012	* tools/abidiff.cc (main): Fix typos.
11013
110142017-07-03  Dodji Seketeli <dodji@redhat.com>
11015
11016	Avoid comparing kernel.img file from the grub2 package
11017	* default.abignore: Do not compare kernel.img files.
11018
110192017-06-14  Dodji Seketeli <dodji@redhat.com>
11020
11021	Bug 21567 - Fedabipkgdiff matches build distro names too tightly
11022	* tools/fedabipkgdiff (get_distro_from_string): Define new function.
11023	(Brew.get_package_latest_build): Also consider builds which distro
11024	property is less than the expected distro string that we were
11025	given.
11026
110272017-06-14  Sinny Kumari <sinny@redhat.com>
11028
11029	Check if return_codes list is empty in fedabipkgdiff
11030	* tools/fedabipkgdiff (run_abipkgdiff()): Check if
11031	return_codes list is empty
11032
110332017-06-13  Dodji Seketeli <dodji@redhat.com>
11034
11035	Do not forget to erase temporary directories in abipkgdiff
11036	* tools/abipkgdiff.cc (maybe_erase_temp_dirs): Define new static
11037	function.
11038	(compare): Call the new maybe_erase_temp_dirs on all return
11039	points.
11040
110412017-05-11  Ben Woodard <woodard@redhat.com>
11042
11043	Fix more clang build warnings
11044	* include/abg-ini.h (config::section::priv): Make this be a class,
11045	not a struct.
11046	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir)
11047	(build_ir_node_from_die): Add parenthesis around assignment
11048	expressions inside conditional expression.
11049	* src/abg-suppression.cc (read_function_suppression): Likewise.
11050
110512017-05-11  Ben Woodard <woodard@redhat.com>
11052
11053	Fix some clang compile problems
11054	* include/abg-comp-filter.h (class filter_base): Declare this as a
11055	struct.
11056	* include/abg-comparison.h (class filtering::filter_base):
11057	Likewise.
11058	(struct diff_traversable_base): Declare this as a class.
11059	* include/abg-ir.h (function_decl::parameter): Declare this before
11060	using it.
11061	* src/abg-corpus.cc
11062	(corpus::priv::build_unreferenced_symbols_tables): Add missing
11063	parenthesis around assignment expressions inside conditional
11064	expressions.
11065
110662017-05-21  Sinny Kumari <sinny@redhat.com>
11067
11068	Add --self-compare option in fedabipkgdiff
11069	* bash-completion/fedabipkgdiff: Add new option --self-compare
11070	* tests/data/Makefile.am: Add new test file
11071	* tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt:
11072	New reference output for testing ABI comparison on same package
11073	* tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
11074	Add test case for --self-compare
11075	* tools/fedabipkgdiff (build_commandline_args_parser()): Add
11076	new option --self-compare
11077	(generate_comparison_halves()): Find second comparision half in same
11078	package list while doing self-compare
11079	(self_compare_rpms_from_distro()): New function to perform ABI
11080	comparision on same pacakge
11081	(main()): Add if condition when --self-compare option is enabled
11082
110832017-03-31  Dodji Seketeli <dodji@redhat.com>
11084
11085	Avoid building DIE -> parent DIE map when analyzing a C binary
11086	* include/abg-ir.h (global_scope_sptr): Make this be a share_ptr
11087	of scope_decl, not of global_scope.
11088	(translation_unit::get_global_scope): Return a reference to
11089	scope_decl_sptr.
11090	* src/abg-ir.cc (translation_unit::get_global_scope): Return a
11091	scope_decl not a global_scope.
11092	* src/abg-dwarf-reader.cc (read_context::nil_scope_): Add new data
11093	member.
11094	(read_context::{global_scope, nil_scope}): Define new member functions.
11095	(read_context::build_die_parent_maps): Do not build the map if we
11096	are looking at a C (or asm) translation unit.
11097	(get_scope_die, get_scope_for_die): If we are looking at a C
11098	translation unit then do return the global scope.
11099
111002017-04-06  Dodji Seketeli <dodji@redhat.com>
11101
11102	Speed up access to the definition of a class declaration-only type
11103	* include/abg-ir.h
11104	(class_or_union::get_naked_definition_of_declaration): Declare a
11105	new member function.
11106	(class_decl::get_naked_definition_of_declaration): Likewise.
11107	* src/abg-ir.cc ({type_decl, qualified_type_def,
11108	array_type_def, enum_type_decl}::operator==): Use the
11109	get_naked_canonical_type and get_naked.
11110	(class_or_union::priv::naked_definition_of_declaration_): Define
11111	new data member.
11112	(class_or_union::priv::priv): Adjust to initialize the new data
11113	member.
11114	(class_or_union::get_naked_definition_of_declaration): Define new
11115	member function.
11116	({class_or_union, class_decl}::operator==): Use the new
11117	get_naked_definition_of_declaration instead of
11118	get_definition_of_declaration.
11119	(equals): In the overload for class_or_union, do the same.
11120	(class_decl::get_naked_definition_of_declaration): Define new
11121	member function.
11122	(hash_type_or_decl): Likewise.
11123
111242017-04-06  Dodji Seketeli <dodji@redhat.com>
11125
11126	Speedup comparison of decl-only classes
11127	* src/abg-ir.cc (equals): In the overload for class_decl, if we
11128	are looking at a decl-only class, then directly call the equals
11129	function for class_or_union.  That one knows how to perform the
11130	comparison without calling the
11131	class_or_union::priv_->comparison_started function, in that case.
11132
111332017-04-04  Dodji Seketeli <dodji@redhat.com>
11134
11135	Update the description of what abipkgdiff does
11136	* tools/abipkgdiff.cc: Update the description of the sequence of
11137	actions performed.
11138
111392017-04-06  Dodji Seketeli <dodji@redhat.com>
11140
11141	Misc cleanups in abg-writer.cc
11142	* src/abg-writer.cc (class write_context): Fix indentation.
11143	(write_location, write_visibility, write_binding)
11144	(write_array_size_and_alignment, write_size_and_alignment): Fix
11145	these declarations to use the *_sptr typedefs rather than the
11146	explicit shared_ptr<*> types.
11147	(write_translation_unit): Fix comment.
11148
111492017-05-10  Dodji Seketeli <dodji@redhat.com>
11150
11151	Don't consider changes to basic types as being redundant
11152	* include/abg-comparison.h (is_diff_of_basic_type)
11153	(has_basic_type_change_only): Declare these functions ...
11154	* src/abg-comparison.cc (is_diff_of_basic_type)
11155	(has_basic_type_change_only): ... and define them.
11156	(redundancy_marking_visitor::visit_begin): Use the new
11157	has_basic_type_change_only.
11158	* tests/data/test-diff-filter/libtest37-v0.so: New binary test input.
11159	* tests/data/test-diff-filter/libtest37-v1.so: Likewise.
11160	* tests/data/test-diff-filter/test37-report-0.txt: New test
11161	reference output.
11162	* tests/data/test-diff-filter/test37-v0.cc: Source code of the new
11163	binary test input.
11164	* tests/data/test-diff-filter/test37-v1.cc: Likewise.
11165	* tests/data/Makefile.am: Update to add the new test material to
11166	the source distribution.
11167	* tests/test-diff-filter.cc (in_out_spec): Add the new test input
11168	to this test harness.
11169
111702017-05-10  Dodji Seketeli <dodji@redhat.com>
11171
11172	Rename fn_parm_diff::get_type_diff into fn_parm_diff::type_diff
11173	* include/abg-comparison.h (fn_parm_diff::type_diff): Renamed
11174	fn_parm_diff::get_type_diff intot his.
11175	* src/abg-comparison.cc (fn_parm_diff::type_diff): Likewise.
11176	(fn_parm_diff::report): Adjust.
11177	(redundancy_marking_visitor::visit_begin): Likewise.
11178	(is_diff_of_variadic_parameter): Likewise.
11179
111802017-05-03  Dodji Seketeli <dodji@redhat.com>
11181
11182	Invalidate function and variable ID cache when invoking ::set_symbol
11183	* src/abg-ir.cc ({function, var}_decl::set_symbol): Invalidate the
11184	ID cache.
11185
111862017-05-03  Dodji Seketeli <dodji@redhat.com>
11187
11188	Remove useless overloads of is_type
11189	* include/abg-fwd.h (is_type):  Remove the overloads that take
11190	decl_base and type_base types.
11191	* src/abg-ir.cc (is_type): Likewise.
11192
111932017-05-04  Dodji Seketeli <dodji@redhat.com>
11194
11195	Ensure build_qualified_type can return non-qualified types
11196	* src/abg-dwarf-reader.cc (build_qualified_type): Return a
11197	type_base_sptr.
11198	(build_ir_node_from_die): Adjust the call to build_qualified_type.
11199
112002017-05-04  Dodji Seketeli <dodji@redhat.com>
11201
11202	Fix array subranges (wrongly) having the same lower bound
11203	* src/abg-dwarf-reader.cc (build_subranges_from_array_type_die):
11204	Consider the 'lower_bound' parameter as the default lower bound
11205	for each sub-ranges.
11206
112072017-03-31  Dodji Seketeli <dodji@redhat.com>
11208
11209	Fix buffer overrun in 'equals' function for arrays
11210	* src/abg-ir.cc (equals): In the overload for arrays, check for
11211	the end of the subranges of the two arrays, not just for the first
11212	one.
11213
112142017-04-18  Dodji Seketeli <dodji@redhat.com>
11215
11216	Fix a race condition in queue::priv::do_bring_workers_down
11217	* src/abg-workers.cc (queue::priv::tasks_todo_mutex): Make this
11218	data member mutable.
11219	(more_tasks_to_execute):
11220	(queue::priv::do_bring_workers_down): Update the
11221	queue::priv::bring_workers_down only in the critical section
11222	defined by queue::priv::queue_cond_mutex.
11223	(worker::wait_to_execute_a_task): Testing for
11224	queue::priv::bring_workers_down is done in the critical section
11225	defined by queue::priv::queue_cond_mutex.  The loop over waiting
11226	ont the condition is also in the critical section, as it ought to
11227	be.
11228	* tests/test-read-write.cc (struct test_task): New type.
11229	(main): Express in terms of the new test_task type.
11230
112312017-04-12  Ondrej Oprala <ondrej.oprala@gmail.com>
11232
11233	cppcheck: mitigate performance warnings
11234	* include/abg-diff-utils.h (print_snake): pass argument of type
11235	snake by const reference.
11236	* include/abg-ir.h (location::operator{==,<}): Likewise.
11237	* include/abg-viz-dot.h (node_base::{node_base,parent_node,child_node}):
11238	Likewise.
11239	* include/abg-viz-svg.h (svg::svg) Likewise.
11240	* src/abg-config.cc (config::config): Member initialization in ctor body.
11241	* src/abg-dwarf-reader.cc (class_decl_sptr::add_or_update_class_type):
11242	Initial value never used.
11243	* src/abg-ir.cc: (decl_base::priv::priv) Member initialization in ctor body,
11244	pass argument of type location by const reference.
11245	(equals): Variable initial value never used.
11246	* src/abg-reader.cc (read_corpus_from_input): Initial variable
11247	value never used.
11248	(build_elf_symbol_db): Use pre-increment.
11249	* src/abg-suppression-priv.h
11250	(suppression_matches_type_location): Pass argument of type
11251	location by const reference.
11252	* src/abg-suppression.cc: Likewise.
11253
112542017-04-11  Ondrej Oprala <ondrej.oprala@gmail.com>
11255
11256	Fix cppcheck error: "Same iterator is used with different containers"
11257	* src/abg-dwarf-reader.cc
11258	(type_or_decl_base_sptr::lookup_artifact_from_per_tu_die_representation):
11259	Fix an error found by cppcheck.
11260
112612017-04-11  Ondrej Oprala <ondrej.oprala@gmail.com>
11262
11263	Clean up scripts/*
11264	* scripts/dot_to_png.sh: Clean up the script according to
11265	shellcheck warnings and remarks.
11266	* scripts/dot_to_svg.sh: Likewise.
11267	* scripts/svg_to_plain_svg.sh: Likewise.
11268	* scripts/svg_to_png_and_pdf.sh: Likewise.
11269
112702017-04-12  Ondrej Oprala <ondrej.oprala@gmail.com>
11271
11272	Fix comparison used instead of an assignment
11273	* src/abg-ir.cc (parse_integral_type): An attempt at clang
11274	compilation has discovered there to be a comparison with
11275	unused result, that apparently should be an assignment.
11276
112772017-04-12  Dodji Seketeli <dodji@redhat.com>
11278
11279	Fix some random deadlock while running fedabipkgidiff in tests
11280	* tools/fedabipkgdiff (abipkgidff): Do not use Popen.communicate()
11281	as it might hang if the data is large.  Rather, busy wait for the
11282	abipkgdiff process to finish and then get its output.
11283
112842017-03-22  Slava Barinov <v.barinov@samsung.com>
11285
11286	Fix types in header to meet sources
11287	* include/abg-fwd.h: Include stdint.h for uint64_t.
11288	(ir::set_data_member_offset): Take uint64_t rather than size_t.
11289	(ir::get_data_member_offset): Return uint64_t rather than size_t.
11290
112912017-03-24  Dodji Seketeli <dodji@redhat.com>
11292
11293	Launch fedabipkgdiff tests first
11294	* tests/Makefile.am: Run the fedabipkgdiff test first.
11295
112962017-03-24  Dodji Seketeli <dodji@redhat.com>
11297
11298	Bug 21296 - Reporting diff of const ref against non-const ref aborts
11299	* include/abg-fwd.h (look_through_no_op_qualified_type): Declare
11300	new function.
11301	* src/abg-ir.cc (look_through_no_op_qualified_type): Define it.
11302	(compute_diff_for_types): Use the new
11303	look_through_no_op_qualified_type here rather than open-coding it.
11304	(equals): In the overload for function_decl::parameter, use the
11305	new look_through_no_op_qualified_type function.
11306	* tests/data/test-diff-dwarf/test40-PR21296-clanggcc.cc: Source
11307	code of the new test inputs.
11308	* tests/data/test-diff-dwarf/test40-PR21296-clanggcc-report0.txt:
11309	New test input.
11310	* tests/data/test-diff-dwarf/test40-PR21296-libgcc.so: New binary
11311	test input.
11312	* tests/data/test-diff-dwarf/test40-PR21296-libclang.so: Likewise.
11313	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs to
11314	the test harness.
11315
113162017-03-05  Chenxiong Qi <cqi@redhat.com>
11317
11318	Bug 20087 - Clean cache before or after ABI comparison
11319	* configure.ac: Require shutil module.
11320	* doc/manuals/fedabipkgdiff.rst: Add document for new option
11321	clean-cache, clean-cache-before, and clean-cache-after.
11322	* tools/fedabipkgdiff (build_commandline_args_parser): Add new
11323	option --clean-cache, --clean-cache-before and
11324	--clean-cache-after.
11325	(diff_local_rpm_with_latest_rpm_from_koji): Delete download
11326	cache directory before or after downloading RPMs.
11327	(diff_latest_rpms_based_on_distros): Likewise.
11328	(diff_two_nvras_from_koji): Likewise.
11329	(diff_from_two_rpm_files): Likewise.
11330	* bash-completion/fedabipkgdiff: Add new options.
11331	* tests/mockfedabipkgdiff.in (get_download_dir): Rewrite to
11332	behave just like the original get_download_dir.
11333	(mock_get_download_dir): Removed.
11334	(DOWNLOAD_CACHE_DIR): New global variable pointing directory
11335	holding packages during tests.
11336	(run_fedabipkgdiff): Mock original get_download_dir with the
11337	rewrite get_download_dir.
11338	* tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests):
11339	Add --clean-cache to run tests to ensure no regression.
11340
113412017-03-17  Dodji Seketeli <dodji@redhat.com>
11342
11343	Shut down a helgrind false positive in the "system" libc call
11344	* tests/test-valgrind-suppressions.supp: Add a suppression that
11345	occurs during an internal libc signal handling occasion.
11346
113472017-03-15  Dodji Seketeli <dodji@redhat.com>
11348
11349	Fix data race on worker::queue::priv::bring_workers_down
11350	* src/abg-workers.cc (worker::wait_to_execute_a_task): Protect the
11351	read of the queue::priv::bring_workers_down down variable with the
11352	queue::priv::tasks_todo_mutex.
11353
113542017-03-07  Dodji Seketeli <dodji@redhat.com>
11355
11356	Bug 21228 - Handle cloning union member functions
11357	* include/abg-ir.h (class_or_union::add_member_function): Move the
11358	class_decl::add_member_function overload declaration into the
11359	class class_or_union class.
11360	(class class_decl): Make the class class_or_union be a friend of
11361	class_decl.
11362	* src/abg-ir.cc (class_decl::add_member_function): Transform the
11363	definition of this overload into ...
11364	(class_or_union::add_member_function): ... this one.  Make sure
11365	that when setting the virtual-ness attributes of the member
11366	function, we are effectively looking at the a function that is a
11367	member of a class.
11368	(function_decl::clone): Do not assert that a member function is
11369	necessarily a member of a class_decl.  It can also a member of a
11370	union_decl!.  So, rather, assert that the scope of the member
11371	function is of type class_or_union.
11372	* tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64.rpm:
11373	New test input RPM.
11374	* tests/data/test-diff-pkg/tbb-2017-9.20170118.fc27.x86_64.rpm:
11375	* tests/data/test-diff-pkg/tbb-debuginfo-2017-8.20161128.fc26.x86_64.rpm:
11376	Likewise.
11377	* tests/data/test-diff-pkg/tbb-debuginfo-2017-9.20170118.fc27.x86_64.rpm:
11378	Likewise.
11379	* tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64--tbb-2017-9.20170118.fc27.x86_64.txt:
11380	New reference test output.
11381	* tests/data/Makefile.am: Add the new test input RPMs to the
11382	source distribution.
11383	* tests/test-diff-pkg.cc (in_out_specs): Take the new input tests
11384	above into account.
11385
113862017-03-03  Dodji Seketeli <dodji@redhat.com>
11387
11388	Consider file path when sorting virtual member functions
11389	* src/abg-ir.cc (virtual_member_function_less_than::operator()):
11390	Take the file path into account in the sorting.
11391	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
11392	Adjust.
11393
113942017-03-03  Dodji Seketeli <dodji@redhat.com>
11395
11396	Fix virtual members sorting to unbreak the build on EL6
11397	* src/abg-ir.cc (virtual_member_function_less_than::operator()):
11398	Update comment.  When two virtual functions have the same virtual
11399	index and one of them has no ELF symbol, then that function is
11400	less than the one with an ELF symbol.
11401	* tests/data/Makefile.am: Remove
11402	test-annotate/{test9-pr18818-clang.so.abi, test11-pr18828.so.abi,
11403	test12-pr18844.so.abi, test16-pr18904.so.abi,
11404	test22-pr19097-libstdc++.so.6.0.17.so.abi}.
11405	* tests/data/test-annotate/test10-pr18818-gcc.so.abi: Remove.
11406	* tests/data/test-annotate/test11-pr18828.so.abi: Likewise.
11407	* tests/data/test-annotate/test12-pr18844.so.abi: Likewise.
11408	* tests/data/test-annotate/test16-pr18904.so.abi: Likewise.
11409	* tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi:
11410	Likewise.
11411	* tests/test-annotate.cc (in_out_specs):  Remove those tests above
11412	which input files have been removed.
11413
114142017-03-02  Dodji Seketeli <dodji@redhat.com>
11415
11416	Make Helgrind suppressions less specific to libgcc_s version
11417	* tests/test-valgrind-suppressions.supp: Make Helgrind
11418	suppressions less specific to libgcc_s version.
11419
114202017-03-02  Dodji Seketeli <dodji@redhat.com>
11421
11422	More Helgrind suppressions
11423	* tests/test-valgrind-suppressions.supp: More specific suppressions.
11424
114252017-03-02  Dodji Seketeli <dodji@redhat.com>
11426
11427	Silence Helgrind reports about exception stack unwinding
11428	* tests/test-valgrind-suppressions.supp: Silence Helgrind reports
11429	about exception stack unwinding.
11430
114312017-03-01  Dodji Seketeli <dodji@redhat.com>
11432
11433	Make the helgrind suppressions less specific
11434	* tests/test-valgrind-suppressions.supp: Make the ostream writting
11435	suppressions be less specific so that they can apply to all the
11436	related false positives.
11437
114382017-03-01  Dodji Seketeli <dodji@redhat.com>
11439
11440	Move test-read-dwarf.cc to abigail::workers
11441	* tests/test-read-dwarf.cc (iospec, spec_lock, write_lock)
11442	(out_abi_base, in_elf_base, in_abi_base): Remove these global
11443	variables.
11444	(handle_in_out_spec): Remove this.
11445	(struct test_task): Write this task that does what
11446	handle_in_out_spec was doing.
11447	(test_task_sptr): Define new typedef.
11448	(main): Remove the pthreads artifacts.  Use the new test_task type
11449	along with the abigail::workers interface.
11450	* tests/test-valgrind-suppressions.supp: Add more helgrind
11451	suppressions for ostream writting false positives.
11452
114532017-02-28  Dodji Seketeli <dodji@redhat.com>
11454
11455	Display the command that failed the runtestfedabipkgdiff.py test
11456	* tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): When
11457	A test fails, display the fedabipkgdiff command that triggered the failure.
11458
114592017-02-24  Dodji Seketeli <dodji@redhat.com>
11460
11461	Make abipkgdiff.cc use the abigail::workers interface
11462	* tools/abipkgdiff.cc: Remove ftw.h, pthread.h, unistd.h, add
11463	fts.h and abg-workers.h.
11464	(verbose, elf_file_paths_tls_key, reports_map, env_map, map_lock)
11465	(arg_lock, prog_options): Remove all these global variables.
11466	(struct package_descriptor): Remove this type.
11467	(pthread_routine_extract_package)
11468	(first_package_tree_walker_callback_fn)
11469	(second_package_tree_walker_callback_fn, pthread_routine_compare)
11470	(pthread_join, pthread_routine_extract_pkg_and_map_its_content):
11471	Remove these functions.
11472	(options::{num_workers, verbose}): Define new data members.
11473	(options::options): Initialize the new verbose and num_workers data members.
11474	(package::erase_extraction_directory)
11475	(erase_created_temporary_directories_parent): Take the program
11476	options in parameter.  Don't use the global verbose variable
11477	anymore.
11478	(package::erase_extraction_directories)
11479	(erase_created_temporary_directories, extract_package): Take the
11480	program options in parameter.
11481	(extract_rpm, extract_deb, extract_tar): Likewise.  And don't use
11482	the global verbose variable anymore.
11483	(compare): Don't use the global verbose variable anymore.  Use the
11484	new compare_task type along with the abigail::workers::queue type.
11485	(pkg_extraction_task, pkg_prepare_task, compare_task)
11486	(comparison_done_notify): Define new classes.
11487	(maybe_update_vector_of_package_content): Define new static
11488	function.
11489	(create_maps_of_package_content): Don't take the ftw_cp_type
11490	anymore.  Don't use the global verbose variable anymore.  Use the
11491	fts_{open,read,close} functions, rather than the ftw one.
11492	(extract_package_and_map_its_content): Don't use pthreads anymore.
11493	Use the new pkg_extraction_task type created along with the
11494	abigail::workers::queue type.
11495	(prepare_packages): Don't use pthreads anymore.  Use the new
11496	pkg_prepare_task type along with the abigail::workers::queue type.
11497	(elf_size_is_greater): Adjust to use
11498	abigail::workers::queue::tasks, rather than the previous
11499	compaer_args_sptr type.
11500	(parse_command_line): Adjust to stop using the global verbose
11501	variable.
11502	(main): Remove use of global variables prog_options and also the
11503	packages variable.
11504	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
11505	Adjust.
11506	* tests/data/test-diff-pkg/dirpkg-0-report-0.txt: Likewise.
11507	* tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt:
11508	Likewise.
11509	* tests/data/test-diff-pkg/test-rpm-report-0.txt: Likewise.
11510	* tests/data/test-diff-pkg/test-rpm-report-1.txt: Likewise.
11511	* tests/data/test-diff-pkg/test-rpm-report-2.txt: Likewise.
11512	* tests/data/test-diff-pkg/test-rpm-report-3.txt: Likewise.
11513	* tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt:
11514	Likewise.
11515	* tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt:
11516	Likewise.
11517	* tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt:
11518	Likewise.
11519	* tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt:
11520	Likewise.
11521	* tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt:
11522	Likewise.
11523
115242017-02-24  Dodji Seketeli <dodji@redhat.com>
11525
11526	Do not ignore valgrind checks returning an error
11527	* autoconf-archive/ax_valgrind_check.m4 (check-valgrind): Don't
11528	ignore errors.
11529
115302017-02-24  Dodji Seketeli <dodji@redhat.com>
11531
11532	Add a "make check-valgrind-helgrind-recursive" target
11533	* tests/Makefile.am (check-valgrind-helgrind-recursive): New
11534	target to run the tests recursively under the control of
11535	Valgrind's Helgrind tool.
11536	* tests/test-valgrind-suppressions.supp: Update this suppression
11537	file with suppressions for Helgrind.
11538
115392017-02-24  Dodji Seketeli <dodji@redhat.com>
11540
11541	Several fixes and enhancements to abigail::workers
11542	* Don't try to schedule a task if the pointer to the task is nil
11543	* Fix a data race when bringing workers (of a queue) down
11544	* Always try to wake up all waiting threads when bringing down queue
11545	workers.
11546	* Fix a data race when accessing the queue condition variable
11547	* Fix a data race when notifying listeners about the end of the job
11548	performed by the task.
11549	Enhancements
11550	============
11551	* Pass the "task done" notifier by reference, to the worker queue.
11552	Without this, the worker queue needs to copy the "task done" notifier
11553	by value.  This implies that user code needs to provide task done
11554	notifier instances that come with potentially complicated copy
11555	constructors.  By passing it by reference and by just re-using the
11556	notifier from the user code, we do away with the need for copying
11557	altogether.  This also fixes some latent copying bugs.
11558	* Add a workers::queue::schedule_tasks() method
11559	This allows user code to schedule a vector of tasks at once.
11560	* make workers::queue::get_completed_tasks() return a non-const vector
11561	This enables user code to sort the completed tasks as they wish.
11562	* include/abg-workers.h (queue::tasks_type): New typedef.
11563	(queue::queue): Pass task_done_notify by reference.
11564	(queue::schedule_tasks): Declare new member function.
11565	(queue::get_completed_tasks): Return non-const vector.
11566	* src/abg-workers.cc (queue::priv::default_notify): New data
11567	member.
11568	(queue::priv::notify): Make this data member be a reference.
11569	(queue::priv::priv): Initialize the notify data member to either
11570	the new default_notify (if no notifier is provided by the
11571	constructor) or to the notifier provided by the constructor.
11572	(queue::priv::schedule_task): Do not schedule a nil task.  Update
11573	comment.
11574	(queue::priv::schedule_tasks): Add a new member function.
11575	(queue::priv::do_bring_workers_down): Update comment.  Protect
11576	access to "bring_workers_down" with tasks_todo_mutex to prevent a
11577	data race.  Call pthread_cond_broadcast on the queue_cond
11578	unconditionaly to prevent some worker threads to keep waiting for
11579	ever. Also, protect the access to the queue_cond by the
11580	queue_cond_mutex to precent a data race.
11581	(queue::queue): Pass the notifier by reference. Update comment.
11582	(queue::schedule_task): Update comment.
11583	(queue::schedule_tasks): Define new member function.
11584	(queue::wait_for_workers_to_complete): Update comment.
11585	(queue::get_completed_tasks): Return a non-const vector. Update
11586	comment.
11587	(worker::wait_to_execute_a_task): Update several comments. Make
11588	the execution of the notification code to be synchronized (on the
11589	tasks_done_mutex).
11590
115912017-02-14  Dodji Seketeli <dodji@redhat.com>
11592
11593	Fix typo in help string of abipkgdiff
11594	* tools/abipkgdiff.cc (display_usage): Remove erroneous end line.
11595
115962017-01-23  Dodji Seketeli <dodji@redhat.com>
11597
11598	fedabipkgdiff refuses to compare packages with the same release number
11599	* tools/fedabipkgdiff (RPM.is_peer): Update comment.  Fix logic.
11600	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-0.39.1-1.fc22.x86_64.rpm:
11601	New test input file.
11602	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-debuginfo-0.39.1-1.fc22.x86_64.rpm: Likewise.
11603	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-devel-0.39.1-1.fc22.x86_64.rpm: Likewise.
11604	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-0.39.90-1.fc22.x86_64.rpm: Likewise.
11605	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-debuginfo-0.39.90-1.fc22.x86_64.rpm: Likewise.
11606	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-devel-0.39.90-1.fc22.x86_64.rpm:
11607	Likewise.
11608	* tests/data/test-fedabipkgdiff/vte291-0.39.1-1.fc22.x86_64--vte291-0.39.90-1.fc22.x86_64-report-0.txt: Likewise.
11609	* tests/data/Makefile.am: Add the new test input data to source
11610	distribution.
11611	* tests/mockfedabipkgdiff.in: Update the package and build
11612	information to add the new vte291-0.39.1-1.fc22.x86_64.rpm and
11613	vte291-0.39.90-1.fc22.x86_64.rpm packages (as well as their devel
11614	and debuginfo packages) into the "mock" Koji build database.
11615	* tests/runtestfedabipkgdiff.py.in:  Make this test harness run
11616	over the two aforementioned packages.
11617
116182017-01-24  Dodji Seketeli <dodji@redhat.com>
11619
11620	Add missing tests input files to distribution files
11621	* tests/data/Makefile.am: Add three missing test input files to
11622	the source distribution tarball.  Renamed
11623	test-fedabipkgdiff/test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt
11624	into
11625	test-fedabipkgdiff/test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt.
11626	* tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
11627	Renamed
11628	test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt
11629	into
11630	test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt.
11631
116322017-01-24  Dodji Seketeli <dodji@redhat.com>
11633
11634	Add missing new line to an error message of runtestfedabipkgdiff.py
11635	* tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): Add
11636	missing new line to an error message.
11637
116382017-01-24  Dodji Seketeli <dodji@redhat.com>
11639
11640	Fix silent failure of tests/runtestfedabipkgdiff.py
11641	* tests/mockfedabipkgdiff.in (run_fedabipkgdiff): Patch
11642	fedabipkgdiff.DEFAULT_KOJI_TOPURL instead of
11643	fedabipkgdiff.DEFAULT_KOJI_TOPDIR.
11644	* tests/runtestfedabipkgdiff.py.in (main): Properly return 0 upon
11645	success, 1 otherwise.
11646
116472017-01-14  Dodji Seketeli <dodji@redhat.com>
11648
11649	Misc style fixes
11650	* include/abg-ir.h (class_or_union): Fix indentation.
11651	* src/abg-dwarf-reader.cc (get_die_pretty_representation): Add new
11652	line.
11653	* src/abg-ir.cc (struct class_decl::priv): Fix indentation.
11654	(virtual_member_function_less_than::operator()): Fix a typo in a
11655	comment.
11656
116572017-01-13  Dodji Seketeli <dodji@redhat.com>
11658
11659	Bug 20476 - Compare virtual member functions when comparing classes
11660	* include/abg-ir.h (class_decl::get_biggest_vtable_offset):
11661	Declare new member function.
11662	* src/abg-ir.cc (virtual_member_function_less_than::operator()):
11663	Either compare the symbol id strings if the functions have
11664	symbols or just compare their pretty representations.
11665	(class_decl::get_biggest_vtable_offset): Define new member
11666	function.
11667	(methods_equal_modulo_elf_symbol)
11668	(method_matches_at_least_one_in_vector): New static methods.
11669	(equals): In the overload for classes, compare the virtual member
11670	functions while comparing classes.
11671	* src/abg-comparison.cc (represent): In the overload for
11672	method_decl_sptr, fix the way we compute the highest vtable offset
11673	number for a give class_decl.
11674	(class_decl::ensure_lookup_tables_populated): Don't forget added
11675	and removed virtual member functions in the report for changed
11676	classes.
11677	* tests/data/test-diff-dwarf/libtest41-PR20476-hidden-old.so: New
11678	test binary input file.
11679	* tests/data/test-diff-dwarf/libtest41-PR20476-hidden-new.so: Likewise.
11680	* tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt:
11681	New reference output.
11682	* tests/data/Makefile.am: Add the new test material above to the
11683	source distribution.
11684	* tests/test-diff-dwarf.cc (in_out_spec): Add the new tests
11685	here.
11686	* tests/data/test-annotate/test10-pr18818-gcc.so.abi: Adjust.
11687	* tests/data/test-annotate/test11-pr18828.so.abi: Adjust.
11688	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
11689	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
11690	* tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
11691	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
11692	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
11693	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
11694	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
11695	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
11696	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
11697	Adjust.
11698	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
11699	Adjust.
11700	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
11701	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
11702	Adjust.
11703
117042017-02-14  Dodji Seketeli <dodji@redhat.com>
11705
11706	Fix indentation in src/abg-writer.cc
11707	* src/abg-writer.cc (annotate): Fix indentation.
11708
117092017-02-13  Dodji Seketeli <dodji@redhat.com>
11710
11711	Adjust reference output of test-annotate
11712	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust this
11713	reference output.
11714
117152017-02-13  Dodji Seketeli <dodji@redhat.com>
11716
11717	Fix help string for --header-dirs
11718	* tools/abidw.cc (display_usage): Fix patch -> path typo.
11719
117202017-02-13  Dodji Seketeli <dodji@redhat.com>
11721
11722	Make abidw --headers-dir work with the --out-file option
11723	* tools/abidw.cc (parse_command_line): Don't require an empty
11724	output file when parsing the --headers-dir option.  This was a
11725	thinko.
11726
117272017-01-17  Ondrej Oprala <ondrej.oprala@gmail.com>
11728
11729	Bug 20970 - Add a --annotate option to abidw
11730	* doc/manuals/abidiff.rst: Document the '--no-corpus-path'
11731	option.
11732	* doc/manuals/abidw.rst: Document the '--no-corpus-path'
11733	and '--annotate' options.
11734	* include/abg-libxml-utils.h ({un,}escape_xml_comment): Add
11735	new function declarations.
11736	* include/abg-writer.h: Add new annotate functions
11737	(write_{translation_unit,corpus_to_{archive,native_xml_file}}):
11738	Add an optional "annotate" parameter defaulting to "false".
11739	* src/abg-libxml-utils.cc ({un,}escape_xml_comment): Add
11740	new function definitions.
11741	* src/abg-writer.cc (annotate): Define new templatized function
11742	and specialize it for necessary cases.
11743	* tests/Makefile.am: Add runtestannotate as a new test.
11744	* tests/data/Makefile.am: Add paths to below reference test
11745	outputs.
11746	* tests/data/test-annotate/libtest23.so.abi: New reference test
11747	output.
11748	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
11749	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
11750	* tests/data/test-annotate/test0.abi: Likewise.
11751	* tests/data/test-annotate/test1.abi: Likewise.
11752	* tests/data/test-annotate/test10-pr18818-gcc.so.abi: Likewise.
11753	* tests/data/test-annotate/test11-pr18828.so.abi: Likewise.
11754	* tests/data/test-annotate/test12-pr18844.so.abi: Likewise.
11755	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
11756	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
11757	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
11758	* tests/data/test-annotate/test16-pr18904.so.abi: Likewise.
11759	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
11760	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
11761	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
11762	* tests/data/test-annotate/test2.so.abi: Likewise.
11763	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
11764	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
11765	* tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
11766	* tests/data/test-annotate/test3.so.abi: Likewise.
11767	* tests/data/test-annotate/test4.so.abi: Likewise.
11768	* tests/data/test-annotate/test5.o.abi: Likewise.
11769	* tests/data/test-annotate/test6.so.abi: Likewise.
11770	* tests/data/test-annotate/test7.so.abi: Likewise.
11771	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
11772	* tests/data/test-annotate/test9-pr18818-clang.so.abi: Likewise.
11773	* tests/test-annotate.cc: New test for ABIXML annotations.
11774	* tools/abidiff.cc: Add the new option '--no-corpus-path'.
11775	* tools/abidw.cc: Likewise. Also add the '--annotate' option.
11776	reviews round 1
11777
117782017-01-20  Dodji Seketeli <dodji@redhat.com>
11779
11780	Fix test-diff-pkg after commit 2dcc606
11781	* tests/test-diff-pkg.cc (in_out_specs): Fix paths to spice-server
11782	packages.
11783
117842017-01-20  Dodji Seketeli <dodji@redhat.com>
11785
11786	Add --harmless option to abipkgdiff
11787	* doc/manuals/abidiff.rst: Fix a typo.
11788	* doc/manuals/abipkgdiff.rst: Document the --harmless option.
11789	* tools/abipkgdiff.cc: Update copyright year.
11790	(options::show_harmless_changes): Add new data member.
11791	(options::options): Initialize the new data member.
11792	(display_usage): Add a help string for the new --harmless option.
11793	(parse_command_line): Parse the new --harmless option.
11794	(set_diff_context_from_opts): Configure the diff context
11795	accordingly, if the user provided the --harmless option.
11796
117972017-01-20  Dodji Seketeli <dodji@redhat.com>
11798
11799	Fix suppression category propagation in diff node graph
11800	* include/abg-comparison.h (diff::get_class_of_equiv_category):
11801	Declare new member function.
11802	* src/abg-comparison.cc: Update copyright year.
11803	(diff::get_class_of_equiv_category): Define new member function.
11804	(suppression_categorization_visitor::visit_end): When considering
11805	children nodes category for propagation, consider the category of
11806	the class of equivalence of children nodes.
11807	* spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package.
11808	* spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise.
11809	* spice-server-0.12.4-19.el7.x86_64.rpm: Likewise.
11810	* spice-server-0.12.8-1.el7.x86_64.rpm: Likewise.
11811	* spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise.
11812	* spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise.
11813	* spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
11814	New reference test output.
11815	* spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise.
11816	* spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
11817	* tests/data/Makefile.am: Add the new test material above to
11818	source distribution.
11819	* tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
11820	to the list of packages to test.
11821
118222017-01-18  Dodji Seketeli <dodji@redhat.com>
11823
11824	Bug 21058 - abipkgdiff wrongly drops non-public types
11825	* doc/manuals/abidiff.rst (--dont-drop-private-types): Remove documentation.
11826	(--drop-private-types): Document this new option.
11827	* src/abg-tools-utils.cc: Update copyright notice
11828	(handle_fts_entry): On the generated suppression specification, do
11829	not set the flag to drop matched types.  Also, don't match types
11830	defined in files which patch start with "/usr/include/".
11831	* tools/abidiff.cc (options::options): Initialize the
11832	drop_private_types data member to false.
11833	(display_usage): Remove usage string for
11834	--dont-drop-private-types.  Add a new one for
11835	--drop-private-types.
11836	(parse_command_line): Don't part --dont-drop-private-types,
11837	rather, parse --drop-private-types.
11838	(set_suppressions): When the suppression for private types is
11839	generated, if --drop-private-types was provided, then instruct the
11840	suppression to drop matched types.
11841	* tools/abipkgdiff.cc (options::drop_private_types): New option.
11842	(options::options): Initialize the new drop_private_types data
11843	member to false.
11844	(display_usage): Add a usage string for --drop-private-types.
11845	(parse_command_line): Parse the new --drop-private-types option.
11846	(maybe_create_private_types_suppressions): Don't take just a
11847	package, but a package_descriptor because the latter carries the
11848	options.  So when the user used the --drop-private-types option,
11849	make the generated private types suppression to drop matched
11850	types.
11851	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
11852	Adjust.
11853	* tests/test-diff-suppr.cc (in_out_specs): Likewise.
11854
118552017-01-18  Dodji Seketeli <dodji@redhat.com>
11856
11857	Fix some include logic in abg-suppression.cc
11858	* src/abg-suppression.cc: Update copyright notice. Fix include
11859	files logic.
11860
118612017-01-16  Dodji Seketeli <dodji@redhat.com>
11862
11863	Support virtual member functions with vtable offset not yet set
11864	* include/abg-fwd.h (member_function_has_vtable_offset): Declare
11865	new function.
11866	(get_member_function_vtable_offset): Return a ssize_t, not a
11867	size_t.
11868	(set_member_function_vtable_offset): Take a ssize_t, not a size_t.
11869	* include/abg-ir.h (class_decl::virtual_mem_fn_map_type): Adjust
11870	the map typedef to make it take ssize_t as the type of the key.
11871	(mem_fn_context_rel::vtable_offset_in_bits_): Make this data
11872	member be of ssize_t type, not size_t.
11873	(mem_fn_context_rel::mem_fn_context_rel): Initialize the
11874	vtable_offset_in_bits_ data member to -1.
11875	* src/abg-ir.cc (member_function_has_vtable_offset): Define new
11876	function.
11877	(get_member_function_vtable_offset): Return a ssize_t, not a
11878	size_t.
11879	(set_member_function_vtable_offset): Take a ssize_t, not a size_t.
11880	* src/abg-dwarf-reader.cc (die_virtual_function_index): Take an
11881	int64_t& rather than a uint64_t&.
11882	(finish_member_function_reading): Don't set the vtable offset if
11883	it's -1.
11884	* src/abg-reader.cc (build_class_decl): Likewise.
11885
118862017-01-14  Dodji Seketeli <dodji@redhat.com>
11887
11888	[comparison engine] Don't crash when the context is null
11889	* src/abg-comparison.cc
11890	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER): Guard against
11891	null context.
11892	(diff::is_filtered_out): Likewise.
11893
118942017-01-14  Dodji Seketeli <dodji@redhat.com>
11895
11896	[dwarf reader] Don't abort when trying to canonicalize a non-type
11897	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Don't abort
11898	when trying to canonicalize a decl.
11899
119002017-01-14  Dodji Seketeli <dodji@redhat.com>
11901
11902	[dwarf reader] properly separate function decls and types in lookup
11903	* src/abg-dwarf-reader.cc
11904	(read_context::associate_die_to_artifact_by_repr_internal):
11905	Choose the right type of representation depending on if we are
11906	associating a type or a decl.
11907	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
11908	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
11909	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
11910	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
11911	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
11912	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
11913	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
11914	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
11915	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
11916	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
11917	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
11918	Adjust.
11919	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
11920	Adjust.
11921	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
11922	Adjust.
11923	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
11924	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
11925	Adjust.
11926	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
11927
119282017-01-14  Dodji Seketeli <dodji@redhat.com>
11929
11930	[dwarf reader] Allow updating and de-duplicating member functions
11931	* src/abg-dwarf-reader.cc (add_or_update_class_type): Register
11932	member functions for lookup by member function DIE representation.
11933
119342017-01-14  Dodji Seketeli <dodji@redhat.com>
11935
11936	[dwarf reader] Do not over de-duplicate function *definitions*
11937	* src/abg-dwarf-reader.cc
11938	(build_or_get_fn_decl_if_not_suppressed): Do try to de-duplicate a
11939	function if it's to be completed.
11940
119412017-01-13  Dodji Seketeli <dodji@redhat.com>
11942
11943	[dwarf reader] Fix pretty printing static methods from DWARF
11944	* src/abg-dwarf-reader.cc
11945	(die_return_and_parm_names_from_fn_type_die): Take a new
11946	'is_static' parameter.
11947	(die_qualified_type_name, die_pretty_print_type): Adjust calling
11948	die_return_and_parm_names_from_fn_type_die.
11949	(die_function_signature): Likewise.  Also, do not forget to print
11950	the first parameter for a static method.
11951
119522017-01-13  Dodji Seketeli <dodji@redhat.com>
11953
11954	Handle several virtual member functions having the same vtable offset
11955	* include/abg-ir.h (class_or_union::virtual_mem_fn_map_type):
11956	Define new typedef.
11957	(class_decl::get_virtual_mem_fns_map): Declare new accessor.
11958	* src/abg-ir.cc (class_decl::priv::virtual_mem_fns_map_): New data
11959	member.
11960	(class_decl::get_virtual_mem_fns_map): Define new accessor.
11961	(fixup_virtual_member_function): Populate the new virtual member
11962	functions map.
11963	(class_decl::on_canonical_type_set): Sort the virtual member
11964	function vectors stored in the new virtual member functions map.
11965	(class_decl::add_member_function): Call
11966	set_member_function_is_virtual *after* calling
11967	set_member_function_vtable_offset because the former updates the
11968	virtual function map, so it needs the vtable offset.
11969	* src/abg-dwarf-reader.cc (finish_member_function_reading):
11970	Likewise.
11971	* src/abg-reader.cc (build_class_decl): Likewise.
11972
119732017-01-13  Dodji Seketeli <dodji@redhat.com>
11974
11975	Speed up pretty representing (function) types
11976	* include/abg-ir.h (type_base::get_cached_pretty_representation):
11977	Declare new function.
11978	(function_type::get_cached_name): Likewise.
11979	* src/abg-ir.cc (get_method_type_name): Use the new
11980	type_base::get_cached_pretty_representation function.
11981	(type_base::priv::{internal_cached_repr_, cached_repr_}): Add new
11982	data members.
11983	(function_type::priv::{internal_cached_name_, cached_name_}):
11984	Likewise.
11985	(type_base::get_cached_pretty_representation): Define new
11986	function.
11987	(function_type::get_cached_name): Likewise.
11988	(type_base::get_canonical_type_for): Call
11989	type_base::get_cached_pretty_representation here, so the internal
11990	representation is cached right before canonicalization.
11991	(function_type::{mark_as_being_compared, unmark_as_being_compared,
11992	comparison_started}): Uset he new type_base::get_cached_name to
11993	speed up function type name retrieval.
11994
119952017-01-13  Dodji Seketeli <dodji@redhat.com>
11996
11997	Add missing deep comparison operators for {function, method}_decl_sptr
11998	* include/abg-ir.h (operator==): Declare two new overloads for
11999	function_decl_sptr an method_decl_sptr.
12000	* src/abg-ir.cc (operator==): Define two new overloads for
12001	function_decl_sptr an method_decl_sptr.
12002
120032017-01-16  Dodji Seketeli <dodji@redhat.com>
12004
12005	Fix performance regression while analyzing libjvm.so
12006	* include/abg-ir.h ({type_base,
12007	class_decl}::on_canonical_type_set): Declare new virtual member
12008	function.
12009	* src/abg-ir.cc (type_base::on_canonical_type_set): Define new
12010	virtual member function that does nothing.
12011	(class_decl::on_canonical_type_set): Define new virtual member
12012	function that sorts the virtual member functions of class_decl.
12013	(canonicalize): Invoke type_base::on_canonical_type_set when the
12014	canonical type is set.
12015	(fixup_virtual_member_function): Don't sort virtual member
12016	functions here.
12017	* src/abg-dwarf-reader.cc (finish_member_function_reading): Do not
12018	sort virtual member functions here.
12019	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
12020	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
12021	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
12022	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
12023	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
12024
120252017-01-14  Dodji Seketeli <dodji@redhat.com>
12026
12027	Update copyright notice for abg-fwd.h, abg-ir.h and test-abidiff.cc
12028	* include/abg-fwd.h: Adjust copyright.
12029	* include/abg-ir.h: Likewise.
12030	* tests/test-abidiff.cc: Likewise.
12031
120322017-01-16  Dodji Seketeli <dodji@redhat.com>
12033
12034	Remove unused functions from abg-ir.cc
12035	* src/abg-ir.cc (convert_node_to_decl): Remove specializations for
12036	class_decl_sptr, type_base_sptr and var_decl_sptr.
12037
120382016-11-10  Dodji Seketeli <dodji@redhat.com>
12039
12040	Support Linux Kernel ABI whitelist files
12041	* include/abg-suppression.h
12042	(function_suppression::function_suppression): Make the declaration
12043	of the default constructor public.
12044	* src/abg-suppression-priv.h (function_suppression::priv::priv):
12045	Declare a default constructor.
12046	* src/abg-suppression.cc
12047	(function_suppression::function_suppression): Define default
12048	constructor.
12049	* include/abg-tools-utils.h
12050	(gen_suppr_spec_from_kernel_abi_whitelist): Declare new function.
12051	* src/abg-tools-utils.cc
12052	(gen_suppr_spec_from_kernel_abi_whitelist): Define new function.
12053	* tools/abidiff.cc (options::kernel_abi_whitelist_paths):
12054	(display_usage): Display a help string for the new
12055	--linux-kernel-abi-whitelist option.
12056	(parse_command_line): Parse the --linux-kernel-abi-whitelist from
12057	the command line.
12058	(maybe_check_suppression_files): Check the presence of the kernel
12059	abi whitelist files.
12060	(set_suppressions): Generate suppression specifications from the
12061	whitelist files.
12062
120632016-10-10  Dodji Seketeli <dodji@redhat.com>
12064
12065	Support Linux Kernel binaries
12066	* include/abg-dwarf-reader.h (create_read_context): Take a new
12067	flag to say if the context is to read an ELF binary in linux
12068	kernel mode.
12069	* src/abg-dwarf-reader.cc (typedef address_set_type)
12070	(address_set_sptr): New typedefs.
12071	(get_binary_load_address):  The load address of the binary is
12072	the load address specified by the program header that is at the
12073	smallest offset; not by the program header that is at offset zero.
12074	(read_context::{ksymtab_section_, ksymtab_gpl_section_,
12075	linux_exported_fn_syms_, linux_exported_var_syms_,
12076	linux_exported_gpl_fn_syms_, linux_exported_gpl_var_syms_,
12077	load_in_linux_kernel_mode_}): New data members.
12078	(read_context::read_context): Initialize ksymtab_section_,
12079	ksymtab_gpl_section_ and load_in_linux_kernel_mode_.
12080	(read_context::{find_symbol_table_section, find_opd_section,
12081	lookup_elf_fn_symbol_from_address,
12082	lookup_elf_var_symbol_from_address, get_function_address,
12083	get_variable_address}): Make these const.
12084	(read_context::{find_ksymtab_section, find_ksymtab_gpl_section,
12085	lookup_elf_symbol_from_address, function_symbol_is_exported,
12086	variable_symbol_is_exported, linux_exported_fn_syms,
12087	create_or_get_linux_exported_fn_syms, linux_exported_var_syms,
12088	create_or_get_linux_exported_var_syms, linux_exported_gpl_fn_syms,
12089	linux_exported_gpl_var_syms,
12090	create_or_get_linux_exported_gpl_fn_syms,
12091	linux_exported_gpl_var_syms,
12092	create_or_get_linux_exported_gpl_var_syms, architecture_word_size,
12093	load_kernel_symbol_table, load_ksymtab_symbols,
12094	load_ksymtab_gpl_symbols,
12095	load_linux_specific_exported_symbol_maps,
12096	load_in_linux_kernel_mode}): New member functions.
12097	(read_context::read_int_from_array_of_bytes): Factorize this
12098	new member function out of ...
12099	(read_context::{lookup_ppc64_elf_fn_entry_point_address}):
12100	... this.  Make this function const too.
12101	(read_context::read_uint64_from_array_of_bytes): New function.
12102	Uses read_int_from_array_of_bytes above.
12103	(read_context::{fun_entry_addr_sym_map_sptr}): Try to load symbol
12104	maps only when it's necessary.
12105	(read_context::elf_architecture_is_big_endian): Fix logic.
12106	(read_context::{var_addr_sym_map}):  Express the const variant in
12107	terms of the non-const one.  In the non-const one, load the map
12108	only when necessary.
12109	(read_context::load_symbol_maps_from_symtab_section): Renamed
12110	load_symbol_maps into this.
12111	(read_context::is_linux_kernel_binary): Define new member
12112	function.
12113	(read_context::{function, variable}_symbol_is_exported): If we are
12114	not prevented from considering loading in linux kernel mode, then
12115	just looking at a linux kernel binary makes us consider the
12116	special kernel sections.
12117	(read_debug_info_into_corpus): Likewise.
12118	(build_ir_node_from_die): Take a new flag that says if the ir node
12119	is a declaration required by another concrete IR node.
12120	(enum read_context::kernel_symbol_table_kind): New enum.
12121	(read_context::load_symbol_maps): Support loading linux kernel
12122	specific sections too.
12123	(build_var_decl): Use the new
12124	read_context::variable_symbol_is_exported.
12125	(function_is_suppressed): Suppress non-member functions or
12126	variables that are not declarations and that have no symbol.
12127	(variable_is_suppressed, build_var_decl_if_not_suppressed): Take a
12128	new flag that says if the variable is a declaration required by a
12129	concrete variable.  If non member variable that is a declaration
12130	is not the specification of another concrete variable, then it's
12131	suppressed.
12132	(add_fn_symbols_to_map, add_var_symbols_to_map): New function
12133	definitions.
12134	(read_debug_info_into_corpus): If we are reading linux kernel or
12135	linux kernel modules, only set explicitely exported symbols (in
12136	the linux kernel binary sense) as exported function or variable
12137	symbols.
12138	(create_read_context): Take a new flag to say if the context is to
12139	read an ELF binary in linux kernel mode.
12140	* tools/abidiff.cc (options::options): Initialize
12141	options::linux_kernel_mode to true.
12142	(display_usage): Display usage of the --no-linux-kernel-mode option.
12143	(parse_command_line): Parse the --no-linux-kernel-mode option.
12144	* tools/abidw.cc (options::options): Initialize
12145	options::linux_kernel_mode to true.
12146	(display_usage): Display usage of --no-linux-kernel-mode option.
12147	(parse_command_line): Parse the --no-linux-kernel-mode option.
12148	* doc/manuals/abidiff.rst: Document the new --no-linux-kernel-mode
12149	options.
12150	* doc/manuals/abidw.rst: Likewise.
12151	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
12152	Adjust.
12153	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
12154	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
12155	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
12156	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
12157	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
12158	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
12159	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
12160	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
12161	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
12162	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
12163	Likewise.
12164	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
12165	Likewise.
12166	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
12167	Likewise.
12168	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
12169	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
12170	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
12171	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
12172	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
12173
121742017-01-06  Dodji Seketeli <dodji@redhat.com>
12175
12176	Add debug routines to dump locations to a stream
12177	* src/abg-writer.cc (dump_location): Define new function and one
12178	overload.
12179	(dump_decl_location): Re-write in terms of the new dump_location.
12180
121812017-01-06  Dodji Seketeli <dodji@redhat.com>
12182
12183	Better de-duplicate classes, unions, enums in non-odr contexts
12184	* src/abg-dwarf-reader.cc (build_enum_type)
12185	(add_or_update_class_type, add_or_update_union_type): When the ODR
12186	is not relevant, use the location of the type to detect if two
12187	enum, class or union types of the same name actually represent the
12188	same type.
12189
121902017-01-06  Dodji Seketeli <dodji@redhat.com>
12191
12192	Adjust some reference outputs of the test-read-dwarf test harness
12193	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
12194	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
12195
121962017-01-04  Ondrej Oprala <ondrej.oprala@gmail.com>
12197
12198	Bug 18754 - Add the "--no-added-syms" option to abidiff
12199	* doc/manuals/abidiff.rst: Document the new --no-added-syms
12200	option.
12201	* tools/abidiff.cc (struct options): Add show_added_syms and
12202	set it to true by default.
12203	(display_usage): Document the new options --no-added-syms. If
12204	this is the only suppression option specified, it is equivalent
12205	to specifying --show_{changed,deleted}_{fns,vars} as arguments
12206	to abidiff. If any of those options are specified before
12207	--no-added-syms, then it has no effect.
12208	(parse_command_line): Parse the new option and set
12209	show_added_{fns,vars,syms} and show_all_{fns,vars} to false if
12210	--no-added-syms is specified.
12211	* tests/test-diff-filter.cc: Add a test for the new option.
12212	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
12213	Reference results for the new test.
12214	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
12215	Likewise.
12216	* tests/data/Makefile.am: Add the above test files to the list of
12217	test data.
12218
122192017-01-05  Dodji Seketeli <dodji@redhat.com>
12220
12221	Update copyright year on a bunch of files
12222	* include/abg-corpus.h: Update copyright year to 2017.
12223	* src/abg-dwarf-reader.cc: Likewise.
12224	* src/abg-ir.cc: Likewise.
12225	* src/abg-reader.cc: Likewise.
12226	* src/abg-writer.cc: Likewise.
12227	* tools/abicompat.cc: Likewise.
12228	* tools/abidw.cc: Likewise.
12229
122302017-01-05  Dodji Seketeli <dodji@redhat.com>
12231
12232	[apidoc] Allow brief description at the top of class description pages
12233	* doc/api/libabigail.doxy: Don't disable "brief member desc".
12234
122352017-01-05  Dodji Seketeli <dodji@redhat.com>
12236
12237	Misc style fixes
12238	* include/abg-corpus.h: Remove corpus_sptr typedef. It's in
12239	abg-fwd.h now.
12240	* src/abg-ir.cc: Remove some unnecessary vertical space.
12241	* src/abg-reader.cc (build_function_decl): Cleanup some asserts.
12242	* src/abg-writer.cc (write_function_type): Each the inspection of
12243	the type id from within the debugger.
12244
122452017-01-05  Dodji Seketeli <dodji@redhat.com>
12246
12247	Misc comments and apidoc fixes
12248	* src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Fix
12249	typo in comment.
12250	* tools/abicompat.cc (perform_compat_check_in_weak_mode): Better
12251	comments.
12252	* tools/abidw.cc (dislay_usage): Fix white spaces.
12253	Conflicts:
12254	tools/abidw.cc
12255
122562017-01-05  Dodji Seketeli <dodji@redhat.com>
12257
12258	Speedup set_member_is_static
12259	* src/abg-ir.cc (set_member_is_static): When comparing data
12260	members, consider only their names.
12261
122622017-01-05  Dodji Seketeli <dodji@redhat.com>
12263
12264	Avoid unnecessary updates to type lookup maps
12265	* src/abg-ir.cc (class_or_union::get_is_declaration_only): Try
12266	to update the type maps only when a declaration-only class
12267	type is now defined.
12268
122692017-01-05  Dodji Seketeli <dodji@redhat.com>
12270
12271	Update tests/data/test-read-dwarf/*.abi files
12272	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
12273	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
12274	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
12275	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
12276	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
12277	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
12278	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
12279	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
12280	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
12281	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
12282	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
12283	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
12284	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
12285	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
12286
122872017-01-05  Dodji Seketeli <dodji@redhat.com>
12288
12289	Update tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi
12290	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
12291	Update.
12292
122932017-01-05  Dodji Seketeli <dodji@redhat.com>
12294
12295	[abixml writer] Make sure all function types are emitted
12296	* src/abg-writer.cc (write_translation_unit): Fix logic to avoid
12297	forgetting referenced function types.
12298
122992017-01-05  Dodji Seketeli <dodji@redhat.com>
12300
12301	[abixml writer] Fix comparison of pointer to types
12302	* src/abg-writer.cc (type_ptr_comp::operator()): Do not add an
12303	empty type id string to the type -> type id map when the entry for
12304	a given type is empty.
12305
123062017-01-05  Dodji Seketeli <dodji@redhat.com>
12307
12308	[dwarf-reader] Don't early canonicalize function types
12309	* src/abg-dwarf-reader.cc (maybe_canonicalize_type):
12310	Late-canonicalize function types.
12311	signed-off-by: Dodji Seketeli <dodji@redhat.com>
12312
123132017-01-05  Dodji Seketeli <dodji@redhat.com>
12314
12315	Fix qualified name caching for some types
12316	* src/abg-ir.cc ({qualified, pointer,
12317	array}_type_def::get_qualified_name): Don't cache internal and
12318	non-internal qualified name when the type is not canonicalized.
12319
123202017-01-04  Dodji Seketeli <dodji@redhat.com>
12321
12322	Cleanup ODR-based type canonicalization optimization gating logic
12323	* src/abg-ir.cc (type_base::get_canonical_type_for): Make it clear
12324	that the ODR-based optimization is allowed only on C++ ABI
12325	corpora.
12326
123272017-01-04  Dodji Seketeli <dodji@redhat.com>
12328
12329	Fix a typo in method name computation
12330	* src/abg-ir.cc (get_method_type_name): Really return the method
12331	name.
12332
123332017-01-05  Dodji Seketeli <dodji@redhat.com>
12334
12335	Update tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt
12336	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust.
12337
123382017-01-05  Dodji Seketeli <dodji@redhat.com>
12339
12340	Update tests/data/test-read-write/test27.xml
12341	* tests/data/test-read-write/test27.xml: Adjust.
12342
123432017-01-04  Dodji Seketeli <dodji@redhat.com>
12344
12345	[dwarf-reader] Handle per translation-unit type de-duplication
12346	* src/abg-dwarf-reader.cc
12347	(read_context::per_tu_name_artefacts_map_): New data member.
12348	(read_context::clear_per_translation_unit_data): Clear the new
12349	read_context::per_tu_name_artefacts_map_.
12350	(read_context::associate_die_to_decl): Take a flag to say if we
12351	should associate a DIE to its representation and another one to
12352	say if the association should be done per-tu or per-corpus.
12353	(read_context::lookup_{type_artifact, artifact}_from_die): Update
12354	apidoc.
12355	(read_context::lookup_artifact_from_die_representation): Likewise.
12356	(read_context::{associate_die_to_artifact_by_repr,
12357	associate_die_to_artifact_by_repr_internal,
12358	associate_die_to_type}): Take a flag to say if the associating
12359	should be done on a per-tu basis.
12360	(read_context::lookup_{type_artifact, artifact}_from_die_per_tu):
12361	New member functions.
12362	(read_context::{lookup_artifact_from_per_tu_die_representation,
12363	odr_is_relevant}): Likewise.
12364	(build_enum_type, add_or_update_class_type)
12365	(add_or_update_union_type): If ODR is not relevant, do not perform
12366	per-corpus de-duplication.
12367	(build_pointer_type_def, build_typedef_type): Do not associate the
12368	type to its representation as these kinds of typs are not
12369	de-duplicated.
12370	(build_function_type):  If ODR is not relevant, perform per-tu
12371	de-duplication.  When ODR is relevant, per-corpus de-duplication
12372	is performed.
12373	(build_or_get_fn_decl_if_not_suppressed): Function decls are
12374	always de-duplicated per-corpus.
12375	(build_ir_node_from_die): For data members, do not update the die
12376	representation map as data members are not de-duplicated.  Do not
12377	do it for function decls either.
12378	[1]: https://en.wikipedia.org/wiki/One_Definition_Rule
12379
123802017-01-02  Dodji Seketeli <dodji@redhat.com>
12381
12382	Handle per translation unit and per corpus types maps
12383	* include/abg-fwd.h (lookup_type_in_corpus): Remove.  This is to
12384	be replaced by the new lookup_type below.
12385	(lookup_{basic, class, union, enum, typedef, qualified, pointer,
12386	reference, array, function, class_or_typedef,
12387	class_typedef_or_enum}_type):
12388	(lookup_class_type_through_scopes, lookup_type)
12389	(lookup_type_through_scopes, lookup_or_synthesize_fn_type)
12390	* src/abg-ir-priv.h (struct translation_unit::priv):  Move this
12391	private type here, from abg-ir.h.
12392	(synthesize_type_from_translation_unit): Declare new functions.
12393	* include/abg-ir.h (class type_maps): Define new type.
12394	(translation_unit::get_function_types): Remove.
12395	(translation_unit::get_types): Now return a type_maps.
12396	(translation_unit::get_live_fn_types): Declare new type.
12397	(class decl_base): Make canonicalize be a friend of this class.
12398	* src/abg-ir.cc (struct translation_unit::priv): Move this to
12399	abg-ir-priv.h
12400	(struct type_maps::priv): Define new type.
12401	(type_maps::{basic, class, union, enum, typedef, qualified,
12402	pointer, reference, array, function}_types): Define new accessors.
12403	(translation_unit::bind_function_type_life_time): Adjust.
12404	(translation_unit::get_function_types): Remove accessor.
12405	(translation_unit::get_types, get_live_fn_types): Define new
12406	accessors.
12407	(lookup_type_in_translation_unit)
12408	(lookup_class_type_in_translation_unit)
12409	(lookup_function_type_in_translation_unit)
12410	(synthesize_type_from_translation_unit)
12411	(synthesize_function_type_from_translation_unit)
12412	(lookup_class_type_in_translation_unit) Remove function
12413	definitions.
12414	(lookup_type_in_map): Define function template.
12415	(lookup_{basic, class, union, typedef, class_or_typedef,
12416	class_typedef_or_enum, qualified, pointer, reference, array,
12417	function}_type): Define functions.
12418	(lookup_function_type, lookup_type_through_scopes)
12419	(lookup_class_type_through_scopes)
12420	(lookup_basic_type_through_translation_units)
12421	(lookup_union_type_through_translation_units)
12422	(lookup_enum_type_through_translation_units)
12423	(lookup_class_type_through_translation_units)
12424	(lookup_typedef_type_through_translation_units)
12425	(lookup_qualified_type_through_translation_units)
12426	(lookup_pointer_type_through_translation_units)
12427	(lookup_reference_type_through_translation_units)
12428	(lookup_array_type_through_translation_units)
12429	(lookup_function_type_through_translation_units)
12430	(lookup_type_through_translation_units)
12431	(lookup_or_synthesize_fn_type, lookup_type): Likewise.
12432	(maybe_update_types_lookup_map)
12433	(maybe_update_types_lookup_map<class_decl>)
12434	(maybe_update_types_lookup_map<function_type>): Define function
12435	template, specilizations and functions.
12436	(synthesize_type_from_translation_unit)
12437	(synthesize_function_type_from_translation_unit): Define
12438	functions.
12439	* include/abg-corpus.h (corpus::get_types): Declare new accessor.
12440	* src/abg-corpus.cc (corpus::priv::get_types): Define new
12441	accessor.
12442	(corpus::get_types): Likewise.
12443	(lookup_type_in_corpus, lookup_class_type_in_corpus)
12444	(lookup_type_in_corpus, lookup_function_type_in_corpus)
12445	(maybe_update_types_lookup_map)
12446	(maybe_update_types_lookup_map<class_decl>)
12447	(maybe_update_types_lookup_map<function_type>): Remove.
12448	(lookup_{basic, class, union, enum, typedef, qualified, pointer,
12449	reference, array, function, class_or_typedef,
12450	class_typedef_or_enum}_type): Likewise.
12451	* src/abg-corpus-priv.h (corpus::priv::{basic, class, union,
12452	typedef, qualified, pointer, reference, array, function}_types):
12453	Remove these data members.
12454	(corpus::priv::get_scopes): Remove member function.
12455	(corpus::priv::get_{basic, class, union, enum, typedef, qualified,
12456	pointer, reference, array, function}_types): Remove member
12457	function declarations.
12458	(corpus::priv::types_): New data member.
12459	(corpus::priv::get_types): Declare new member function.
12460	(lookup_{basic, class, enum, typedef, class_or_typedef, qualified,
12461	pointer, reference, array, function}_type): Declare new functions.
12462	* src/abg-dwarf-reader.cc
12463	(read_context::resolve_declaration_only_classes)
12464	(build_translation_unit_and_add_to_ir): Adjust use of
12465	lookup_class_type.
12466	* src/abg-reader.cc (read_context::type_is_from_translation_unit):
12467	Adjust to the use of lookup_function_type_in_translation_unit that
12468	got renamed into lookup_function_type.
12469	* src/abg-writer.cc (type_ptr_cmp::operator()): New operator
12470	implementation.
12471	(read_context::sort_type): Add new overloads.
12472	(write_translation_unit): Adjust to get the function types from
12473	the new translation_unit::get_live_fn_types and sort them.
12474	* tools/abicompat.cc (perform_compat_check_in_weak_mode): Adjust
12475	to use the new lookup_or_synthesize_fn_type, in lieu of
12476	lookup_function_type_in_corpus.  Adjust to use lookup_type in lieu
12477	of lookup_type_in_corpus.
12478
124792016-12-21  Dodji Seketeli <dodji@redhat.com>
12480
12481	Make abg-fwd.h use *_sptr typedefs
12482	* include/abg-ir.h: Move convience typedef declarations and some
12483	necessary forward declarations to ...
12484	* include/abg-fwd.h: ... here.
12485	(is_enum_type, is_var_decl): Take a pointer to type_or_decl_base.
12486	(lookup_type_in_scope): Return a type_base_sptr.
12487	(lookup_type_through_scopes): Introduce this to later replace the
12488	overload of lookup_type_in_translation_unit that takes a list of
12489	strings.
12490	(lookup_type_in_scope): Return a type_base_sptr, not a
12491	decl_base_sptr.
12492	* src/abg-ir.cc (lookup_type_in_scope, lookup_node_in_scope)
12493	(lookup_var_decl_in_scope): Adjust.
12494	(is_enum_type, is_var_decl): Take a pointer to type_or_decl_base.
12495	(lookup_node_in_scope): Return a type_or_decl_base_sptr.
12496	(lookup_type_in_scope): Return a type_base_sptr.
12497	(lookup_node_in_translation_unit): Return a
12498	type_or_decl_base_sptr.
12499	(lookup_type_through_scopes): Replace
12500	lookup_type_in_translation_unit.
12501
125022016-12-18  Chenxiong Qi <cqi@redhat.com>
12503
12504	Fix wrong variable name
12505	* tools/fedabipkgdiff: (diff_latest_rpms_based_on_distros): Fix
12506	wrong variable name distro.
12507
125082016-12-18  Chenxiong Qi <cqi@redhat.com>
12509
12510	Warn properly when cannot find peer RPM
12511	* tools/fedabipkgdiff: (RPMCollection.get_peer_rpm): Return None
12512	when cannot find peer RPM due to nonexistent arch.
12513
125142016-12-19  Chenxiong Qi <cqi@redhat.com>
12515
12516	Read Koji config via Koji API
12517	* tools/fedabipkgdiff: Read DEFAULT_KOJI_TOPURL and
12518	DEFAULT_KOJI_SERVER from Koji config via Koji API read_config.
12519	(build_commandline_args_parser): --topdir is renamed to
12520	--topurl.
12521	* doc/manuals/fedabipkgdiff.rst: Rename --topdir to --topurl.
12522
125232016-12-19  Chenxiong Qi <cqi@redhat.com>
12524
12525	Follow moved packages when download
12526	* tools/fedabipkgdiff: (download_rpm) Add --location to curl
12527	CLI.
12528
125292016-12-13  Chenxiong Qi <cqi@redhat.com>
12530
12531	More document for local RPMs comparison
12532	* doc/manuals/fedabipkgdiff.rst: Add more document for local RPMs
12533	comparison. Also fixed a typo.
12534
125352016-12-15  Ondrej Oprala <ondrej.oprala@gmail.com>
12536
12537	Properly report missing files for abipkgdiff
12538	* tools/abipkgdiff.cc: (class options): Add the "nonexistent_file" flag
12539	(parse_command_line): Check if the files given exist.
12540	(main): Check the nonexistent_file flag. If any of the input
12541	files don't exist, report it and exit. Also, for present and future test
12542	uniformity, only show the base names of the packages when using their
12543	names in error output.
12544	* tests/test-diff-pkg.cc: Add a new regression test.
12545	* tests/data/test-diff-pkg/test-nonexistent-report-0.txt: The
12546	expected output of the above regression test.
12547	* tests/data/Makefile.am: Add the above file to the list.
12548
125492016-12-15  Dodji Seketeli <dodji@redhat.com>
12550
12551	Misc style cleanup
12552	* src/abg-dwarf-reader.cc (build_function_type): Remove
12553	unnecessary new line.
12554
125552016-12-15  Dodji Seketeli <dodji@redhat.com>
12556
12557	make is_anonymous_type work for unions and classes
12558	* src/abg-ir.cc (is_anonymous_type): Make this work for class or
12559	union types, no only classes.
12560
125612016-12-15  Dodji Seketeli <dodji@redhat.com>
12562
12563	Naming typedefs of classes are not read properly from abixml
12564	* src/abg-reader.cc (build_class_decl): Use
12565	read_context::build_or_get_type_decl rather than
12566	read_context::get_type_decl to build the naming typedef referred
12567	to by the class being built.  Move the handling of naming typedefs
12568	after the class is marked as WIP and keyed.
12569
125702016-12-15  Dodji Seketeli <dodji@redhat.com>
12571
12572	Don't early-canonicalize function types when reading abixml
12573	* src/abg-reader.cc (read_context::maybe_canonicalize_type):
12574	late-canonicalize function types too.
12575
125762016-12-12  Ondrej Oprala <ondrej.oprala@gmail.com>
12577
12578	Check --enable-rpm dependencies more rigorously
12579	* configure.ac: Check if both rpm2cpio and cpio
12580	exist on the system. If not, disable the option and fail the
12581	configuration if --enable-rpm was specified explicitly.
12582
125832016-12-12  Ondrej Oprala <ondrej.oprala@gmail.com>
12584
12585	abipkgdiff doesn't mention --no-default-suppression in help
12586	* tools/abipkgdiff.cc (display_usage): Mention
12587	--no-default-suppression as one of the options.
12588
125892016-12-12  Ondrej Oprala <ondrej.oprala@gmail.com>
12590
12591	Fix a few remarks made by cppcheck
12592	* src/abg-comparison.cc (types_or_decls_equal::operator()): Pass
12593	arguments by reference.
12594	(class_diff::ensure_lookup_tables_populated): Expression
12595	!A || (A && B) can be reduced to !A || B.
12596	* src/abg-suppression.cc (suppression_matches_type_no_name):
12597	Likewise.
12598
125992016-12-09  Ondrej Oprala <ondrej.oprala@gmail.com>
12600
12601	Bug 19272 - abipkgdiff doesn't report arch change
12602	* src/abg-comparison.cc (corpus_diff::has_incompatible_changes):
12603	The architecture change into account.
12604	(corpus_diff::has_net_changes): Take architecture and soname
12605	changes into account.
12606	* tools/abicompat.cc (perform_compat_check_in_normal_mode): Use
12607	corpus_diff::{has_net_changes, has_incompatible_changes}.
12608	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.armv7hl.rpm: New
12609	test input.
12610	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
12611	New test reference output.
12612	* tests/data/Makefile.am: Add the new test material above to
12613	source distribution.
12614	* tests/test-diff-pkg.cc (in_out_spec): Compare the new package
12615	above against an x86_64 one.
12616
126172016-08-11  Chenxiong Qi <cqi@redhat.com>
12618
12619	Bug 20380 - Compare two local RPMs
12620	* configure.ac: add dependent mimetype module.
12621	* doc/manuals/fedabipkgdiff.rst: Update to add document for the
12622	new use case of comparing two local RPMs.
12623	* tests/data/Makefile.am: Include new RPMs for tests.
12624	* tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.100.2-2.fc20.x86_64.rpm:
12625	New RPM for running test.
12626	* tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.106-1.fc23.x86_64.rpm:
12627	Likewise.
12628	* tests/data/test-fedabipkgdiff/nss-util/nss-util-3.12.6-1.fc14.x86_64.rpm:
12629	Likewise.
12630	* tests/data/test-fedabipkgdiff/nss-util/nss-util-3.24.0-2.0.fc25.x86_64.rpm:
12631	Likewise.
12632	* tests/data/test-fedabipkgdiff/nss-util/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm:
12633	Likewise.
12634	* tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt:
12635	Rename filename by adding .rpm extension.
12636	* tests/data/test-fedabipkgdiff/test5-same-dir-dbus-glib-0.100.2-2.fc20.x86_64--dbus-glib-0.106-1.fc23.x86_64-report-0.txt:
12637	New reference output for testing comparing local RPMs.
12638	* tests/data/test-fedabipkgdiff/test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt:
12639	New reference output for testing comparison without non-existent
12640	debuginfo or development package.
12641	* tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
12642	Rename filename for test4. Add two new test cases.
12643	(run_fedabipkgdiff_tests): Remove semicolon and trailing
12644	whitespaces.
12645	(main): Likewise.
12646	(ensure_output_dir_created): Likewise.
12647	* tools/fedabipkgdiff: Require some new modules.
12648	Fix of return code.
12649	(PkgInfo): Renamed to ComparisonHalf.
12650	(match_nvr): New method to determine if a string matches format
12651	of N-V-R.
12652	(match_nvra): New method to determine if a string matches format
12653	of N-V-R.A.
12654	(is_rpm_file): New method to guess if a file is a RPM file.
12655	(RPM.is_peer): New method to determine if current RPM is a peer
12656	of another.
12657	(RPM.filename): Use Koji module API to construct the filename.
12658	(RPM.nvra): Get nvra from filename instead of constructing
12659	manually that is duplicated with Koji module API.
12660	(RPMCollection): New class to represent a set of RPMs.
12661	(generate_pkg_info_pair_for_abipkgdiff): New method working as a
12662	generator to yeild comparison halves for running abipkgdiff.
12663	(Brew.getRPM): Fix string format with incorrect argument.
12664	(Brew.select_rpms_from_a_build): Return instance of
12665	RPMCollection.
12666	(abipkgdiff): If there is no debuginfo or development package,
12667	just ignore it and leave a warning. If --error-on-warning is
12668	specified, raise an exception instead. Arguments are modified
12669	to represent the new name ComparisonHalf, and relative docstring
12670	is also updated.
12671	(magic_construct): Removed.
12672	(run_abipkgdiff): Rewrite.
12673	(make_rpms_usable_for_abipkgdiff): Removed.
12674	(diff_local_rpm_with_latest_rpm_from_koji): Rewrite by using
12675	RPMCollection.
12676	(diff_latest_rpms_based_on_distros): Likewise.
12677	(diff_two_nvras_from_koji): Likewise.
12678	(diff_from_two_rpm_files): New method to compare two local RPMs.
12679	(build_commandline_args_parser): Add new option
12680	--error-on-warning.
12681	(main): Add support to compare local RPMs.
12682
126832016-12-12  Dodji Seketeli <dodji@redhat.com>
12684
12685	Fix template_decl::hash::operator()
12686	* src/abg-hash.cc (template_decl::hash::operator()): Combine the
12687	contribution of the qualified name to the contribution of the type
12688	name to the hash.
12689
126902016-12-09  Dodji Seketeli <dodji@redhat.com>
12691
12692	Fix aborting when reading .foo symbols from a ppc64 binary
12693	* abg-dwarf-reader.cc (read_context::find_opd_section): Fix
12694	comment.
12695	(read_context::load_symbol_maps): If for a given function entry
12696	point (that we got by looking at the ".opd" section for a given
12697	function pointer value) we already had an entry in the
12698	function_entry_address -> symbol, maybe it means that the previous
12699	entry that we had was from an entry in the symbol table which
12700	value was directly the entry point address of a function.  In that
12701	case, if the name of the symbol is "foo", the name of the symbol
12702	which value is directly the entry point address is ".foo".  What
12703	we do in this case is that we just keep the reference to the "foo"
12704	symbol in the function_entry_address -> symbol map.
12705	(read_context::address_is_in_opd_section): Define new member
12706	function.
12707	* tests/data/test-diff-pkg/gmp-4.3.1-10.el6.ppc64.rpm: New test input.
12708	* tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64.rpm: Likewise.
12709	* tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-10.el6.ppc64.rpm: Likewise.
12710	* tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-7.el6_2.2.ppc64.rpm: Likewise.
12711	* tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64--gmp-4.3.1-10.el6.ppc64-report-0.txt:
12712	New test reference output.
12713	* tests/data/Makefile.am: Add the new test input and reference
12714	output to source distribution.
12715	* tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
12716	and reference output to the set of inputs that are compared.
12717
127182016-12-05  Dodji Seketeli <dodji@redhat.com>
12719
12720	Bug 20927 - Segfault when $HOME is not set
12721	* src/abg-tools-utils.cc
12722	(get_default_user_suppression_file_path): Handle the case where
12723	the HOME environment variable is not set.
12724	* tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
12725	Likewise.  When $HOME is empty set then use $TMPDIR.  If it's
12726	empty too then use "/tmp".
12727
127282016-12-02  Dodji Seketeli <dodji@redhat.com>
12729
12730	Bug 20887 - Show relative change of offsets
12731	* doc/manuals/abidiff.rst: Document the new
12732	--no-show-relative-offset-changes.
12733	* doc/manuals/abipkgdiff.rst: Likewise.
12734	* include/abg-comparison.h
12735	(diff_context::show_relative_offset_changes): New accessors.
12736	* include/abg-ir.h ({set,get}_data_member_offset): Return uint64_t
12737	instead of the less portable size_t.
12738	* src/abg-comparison.cc
12739	(diff_context::priv::show_relative_offset_changes_): New data
12740	member.
12741	(dif_context::show_relative_offset_changes): Define accessor.
12742	(maybe_show_relative_offset_change): Define new function.
12743	(represent): In the overload for var_diff, call the new
12744	maybe_show_relative_offset_change.
12745	(report_size_and_alignment_changes):  If the size of the type
12746	didn't change then say it now.
12747	* src/abg-ir.cc (set_data_member_offset, get_data_member_offset):
12748	Take or return a uint64_t instead of a size_t.
12749	* tools/abidiff.cc (options::show_relative_offset_changes): New
12750	data member.
12751	(options::options): Initialize it.
12752	(display_usage): Display help string for the new
12753	--no-show-relative-offset-changes.
12754	(parse_command_line): Parse the new
12755	--no-show-relative-offset-changes options.
12756	(set_diff_context_from_opts): Set the
12757	"show-relative-offset-changes" flag according to the new option.n
12758	* tools/abipkgdiff.cc (options::show_relative_offset_changes): New
12759	data member.
12760	(options::options): Initialize it.
12761	(display_usage): Add help string for the new
12762	--no-show-relative-offset-changes option.
12763	(set_diff_context_from_opts): Set the
12764	"show-relative-offset-changes" flag according to the new option.
12765	(parse_command_line): Parse the new command line option.
12766	* tests/data/test-diff-dwarf/test40-report-0.txt: Add new
12767	reference output.
12768	* tests/data/test-diff-dwarf/test40-v0.c: Source code of the first
12769	test binary.
12770	* tests/data/test-diff-dwarf/test40-v1.c: Source code of the
12771	second test binay.
12772	* tests/data/test-diff-dwarf/libtest40-v0.so: New first test binary.
12773	* tests/data/test-diff-dwarf/libtest40-v1.so: New second test binary.
12774	* tests/test-diff-dwarf.cc (in_out_spec): Add the new test
12775	binaries above to the set of binaries that are compared.
12776	* tests/data/Makefile.am: Add the new test material to source
12777	distribution.
12778	* tests/data/test-abicompat/test7-fn-changed-report-0.txt: Adjust.
12779	* tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
12780	* tests/data/test-abidiff/test-enum0-report.txt: Likewise.
12781	* tests/data/test-abidiff/test-enum1-report.txt: Likewise.
12782	* tests/data/test-abidiff/test-struct1-report.txt: Likewise.
12783	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
12784	* tests/data/test-diff-dwarf/test1-report.txt: Likewise.
12785	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
12786	* tests/data/test-diff-dwarf/test11-report.txt: Likewise.
12787	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
12788	* tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise.
12789	* tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: Likewise.
12790	* tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise.
12791	* tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise.
12792	* tests/data/test-diff-dwarf/test38-union-report-0.txt: Likewise.
12793	* tests/data/test-diff-dwarf/test4-report.txt: Likewise.
12794	* tests/data/test-diff-dwarf/test5-report.txt: Likewise.
12795	* tests/data/test-diff-dwarf/test6-report.txt: Likewise.
12796	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
12797	* tests/data/test-diff-filter/test0-report.txt: Likewise.
12798	* tests/data/test-diff-filter/test01-report.txt: Likewise.
12799	* tests/data/test-diff-filter/test1-report.txt: Likewise.
12800	* tests/data/test-diff-filter/test13-report.txt: Likewise.
12801	* tests/data/test-diff-filter/test16-report-2.txt: Likewise.
12802	* tests/data/test-diff-filter/test16-report.txt: Likewise.
12803	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
12804	* tests/data/test-diff-filter/test17-1-report.txt: Likewise.
12805	* tests/data/test-diff-filter/test18-report.txt: Likewise.
12806	* tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
12807	* tests/data/test-diff-filter/test2-report.txt: Likewise.
12808	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt:
12809	Likewise.
12810	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
12811	Likewise.
12812	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt:
12813	Likewise.
12814	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt:
12815	Likewise.
12816	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.t:
12817	Likewise.xt
12818	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt:
12819	Likewise.
12820	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt:
12821	Likewise.
12822	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt:
12823	Likewise.
12824	* tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt:
12825	Likewise.
12826	* tests/data/test-diff-filter/test3-report.txt: Likewise.
12827	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
12828	Likewise.
12829	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
12830	Likewise.
12831	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
12832	Likewise.
12833	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
12834	Likewise.
12835	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise.
12836	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Likewise.
12837	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise.
12838	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise.
12839	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise.
12840	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise.
12841	* tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise.
12842	* tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise.
12843	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
12844	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
12845	* tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise.
12846	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
12847	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
12848	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise.
12849	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
12850	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
12851	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
12852	* tests/data/test-diff-suppr/test30-report-0.txt: Likewise.
12853	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise.
12854	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise.
12855	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise.
12856	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
12857	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
12858	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
12859	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
12860	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
12861	* tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise.
12862	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise.
12863	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise.
12864	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise.
12865	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise.
12866	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
12867	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
12868	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
12869	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
12870	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
12871	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
12872	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise.
12873
128742016-12-02  Dodji Seketeli <dodji@redhat.com>
12875
12876	Rename tests/update-test-read-dwarf-output.py
12877	* tests/update-test-output.py: renamed
12878	tests/update-test-read-dwarf-output.py into this.  Update its
12879	comments.  Make this script executable.
12880
128812016-11-30  Dodji Seketeli <dodji@redhat.com>
12882
12883	Add tests/data/test-diff-suppr/test33-report-0.txt to tarball
12884	* tests/data/Makefile.am: Add test-diff-suppr/test33-report-0.txt.
12885
128862016-11-30  Dodji Seketeli <dodji@redhat.com>
12887
12888	Bug 20670 - abipkgdiff aborts if $XDG_CACHE_HOME does not exist
12889	* tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
12890	Ensure that the cache directory is created, even when
12891	XDG_CACHE_HOME is set.  Also, remove the now useless "using
12892	abigail::tools_utils::get_random_number_as_string" statement.
12893
128942016-11-09  Dodji Seketeli <dodji@redhat.com>
12895
12896	Very light speed improvements
12897	* include/abg-comp-filter.h (has_harmless_name_change): Pass smart
12898	pointers by reference.
12899	* src/abg-comp-filter.cc (access_changed)
12900	(function_name_changed_but_not_symbol)
12901	(non_static_data_member_type_size_changed)
12902	(static_data_member_type_size_changed, is_compatible_change)
12903	(decl_name_changed, has_harmless_name_change):  Pass smart
12904	pointers by reference.
12905	* include/abg-ir.h (decl_base::set_context_rel): Take a bare
12906	pointer, not a smart pointer.
12907	* src/abg-ir.cc (decl_base::priv::context_): Make this data member
12908	be a naked pointer, not a smart pointer.
12909	(decl_base::priv::priv): Initialize it.
12910	(decl_base::priv::~priv): New constructor.
12911	(decl_base::{get_context_rel, set_scope}): Adjust.
12912	(class_decl::method_decl::{method_decl, set_scope}): Likewise.
12913	(equals): In the overload for var_decl, compare the type of the
12914	var first as that might be faster (to detect var_decls with
12915	different types) in the general case where types are
12916	canonicalized.
12917
129182016-11-08  Dodji Seketeli <dodji@redhat.com>
12919
12920	Introduce on-the-fly type canonicalization
12921	* include/abg-ir.h (environment::do_on_the_fly_canonicalization):
12922	Declare new member functions.
12923	({type_base, function_type}::priv_): Make this public so that
12924	static non-member functions defined in abg-ir.cc can access it.
12925	* src/abg-ir.cc
12926	(environment::priv::do_on_the_fly_canonicalization_): New data
12927	member.
12928	(environment::priv::priv): Initialize it.
12929	(environment::do_on_the_fly_canonicalization): Define new member
12930	functions.
12931	(type_base::get_canonical_type_for): Trigger on-the-fly
12932	canonicalization during comparison of the type being canonicalized
12933	and an already canonicalized type.
12934	(types_are_being_compared, maybe_propagate_canonical_type): Define
12935	new static functions.
12936	(equals): In overloads for class_decl and function_type, call
12937	maybe_propagate_canonical_type when the two types compare equal.
12938	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
12939	Adjust.
12940	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
12941
129422016-11-06  Dodji Seketeli <dodji@redhat.com>
12943
12944	Fix pretty representation of array types
12945	* include/abg-ir.h (array_type_def::is_infinite): Fix indentation.
12946	* src/abg-ir.cc (qualified_type_def::build_name): An empty set of
12947	sub-ranges for a vector is represented by "[]".
12948	(array_type_def::is_infinite): If a vector has no sub-range, that
12949	means it has an infinite size.  Adjust comment.
12950	* tests/data/test-diff-filter/test33-report-0.txt: Adjust.
12951	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
12952	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
12953	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
12954	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
12955	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
12956	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
12957	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
12958	Adjust.
12959	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
12960	Adjust.
12961	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
12962
129632016-10-11  Dodji Seketeli <dodji@redhat.com>
12964
12965	Support naming typedef and use them to speed up type canonicalization
12966	* include/abg-ir.h (typedef_decl_wptr): New typedef.
12967	(class_decl::{g,s}et_naming_typedef): Declare new member
12968	functions.
12969	* src/abg-dwarf-reader.cc (build_typedef_type): When the
12970	underlying type of a typedef is an anonymous class, the class type
12971	is said to have a naming typedef.
12972	* src/abg-ir.cc (is_anonymous_type):  An anonymous class that has
12973	a naming typedef is said to not be anonymous anymore.
12974	(class_decl::priv::naming_typedef): New data member.
12975	(class_decl::{g,s}et_naming_typedef): Define new member functions.
12976	(class_decl::get_pretty_representation): When called for internal
12977	purposes (e.g, for type canonicalization) compute the pretty
12978	representation of the class by using its typedef name, when class
12979	is anonymous and has a naming typedef.
12980	* src/abg-reader.cc (build_class_decl): Read the new
12981	"naming-typedef-id" attribute.
12982	* src/abg-writer.cc (write_naming_typedef): New function.
12983	(write_class_decl_opening_tag): Use the new write_naming_typedef
12984	function.
12985	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
12986	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
12987	Likewise.
12988	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
12989	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
12990	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
12991	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
12992	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
12993	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
12994	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
12995	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
12996	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
12997	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
12998	Likewise.
12999	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
13000
130012016-11-02  Dodji Seketeli <dodji@redhat.com>
13002
13003	Implement de-duplication for types and decls at DWARF loading time
13004	* include/abg-ir.h (method_type::priv_): Introduce new pimpl
13005	pointer here.
13006	(method_type::class_type_): Move this into the pimpl idiom.
13007	(method_type::method_type): Take a new is_const flag.
13008	(method_type::get_class_type): Make this method out-of-line.
13009	(method_type::{s,g}et_is_const): Declare new member functions.
13010	(get_method_type_name): Declare this function as a friend of
13011	the method_type type.
13012	* src/abg-dwarf-reader.cc: Include the new abg-ir-priv.h and
13013	abg-corpus-priv.h.
13014	(typedef die_tu_map_type): Fix comment.
13015	(typedef die_istring_map_type): New typedef.
13016	(class read_context::die_source_dependant_container_set): New
13017	class template.
13018	(read_context::{die_qualified_name_maps_, die_pretty_repr_maps_,
13019	die_pretty_type_repr_maps_}): Define new data members.
13020	(read_context::{get_die_qualified_name, get_die_qualified_name,
13021	get_die_qualified_type_name, get_die_pretty_type_representation,
13022	get_die_pretty_representation, lookup_type_artifact_from_die,
13023	lookup_artifact_from_die, lookup_artifact_from_die_representation,
13024	associate_die_to_artifact_by_repr,
13025	associate_die_to_artifact_by_repr_internal,
13026	lookup_type_from_die}): Define new member functions.
13027	(read_context::lookup_type_from_die_offset): Fix comment.
13028	(get_parent_die, get_scope_die, die_is_decl)
13029	(die_is_namespace, die_is_unspecified, die_is_void_type)
13030	(die_is_pointer_type, die_is_reference_type)
13031	(die_is_pointer_or_reference_type, die_is_class_type)
13032	(die_has_object_pointer, die_this_pointer_from_object_pointer)
13033	(die_this_pointer_is_const, is_decl_tag)
13034	(die_object_pointer_is_for_const_method, die_is_at_class_scope)
13035	(die_name, die_qualified_type_name, die_qualified_decl_name)
13036	(die_qualified_name, die_qualified_type_name_empty)
13037	(die_return_and_parm_names_from_fn_type_die)
13038	(die_function_signature, die_peel_qual_ptr)
13039	(die_function_type_is_method_type, die_pretty_print_type)
13040	(die_pretty_print_decl, die_pretty_print)
13041	(build_subranges_from_array_type_die)
13042	(build_or_get_fn_decl_if_not_suppressed)
13043	(lookup_class_or_typedef_type)
13044	(lookup_class_typedef_or_enum_type_from_corpus)
13045	(is_function_for_die_a_member_of_class)
13046	(add_or_update_member_function): Define new static functions.
13047	(read_context::associate_die_to_decl): Call
13048	associate_die_to_artifact_by_repr.
13049	(read_context::{associate_die_to_type,
13050	schedule_type_for_late_canonicalization}): Take just one "die"
13051	parameter rather than taking a die offset and a die source; adjust
13052	accordingly.
13053	(maybe_canonicalize_type): Likewise.
13054	(finish_member_function_reading): Take a const reference to
13055	function_decl_sptr.
13056	(die_loc_and_name): Use the new die_name function.
13057	(die_is_type): Rename is_type_die into this.
13058	(build_type_decl): Take a new "where_offset" parameter.  Adjust.
13059	If a type of the same name as the one for the current DIE is is
13060	already present, do not create a new type; just return the
13061	already-existing one.
13062	(build_enum_type): Take a new "where_offset" parameter.  Adjust.
13063	(finish_member_function_reading): Pass two smart pointers by const
13064	reference.  Assert that the type of the member function is a
13065	method_type.  Some light cleanups.
13066	(add_or_update_class_type): Rename build_class_type_and_add_to_ir.
13067	If a DIE defining the same class has already been seen, then
13068	return that class; don't construct any other internal
13069	representation for the same class.  Better handle the updating of
13070	member data and functions.  Do not duplicate member types.
13071	(build_qualified_type, build_pointer_type_def)
13072	(build_reference_type): Support de-duplication here.
13073	(build_function_type): Likewise.  Support detection and building
13074	of method type.  This also supports *const* method type building.
13075	(build_array_type): Use the new
13076	build_subranges_from_array_type_die.
13077	(build_type_decl): Cleanup logic.
13078	(build_or_get_var_decl_if_not_suppressed): Renamed
13079	build_var_decl_if_not_suppressed into this.  Perform
13080	de-duplication for data members.
13081	(build_function_decl): Don't set an empty source location.  If the
13082	function type cannot be constructed, do not construct the function
13083	decl either.  Adjust.
13084	(build_ir_node_from_die): Adjust.  When building a function for a
13085	DW_TAG_subroutine_type DIE, use the new
13086	build_or_get_fn_decl_if_not_suppressed.
13087	* src/abg-ir.cc (translation_unit::bind_function_type_life_time):
13088	Fix comment.
13089	(strip_typedef): Adjust.
13090	(qualified_type_def::build_name): Set the prefix name of a the
13091	name of a noop qualifier to "noop-qual", just like what is done in
13092	the new die_qualified_name function.
13093	(struct method_type::priv): New priv type for the method_type
13094	class.
13095	(method_type::method_type): Take a new 'is_const' parameter.
13096	Adjust as the method_type is now pimpl'ed.
13097	(method_type::{get_class_type, set_is_const, get_is_const}):
13098	Define new member functions.
13099	(function_decl::get_pretty_representation_of_declarator): Better
13100	detecter of const-ness.
13101	(class_decl::insert_member_decl):  Better setting of the
13102	const-ness.
13103	(class_decl::method_decl::method_decl): Adjust.  Deduce the
13104	const-ness of the method_decl from the const-ness of its
13105	method_type.
13106	(copy_member_function): Adjust.
13107	(set_member_is_static): Do not assume a non-nil scope anymore
13108	because member_decl can now be scope-less, at least for a little
13109	while.
13110	* src/abg-reader.cc (push_decl_to_current_scope): Adjust.
13111	(build_function_decl): Style adjustment.  Adjust for method_type
13112	const-ness changes.
13113	(build_function_type): Likewise.  Also, support the new
13114	"method-class-id" property that flags a function type as being a
13115	method type.
13116	* src/abg-writer.cc (write_function_decl): Style fixes.
13117	(write_function_type): Likewise.  Emit a new "method-class-id"
13118	property for function type that is actually a method type.  That
13119	property's value is the id of the class of the method type.
13120	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Adjust.
13121	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
13122	* tests/data/test-diff-filter/test0-report.txt: Adjust.
13123	* tests/data/test-diff-filter/test01-report.txt: Adjust.
13124	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
13125	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
13126	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
13127	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
13128	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust.
13129	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Adjust.
13130	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust.
13131	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Adjust.
13132	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
13133	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
13134	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
13135	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
13136	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
13137	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
13138	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
13139	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
13140	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
13141	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
13142	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
13143	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
13144	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
13145	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
13146	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
13147	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
13148	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust.
13149	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
13150
131512016-11-01  Dodji Seketeli <dodji@redhat.com>
13152
13153	Setup per-corpus type maps indexed by type names
13154	* include/abg-corpus.h (corpus::priv_): Make this public so that
13155	functions from outside of the class can access it.  These
13156	functions are meant to be used only by code that is *inside*
13157	libabigail.so, though.
13158	* src/abg-corpus-priv.h: New file.
13159	* src/abg-corpus.cc: Include the new abg-corpus-priv.h file.
13160	(struct regex_t_deleter): Move this to abg-sptr-utils.h.
13161	(build_sptr<regex_t>): Move the declaration of this function
13162	template specialization to abg-sptr-utils.h and its definition to
13163	abg-sptr-utils.cc.
13164	(typedef regex_t_sptrs_type, typedef str_var_ptr_map_type)
13165	(struct corpus::exported_decls_builder::priv, struct
13166	corpus::priv): Move these declarations to the new
13167	abg-corpus-priv.h.
13168	(maybe_update_types_lookup_map): Define overloads of this (one per
13169	kind of type).
13170	(lookup_{basic, class, enum, typedef, class_or_typedef,
13171	class_typedef_or_enum, qualified, pointer, reference, array,
13172	function}_type): Define new functions.
13173	* include/abg-ir.h (typedef istring_type_base_wptr_map_type)
13174	(typedef istring_type_or_decl_base_sptr_map_type): Declare new
13175	typedefs.
13176	(class_decl::find_member_function_from_signature): Declare new
13177	member function.
13178	* src/abg-ir.cc: Include the new abg-corpus-priv.h file.
13179	(maybe_update_types_lookup_map): Remove this initial function.
13180	There are now new overloads in abg-corpus.cc for it.
13181	(scope_decl::{add_member_decl, insert_member_decl}): Adjust.
13182	(class_decl::{set_is_declaration_only, find_member_function,
13183	add_member_function}): Adjust.
13184	(class_decl::find_member_function_from_signature): Define new
13185	member function.
13186	* include/abg-sptr-utils.h (struct regex_t_deleter): Declare new
13187	type.
13188	(build_sptr<regex_t>): New build function template
13189	specializations.
13190	* src/abg-sptr-utils.cc: New file.
13191	* src/Makefile.am: Add src/abg-sptr-utils.cc and
13192	src/abg-corpus-priv.h to the build system.
13193
131942016-11-01  Dodji Seketeli <dodji@redhat.com>
13195
13196	Allow pretty printing function decls for internal purposes
13197	* include/abg-ir.h
13198	(function_decl::get_pretty_representation_of_declarator): Take an
13199	"internal" flag.
13200	* src/abg-ir.cc
13201	(function_decl::get_pretty_representation_of_declarator): Take an
13202	"internal" flag.
13203	(function_decl::get_pretty_representation): Pass the "internal"
13204	flag to the function
13205	function_decl::get_pretty_representation_of_declarator.
13206	(function_decl::parameter::get_type_name):  Better handle variadic
13207	parameter type.
13208	(function_decl::parameter::get_type_pretty_representation):
13209	Likewise.
13210
132112016-11-26  Dodji Seketeli <dodji@redhat.com>
13212
13213	Make bash completion files non-executable
13214	* bash-completion/abicompat: Make this be non-executable.
13215	* bash-completion/abidiff: Likewise.
13216	* bash-completion/abidw: Likewise.
13217	* bash-completion/abilint: Likewise.
13218	* bash-completion/abinilint: Likewise.
13219	* bash-completion/abipkgdiff: Likewise.
13220	* bash-completion/abisym: Likewise.
13221	* bash-completion/fedabipkgdiff: Likewise.
13222
132232016-11-26  Dodji Seketeli <dodji@redhat.com>
13224
13225	A suppressed diff node implies suppressing all equivalent nodes too
13226	*class of equivalence* is visited once.  This is not only a way to
13227	prevent infinite loops while visiting the graph, but also an
13228	optimization as it avoids walking two equivalent diff nodes.
13229	But then it can happen that we forget to categorize some diff nodes
13230	inside a given class of equivalence, even though we categorized some
13231	others.
13232	This patch makes it so that when a diff node inside a class of
13233	equivalence is categorized as SUPPRESSED, the canonical diff node of
13234	that class of equivalence is categorized as SUPPRESSED too.  That way,
13235	to know if a diff node is suppressed, we just need to look at its
13236	canonical diff node.
13237	While doing this, I noticed that abidiff and abipkgdiff are not
13238	dropping private types from libabigail's internal representation, even
13239	though the Library now has that capability.  The patch fixes that.
13240	But then the patch adds a --dont-drop-private-types option to abidiff
13241	to avoid dropping those private types from the IR, so that regression
13242	tests can make sure that a suppressed diff node implies suppression
13243	all equivalent nodes too.
13244	* doc/manuals/abidiff.rst b/doc/manuals/abidiff.rst: Document the
13245	new --dont-drop-private-types option.
13246	* src/abg-comparison.cc (diff::is_filtered_out): If the canonical
13247	type was suppressed then the current diff node is filtered out.
13248	(suppression_categorization_visitor::visit_{begin,end}):
13249	Categorized the canonical node as SUPPRESSED if the current node
13250	is suppressed.
13251	* tools/abidiff.cc (options::drop_private_types): New data member.
13252	(options::options): Initialize it.
13253	(display_usage): Add new help string for the new
13254	--dont-drop-private-types option.
13255	(parse_command_line): Parse the new --dont-drop-private-types
13256	option.
13257	(set_suppressions): Generate suppression specification from header
13258	directories given in parameter and stick them to the read context.
13259	* tools/abipkgdiff.cc (compare): Likewise.
13260	* tests/data/test-diff-suppr/libtest34-v0.so: New test input.
13261	* tests/data/test-diff-suppr/libtest34-v1.so: Likewise.
13262	* tests/data/test-diff-suppr/test34-report-0.txt: New reference
13263	report.
13264	* tests/data/test-diff-suppr/test34-v0.c: Source code for the new
13265	test input.
13266	* tests/data/test-diff-suppr/test34-v1.c: Likewise.
13267	* tests/data/test-diff-suppr/test34-priv-include-dir-v0/test34-priv-include-v0.h:
13268	Likewise.
13269	* tests/data/test-diff-suppr/test34-priv-include-dir-v1/test34-priv-include-v1.h:
13270	Likewise.
13271	* tests/data/test-diff-suppr/test34-pub-include-dir-v0/test34-pub-include-v0.h:
13272	Likewise.
13273	* tests/data/test-diff-suppr/test34-pub-include-dir-v1/test34-pub-include-v1.h:
13274	Likewise.
13275	* tests/data/Makefile.am: Add new test input material above to
13276	source distribution.
13277	* tests/test-diff-suppr.cc (in_out_spec): Compare the two new test
13278	library provided.  Add --dont-drop-private-types to test30*.
13279	signed-off-by: Dodji Seketeli <dodji@redhat.com>
13280
132812016-11-26  Dodji Seketeli <dodji@redhat.com>
13282
13283	Forgot to consider libtest33-v{0,1}.so in test-diff-suppr.cc
13284	* tests/data/test-diff-suppr/test33-report-0.txt: New refernce report.
13285	* tests/test-diff-suppr.cc (in_out_specs): Compare libtest33-v0.so
13286	and libtest33-v1.so.
13287
132882016-11-24  Dodji Seketeli <dodji@redhat.com>
13289
13290	Bump version number to 1.0.rc7
13291	* configure.ac:
13292
132932016-11-24  Dodji Seketeli <dodji@redhat.com>
13294
13295	Update website for 1.0.rc6
13296	* doc/website/mainpage.txt: Update for 1.0.rc6 release
13297
132982016-11-23  Dodji Seketeli <dodji@redhat.com>
13299
13300	Update NEWS and ChangeLog for 1.0.rc6
13301	* ChangeLog: Update this automatically using "make
13302	update-changelog".
13303	* NEWS: update this by editing the output of 'git shortlog
13304	libabigail-1.0.rc5..HEAD'.
13305
133062016-11-24  Dodji Seketeli <dodji@redhat.com>
13307
13308	Avoid using size_t to get DWARF data
13309	* src/abg-dwarf-reader.cc (die_size_in_bits, die_location_expr):
13310	Take uint64_t rather than size_t and adjust.
13311	(expr_result::const_value_): Make this be int64_t rather than
13312	ssize_t.
13313	(expr_result::expr_result): Take int64_t rather than ssize_t.
13314	(expr_result::const_value): Return int64_t rather than ssize_t.
13315	(expr_result::{operator(), operator=, operator+=}): Make these
13316	operators return or take int64_t.
13317	too.
13318	(op_pushes_constant_value, op_manipulates_stack)
13319	(op_is_arith_logic, op_is_control_flow)
13320	(eval_last_constant_dwarf_sub_expr, die_member_offset)
13321	(die_virtual_function_index): Take
13322	uint64_t rather than size_t, or int64_t rather than ssize_t.
13323	(finish_member_function_reading, build_class_type_and_add_to_ir)
13324	(build_union_type_and_add_to_ir): Adjust.
13325
133262016-11-24  Dodji Seketeli <dodji@redhat.com>
13327
13328	Fix a compiler warning issued by GCC 6.2.1
13329	* src/abg-dwarf-reader.cc (find_import_unit_point_between_dies):
13330	Parameter 5 of find_import_unit_point_between_dies is not of type
13331	Dwarf_Off.
13332
133332016-11-24  Dodji Seketeli <dodji@redhat.com>
13334
13335	Fix offset type mismatch
13336	* src/abg-dwarf-reader.cc (die_member_offset): The last two
13337	parameters of die_unsigned_constant_attribute must be of type
13338	uint64_t.
13339
133402016-11-24  Dodji Seketeli <dodji@redhat.com>
13341
13342	Fix indentation in abg-writer.cc
13343	* src/abg-writer.cc (write_union_decl_opening_tag): Fix
13344	indentation.
13345
133462016-11-23  Dodji Seketeli <dodji@redhat.com>
13347
13348	Support reading data member offset from DW_AT_bit_offset
13349	* src/abg-dwarf-reader.cc (die_member_offset): Better comments.
13350	Support reading the bit offset also from the DW_AT_bit_offset
13351	attribute when it's present.  Make sure this always returns a
13352	value in bits.
13353	(build_class_type_and_add_to_ir): No need to multiply (by 8) the
13354	value returned by die_member_offset anymore because it's now in
13355	bits directly.
13356	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
13357	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
13358	* tests/data/test-read-dwarf/test1.abi: Adjust.
13359	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
13360	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
13361	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
13362	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
13363	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
13364	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
13365	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
13366	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
13367	Adjust.
13368	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
13369	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
13370	Adjust.
13371
133722016-11-23  Dodji Seketeli <dodji@redhat.com>
13373
13374	Lexicographically sort union data members in change reports
13375	* src/abg-comparison.cc (data_member_comp::operator()): Data
13376	members with the same offset are sorted lexicographically, by
13377	taking their name into account.
13378	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
13379	Adjust.
13380	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
13381	Likewise.
13382
133832016-11-23  Dodji Seketeli <dodji@redhat.com>
13384
13385	Better diagnostics when wget is missing
13386	* configure.ac: When wget is missing then make the disabling of
13387	the building of the fedabipkgdiff tool show up in the
13388	configuration summary and emit a notice.
13389
133902016-11-15  Dodji Seketeli <dodji@redhat.com>
13391
13392	Support union types
13393	* include/abg-fwd.h (class_or_union, union_decl): Forward-declare
13394	new types.
13395	(is_class_or_union_type, is_union_type): Declare new functions.
13396	* include/abg-ir.h (method_type::class_type_): Make this be of
13397	class_or_union_wptr type.
13398	(method_type::method_type): Make the class_type parameter be of
13399	class_or_union_wptr type.
13400	(method_type::{g,s}et_class_type): Take or return a
13401	class_or_union_sptr.
13402	(member_base, method_decl, member_function_template)
13403	(member_class_template, member_base::hash)
13404	(member_function_template::hash, member_class_template::hash):
13405	Take these class types out of the class_decl scope.
13406	(is_method_decl): Adjust.
13407	(operator==, opertor!=): Adjust overloads for
13408	member_function_template_sptr and member_class_template_sptr.
13409	(class class_or_union): Declare new type.
13410	(class class_decl): Make this class inherit class_or_union class.
13411	(class_decl::{add_member_decl, insert_member_decl,
13412	remove_member_decl, set_size_in_bits, get_size_in_bits,
13413	get_alignment_in_bits, set_alignment_in_bits,
13414	get_is_declaration_only, set_is_declaration_only,
13415	set_definition_of_declaration, get_definition_of_declaration,
13416	get_earlier_declaration, set_earlier_declaration,
13417	insert_member_type, add_member_type, remove_member_type,
13418	get_member_type, find_member_type, add_data_member,
13419	get_data_members, find_data_member, get_non_static_data_members,
13420	add_member_function, get_member_functions, find_member_function,
13421	add_member_function_template, get_member_function_templates,
13422	add_member_class_template, get_member_class_templates): Move these
13423	to the parent class class_or_union.
13424	(copy_member_function, equals): Add overloads for class_or_union.
13425	(struct class_or_union::hash): Declare new type.
13426	(class union_decl): Declare new type.
13427	(equals, copy_member_function): New overloads for class union_decl
13428	type.
13429	(ir_node_visitor::visit): Add new overloads for union_decl* and
13430	class_or_union*.
13431	* src/abg-ir.cc (get_member_function_is_ctor)
13432	(set_member_function_is_ctor, get_member_function_is_dtor)
13433	(set_member_function_is_dtor, get_member_function_is_const)
13434	(set_member_function_is_const, get_member_function_vtable_offset)
13435	(set_member_function_vtable_offset)
13436	(get_member_function_is_virtual, set_member_function_is_virtual)
13437	(maybe_update_types_lookup_map, get_location)
13438	(get_method_type_name, is_at_global_scope, is_at_class_scope):
13439	Adjust.
13440	(is_class_or_union_type, is_union_type): Define new functions.
13441	(type_base::get_canonical_type_for, maybe_adjust_canonical_type)
13442	(method_type::method_type, method_type::set_class_type)
13443	(function_decl::get_pretty_representation)
13444	(function_decl::get_first_non_implicit_parm)
13445	(function_decl::clone): Adjust.
13446	(equals): Adjust the overload for function_type.
13447	(struct class_or_union::priv): Define new type.
13448	(class::priv::{declaration_, definition_of_declaration_,
13449	member_types_, data_members_, non_static_data_members_,
13450	member_functions_, mem_fns_map_, member_function_templates_,
13451	member_class_templates_, is_declaration_only_}): Move these data
13452	member into class_or_union::priv.
13453	(class_priv::{mark_as_being_compared, unmark_as_being_compared,
13454	comparison_started}): Moved these member functions to
13455	class_or_union::priv.
13456	(class_or_union::{class_or_union, traverse, ~class_or_union,
13457	add_member_decl, remove_member_decl, insert_member_type,
13458	add_member_type, get_size_in_bits, remove_member_type,
13459	get_alignment_in_bits, set_alignment_in_bits, set_size_in_bits,
13460	get_is_declaration_only, set_is_declaration_only,
13461	set_definition_of_declaration, get_definition_of_declaration,
13462	get_earlier_declaration, set_earlier_declaration,
13463	get_member_types, find_member_type, add_data_member,
13464	get_data_member, find_data_member, add_member_function,
13465	get_member_functions, find_member_function,
13466	add_member_function_template, get_member_function_templates,
13467	add_member_class_template, get_member_class_templates,
13468	has_no_member, insert_member_decl, operator==}): Define new member
13469	functions.
13470	(class_decl::{add_member_decl, remove_member_decl,
13471	insert_member_type, add_member_type, get_size_in_bits,
13472	remove_member_type, get_alignment_in_bits, set_alignment_in_bits,
13473	set_size_in_bits, get_is_declaration_only,
13474	set_is_declaration_only, set_definition_of_declaration,
13475	get_earlier_declaration, set_earlier_declaration,
13476	get_member_types, find_member_type, add_data_member,
13477	get_data_member, find_data_member, add_member_function,
13478	get_member_functions, find_member_function,
13479	add_member_function_template, get_member_function_templates,
13480	add_member_class_template, get_member_class_templates): Move these
13481	member functions into class_or_union.
13482	(class_decl::{class_decl, get_definition_of_declaration,
13483	insert_member_decl, add_member_function, has_no_base_nor_member}):
13484	Adjust.
13485	(equals, copy_member_function): Define new overloads for
13486	class_or_union.
13487	(equals): Adjust the overload for class_decl.
13488	(method_decl::{method_decl, set_linkage_name, ~method_decl,
13489	get_type, set_scope}): Remove from the class_decl scope.
13490	(member_base::operator==, member_function_template::operator==):
13491	Likewise.
13492	(member_function_template::traverse)
13493	(member_class_template::operator==)
13494	(member_class_template::traverse): Likewise.
13495	(operator==, operator!=): Adjust the overlod for
13496	member_function_template_sptr.
13497	(is_method_decl, fixup_virtual_member_function)
13498	(set_member_is_static): Adjust.
13499	(virtual_member_function_less_than::operator()): Likewise.
13500	(union_decl::{union_decl, get_pretty_representation, operator==,
13501	traverse}): Define new member functions.
13502	(equals, copy_member_function): Define new overloads for
13503	union_decl.
13504	(hash_type_or_decl): Adjust.
13505	(ir_node_visitor::visit_{begin, end}): Adjust. Add new overloads
13506	for class_or_union* and union_decl*.
13507	* include/abg-comparison.h (changed_member_function_sptr)
13508	(string_member_function_sptr_map): Adjust these typedefs.
13509	(class class_or_union_diff): Declare new type.
13510	(class_diff): Adjust to make this inherit the new
13511	class_or_union_diff type.
13512	(class_diff::{get_priv, member_types_changes,
13513	data_members_changes, inserted_data_members, deleted_data_members,
13514	member_fn_tmpls_changes, member_fn_tmpls_changes,
13515	member_class_tmpls_changes}): These member functions got moved
13516	into -- and shared with -- class_or_union_diff class.
13517	(class union_diff): Declare new type.
13518	(typedef union_diff_sptr): New typedef.
13519	(compute_diff): New overload for union_diff
13520	(is_class_diff, is_union_diff): Declare new functions.
13521	* src/abg-comparison.cc (is_class_diff, is_union_diff): Define new
13522	functions.
13523	(compute_diff_for_types): Support union_decl.
13524	(represent):  Adjust.
13525	(represent_data_member): Do not show offset information for data
13526	members of unions as all union data members are at offset 0.
13527	(struct class_or_union_diff::priv): New type.
13528	(class_or_union_diff::priv::{member_type_has_changed,
13529	subtype_changed_dm, member_class_tmpl_has_changed,
13530	get_deleted_non_static_data_members_number,
13531	get_inserted_non_static_data_members_number,
13532	count_filtered_subtype_changed_dm, count_filtered_changed_dm,
13533	count_filtered_changed_mem_fns, count_filtered_inserted_mem_fns,
13534	count_filtered_deleted_mem_fns}): Define new member functions.
13535	(class_or_union_diff::{class_or_union_diff, finish_diff_type,
13536	lookup_tables_empty, lookup_tables_empty,
13537	ensure_lookup_tables_populated, allocate_priv_data, get_priv,
13538	~class_or_union_diff, first_class_or_union, second_class_or_union,
13539	member_types_changes, member_types_changes, data_members_changes,
13540	inserted_data_members, deleted_data_members, member_fns_changes,
13541	changed_member_fns, member_fns_changes, inserted_member_fns,
13542	member_fn_tmpls_changes, member_fn_tmpls_changes,
13543	member_class_tmpls_changes, member_class_tmpls_changes,
13544	has_changes, has_local_changes, report, chain_into_hierarchy}):
13545	Define new member functions.
13546	(class_diff::priv::{member_types_changes_, data_members_changes,
13547	member_fn_tmpls_changes_, member_class_tmpls_changes_,
13548	deleted_member_types_, inserted_member_types_,
13549	changed_member_types_, sorted_changed_member_types_,
13550	deleted_data_members_, deleted_dm_by_offset_,
13551	inserted_data_members_, inserted_dm_by_offset_,
13552	subtype_changed_dm_, sorted_subtype_changed_dm_, changed_dm_,
13553	sorted_changed_dm_, deleted_member_functions_,
13554	inserted_member_functions_, changed_member_functions_,
13555	sorted_changed_member_functions_, deleted_member_class_tmpls_,
13556	inserted_member_class_tmpls_, changed_member_class_tmpls_,
13557	sorted_changed_member_class_tmpls_}): Move these data members into
13558	class_or_union_diff::priv.
13559	(class_diff::{clear_lookup_tables, lookup_tables_empty,
13560	ensure_lookup_tables_populate}): Adjust.
13561	(class_diff::allocate_priv_data): Define new function.
13562	(class_diff::priv::{count_filtered_changed_mem_fns,
13563	count_filtered_inserted_mem_fns, count_filtered_deleted_mem_fns,
13564	chain_into_hierarchy, class_diff}): Likewise.
13565	(class_diff::{member_types_changes, data_members_changes,
13566	inserted_data_members, deleted_data_members,
13567	member_fn_tmpls_changes, member_fn_tmpls_changes,
13568	member_class_tmpls_changes}): These are deleted as they got moved
13569	to class_or_union_diff.
13570	(class_diff::report): Adjust.
13571	(union_diff::{clear_lookup_tables, lookup_tables_empty,
13572	ensure_lookup_tables_populated, allocate_priv_data, union_diff,
13573	finish_diff_type, first_union_decl, second_union_decl,
13574	get_pretty_representation, report}): Define new functions.
13575	(compute_diff): Define an overload for union_decl_sptr.
13576	(function_decl_diff::report): Adjust.
13577	(corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars):
13578	Adjust.
13579	(corpus_diff::report): Adjust.
13580	* src/abg-hash.cc (member_base::hash::operator)
13581	(member_function_template::hash::operator)
13582	(member_class_template::hash::operator): Move these out of the
13583	class_decl scope.
13584	(class_or_union::hash::operator): Define new member function.
13585	(class_decl::hash::operator): Adjust.
13586	(type_base::dynamic_hash::operator): Support hashing of
13587	union_decl.  Adjust.
13588	* src/abg-suppression.cc (type_suppression::suppresses_diff):
13589	Adjust.
13590	* src/abg-dwarf-reader.cc (typedef die_class_or_union_map_type):
13591	Define new typedef.
13592	(read_context::{die_wip_classes_map_,
13593	alternate_die_wip_classes_map_, type_unit_die_wip_classes_map_):
13594	Make these data member have type die_class_or_union_map_type.
13595	(read_context::{lookup_type_from_die_offset, die_wip_classes_map,
13596	is_wip_class_die_offset, resolve_declaration_only_classes}):
13597	Adjust.
13598	(finish_member_function_reading, build_class_type_and_add_to_ir)
13599	(build_function_type, build_function_decl, build_reference_type)
13600	(type_is_suppressed, build_function_decl)
13601	(maybe_canonicalize_type, maybe_set_member_type_access_specifier):
13602	Adjust.
13603	(build_union_type_and_add_to_ir): Define new static function.
13604	(build_ir_node_from_die): Support DW_TAG_union_type DIE tag.
13605	* src/abg-reader.cc (handle_element_node): Handle union_decl.
13606	(build_function_decl, build_function_decl_if_not_suppressed):
13607	Adjust.
13608	(build_union_decl_if_not_suppressed, build_union_decl)
13609	(handle_union_decl): Define new functions.
13610	(build_class_decl): Adjust.
13611	* src/abg-writer.cc (record_decl_only_type_as_emitted): Adjust.
13612	(write_decl): Adjust. Support writting union_decl type.
13613	p	(write_class_decl_opening_tag, write_class_decl): Adjust.  Call
13614	the new write_class_or_union_is_declaration_only.
13615	(write_union_decl_opening_tag, write_union_decl): Define new
13616	static functions.
13617	(write_member_tpe): Support writting union decl.
13618	* tests/test-diff-dwarf.cc (in_out_specs): Add new tests for this
13619	union type support.
13620	* tests/data/test-diff-dwarf/libtest37-union-v0.so: New test input.
13621	* tests/data/test-diff-dwarf/libtest37-union-v1.so: Likewise.
13622	* tests/data/test-diff-dwarf/libtest38-union-v0.so: Likewise.
13623	* tests/data/test-diff-dwarf/libtest38-union-v1.so: Likewise.
13624	* tests/data/test-diff-dwarf/libtest39-union-v0.so: Likewise.
13625	* tests/data/test-diff-dwarf/libtest39-union-v1.so: Likewise.
13626	* tests/data/test-diff-dwarf/test37-union-report-0.txt: Likewise.
13627	* tests/data/test-diff-dwarf/test38-union-report-0.txt: Likewise.
13628	* tests/data/test-diff-dwarf/test39-union-report-0.txt: Likewise.
13629	* tests/data/test-diff-dwarf/test37-union-v0.cc: Source code for
13630	new test input.
13631	* tests/data/test-diff-dwarf/test37-union-v1.cc: Likewise.
13632	* tests/data/test-diff-dwarf/test38-union-v0.cc: Likewise.
13633	* tests/data/test-diff-dwarf/test38-union-v1.cc: Likewise.
13634	* tests/data/test-diff-dwarf/test39-union-v0.cc: Likewise.
13635	* tests/data/test-diff-dwarf/test39-union-v1.cc: Likewise.
13636	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
13637	Update test reference.
13638	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
13639	Likewise.
13640	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
13641	Likewise.
13642	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
13643	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
13644	Likewise.
13645	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
13646	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
13647	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
13648	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
13649	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
13650	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
13651	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
13652	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
13653	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
13654	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
13655	Likewise.
13656	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
13657	Likewise.
13658	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
13659	Likewise.
13660	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
13661	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
13662	Likewise.
13663	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
13664	Likewise.
13665
136662016-11-10  Dodji Seketeli <dodji@redhat.com>
13667
13668	Support empty properties in INI files
13669	* include/abg-ini.h (simple_property::simple_property): Add a new
13670	constructor for empty values.
13671	(simple_property::has_empty_value): Declare new member function.
13672	* src/abg-ini.cc (simple_property::{simple_property,
13673	has_empty_value}): Define new member functions.
13674	(read_context::read_property): Support reading a property with no
13675	value.
13676	(write_property_value, write_property): Support writting a
13677	property with empty value.
13678
136792016-11-10  Dodji Seketeli <dodji@redhat.com>
13680
13681	Rename config::property_vector into config::properties_type
13682	* include/abg-ini.h (config::properties_type): Rename the typedef
13683	config::property_vector into this.
13684	(config::section::{section, get_properties, set_properties}):
13685	Adjust.
13686	* src/abg-ini.cc (config::section::priv::properties_): Adjust the
13687	name of its type.
13688	(config::section::{section, get_properties, set_properties,
13689	find_property}): Adjust.
13690	(write_section): Adjust.
13691	* src/abg-suppression.cc (read_function_suppression): Adjust.
13692
136932016-11-09  Dodji Seketeli <dodji@redhat.com>
13694
13695	Apply harmless and harmful filters in one pass
13696	* include/abg-comp-filter.h (class harmless_harmful_filter):
13697	Decalre new class.
13698	(typedef harmless_harmful_filter_sptr): Declare new typedef.
13699	(class harmless_filter, class harmful_filter): Remove these class
13700	declarations.
13701	(typedef harmful_filter_sptr, harmless_filter_sptr): Remove these
13702	typedefs.
13703	* src/abg-comp-filter.cc (categorize_harmless_diff_node)
13704	(categorize_harmful_diff_node): Define new static functions.
13705	({harmless, harmful}_filter::{visit, visit_end}): Remove these
13706	member functions.
13707	(harmless_harmful_filter::{visit, visit_end}): Define new member
13708	functions.
13709	* src/abg-comparison.cc (diff_context::diff_context): Register the
13710	new harmless_harmful_filter, and remove the premier
13711	harmless_filter and harmful_filter.
13712	# Please enter the commit message for your changes. Lines starting
13713	# with '#' will be ignored, and an empty message aborts the
13714	commit.  # On branch kabidiff-dedup # Changes to be committed: #
13715	(use "git reset HEAD <file>..." to unstage) # # modified:
13716	include/abg-comp-filter.h # modified: src/abg-comp-filter.cc #
13717	modified: src/abg-comparison.cc # # Untracked files: # (use "git
13718	add <file>..." to include in what will be committed) # # diff.txt
13719	# prtests/ # tests/data/test-read-dwarf/libtest23.so.abi.conflict
13720
137212016-11-08  Dodji Seketeli <dodji@redhat.com>
13722
13723	Avoid stripping typedefs too much
13724	* src/abg-ir.cc (types_are_compatible)
13725	(is_compatible_with_class_type): Do not strip typedefs.  Just get
13726	their leaf types.
13727
137282016-11-08  Dodji Seketeli <dodji@redhat.com>
13729
13730	Misc style cleanups in abg-ir.cc
13731	* src/abg-ir.cc (equals): In overloads for function_type and
13732	class_decl, avoid returning a constant when we can return a
13733	variable like in the rest of the code.
13734
137352016-11-01  Dodji Seketeli <dodji@redhat.com>
13736
13737	Factorize out string representation of array_type_def::subrange_type
13738	* src/abg-ir.cc (array_type_def::subrange_type::{as_string,
13739	vector_as_string}): Define methods.
13740	(array_type_def::get_subrange_representation): Use the new
13741	vector_as_string method.
13742
137432016-11-01  Dodji Seketeli <dodji@redhat.com>
13744
13745	Factorize out parsing of integral types
13746	* src/abg-ir-priv.h: New file.
13747	* src/Makefile.am: Add abg-ir-priv.h to the build system.
13748	* src/abg-ir.cc: Include the new abg-ir-priv.h header file.
13749	(class_integral_type): Move this type
13750	declaration to the new abg-ir-priv.h header.
13751	(integral_type::modifiers_type): Make this non-static.
13752	(parse_integral_type): This new overload is a factorized out of
13753	...
13754	(integral_type::integral_type): ... here.
13755
137562016-10-31  Dodji Seketeli <dodji@redhat.com>
13757
13758	Misc style fixes in abg-ir.cc
13759	* src/abg-ir.cc (get_function_type_name,
13760	get_pretty_representation): Misc style fixes.
13761
137622016-10-31  Dodji Seketeli <dodji@redhat.com>
13763
13764	Consider a method_decl as always being a member decl
13765	* src/abg-ir.cc (is_member_decl): Consider a method decl as always
13766	being a member decl.
13767	(is_member_function): Use is_member_decl.
13768
137692016-10-31  Dodji Seketeli <dodji@redhat.com>
13770
13771	Cleanup void and variadic parameter type interfaces
13772	* include/abg-ir.h (environment::{get_void_type,
13773	get_variadic_parameter_type}): Renamed get_void_type_decl and
13774	get_variadic_parameter_type_decl to these.
13775	(environment::is_void_type): Remove the overload that takes a bare
13776	pointer.
13777	(environment::is_variadic_parameter_type): Declare new member
13778	function.
13779	* src/abg-ir.cc (environment::void_type_): Renamed the data member
13780	void_type_decl_ into this.
13781	(environment::variadic_marker_type_): Renamed the data member
13782	variadic_marker_type_decl_ into this.
13783	(environment::{get_void_type, get_variadic_parameter_type}):
13784	Renamed get_void_type_decl and get_variadic_parameter_type_decl to
13785	these.
13786	(environment::is_void_type): Take a smart pointer now.
13787	(environment::is_variadic_parameter_type): Define new member
13788	function.
13789	(synthesize_function_type_from_translation_unit): Adjust.
13790	(function_decl::parameter::get_pretty_representation): Likewise.
13791	* src/abg-comparison.cc (is_diff_of_variadic_parameter_type):
13792	Adjust.
13793	* src/abg-dwarf-reader.cc (build_function_type)
13794	(build_ir_node_for_void_type): Likewise.
13795	* src/abg-reader.cc (build_function_parameter)
13796	(build_function_decl, build_function_type): Likewise.
13797
137982016-10-31  Dodji Seketeli <dodji@redhat.com>
13799
13800	Cleanup some entry points in abg-fwd.h
13801	* include/abg-fwd.h (add_decl_to_scope): Pass the scope smart
13802	pointer by reference.
13803	(is_member_type): pass the type smart pointer by reference.
13804	(is_function_decl, is_pointer_type, is_reference_type)
13805	(is_qualified_type, is_function_type, is_method_type)
13806	(is_array_type): Take a type_or_decl base pointer, rather than
13807	either a decl_base or type_base pointer.
13808	* include/abg-ir.h (translation_unit::set_corpus): Take a pointer
13809	to non-const corpus.
13810	(translation_unit::get_corpus): Add a non-const overload.
13811	(type_or_decl_base::get_corpus): Likewise.
13812	(type_or_decl_base::set_translation_unit): Take a pointer to
13813	non-corpus translation_unit.
13814	(type_or_decl_base::get_translation_unit): Add a non-const
13815	overload.
13816	(scope_decl::{add_member_decl, insert_member_decl}): Pass the
13817	member smart pointer by reference.
13818	(scope_decl::remove_member_decl): Take a non-const smart pointer.
13819	(class_decl::add_member_decl): Pass the decl smart pointer by
13820	reference.
13821	(is_method_decl): Take pointer or reference to type_or_decl_base
13822	rather than function_decl.
13823	* src/abg-ir.cc (translation_unit::priv::corpus): Make this a
13824	pointer to non-const corpus.
13825	(translation_unit::set_corpus): Take a pointer to non-const
13826	corpus.
13827	(translation_unit::get_corpus): Add a non-const overload.
13828	(translation_unit::get_global_scope): Adjust.
13829	(translation_unit::bind_function_type_life_time): Adjust.
13830	(type_or_decl_base::translation_unit): Make this a pointer to
13831	non-const translation_unit.
13832	(type_or_decl_base::get_corpus): Likewise.
13833	(type_or_decl_base::set_translation_unit): Take a pointer to
13834	non-corpus translation_unit.
13835	(type_or_decl_base::get_translation_unit): Add a non-const
13836	overload.
13837	(is_member_type): pass the type smart pointer by reference.
13838	(scope_decl::{add_member_decl, insert_member_decl}): Take a
13839	reference to the member decl smart pointer.  Adjust.
13840	(class_decl::add_member_decl): Likewise.
13841	(scope_decl::remove_member_decl): Take a non-const smart pointer.
13842	(add_decl_to_scope): Pass the scope smart pointer by reference.
13843	(is_decl, is_function_decl, is_pointer_type, is_reference_type)
13844	(is_qualified_type, is_function_type, is_method_type)
13845	(is_method_decl, is_array_type): Take a type_or_decl base pointer,
13846	rather than either a decl_base or type_base pointer.
13847
138482016-10-31  Dodji Seketeli <dodji@redhat.com>
13849
13850	Fix abigail::ir::get_type_scope()
13851	* src/abg-ir.cc (get_type_scope): Do not always return nil.
13852
138532016-10-27  Dodji Seketeli <dodji@redhat.com>
13854
13855	Bug 20740 Broken check for dwarf_getalt in configure.ac
13856	* configure.ac: Add missing spaces around the "=" of a conditional
13857	expression.
13858
138592016-10-11  Dodji Seketeli <dodji@redhat.com>
13860
13861	Canonicalize function types when reading from DWARF
13862	* src/abg-dwarf-reader.cc (build_function_decl): Canonicalize
13863	function types.
13864
138652016-10-11  Dodji Seketeli <dodji@redhat.com>
13866
13867	Misc cleanups here and there
13868	* src/abg-dwarf-reader.cc (canonicalize_types_scheduled): Fix
13869	identation.
13870	* src/abg-reader.cc (build_class_decl): Use class_decl_sptr rather
13871	than shared_ptr<class_decl>.
13872	* src/abg-writer.cc (write_class_is_declaration_only)
13873	(write_is_struct, write_decl, write_decl_in_scope)
13874	(write_type_decl, write_qualified_type_def)
13875	(write_pointer_type_def, write_reference_type_def)
13876	(write_array_type_def, write_enum_type_decl, write_typedef_decl)
13877	(write_elf_symbol, write_var_decl, write_function_decl)
13878	(write_member_type_opening_tag, write_member_type)
13879	(write_class_decl_opening_tag, write_class_decl): Cleanup
13880	parameters to use the right typedef, rather than the long
13881	shared_ptr<*> form.  Pass the shared pointers by reference as
13882	well.
13883
138842016-10-10  Dodji Seketeli <dodji@redhat.com>
13885
13886	Cleanup namespace importing in abg-interned-str.h
13887	* include/abg-interned-str.h: Inject std::tr1::shared_ptr,
13888	std::string and std::ostream inside the abigail namespace.
13889	(interned_string::{interned_string, raw, operator==, operator!=,
13890	operator<): Adjust.
13891	(operator==, operator!=, operator<<, operator+): Adjust.
13892
138932016-10-07  Dodji Seketeli <dodji@redhat.com>
13894
13895	Cleanup functions to detect infinite comparison of class_decl
13896	* src/abg-ir.cc (class_decl::priv::unmark_as_being_compared): In
13897	the overload that takes a pointer to class_decl, re-use the
13898	overload that takes a reference.
13899	(class_decl::priv::comparison_started): Do not crash if the klass
13900	pointer is nil.
13901	(equals): In the overload for class_decl&, undef the RESULT macro
13902	when it's not used anymore.
13903
139042016-10-07  Dodji Seketeli <dodji@redhat.com>
13905
13906	Cleanup class_decl inifite comparison detection
13907	* src/abg-ir.cc (environment::priv::classes_being_compared_): Make
13908	this use the new interned_string_set_type type.
13909	(class_decl::priv::{mark_as_being_compared, comparison_started}):
13910	Adjust.
13911
139122016-10-10  Dodji Seketeli <dodji@redhat.com>
13913
13914	Apply ODR-based type comparison optimization to function types
13915	* src/abg-ir.cc (type_eligible_for_odr_based_comparison):
13916	Factorize this out of type_base::get_canonical_type_for.  Also,
13917	add function types to the set of types to use the ODR-based
13918	comparison optimization on.
13919	(type_base::get_canonical_type_for): Use the new
13920	type_eligible_for_odr_based_comparison function.
13921
139222016-10-07  Dodji Seketeli <dodji@redhat.com>
13923
13924	Prevent infinite loops while comparing two function_type
13925	* include/abg-ir.h (class environment): Make class function_type
13926	be a friend of this class.
13927	(class function_type): Make the equality function for
13928	function_types be a friend of this class.
13929	* src/abg-ir.cc (environment::priv::fn_types_being_compared_): New
13930	data member.
13931	(function_type::priv::{mark_as_being_compared,
13932	unmark_as_being_compared, comparison_started}): Define new member
13933	functions.
13934	(equals): In the overload for function_types, if any of the the
13935	function_type being compared is already being compared, return
13936	early saying that the two function_types are equal.  This avoids
13937
139382016-10-06  Dodji Seketeli <dodji@redhat.com>
13939
13940	Define a new interned_string_set_type typedef
13941	* include/abg-interned-str.h (interned_string_set_type): Define a new
13942	typedef for unordered_set<interned_string>.
13943
139442016-09-23  Dodji Seketeli <dodji@redhat.com>
13945
13946	Update reference output of runtestreaddwarf
13947	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
13948	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
13949	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
13950	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
13951	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
13952
139532016-09-21  Matthias Klose <doko@debian.org>
13954
13955	Fix typo in abipkgdiff
13956	* tools/abipkgdiff.cc (extract_deb): Fix typo.
13957
139582016-09-12  Dodji Seketeli <dodji@redhat.com>
13959
13960	Better handle fedabipkgdiff dependencies detection
13961	* configure.ac: It's only when --enable-fedabipkgdiff is provided
13962	that a missing dependency of the fedabipkgdiff program results in
13963	a fatal error.  Otherwise, building fedabipkgdiff is just
13964	disabled.
13965
139662016-09-16  Dodji Seketeli <dodji@redhat.com>
13967
13968	Add default suppression specifications for C++ binaries
13969	* default.abignore: Add suppressions for non-libstdc++ and
13970	non-boost C++ libraries.
13971
139722016-09-20  Dodji Seketeli <dodji@redhat.com>
13973
13974	Add default suppression specification for webkitgtk
13975	* default.abignore: New suppression specifications for webkitgtk.
13976
139772016-09-19  Dodji Seketeli <dodji@redhat.com>
13978
13979	Drop suppressed ABI artifacts from the IR
13980	* doc/manuals/abidw.rst: Document the new --suppressions and
13981	--headers-dir options off the abidw tool.
13982	* doc/manuals/abilint.rst: Document the new --suppressions and
13983	--headers-dir options on the abilint tool.
13984	* doc/manuals/libabigail-concepts.rst: Document the new "drop" and
13985	"name_not_regexp" properties on suppression directives.
13986	* include/abg-corpus.h (corpus::corpus): Add a default argument to
13987	the path parameter.
13988	* src/abg-suppression-priv.h: New private header file.
13989	* src/Makefile.am: Add the new abg-suppression-priv.h file to
13990	source distribution.
13991	* include/abg-suppression.h ({suppression_base, type_suppression,
13992	function_suppression, variable_suppression}::priv): Make these
13993	public.
13994	(suppression_base::{g,s}et_drops_artifact_from_ir): Declare new
13995	member functions.
13996	(type_suppression::{suppressed_type}): Likewise.
13997	(suppression_base::{names,sonames}_of_binaries_match): Remove
13998	member functions.
13999	(function_suppression::{get_name, set_name, get_name_regex_str,
14000	set_name_regex_str}): Renamed get_function_name,
14001	set_function_name, get_function_name_regex_str,
14002	set_function_name_regex_str into these.
14003	({variable,function}_suppression::{g,s}et_name_not_regex_str):
14004	Declare new member functions.
14005	* src/abg-suppression.cc: Include the new abg-suppression-priv.h
14006	private header.
14007	(class suppression_base::priv, class type_suppression::priv, class
14008	function_suppression::parameter_spec::priv, class
14009	function_suppression::priv, class variable_suppression::priv):
14010	Move these types to that new private header.
14011	(suppression_base::{g,s}et_drops_artifact_from_ir)
14012	(function_suppression::{g,s}et_name_not_regex_str)
14013	(variable_suppression::{g,s}et_name_not_regex_str): New member
14014	functions.
14015	(sonames_of_binaries_match): New static function, taken from
14016	suppression_base::sonames_of_binaries_match.
14017	(names_of_binaries_match): New static function, taken from
14018	suppression_base::names_of_binaries_match.
14019	(suppression_matches_type_no_name): New static function.
14020	(type_suppression::suppresses_type): Adjust
14021	(function_suppression::suppresses_function)
14022	(variable_suppression::suppresses_variable): Adjust.  Evaluate the
14023	new "name_not_regexp" property.
14024	(suppression_matches_type_name)
14025	(suppression_matches_type_location)
14026	(suppression_matches_type_name_or_location)
14027	(suppression_matches_function_name)
14028	(suppression_matches_function_sym_name)
14029	(suppression_matches_variable_name)
14030	(suppression_matches_variable_sym_name, suppression_matches_type):
14031	New functions.
14032	(read_type_suppression): Support the new "drop_artifacts" and
14033	"drop" properties.
14034	(read_function_suppression, read_variable_suppression): Support
14035	the new "drop_artifacts", "drop", and "name_not_regexp"
14036	properties.
14037	(function_suppression::{g,s}et_name): Renamed
14038	{g,s}et_function_name into these.
14039	(function_suppression::set_name_not_regex_str): Renamed
14040	{g,s}et_name_regex_str into this.
14041	(function_suppression::suppresses_function_symbol): Adjust.
14042	* include/abg-dwarf-reader.h (add_read_context_suppressions):
14043	Declare new function.
14044	* src/abg-dwarf-reader.cc: Use the new private
14045	abg-suppression-priv.h header file.
14046	(read_context::supprs_): New data member.
14047	(read_context::get_suppressions): New member function.
14048	(read_context::get_die_source): Make this const.
14049	(read_context::tu_die_imported_unit_points_map): Add a const
14050	overload.
14051	(read_context::cur_transl_unit): Renamed current_translation_unit
14052	unit into this;
14053	(read_context::cur_tu): Remove or rename into cur_transl_unit.
14054	(get_scope_for_die, build_translation_unit_and_add_to_ir)
14055	(build_enum_type, build_pointer_type_def, build_reference_type)
14056	(build_function_type, build_array_type, build_function_decl):
14057	Adjust.
14058	(read_context::{suppression_can_match,
14059	suppression_matches_function_sym_name,
14060	suppression_matches_function_name,
14061	suppression_matches_variable_sym_name,
14062	suppression_matches_variable_name,
14063	suppression_matches_type_name_or_location,
14064	suppression_matches_type_name}): Add member functions.
14065	(die_signed_constant_attribute): Remove this as dead code.
14066	(die_location, die_loc_and_name)
14067	(find_import_unit_point_between_dies)
14068	(find_import_unit_point_before_die, get_parent_die): Make the
14069	read_context& parameter be const and adjust as required.
14070	(build_var_decl_if_not_suppressed, function_is_suppressed)
14071	(variable_is_suppressed, type_is_suppressed): Define new static
14072	functions.
14073	(add_read_context_suppressions): Define new function.
14074	(build_class_type_and_add_to_ir): Do not add suppressed static
14075	data members to the IR.
14076	(build_ir_node_from_die): Do not add suppressed enum types, class
14077	types, variables or functions to the IR.  Adjust for the
14078	read_context::cur_tu -> read_context::cur_transl_unit rename.
14079	* include/abg-reader.h (read_context_sptr): Declare new type.
14080	(create_native_xml_read_context, read_corpus_from_input)
14081	(add_read_context_suppressions): Declare new functions.
14082	* src/abg-reader.cc: Include the new private
14083	abg-suppression-priv.h header file.
14084	(read_context::m_exported_decls_builder): Renamed
14085	m_exported_decls_builder_ into this.
14086	(read_context::get_exported_decls_builder): Adjust.
14087	(read_context::get_cur_scope): Make this const.
14088	(read_location): Take a const read_context and adjust.
14089	(read_corpus_from_input): Make this non-static.
14090	(build_namespace_decl): Don't abort if trying to add an artifact
14091	to the IR doesn't succeed.  It might be suppressed now.
14092	(read_context::{m_path, m_supprs}): New data members.
14093	(read_context::{g,s}et_path): New member functions.
14094	(read_context::{get_suppressions,
14095	suppression_matches_function_name, suppression_can_match,
14096	suppression_matches_function_name,
14097	suppression_matches_function_sym_name,
14098	suppression_matches_variable_name,
14099	suppression_matches_variable_sym_name,
14100	suppression_matches_type_name_or_location}): Likewise.
14101	(add_read_context_suppressions, create_native_xml_read_context)
14102	(read_corpus_from_native_xml): New functions.
14103	(build_function_decl_if_not_suppressed, function_is_suppressed)
14104	(type_is_suppressed, build_var_decl_if_not_suppressed)
14105	(variable_is_suppressed, build_enum_type_decl_if_not_suppressed)
14106	(build_class_decl_if_not_suppressed): New static functions.
14107	(build_class_decl): Add member types that are being built early,
14108	so that their sub-types can be evaluated for suppression.  Do not
14109	add suppressed static data members or suppressed member functions
14110	to the IR.
14111	(build_type): Do not add an enum type or a class type to the IR if
14112	they are suppressed.
14113	(handle_enum_type_decl): Do not add an enum type to the IR if its
14114	suppressed.
14115	(handle_var_decl): Likewise for a variable decl.
14116	(handle_function_decl): Likewise for a function decl.
14117	(handle_class_decl): Likewise for a class decl.
14118	* src/abg-tools-utils.cc (handle_fts_entry): Drop suppressed ABI
14119	from the IR.
14120	* tools/abidiff.cc (display_usage): Fix help strings for
14121	--headers-dirs{1,2}.
14122	(set_suppressions): New static function.
14123	(main): Adjust.  Release the memory used by read_context early.
14124	* tools/abidw.cc (options::{headers_dir, suppression_paths}):
14125	(display_usage): New help strings for the new --header-dir and
14126	--suppressions options.
14127	(parse_command_line): Parse the new --header-dir and
14128	--suppressions options.
14129	(maybe_check_suppression_files, set_suppressions): New static
14130	functions.
14131	(main): Use the two new functions above.  Free the memory used by
14132	the read context before working with the corpus.
14133	* tools/abilint.cc (options::suppression_paths):
14134	(display_usage): New help strings for the new --header-dir and
14135	--suppressions options.
14136	(parse_command_line): Parse the new --header-dir and
14137	--suppressions options.
14138	(maybe_check_suppression_files, set_suppressions): New static
14139	functions.
14140	(main): Use the two new functions above.  Free the memory used by
14141	the read context before working with the corpus.
14142	* tests/data/test-diff-suppr/test24-soname-suppr-{2,3].txt:
14143	Adjust.
14144	* tests/data/test-diff-suppr/test29-suppr-6.txt: Likewise.
14145	* tests/data/test-diff-suppr/test29-suppr-8.txt: Likewise.
14146	* tests/data/test-diff-suppr/libtest31-v{0,1}.so: New test input.
14147	* tests/data/test-diff-suppr/libtest31.suppr: Likewise
14148	* tests/data/test-diff-suppr/libtest32-v{0,1}.so: Likewise.
14149	* tests/data/test-diff-suppr/libtest32-0.suppr: Likewise.
14150	* tests/data/test-diff-suppr/libtest33-v{0,1}.so: Likewise.
14151	* tests/data/test-diff-suppr/test31-report-{0,1}.txt: Likewise.
14152	* tests/data/test-diff-suppr/test31-v{0,1}.cc: Likewise.
14153	* tests/data/test-diff-suppr/test32-report-{0,1}.txt: Likewise.
14154	* tests/data/test-diff-suppr/test32-v{0,1}.c: Likewise.
14155	* tests/data/test-diff-suppr/test33-suppr-1.txt: Likewise.
14156	* tests/data/test-diff-suppr/test33-v{0,1}.cc: Likewise.
14157	* tests/data/test-diff-suppr/test33-v{0,1}.h: Likewise.
14158	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
14159	Likewise.
14160	* tests/data/test-read-dwarf/libtest24-drop-fns.so: Likewise.
14161	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
14162	* tests/data/test-read-dwarf/test24-drop-fns-0.suppr: Likewise.
14163	* tests/data/test-read-dwarf/test24-drop-fns.cc: Likewise.
14164	* tests/data/test-read-write/test28-drop-std-fns.abignore:
14165	Likewise.
14166	* tests/data/test-read-write/test28-drop-std-vars.abignore:
14167	Likewise.
14168	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
14169	Likewise.
14170	* tests/data/test-read-write/test28-without-std-fns.xml: Likewise.
14171	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
14172	Likewise.
14173	* tests/data/test-read-write/test28-without-std-vars.xml:
14174	Likewise.
14175	* tests/data/test-read-write/test28.xml: Likewise.
14176	* tests/data/Makefile.am: Add the new test artifacts to source
14177	distribution.
14178	* tests/test-diff-suppr.cc (in_out_spec): Take the new test inputs
14179	into account.
14180	* tests/test-read-dwarf.cc (Inoutspec::in_suppr_spec_path): New
14181	data member.
14182	(in_out_spec): Adjust.  The new test inputs into account.
14183	(set_suppressions): New static function.
14184	(handle_in_out_spec): Adjust.
14185	* tests/test-read-write.cc (Inoutspec::{in_suppr_spec_path,
14186	ref_out_path}): New data members.
14187	(in_out_spec): Adjust.  Take new test inputs into account.
14188	(main): Adjust.
14189
141902016-09-19  Dodji Seketeli <dodji@redhat.com>
14191
14192	Pimplify the abigail::ir::scope_decl type
14193	* include/abg-ir.h (scope_decl::{priv, priv_sptr}) Declare new types.
14194	(scope_decl::priv_): New pimpl data member.
14195	(scope_decl::{member_, member_scopes}): Move this as data member
14196	of the new scope_decl::priv type in the abg-ir.cc file.
14197	(scope_decl::{scope_decl, get_member_decls, get_member_scopes,
14198	is_empty}): Make these inline member functions be out-of-line.
14199	* src/abg-ir.cc (struct scope_decl::priv): Define new type.
14200	(scope_decl::{scope_decl, get_member_decls, get_member_scopes,
14201	is_empty}): Define these new member functions here.  They were
14202	inline in the include/abg-ir.h header files before.
14203	(scope_decl::{add_member_decl, insert_member_decl,
14204	remove_member_decl}): Adjust.
14205
142062016-09-19  Dodji Seketeli <dodji@redhat.com>
14207
14208	Add new helper functions
14209	* include/abg-fwd.h (get_location, build_qualified_name): Declare
14210	new functions.
14211	* include/abg-ir.h (is_method_decl): Declare two new overloads of
14212	this function.
14213	* src/abg-ir.cc (get_location, build_qualified_name)
14214	(is_method_decl): Define these functions declared above.
14215
142162016-09-19  Dodji Seketeli <dodji@redhat.com>
14217
14218	Do not emit empty namespaces in abixml
14219	* include/abg-ir.h
14220	(namespace_decl::is_empty_or_has_empty_sub_namespaces): Declare
14221	new function ...
14222	* src/abg-ir.cc
14223	(namespace_decl::is_empty_or_has_empty_sub_namespaces): ... and
14224	define it.
14225	* src/abg-writer.cc (write_namespace_decl): Do not write empty
14226	namespaces or namespaces containing empty namespaces.
14227	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
14228	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
14229	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
14230	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
14231	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
14232	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
14233	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
14234	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
14235	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
14236	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
14237	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
14238	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
14239
142402016-09-21  Dodji Seketeli <dodji@redhat.com>
14241
14242	Fix misleading indentation issues
14243	* tools/abipkgdiff.cc (compare): Likewise.
14244	* tools/abisym.cc (main): Fix misleading indentation.
14245
142462016-08-30  Dodji Seketeli <dodji@redhat.com>
14247
14248	Bug 20534 - abipkgdiff wrongly displays the name of added binary files
14249	* tools/abipkgdiff.cc (compare): Show the name of the added
14250	binary, rather than its address.
14251
142522016-08-24  Dodji Seketeli <dodji@redhat.com>
14253
14254	Bug 20420 - Wrong ODR-based type comparison optimization on qualified type
14255	* src/abg-ir.cc:
14256
142572016-08-23  Dodji Seketeli <dodji@redhat.com>
14258
14259	Don't walk diff trees indefinitely when applying suppressions
14260	* src/abg-comparison.cc:
14261
142622016-07-27  Dodji Seketeli <dodji@redhat.com>
14263
14264	Control symbols exported from libabigail.so
14265	* VISIBILITY: New documentation about this visiblity business.
14266	* CONTRIBUTING: Update the "contributing guide" to refer to symbol
14267	visibility issues.
14268	* configure.ac: Define a variable VISIBILITY_FLAGS that is set to
14269	the -fvisibility=hidden flag to pass to GCC, when its available.
14270	* src/Makefile.am: Add VISIBILITY to source distribution.  Also
14271	add COMPILING and COMMIT-LOG-GUIDELINES that were missing.
14272	* src/Makefile.am: Use the new $(VISIBILITY_FLAGS) when buiding
14273	the library.
14274	* tests/Makefile.am: Use the new $(VISIBILITY_FLAGS) when buiding
14275	tests.
14276	* tools/Makefile.am: Use the new $(VISIBILITY_FLAGS) when buiding
14277	tools.
14278	* src/abg-comp-filter.cc: Enclose inclusion of public headers in
14279	ABG_BEGIN_EXPORT_DECLARATIONS and ABG_END_EXPORT_DECLARATIONS to
14280	export the symbols of entities declared in there.
14281	* src/abg-comparison.cc: Likewise.
14282	* src/abg-config.cc: Likewise.
14283	* src/abg-corpus.cc: Likewise.
14284	* src/abg-diff-utils.cc: Likewise.
14285	* src/abg-dwarf-reader.cc: Likewise.
14286	* src/abg-hash.cc: Likewise.
14287	* src/abg-ini.cc: Likewise.
14288	* src/abg-ir.cc: Likewise.
14289	* src/abg-libxml-utils.cc: Likewise.
14290	* src/abg-libzip-utils.cc: Likewise.
14291	* src/abg-reader.cc: Likewise.
14292	* src/abg-suppression.cc: Likewise.
14293	* src/abg-tools-utils.cc: Likewise.
14294	* src/abg-traverse.cc: Likewise.
14295	* src/abg-viz-common.cc: Likewise.
14296	* src/abg-viz-dot.cc: Likewise.
14297	* src/abg-viz-svg.cc: Likewise.
14298	* src/abg-workers.cc: Likewise.
14299	* src/abg-writer.cc: Likewise.
14300
143012016-07-26  Dodji Seketeli <dodji@redhat.com>
14302
14303	Support DW_TAG_type_unit
14304	* src/abg-dwarf-reader.cc (TYPE_UNIT_DIE_SOURCE): New enumerator
14305	in enum die_source.
14306	(read_context::{type_unit_die_decl_map_, type_unit_die_type_map_,
14307	type_unit_die_wip_classes_map_,
14308	type_unit_die_wip_function_types_map_,
14309	type_unit_types_to_canonicalize_,
14310	type_units_tu_die_imported_unit_points_map_,
14311	type_section_die_parent_map_}): New data members.
14312	(read_context::{get_die_source, associate_die_to_decl,
14313	lookup_decl_from_die_offset, die_type_map, clear_die_type_maps,
14314	die_wip_classes_map, die_wip_function_types_map,
14315	types_to_canonicalize, clear_types_to_canonicalize,
14316	tu_die_imported_unit_points_map, die_parent_map}): Support
14317	TYPE_UNIT_DIE_SOURCE.
14318	(get_parent_die, get_scope_for_die): Likewise.
14319	(read_context::{lookup_decl_from_type_unit_die_offset,
14320	type_section_die_parent_map}): Define new member functions.
14321	(read_context::build_die_parent_maps): Build a DIE -> parent map
14322	for DIEs coming from the .debug_types section.
14323	* tests/data/test-read-dwarf/libtest23.so: New test input.
14324	* tests/data/test-read-dwarf/libtest23.so.abi: New reference output.
14325	* tests/data/test-read-dwarf/test23-first-tu.cc: Source code of
14326	the new binary above.
14327	* tests/data/test-read-dwarf/test23-second-tu.cc: Likewise.
14328	* tests/data/Makefile.am: Add the new test material above to
14329	source distribution.
14330	* tests/test-read-dwarf.cc (in_out_specs): Make this test harness
14331	execute over the new test input and reference output.
14332
143332016-07-26  Dodji Seketeli <dodji@redhat.com>
14334
14335	Misc code cleanup
14336	* src/abg-dwarf-reader.cc (build_function_decl): Use the more
14337	readable is_class_type rather than a dynamic_cast.
14338
143392016-07-26  Dodji Seketeli <dodji@redhat.com>
14340
14341	Generalize DIE source concept in DWARF reader
14342	* src/abg-dwarf-reader.cc (enum die_source): Define new enum.
14343	(operator++): Define new prefix increment operator for the
14344	die_source enum.
14345	(imported_unit_point::imported_unit_from_alt_di): Remove this
14346	data member.
14347	(imported_unit_point::imported_unit_die_source):
14348	New data member of type die_source.
14349	(read_context::primary_die_parent_map_): Renamed
14350	die_parent_map_ data member into this.
14351	(read_context::clear_per_corpus_data): Use the new
14352	clear_die_type_maps function, not die_type_map.  Also use the
14353	new clear_types_to_canonicalize overload that takes no
14354	parameter.
14355	(read_context::{get_die_source, clear_die_type_maps,
14356	clear_types_to_canonicalize}): New member functions.
14357	(build_ir_node_from_die, die_die_attribute, get_parent_die)
14358	(get_scope_for_die, build_namespace_decl_and_add_to_ir)
14359	(build_type_decl, build_enum_type)
14360	(build_class_type_and_add_to_ir, build_qualified_type)
14361	(build_pointer_type_def, build_reference_type)
14362	(build_function_type, build_array_type, build_typedef_type)
14363	(build_var_decl, build_function_decl): Remove the boolean
14364	parameter that was designating the source of the DIE.  If
14365	necessary, get the source of the DIE from inside the function
14366	using the new read_context::get_die_source.
14367	(read_debug_info_into_corpus): Adjust.
14368	(maybe_canonicalize_type, find_import_unit_point_between_dies)
14369	(maybe_canonicalize_type, read_context::{associate_die_to_decl,
14370	lookup_decl_from_die_offset, die_type_map, associate_die_to_type,
14371	lookup_type_from_die_offset, die_wip_classes_map,
14372	die_wip_function_types_map, is_wip_class_die_offset,
14373	is_wip_function_type_die_offset, types_to_canonicalize,
14374	schedule_type_for_late_canonicalization,
14375	canonicalize_types_scheduled, add_late_canonicalized_types_stats,
14376	perform_late_type_canonicalizing}): Take a die_source as the
14377	source of the DIE, not a boolean.  Adjust the code of the function
14378	accordingly.
14379	(read_context::{tu_die_imported_unit_points_map}): Modified
14380	this to make it take a die_source and return the appropriate
14381	map depending on the source.
14382	(read_context::build_die_parent_relations_under): Turn the
14383	non-member static function build_die_parent_relations_under
14384	into a member function.
14385	(read_context::build_die_parent_maps): Turn the non-member
14386	static function build_die_parent_maps into a member function.
14387	Make this function build a DIE -> parent map also for type
14388	DIEs that are in the .type_units section.
14389
143902016-07-25  Dodji Seketeli <dodji@redhat.com>
14391
14392	Cleanup is_class and is_compatible_with_class_type
14393	* include/abg-fwd.h (is_class): Remove the overloads that take a
14394	decl_base or a type_base.  Add one that takes a type_or_decl_base.
14395	(is_compatible_with_class_type): Make this take a reference to
14396	smart pointer, not just the smart pointer.
14397	* src/abg-ir.cc (is_class): Do the same as in the header file.
14398	(is_compatible_with_class_type): Likewise.
14399
144002016-07-22  Dodji Seketeli <dodji@redhat.com>
14401
14402	Add ABG_ASSERT_NOT_REACHED macro
14403	* include/abg-tools-utils.h (ABG_ASSERT_NOT_REACHED): New macro.
14404	* src/abg-dwarf-reader.cc (stt_to_elf_symbol_type)
14405	(stb_to_elf_symbol_binding, get_elf_class_size_in_bytes)
14406	(build_ir_node_from_die): Use the new ABG_ASSERT_NOT_REACHED macro
14407	in lieu of just calling abort().
14408
144092016-07-22  Dodji Seketeli <dodji@redhat.com>
14410
14411	Prepare support for symbol visibility control
14412	* configure.ac: Detect compiler support for
14413	__attribute__((visibility("hidden")) and define the
14414	HAS_GCC_VISIBILITY_ATTRIBUTE macro accordingly.  Update the
14415	configuration report.
14416	* src/abg-internal.h: New internal header file that defines macros
14417	to be used in the source code to control declaration visibility.
14418	* src/Makefile.am: Add abg-internal.h to source distribution.  Add
14419	src/ to the include search path.
14420
144212016-07-06  Chenxiong Qi <cqi@redhat.com>
14422
14423	Make fedabipkgdiff consistent with Libabigail's other tests
14424	* configure.ac: Do not require Python dependencies itertools,
14425	unittest and StringIO anymore as they are not used anymore.
14426	Require new module tempfile now.  Generate new executable script
14427	tests/mockfedabipkgdiff from tests/mockfedabipkgdiff.in.
14428	* doc/manuals/abipkgdiff.rst: Add doc for new option
14429	--show-identical-binaries to abipkgdiff
14430	* doc/manuals/fedabipkgdiff.rst: Add doc for new options
14431	--show-identical-binaries to fedabipkgdiff.
14432	* tools/abipkgdiff.cc (options::show_identical_binaries): New data
14433	member.
14434	(options::options): Initialize new data member.
14435	(display_usage): Add a new help string for the new
14436	--show-identical-binaries option.
14437	(parse_command_line): Parse the newq --show-identical-binaries
14438	command line switch.
14439	(pthread_routine_compare): When the comparison of two binaries is
14440	empty, if --show-identical-binaries was provided, then emit some
14441	output saying the comparison did yield the empty set.
14442	* tools/fedabipkgdiff (DEFAULT_ABIPKGDIFF): Store the default path
14443	to abipkgdiff in this new global variable.  Naming this default
14444	path is useful because it can then be cleanly overloaded when
14445	using mock.patch.
14446	(build_path_to_abipkgdiff): Return the new DEFAULT_ABIPKGDIFF
14447	global variable.
14448	(cmd): Parse the new --show-identical-binaries command line
14449	switch.
14450	* tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt:
14451	New reference output.
14452	* tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt:
14453	Likewise.
14454	* tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt:
14455	Likewise.
14456	* tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt:
14457	Likewise.
14458	* tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt:
14459	Likewise.
14460	* tests/mockfedabipkgdiff.in: New uninstalled script template.
14461	* tests/runtestfedabipkgdiff.py.in (counter)
14462	(temp_file_or_dir_prefix, UtilsTest, RPMTest, LocalRPMTest)
14463	(RunAbipkgdiffTest, GetPackageLatestBuildTest, DownloadRPMTest)
14464	(BrewListRPMsTest, AssertionHelper, MockGlobalConfig)
14465	(BUILT_ABIPKGDIFF, CompareABIFromCommandLineTest): Remove these
14466	classes, global variables and functions.
14467	(FEDABIPKGDIFF, TEST_SRC_DIR, TEST_BUILD_DIR, INPUT_DIR)
14468	(OUTPUT_DIR, FEDABIPKGDIFF_TEST_SPECS): New global variables.
14469	(ensure_output_dir_created, run_fedabipkgdiff_tests, main): New
14470	functions.
14471	* tests/test-diff-pkg.cc (in_out_specs): Add
14472	tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt
14473	to the set of reference outputs to consider.
14474	* tests/Makefile.am: Add non-installed script mockfedabipkgdiff to
14475	source distribution. Also added
14476	tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt,
14477	tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt,
14478	tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt,
14479	tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt
14480	and
14481	tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt
14482	to source distribution.
14483
144842016-07-13  Dodji Seketeli <dodji@redhat.com>
14485
14486	Fix spurious type size change report for distinct_diff
14487	* src/abg-comparison.cc (report_size_and_alignment_changes):
14488	Report size change only when the sizes are different.
14489	* tests/data/test-diff-filter/test33-report-0.txt: Adjust.
14490
144912016-07-13  Dodji Seketeli <dodji@redhat.com>
14492
14493	Bug 20199 - Consider integral type synonyms as being equal
14494	* src/abg-ir.cc (class integral_type): New class declaration and
14495	definition.
14496	(operator|, operator&, operator&=): New non-member bitwise
14497	operators for integral_type.
14498	(parse_integral_type_modifier, parse_base_integral_type)
14499	(parse_integral_type_modifier): New static function definitions.
14500	(type_decl::type_decl): Use the parse_integral_type to parse an
14501	integral type out of the current type_decl being built and
14502	transform the current type name into a canonical form.
14503	* tests/data/test-abidiff/test-PR18791-v0.so.abi: Adjust.
14504	* tests/data/test-abidiff/test-PR18791-v1.so.abi: Likewise.
14505	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
14506	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
14507	* tests/data/test-diff-filter/test33-report-0.txt: Likewise.
14508	* tests/data/test-diff-filter/test34-report-0.txt: Likewise.
14509	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise.
14510	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
14511	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
14512	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
14513	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
14514	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
14515	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
14516	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
14517	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
14518	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
14519	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
14520	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
14521	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
14522	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
14523	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
14524
145252016-07-08  Dodji Seketeli <dodji@redhat.com>
14526
14527	Bug 20332 - too many ...'s counted as parameters
14528	* src/abg-dwarf-reader.cc (build_function_type): Create a variadic
14529	parameter just for the first DW_TAG_unspecified_parameters seen.
14530	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
14531	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
14532	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
14533
145342016-07-06  Dodji Seketeli <dodji@redhat.com>
14535
14536	Better recognize qualified void type
14537	* include/abg-ir.h (environment::is_void_type): Declare new member
14538	function.
14539	* src/abg-ir.cc (environment::is_void_type): Define new member
14540	function.
14541	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Strip const
14542	qualifier from const void.
14543	* tests/data/test-diff-filter/test34-libjemalloc.so.2-gcc-6.1.0:
14544	New test input.
14545	* tests/data/test-diff-filter/test34-libjemalloc.so.2-intel-16.0.3: Likewise.
14546	* tests/data/test-diff-filter/test34-report-0.txt: New reference output.
14547	* tests/data/Makefile.am: Add the new files above to the source
14548	distribution.
14549	* tests/test-diff-filter.cc (in_out_specs): Compare the two new
14550	binaries above.
14551	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
14552	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
14553	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust.
14554	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Adjust.
14555	* tests/data/test-read-dwarf/test1.abi: Adjust.
14556	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
14557	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
14558	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
14559	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
14560	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
14561	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
14562	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
14563	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
14564	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
14565	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
14566	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
14567	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
14568	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
14569	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
14570
145712016-07-05  Dodji Seketeli <dodji@redhat.com>
14572
14573	Bug 20194 - Fail to recognize void type represented by DW_TAG_base_type
14574	* src/abg-dwarf-reader.cc (build_type_decl): Recognize a
14575	DW_TAG_base_type of size zero and of name "void" as a void
14576	type.
14577	* tests/data/test-diff-filter/test33-libelf.so.0.8.13-gcc: New
14578	binary test input.
14579	* tests/data/test-diff-filter/test33-libelf.so.0.8.13-intel16.0.3: Likewise.
14580	* tests/data/test-diff-filter/test33-report-0.txt: New reference output.
14581	* tests/data/Makefile.am: Add the new files above to source
14582	distribution.
14583	* tests/test-diff-filter.cc (in_out_specs): Make this test harness
14584	run over the new test inputs above.
14585
145862016-07-04  Dodji Seketeli <dodji@redhat.com>
14587
14588	Add a new overload for is_type_decl
14589	* include/abg-fwd.h (is_type_decl): Declare a new overload
14590	* src/abg-ir.cc (is_type_decl): Define a new overload.
14591	(function_decl::parameter::get_pretty_representation): Adjust.
14592
145932016-06-29  Chenxiong Qi <cqi@redhat.com>
14594
14595	Add --abipkgdiff option in manual and bash completion
14596	* doc/manuals/fedabipkgdiff.rst: Add description of --abipkgdiff
14597	option. Reformat paragraph.
14598	* bash-completion/fedabipkgdiff: Add --abipkgdiff
14599
146002016-06-29  Chenxiong Qi <cqi@redhat.com>
14601
14602	Add fedabipkgdiff bash completion to dist
14603	* bash-completion/Makefile.am: Add fedabipkgdiff
14604	* bash-completion/fedabipkgdiff: Change mode to 775
14605
146062016-06-29  Chenxiong Qi <cqi@redhat.com>
14607
14608	Update bash completion for fedabipkgdiff
14609	* bash-completion/fedabipkgdiff: New bash completion file.
14610
146112016-06-29  Dodji Seketeli <dodji@redhat.com>
14612
14613	Bump version number to 1.0.rc6
14614	* configure.ac: Bump version number to 1.0.rc6
14615
146162016-06-29  Dodji Seketeli <dodji@redhat.com>
14617
14618	Update web page for 1.0.rc5
14619	* doc/website/mainpage.txt: Update web page.
14620
146212016-06-27  Dodji Seketeli <dodji@redhat.com>
14622
14623	Update ChangeLog for 1.0.rc5
14624	* ChangeLog: Update by doing "make update-changelog" in the build
14625	directory.
14626
146272016-06-27  Dodji Seketeli <dodji@redhat.com>
14628
14629	Update NEWS file in preparation for 1.0.rc5
14630	* NEWS: update with the edited content of the command:
14631	git shortlog libabigail-1.0.rc4..HEAD
14632
146332016-06-27  Dodji Seketeli <dodji@redhat.com>
14634
14635	Fix python interpreter path for el6
14636	* tests/runtestdefaultsupprs.py.in: Use the python interpreter at
14637	/usr/bin/python, not the one at /bin/python.
14638
146392016-06-24  Dodji Seketeli <dodji@redhat.com>
14640
14641	Misc cleanup in abg-reader.cc
14642	* src/abg-reader.cc (read_context::push_decl_to_current_scope):
14643	Pass the decl smart pointer by value.
14644
146452016-06-22  Dodji Seketeli <dodji@redhat.com>
14646
14647	Use ODR-based optimization on C/C++ translation unit only
14648	* src/abg-ir.cc (strip_typedef): Set the translation unit of the
14649	new ABI artifact.
14650	(type_base::get_canonical_type_for): Perform the ODR-based
14651	optimization only for ABI artifact in C and C++ language
14652	translation units.
14653	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Assert that
14654	the new ABI artifact has its translation unit set.
14655	* src/abg-reader.cc (read_context::{push_decl_to_current_scope,
14656	push_and_key_type_decl}): Set the translation unit of the current
14657	decl, irrespective of if it was added to the current scope or not.
14658	Assert that the decl that was newly pushed to the current scope is
14659	added to the current translation unit.
14660
146612016-06-10  Dodji Seketeli <dodji@redhat.com>
14662
14663	Misc white space and comment cleanups
14664	* include/abg-ir.h (typedef type_or_decl_base): Cleanup comment.
14665	* src/abg-ir.cc (struct type_or_decl_base::priv): Fix comment.
14666
146672016-06-10  Dodji Seketeli <dodji@redhat.com>
14668
14669	Cleanup function_decl::parameter::get_pretty_representation
14670	* src/abg-ir.cc
14671	(function_decl::parameter::get_pretty_representation): Assert that
14672	the environment is always non-nil.  Then no needs to check for it
14673	being non-nil anymore.  Use is_type_decl instead of
14674	dynamic_pointer_cast.
14675
146762016-06-07  Chenxiong Qi <cqi@redhat.com>
14677
14678	Fix package NVR comparison in fedabipkgdiff
14679	* configure.ac: Add new dependency.
14680	* tests/runtestfedabipkgdiff.py.in (builds): Add new builds for
14681	running tests to test selecting latest build from a package.
14682	(packages): Add new package gnutls.
14683	(GetPackageLatestBuildTest.{test_get_latest_one,
14684	test_cannot_find_a_latest_build_with_invalid_distro}): Use new
14685	builds of package gnutls to run tests.
14686	* tools/fedabipkgdiff (cmp_nvr): New function used to compare nvrs
14687	by Python built-in function sorted.
14688	(Brew.listBuilds): Use the new cmp_nvr function.
14689
146902016-06-06  Chenxiong Qi <cqi@redhat.com>
14691
14692	Bug 20135 - Make fedabipkgdiff compare ABIs using devel packages
14693	* doc/manuals/fedabipkgdiff.rst: Add documentation for the new
14694	--no-devel-pkg command line option, as well as for the new default
14695	behaviour of taking devel packages into account during ABI
14696	comparison.
14697	* tools/fedabipkgdiff (PkgInfo): Add new attribute
14698	devel_package.
14699	(RPM.is_devel): New property to determine if rpm is a
14700	development package.
14701	(LocalRPM._find_rpm): New method to find a specific rpm.
14702	(LocalRPM.find_debuginfo): Use new method _find_rpm to find
14703	debuginfo package.
14704	(LocalRPM.find_devel): New method to find an associated
14705	development package.
14706	(Brew.select_rpms_from_a_build): RPMs selector method is
14707	changed to select development package also.
14708	(abipkgdiff): Construct and run abipkgdiff with and without
14709	--devel-pkg[12] options.
14710	(magic_construct): Construct PkgInfo with development package.
14711	(run_abipkgdiff): Run abipkgdiff against rpms with development
14712	packages.
14713	(diff_local_rpm_with_latest_rpm_from_koji): Find development
14714	package, and call method abipkgdiff with development package.
14715	(build_commandline_args_parser): add new option --no-devel-pkg.
14716	* tests/runtestfedabipkgdiff.py.in (packages): Add new package
14717	nss-util.
14718	(builds): Add new builds of nss-utils, nss-util-3.12.6-1.fc14
14719	and nss-util-3.24.0-2.0.fc25.
14720	(rpms): Add new associated rpms of the two new builds.
14721	(AssertionHelper.assert_functions_changes_summary): New method
14722	to match and assert functions changes summary.
14723	(AssertionHelper.assert_abi_comparison_result): Changed to
14724	support to help assert functions changes summary.
14725	(MockGlobalConfig.{no_devel_pkg, check_all_subpackages}): New
14726	fake options with default value for running tests.
14727	(RPMTest.setUp): add new development package for running test
14728	case.
14729	(RPMTest.test_is_devel): New test to test is_devel property.
14730	(RunAbipkgdiffTest.setUp): Add new development packages for
14731	running test case.
14732	(RunAbipkgdiffTest.{test_all_success, test_all_failure,
14733	test_partial_failure}): Mock global config.
14734	(RunAbipkgdiffWithDSOOnlyOptionTest): Removed.
14735	(CompareABIFromCommandLineTest.test_compare_with_no_devel_pkg):
14736	New test to test fedabipkgdiff with or without --no-devel-pkg
14737	option.
14738	* tests/data/Makefile.am: Add new rpms.
14739	* tests/data/test-fedabipkgdiff/packages/nss-util/3.12.6/1.fc14/
14740	x86_64/nss-util-3.12.6-1.fc14.x86_64.rpm: New rpm for running
14741	tests.
14742	* tests/data/test-fedabipkgdiff/packages/nss-util/3.12.6/1.fc14/
14743	x86_64/nss-util-debuginfo-3.12.6-1.fc14.x86_64.rpm: New rpm for
14744	running tests.
14745	* tests/data/test-fedabipkgdiff/packages/nss-util/3.12.6/1.fc14/
14746	x86_64/nss-util-devel-3.12.6-1.fc14.x86_64.rpm: New rpm for
14747	running tests.
14748	* tests/data/test-fedabipkgdiff/packages/nss-util/3.24.0/2.0.fc25/
14749	x86_64/nss-util-3.24.0-2.0.fc25.x86_64.rpm: New rpm for running
14750	tests.
14751	* tests/data/test-fedabipkgdiff/packages/nss-util/3.24.0/2.0.fc25/
14752	x86_64/nss-util-debuginfo-3.24.0-2.0.fc25.x86_64.rpm: New rpm
14753	for running tests.
14754	* tests/data/test-fedabipkgdiff/packages/nss-util/3.24.0/2.0.fc25/
14755	x86_64/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm: New rpm for
14756	running tests.
14757
147582016-06-03  Dodji Seketeli <dodji@redhat.com>
14759
14760	Improve python modules detection
14761	* configure.ac: Include
14762	autoconf-archive/ax_check_python_modules.m4 rather than
14763	autoconf-archive/ax_python_module.m4.  Use AX_CHECK_PYTHON_MODULES
14764	rather than AX_PYTHON_MODULE.
14765	* Makefile.am: Add the new file
14766	autoconf-archive/ax_check_python_modules.m4 to source distribution
14767	and remove the older autoconf-archive/ax_python_module.m4 one.
14768	* autoconf-archive/ax_check_python_modules.m4: New file.
14769	* autoconf-archive/ax_python_module.m4: Remove.
14770
147712016-05-30  Chenxiong Qi <cqi@redhat.com>
14772
14773	Add integration tests for fedabipkgdiff
14774	* configure.ac: do not detect shutil module.
14775	* tests/runtestfedabipkgdiff.py.in: do not import shutil
14776	anymore.
14777	(BUILT_ABIPKGDIFF): new global variable to reference the
14778	abipkgdiff built from source code, as the new test case' tests
14779	require this command directly rather than mocking the
14780	global_config.
14781	(test_data_dir): convert variable name to uppercase,
14782	reference to the test data directory by absolute path instead of
14783	relative path.
14784	(TEST_TOPDIR): new global variable to use data directory as the
14785	topdir passed to fedabpkgdiff to download rpms.
14786	(TEST_DOWNLOAD_CACHE_DIR): new global variable referencing a
14787	fake download cache directory for tests only.
14788	(packages, builds, rpms): new global variables as a fake
14789	storage holding packages, builds and rpms.
14790	(AssertionHelper): new class helping to assert abipkgdiff
14791	result easily.
14792	(MockClientSession): new class to mock koji.ClientSession.
14793	(MockGlobalConfig.abipkgdiff): set this option to global
14794	variable BUILT_ABIPKGDIFF.
14795	(MockKojiClientSessin): removed.
14796	(mock_get_session): removed.
14797	(GetPackageLatestBuildTest.{test_get_latest_one,
14798	test_cannot_find_a_latest_build_with_invalid_distro,
14799	test_cannot_find_a_latest_build_with_invalid_distro}): mock
14800	koji.ClientSession with new class MockClientSession. Remove
14801	invalid documentation from docstring. Use new package rather
14802	than httpd.
14803	(DownloadRPMTest.setUp): remove self.download_dir and use global
14804	TEST_DOWNLOAD_CACHE_DIR.
14805	(DownloadRPMTest.tearDown): do not remove download cache
14806	directory.
14807	(DownloadRPMTest.make_remote_file_url): do not omit positional
14808	argument specifiers in string format.
14809	(DownloadRPMTest.{test_succeed_to_download_a_rpm,
14810	test_failed_to_download_a_rpm}): set fake download cache
14811	directory to mocked get_download_dir in mock.patch decorator.
14812	(BrewListRPMsTest.test_select_specific_rpms): use new
14813	MockClientSession to mock koji.ClientSession. Rewrite test by
14814	using the new package listed in global variable packages.
14815	(RunAbipkgdiffWithDSOOnlyOptionTest.{test_abipkgdiff_with_dso_only,
14816	test_abipkgdiff_without_dso_only}): set fake download cache
14817	directory to mocked get_download_dir in mock.patch decorator.
14818	(CompareABIFromCommandLineTest): new integration test case.
14819	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
14820	i686/dbus-glib-0.100.2-2.fc20.i686.rpm: new rpm for running tests.
14821	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
14822	i686/dbus-glib-debuginfo-0.100.2-2.fc20.i686.rpm: new rpm for
14823	running tests.
14824	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
14825	i686/dbus-glib-devel-0.100.2-2.fc20.i686.rpm: new rpm for
14826	running tests.
14827	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
14828	x86_64/dbus-glib-0.100.2-2.fc20.x86_64.rpm: new rpm for running
14829	tests.
14830	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
14831	x86_64/dbus-glib-debuginfo-0.100.2-2.fc20.x86_64.rpm: new rpm
14832	for running tests.
14833	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
14834	x86_64/dbus-glib-devel-0.100.2-2.fc20.x86_64.rpm: new rpm for
14835	running tests.
14836	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
14837	i686/dbus-glib-0.106-1.fc23.i686.rpm: new rpm for running tests.
14838	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
14839	i686/dbus-glib-debuginfo-0.106-1.fc23.i686.rpm: new rpm for
14840	running tests.
14841	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
14842	i686/dbus-glib-devel-0.106-1.fc23.i686.rpm: new rpm for running
14843	tests.
14844	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
14845	x86_64/dbus-glib-0.106-1.fc23.x86_64.rpm: new rpm for running
14846	tests.
14847	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
14848	x86_64/dbus-glib-debuginfo-0.106-1.fc23.x86_64.rpm: new rpm for
14849	running tests.
14850	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
14851	x86_64/dbus-glib-devel-0.106-1.fc23.x86_64.rpm: new rpm for
14852	running tests.
14853	* tests/data/Makefile.am: add new rpms.
14854
148552016-05-31  Dodji Seketeli <dodji@redhat.com>
14856
14857	Bug 19967 - System-level suppressions for glibc
14858	* default.abignore: Add initial suppression specifications for
14859	glibc.
14860
148612016-05-31  Dodji Seketeli <dodji@redhat.com>
14862
14863	Escape all characters when reading a string in ini files
14864	* src/abg-ini.cc (read_context::peek): Take an output parameter to
14865	tell the caller when this function escaped the returned
14866	character.  Added an overload without this new parameter.
14867	(read_context::read_string): Accept all characters as part of the
14868	string.
14869	* tests/data/test-diff-suppr/test7-var-suppr-9.suppr: New test
14870	input.
14871	* tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: New
14872	test reference output.
14873	* tests/data/Makefile.am: Add the files above to source
14874	distribution.
14875	* tests/test-diff-suppr.cc (in_out_spec): Run a new comparison of
14876	libtest7-var-suppr-v{0,1}.so this time using the new
14877	test7-var-suppr-9.suppr specification that exercices a string with
14878	the escaped characters that we were having difficulty with.
14879
148802016-05-31  Dodji Seketeli <dodji@redhat.com>
14881
14882	Don't require all version symbol sections to present
14883	* src/abg-dwarf-reader.cc (get_symbol_versionning_sections): Allow
14884	returning just some of the three version-related section, not
14885	necessarily all of them.  Adjust comment.
14886	(get_version_for_symbol): Be ready to not necessarily having the
14887	three version-related sections available.
14888
148892016-05-30  Dodji Seketeli <dodji@redhat.com>
14890
14891	Bug 20180 - Support system-wide suppression specifications
14892	* doc/manuals/abidiff.rst: Document the default suppression
14893	scheme, its interaction with the --supprs option and the new
14894	--no-default option.
14895	* doc/manuals/abipkgdiff.rst: Likewise.
14896	* doc/manuals/fedabipkgdiff.rst: Likewise.
14897	* configure.ac: Generate the tests/runtestdefaultsupprs.py file
14898	from the new tests/runtestdefaultsupprs.py.in template.
14899	* default.abignore: New file.
14900	* Makefile.am: Add it to source distribution.
14901	* src/Makefile.am: Define the ABIGAIL_ROOT_SYSTEM_LIBDIR
14902	preprocessor macro that is set the value of the $libdir autotools
14903	macro.
14904	* include/abg-tools-utils.h: Update copyright years.
14905	(get_system_libdir, get_default_system_suppression_file_path)
14906	(get_default_user_suppression_file_path)
14907	(load_default_system_suppressions)
14908	(load_default_user_suppressions): Declare new functions
14909	* src/abg-tools-utils.cc (get_system_libdir)
14910	(get_default_system_suppression_file_path)
14911	(get_default_user_suppression_file_path)
14912	(load_default_system_suppressions)
14913	(load_default_user_suppressions): Define new functions.
14914	(is_regular_file): Amend this so that it return true for symlinks
14915	to regular files too.
14916	(is_dir): Amend this so that it returns true for symlinks to
14917	directories too.
14918	* tools/abidiff.cc (options::no_default_supprs): New data member.
14919	(options::options): Initialize the new data member.
14920	(display_usage): Display a new help string for the new
14921	--no-default-suppression command line option.
14922	(parse_command_line): Parse this new command line option.
14923	(set_diff_context_from_opts): Load the default suppression
14924	specifications, unless --no-default-suppression or --supprs was
14925	provided.
14926	* tools/abipkgdiff.cc (options::no_default_supprs): New data
14927	member.
14928	(options::options): Initialize the new data member.
14929	(parse_command_line): Parse the new --no-default-suppression
14930	command line option.
14931	(main): Load the default suppression specifications, unless
14932	--no-default-suppression or --supprs was provided.
14933	* tools/fedabipkgdiff (abipkgdiff): Add --no-default-suppression
14934	to the invocation of abipkgdiff if it was provided on the command
14935	line.
14936	(build_commandline_args_parser): Parse the new
14937	--no-default-suppression command line option.
14938	* tests/runtestdefaultsupprs.py.in: New test harness template.
14939	* tests/Makefile.am: Add the new runtestdefaultsupprs.py to the
14940	set of tests.
14941	* tests/data/test-default-supprs/test0-type-suppr-0.suppr: New
14942	test input.
14943	* tests/data/test-default-supprs/test0-type-suppr-report-0.txt: Likewise.
14944	* tests/data/test-default-supprs/test0-type-suppr-v0.o: Likewise.
14945	* tests/data/test-default-supprs/test0-type-suppr-v1.o: Likewise.
14946	* tests/data/test-default-supprs/dirpkg-1-dir-report-0.txt:
14947	Likewise.
14948	* tests/data/test-default-supprs/dirpkg-1-dir1: Likewise.
14949	* tests/data/test-default-supprs/dirpkg-1-dir2: Likewise.
14950	* tests/data/Makefile.am: Add new the new tests input above to
14951	Makefile.am.
14952	* tests/runtestcanonicalizetypes.sh.in: Pass
14953	--no-default-suppression to abidiff invocations.
14954	* tests/runtestdefaultsupprs.py.in: Likewise.
14955	* tests/test-abidiff-exit.cc: Likewise.
14956	* tests/test-diff-dwarf-abixml.cc: Likewise.
14957	* tests/test-diff-filter.cc: Likewise.
14958	* tests/test-diff-suppr.cc: Likewise.
14959	* tools/abidiff.cc: Likewise.
14960
149612016-05-30  Dodji Seketeli <dodji@redhat.com>
14962
14963	Add --abipkgdiff option to fedabipkgdiff
14964	* tools/fedabipkgdiff (build_path_to_abipkgdiff): Define new
14965	function.
14966	(abipkgdiff): Invoke the new build_path_to_abipkgdiff() here.
14967	(build_commandline_args_parser): Parse the new --abipkgdiff
14968	option.
14969
149702016-05-28  Dodji Seketeli <dodji@redhat.com>
14971
14972	Better diagnostics when abipkgdiff has an extra argument
14973	* tools/abipkgdiff.cc (options::wrong_arg): New data member.
14974	(parse_command_line): Set options::wrong_arg
14975	to the wrong argument passed.
14976	(main): Tell wrong argument case apart, and report it.
14977
149782016-05-26  Dodji Seketeli <dodji@redhat.com>
14979
14980	Fix suppr spec wording in abipkgdiff manual
14981	* doc/manuals/abipkgdiff.rst: Fix the wording for the --suppr
14982	option.
14983
149842016-05-26  Dodji Seketeli <dodji@redhat.com>
14985
14986	Update reference to tools in libabigail-concepts manual
14987	* doc/manuals/libabigail-concepts.rst: Do not refer just to
14988	abidiff when talking about suppression specification.  Also
14989	refer to abipkgdiff and other tools.
14990
149912016-05-30  Dodji Seketeli <dodji@redhat.com>
14992
14993	Fix some wording in the Libabigail overview manual page
14994	* doc/manuals/libabigail-overview.rst: Cleanup some confusion
14995	about Abigail-the-framework and libabigail-the-library.
14996
149972016-05-25  Dodji Seketeli <dodji@redhat.com>
14998
14999	Add test data for tests/runtestfedabipkgdiff.py
15000	* tests/data/test-fedabipkgdiff/dbus-glib-0.104-3.fc23.x86_64.rpm:
15001	New file.
15002	* tests/data/test-fedabipkgdiff/dbus-glib-0.80-3.fc12.x86_64.rpm: Likewise.
15003	* tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm:
15004	Likewise.
15005	* tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm:
15006	Likewise.
15007
150082016-05-25  Dodji Seketeli <dodji@redhat.com>
15009
15010	Add a 'check-valgrind' target to the top-most Makefile.am
15011	* Makefile.am (check-valgrind): Add this new target here.
15012
150132016-05-21  Chenxiong Qi <cqi@redhat.com>
15014
15015	Bug 20085 - Add --dso-only option to fedabipkgdiff
15016	* tools/fedabipkgdiff: Do not import shlex anymore.
15017	(ABIDIFF_OK, ABIDIFF_ERROR, ABIDIFF_USAGE_ERROR)
15018	(ABIDIFF_ABI_CHANGE): New global constant variables.
15019	(abipkgdiff): Pass the --dso-only option to the abipkgdiff command
15020	line tool, if that option was passed to fedabipkgdiff. Build this
15021	abipkgdiff command invocation from an array of strings, rather
15022	than from formatting a string.  This makes us get rid of the shlex
15023	module.  Fix typo in dry-run logged string.  If there was an
15024	internal error reported by abipkgdiff, report it to stderr.
15025	(build_commandline_args_parser): Parse the --dso-only command line
15026	option.
15027	* tests/runtestfedabipkgdiff.py.in (fedabipkgdiff_mod): Fix a typo
15028	in initializing this global variable.
15029	(test_data_dir): New global variable, that is used to reference
15030	tests/data/test-fedabipkgdiff/.
15031	(RunAbipkgdiffTest.{test_all_success, test_partial_failure}): Fix
15032	typo.
15033	(Mockglobalconfig.{koji_topdir, dso_only}): New data members.
15034	(GetPackageLatestBuildTest.{test_get_latest_one,
15035	test_cannot_find_a_latest_build_with_invalid_distro,
15036	test_succeed_to_download_a_rpm, test_failed_to_download_a_rpm}):
15037	Fix typo.
15038	(BrewListRPMsTest.test_select_specific_rpms): Fix typo.
15039	(RunAbipkgdiffWithDSOOnlyOptionTest): New test case class.
15040	* doc/manuals/fedabipkgdiff.rst: update document for this new
15041	--dso-only option.
15042	* tests/data/test-fedabipkgdiff/dbus-glib-0.104-3.fc23.x86_64.rpm:
15043	New symbolic link to
15044	test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64.rpm.
15045	* tests/data/test-fedabipkgdiff/dbus-glib-0.80-3.fc12.x86_64.rpm:
15046	New symbolic link to
15047	test-diff-pkg/dbus-glib-0.80-3.fc12.x86_64.rpm.
15048	* tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm:
15049	New symbolic link to
15050	test-diff-pkg/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm.
15051	* tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm:
15052	New symbolic link to
15053	test-diff-pkg/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm.
15054	* tests/data/Makefile.am: add tests/data/test-fedabipkgdiff so
15055	that this data directory and all things within it can be included
15056	in tarball.
15057
150582016-05-24  Sinny Kumari <sinny@redhat.com>
15059
15060	Change parent directory for keeping extracted packages in abipkgdiff
15061	* tools/abipkgdiff.cc (extracted_packages_parent_dir): Change
15062	TMPDIR environment variable to XDG_CACHE_HOME and default
15063	temporary parent directory to $HOME/.cache/libabigail/
15064
150652016-05-20  Dodji Seketeli <dodji@redhat.com>
15066
15067	Make abi{pkg}diff filter out changes about private types
15068	* include/abg-comp-filter.h: Update copyright year.
15069	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): Make this
15070	static function become exported.
15071	(has_virtual_mem_fn_change): Declare new function.
15072	* include/abg-suppression.h
15073	(suppression_base::{get,set}_is_artificial): Declare new
15074	accessors.
15075	(type_suppression::get_source_locations_to_keep): Return an
15076	unordered set of strings, not a vector.  Add a non-const overload.
15077	(type_suppression::set_source_locations_to_keep): Set an unordered
15078	set of strings, not a vector.
15079	* src/abg-suppression.cc (suppression_base::priv::is_artificial_):
15080	New data member.
15081	(suppression_base::priv::priv): Initialize the new data member.
15082	(suppression_base::{get,set}_is_artificial): Define new accessors.
15083	(type_suppression::priv::source_locations_to_keep_): Change the
15084	vector of strings representing source file names into unordered
15085	set of string.
15086	(type_suppression::get_source_locations_to_keep): Return an
15087	unordered set of strings, not a vector.  Define a non-const
15088	overload.
15089	(type_suppression::set_source_locations_to_keep): Set an unordered
15090	set of strings, not a vector.
15091	(type_suppression::suppresses_diff): Make this suppress virtual
15092	member function diffs if the enclosing type of the changed virtual
15093	member is suppressed by the current type_suppression.
15094	(read_type_suppression): Adjust to use the fact that the source
15095	locations are not stored in an unordered set, not in a vector
15096	anymore.  Otherwise, using a vector here make things too slow.
15097	(type_suppression::suppresses_type): Likewise.  Also, If the type
15098	we are looking at has no location because it's a true opaque type
15099	and if the current suppression is an artificial suppression that
15100	is meant to suppress change reports about non-public types, then
15101	suppress the type.
15102	* include/abg-tools-utils.h (gen_suppr_spec_from_headers): Declare
15103	new public function.
15104	* src/abg-tools-utils.cc (PRIVATE_TYPES_SUPPR_SPEC_NAME): Define a
15105	new constant variable.
15106	(handle_fts_entry): Define new static function.
15107	(gen_suppr_spec_from_headers): Define new public function.
15108	* src/abg-comparison.cc
15109	(corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars):
15110	If a type suppression suppresses a given class C, make it change
15111	added/removed virtual functions whose enclosing type is C.
15112	* tools/abidiff.cc (options::{headers_dir1, headers_dir2}): New
15113	data members.
15114	(display_usage): Add help strings for --headers-dir1 and
15115	--headers-dir2.
15116	(parse_command_line): Parse the new --headers-dir1 and
15117	--headers-dir2 options.
15118	(set_diff_context_from_opts): Generate suppression specifications
15119	to filter out changes on private types, if --headers-dir1 or
15120	--headers-dir2 is given.
15121	* tools/abipkgdiff.cc (options::{devel_package1, devel_package2}):
15122	New data members.
15123	(typedef package_sptr): New typedef.
15124	(enum package::kind): New enum.
15125	(package::kind_): New data member.  This replaces ...
15126	(package::is_debug_info_): ... this data member.
15127	(package::{devel_package_, private_types_suppressions_}): New data
15128	members.
15129	(package::package): Adjust.
15130	(package::get_kind): Define new member function.  This replaces
15131	...
15132	(package::is_debug_info): ... this member function overload.
15133	(package::set_kind): Define new member functin.  It replaces ...
15134	(package::is_debug_info): ... this member function overload.
15135	(package::{devel_package, private_types_suppressions}): Define new
15136	accessors.
15137	(package::erase_extraction_directies): Erase the sub-directory
15138	where development packages are extracted to.
15139	(compare_args::private_types_suppr{1,2}): New data members.
15140	(compare_args::compare_args): Adjust.
15141	(display_usage): Add help strings for --devel-pkg1/--devel-pkg2.
15142	(compare): Make the overload that compares elf files take private
15143	types suppressions.  Add the private types suppressions to the
15144	diff context.
15145	(pthread_routine_compare): Adjust the call to compare.
15146	(maybe_create_private_types_suppressions): Define new static
15147	function.
15148	(pthread_routine_extract_pkg_and_map_its_content): If a devel
15149	package was specified for the main package then extract it in
15150	parallel with the other package extraction.  When the extraction
15151	is done, create private types suppressions by visiting the
15152	directories that contain the header files.
15153	(compare): In the overload that compares packages by scheduling
15154	comparison of individual elf files that are in the packages, pass
15155	in the private type suppressions too.
15156	(parse_command_line): Parse the new --devel-pkg{1,2} command line
15157	options.
15158	(main): Associate the devel package to the main package, if the
15159	--devel-pkg{1,2}.
15160	* doc/manuals/abidiff.rst: Add documentation about the new
15161	--headers-dir1 and --headers-dir2 options.
15162	* doc/manuals/abipkgdiff.rst: Likewise, add documentation about
15163	the new --devel-pkg1 and --devel-pkg2 libraries.
15164	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
15165	New test reference output.
15166	* tests/data/test-diff-pkg/tbb-devel-4.1-9.20130314.fc22.x86_64.rpm:
15167	New test input package.
15168	* tests/data/test-diff-pkg/tbb-devel-4.3-3.20141204.fc23.x86_64.rpm: Likewise.
15169	* tests/test-diff-pkg.cc b/tests/test-diff-pkg.cc
15170	(InOutSpec::{first,second}_in_devel_package_path): New data
15171	members.
15172	(in_out_specs): Adjust.  Also, add a new entry describing the new
15173	test inputs above.
15174	(test_task::perform): When the new test entry contains devel
15175	packages, pass them to abipkgdiff using the --devel1 and --devel2
15176	options.
15177	* tests/data/test-diff-suppr/test30-include-dir-v0/test30-pub-lib-v0.h:
15178	A new test input source code.
15179	* tests/data/test-diff-suppr/test30-include-dir-v1/test30-pub-lib-v1.h: Likewise.
15180	* tests/data/test-diff-suppr/test30-priv-lib-v0.cc: Likewise.
15181	* tests/data/test-diff-suppr/test30-priv-lib-v0.h: Likewise.
15182	* tests/data/test-diff-suppr/test30-priv-lib-v1.cc: Likewise.
15183	* tests/data/test-diff-suppr/test30-priv-lib-v1.h: Likewise.
15184	* tests/data/test-diff-suppr/test30-pub-lib-v0.cc: Likewise.
15185	* tests/data/test-diff-suppr/test30-pub-lib-v0.so: Add new test
15186	binary input.
15187	* tests/data/test-diff-suppr/test30-pub-lib-v1.cc: Add new test
15188	input source code.
15189	* tests/data/test-diff-suppr/test30-pub-lib-v1.so: Add new test
15190	binary input.
15191	* tests/data/test-diff-suppr/test30-report-0.txt: Add new test
15192	reference output.
15193	* tests/data/test-diff-suppr/test30-report-1.txt: Add new test
15194	reference output.
15195	* tests/test-diff-suppr.cc (InOutSpec::headers_dir{1,2}): New data
15196	members.
15197	(InOutSpec::abidiff_options): Renamed the bidiff_options data
15198	member into this.
15199	(in_out_specs): Adjust.  Also, added the new test input above to
15200	this.
15201	(main): Adjust to invoke abidiff with the new --hd1 and --hd2
15202	options if the input specs for the tests has the new
15203	InOutSpec::headers_dir{1,2} data member set.  Renamed bidiff into
15204	abidiff.
15205	* tests/data/Makefile.am: Add the new test inputs to the source
15206	distribution.
15207
152082016-05-24  Dodji Seketeli <dodji@redhat.com>
15209
15210	Fix the number of removed functions in change report
15211	* src/abg-suppression.cc (corpus_diff::report): Show the net
15212	number of removed functions, not the total number of the removed
15213	functions.
15214
152152016-05-23  Dodji Seketeli <dodji@redhat.com>
15216
15217	Document how to handle regression tests in CONTRIBUTING
15218	* CONTRIBUTING: Add a section about regression tests.
15219	* Makefile.am: Add a check-valgrind-recursive target.
15220
152212016-05-21  Dodji Seketeli <dodji@redhat.com>
15222
15223	Fix whitespaces in autotools files
15224	* configure.ac: Fix some white spaces.
15225	* tests/Makefile.am: Likewise.
15226
152272016-05-22  Dodji Seketeli <dodji@redhat.com>
15228
15229	Fix white space in abg-comparison.cc
15230	* src/abg-comparison.cc (struct diff_context::priv): Fix indentation.
15231
152322016-05-21  Dodji Seketeli <dodji@redhat.com>
15233
15234	Fix bash completion configure status
15235	* configure.ac: If bash completion is disabled, say so.
15236
152372016-05-22  Dodji Seketeli <dodji@redhat.com>
15238
15239	Enhance API doc for diff_context::add_diff
15240	* src/abg-comparison.cc (diff_context::add_diff): Enhance the API
15241	doc string.
15242
152432016-05-20  Dodji Seketeli <dodji@redhat.com>
15244
15245	Add missing API doc strings
15246	* src/abg-comparison.cc (diff::diff)
15247	(decl_diff_base::decl_diff_base, distinct_diff::distinct_diff)
15248	(base_diff::base_diff, scope_diff::scope_diff)
15249	(fn_parm_diff::fn_parm_diff)
15250	(function_type_diff::function_type_diff)
15251	(type_decl_diff::type_decl_diff, typedef_diff::typedef_diff)
15252	(translation_unit_diff::translation_unit_diff)
15253	(corpus_diff::corpus_diff): Add missing API doc strings.
15254
152552016-05-20  Dodji Seketeli <dodji@redhat.com>
15256
15257	Optimize out some shared_ptr use
15258	* include/abg-ir.h (pointer_type_def::get_naked_pointed_to_type):
15259	Declare new member function.
15260	* src/abg-ir.cc (pointer_type_def::priv::naked_pointed_to_type_):
15261	New data member.
15262	(pointer_type_def::priv::priv): Adjust to initialize the new data
15263	member.
15264	(pointer_type_def::pointer_type_def): Adjust to use the
15265	constructor pointer_type_def::priv::priv to initialize the
15266	pointed-to type (including its new naked pointer variant).  So we
15267	do not have to initialize the priv_->pointed_to_type_ explicitely
15268	in the constructor anymore.
15269	(pointer_type_def::get_naked_pointed_to_type): Define new data
15270	member.
15271	(pointer_type_def::get_qualified_name): Use a naked pointer to the
15272	pointed-to type, rather than a smart pointer.
15273
152742016-05-20  Dodji Seketeli <dodji@redhat.com>
15275
15276	Light optimizations by passing reference to smart pointers around
15277	* include/abg-fwd.h (get_type_name): Take a reference to type_sptr.
15278	* src/abg-ir.cc (get_type_name): Take a reference to type_sptr.
15279	(suppression_base::priv::{get_file_name_regex,
15280	get_file_name_not_regex, get_soname_regex, get_soname_not_regex}):
15281	Return a reference to regex_t_sptr.
15282
152832016-05-20  Dodji Seketeli <dodji@redhat.com>
15284
15285	Minimize number of string::length calculation
15286	* src/abg-tools-utils.cc (string_ends_with): Call string::length
15287	just once on each instance of string that matters.
15288
152892016-05-20  Dodji Seketeli <dodji@redhat.com>
15290
15291	Avoid unnecessary computation of type name in suppression evaluation
15292	* src/abg-suppression.cc (type_suppression::suppresses_type):  If
15293	neither the type suppression "name" or "name_regex" properties
15294	where provided in the suppression specification, then do not try
15295	to look at the type name.
15296
152972016-05-22  Dodji Seketeli <dodji@redhat.com>
15298
15299	Plug leak of diffs of member variables of class type
15300	* include/abg-comparison.h (diff_wptr, unordered_diff_sptr_set): New typedefs.
15301	(struct diff_sptr_hasher): Define new type.
15302	(diff_context::keep_diff_alive): Declare new member function.
15303	(diff::children_nodes): Return a vector of diff*, rather than a
15304	vector of diff_sptr.
15305	* src/abg-comparison.cc (diff_context::priv::live_diffs_): New
15306	data member.
15307	(diff_context::keep_diff_alive): Define new data member.
15308	(diff::priv::children_): Make this be a vector of diff*, rather
15309	than a vector of diff_sptr.
15310	(diff_less_than_functor::operator()): Add a new overload for
15311	diff*.  Make the existing overload of diff_sptr use the new one.
15312	(diff::children_nodes): Adjust;
15313	(diff::append_child_node): Make sure the child node is kept
15314	alive.  Only add the naked pointer to the child node to the vector
15315	of children.
15316	(diff::traverse): Adjust.
15317	(var_diff::priv::type_diff_): Make this be a weak pointer, rather
15318	than a shared pointer.
15319	(var_diff::type_diff): The var_diff::priv::type_diff_ data member
15320	is now a weak pointer, so make this accessor convert it to a
15321	shared pointer.
15322	(corpus_diff::priv::children_): Turn this into a vector of diff*,
15323	rather than a vector of diff_sptr.
15324	(corpus_diff::children_nodes): Adjust.
15325	(corpus_diff::append_child_node): Make sure the child node is kept
15326	alive.  Only add the naked pointer to the child node to the vector
15327	of children.
15328	(category_propagation_visitor::visit_end): Adjust.
15329	(suppression_categorization_visitor::visit_end): Adjust.
15330	(redundancy_marking_visitor::{visit_begin, visit_end}): Adjust.
15331
153322016-05-20  Dodji Seketeli <dodji@redhat.com>
15333
15334	Speedup diff node child insertion
15335	* src/abg-comparison.cc (corpus_diff::append_child_node): Insert
15336	the new child at the right point in the vector of children, so
15337	that it remains sorted.
15338
153392016-05-21  Dodji Seketeli <dodji@redhat.com>
15340
15341	Fix invocation of delete operator in test-read-dwarf.cc
15342	* tests/test-read-dwarf.cc (main): Call delete[], not delete.
15343
153442016-05-22  Dodji Seketeli <dodji@redhat.com>
15345
15346	Plug leak of debug info handles
15347	* configure.ac: Check the presence of dwarf_getalt in libdw.  If
15348	it's present, define the preprocessor macro
15349	LIBDW_HAS_DWARF_GETALT.  Update the autoconf configuration
15350	summary.
15351	* src/abg-dwarf-reader.cc: Add config.h.
15352	(find_alt_debug_info_location): Factorize this out of ...
15353	(find_alt_debug_info): ... this function.  Use dwarf_getalt if
15354	present, otherwise, keep using dwfl_standard_find_debuginfo.  In
15355	the later case, return the file descriptor opened to access the
15356	alternate debug info, by parameter, so that the caller can fclose
15357	it.
15358	(read_context::alt_fd_): New data member.
15359	(read_context::read_context): Initialize the new alt_fd_ data
15360	member.
15361	(read_context::load_debug_info): Store the file descriptor used to
15362	access the alternate debug info into the new alt_fd_ data member.
15363	(read_context::~read_context): New desctructor.
15364	(get_soname_of_elf_file, get_type_of_elf_file): Free the elf
15365	handle.
15366	(read_context::load_debug_info): Be paranoid in making sure we
15367	never override alt_dwarf_.
15368	* tests/data/test-alt-dwarf-file/test0-report.txt: Adjust.
15369
153702016-05-22  Dodji Seketeli <dodji@redhat.com>
15371
15372	Plug leak of shared private data of class_diff type
15373	* include/abg-comparison.h (class_diff::get_priv): Declare new
15374	member function.
15375	(class_diff::get_priv): Define new member function.
15376	(class_diff::{chain_into_hierarchy, base_changes, deleted_bases,
15377	inserted_bases, changed_bases, base_changes, member_types_changes,
15378	member_types_changes, data_members_changes, inserted_data_members,
15379	deleted_data_members, member_fns_changes, changed_member_fns,
15380	member_fns_changes, deleted_member_fns, inserted_member_fns,
15381	member_fn_tmpls_changes, member_class_tmpls_changes,
15382	member_class_tmpls_changes, report}): Rather than accessing
15383	class_diff::priv directly, use the new class_diff::get_priv.
15384
153852016-05-21  Dodji Seketeli <dodji@redhat.com>
15386
15387	Remove circular ref from class_decl::priv::definition_of_declaration
15388	* include/abg-ir.cc (class_decl::get_definition_of_declaration):
15389	Return a shared pointer, rather than a reference to a shared pointer.
15390	* src/abg-ir.cc (class_decl::priv::definition_of_declaration_):
15391	Make this be a weak pointer.
15392	(class_decl::get_definition_of_declaration):
15393	Likewise.  And return the shared pointer built out of the weak
15394	pointer we have in there now.
15395
153962016-05-21  Dodji Seketeli <dodji@redhat.com>
15397
15398	Plug leak of regex_t in suppression engine
15399	* include/abg-sptr-utils.h (build_sptr<T>): Declare an overload that
15400	allocates a T* and wraps it into a shared_ptr<T>.
15401	(build_sptr<regex_t>): Declare a specialization for regex_t.
15402	* src/abg-corpus.cc (build_sptr<regex_t>()): Define the
15403	specialization here.
15404	* src/abg-suppression.ccp
15405	(suppression_base::priv::{get_file_[not]_name_regex,
15406	get_soname_[not]_regex}): Use the new build_sptr<regex_t>().
15407	(type_suppression::priv::{get_type_name_regex,
15408	get_source_location_to_keep_regex}): Likewise.
15409	(function_suppression::parameter_spec::priv::get_type_name_regex):
15410	Likewise.
15411	(function_suppression::priv::{get_name_regex,
15412	get_return_type_regex, get_symbol_name_regex,
15413	get_symbol_version_regex}): Likewise.
15414	(variable_suppression::priv::{get_name_regex,
15415	get_symbol_name_regex, get_symbol_version_regex,
15416	get_type_name_regex}): Likewise.
15417
154182016-05-18  Dodji Seketeli <dodji@redhat.com>
15419
15420	Plug leak of diff_context_sptr after calling compute_diff
15421	* src/abg-comparison.cc (diff::priv::ctxt_): Make this a weak_ptr.
15422	(diff::priv::get_context): Convert the weak pointer to the context
15423	into a shared_ptr and return it.
15424	(diff::priv::is_filtered_out): Adjust to use
15425	diff::priv::get_context() to access the context.
15426	(diff::context): Likewise.
15427	(corpus_diff::priv::ctxt_): Make this a weak_ptr.
15428	(corpus_diff::priv::priv): Add a new overload that takes two
15429	corpora and a diff context.
15430	(corpus_diff::priv::get_context): Convert the weak pointer to the
15431	context into a shared_ptr and return it.
15432	(corpus_diff::priv::ensure_lookup_tables_populated): Adjust to use
15433	the new corpus_diff::priv::get_context to get the context.
15434	(variable_is_suppressed): Likewise.
15435	(corpus_diff::priv::{apply_suppressions_to_added_removed_fns_vars,
15436	apply_filters_and_compute_diff_stats, emit_diff_stats,
15437	categorize_redundant_changed_sub_nodes,
15438	clear_redundancy_categorization}): Likewise.
15439	(corpus_diff::{corpus_diff, context,
15440	apply_filters_and_suppressions_before_reporting}): Adjust.
15441	* tools/abipkgdiff.cc (compare): Make the overload that compares
15442	elf binaries take a diff context output parameter.  After the
15443	context is created by this function, it's return to the caller, so
15444	that it's life time is bound to the scope this function was
15445	called from.
15446	(pthread_routine_compare): Create a shared pointer to hold a
15447	reference on a diff context.  Pass that shared pointer by
15448	reference to the compare function that compares elf binaries.
15449	Rather than storing corpora in the reports_map, (as those corpora
15450	would then out-live the diff context and thus create memory
15451	corruption issues), emit the report directly into an ostringstream
15452	and store that stream in reports_map.
15453	(compare): In the overoad that compares packages, rather than
15454	trying to get corpora from the report_map, just emit the content
15455	of the ostringstream that is now there.
15456
154572016-05-22  Dodji Seketeli <dodji@redhat.com>
15458
15459	Fix a read passed-the-end in abg-dwarf-reader.cc
15460	* src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Do
15461	not read passed the end of the array.
15462
154632016-05-21  Dodji Seketeli <dodji@redhat.com>
15464
15465	Support running "make check-valgrind"
15466	* autoconf-archive/ax_valgrind_check.m4: Add new file.  Copied it
15467	from http://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html.
15468	* configure.ac: Include the new ax_valgrind_check.m4 file.
15469	Initialize the valgrind checking on tests.  Update the configure
15470	status.
15471	* tests/test-valgrind-suppressions.supp: New valgrind suppression
15472	file to silence memcheck leak errors from python.
15473	* tests/Makefile.am: Add test-valgrind-suppressions.supp to source
15474	distribution.  Add check-valgrind-memcheck-recursive target.
15475
154762016-05-22  Dodji Seketeli <dodji@redhat.com>
15477
15478	Update the CONTRIBUTING file
15479	* CONTRIBUTING: Cleanup.
15480
154812016-05-22  Dodji Seketeli <dodji@redhat.com>
15482
15483	Update the COMMIT-LOG-GUIDELINES file
15484	* COMMIT-LOG-GUIDELINES: Various enhancements.
15485
154862016-05-16  Dodji Seketeli <dodji@redhat.com>
15487
15488	Do not run fedabipkgdiff tests if --enable-fedabipkgdiff is turned off
15489	* tests/Makefile.am: Make running runtestfedabipkgdiff be
15490	dependent on ENABLE_FEDABIPKGDIFF.
15491
154922016-05-13  Chenxiong Qi <cqi@redhat.com>
15493
15494	Fix pep8 error
15495	* tools/fedabipkgdiff (build_commandline_args_parser): Fix
15496	PEP8 error, line is too long.
15497
154982016-05-13  Chenxiong Qi <cqi@redhat.com>
15499
15500	Use consistent string format
15501	* tools/fedabipkgdiff (download_rpm): do not omit positional
15502	argument specifiers in string format.
15503
155042016-05-16  Dodji Seketeli <dodji@redhat.com>
15505
15506	Remove config.h.in from the repository
15507	* config.h.in: Remove from repository.
15508
155092016-02-09  Chenxiong Qi <cqi@redhat.com>
15510
15511	Bug 19428 - New fedabipkgdiff utility
15512	* autoconf-archive/ax_compare_version.m4: New file copied from the
15513	autoconf-archive project.
15514	* autoconf-archive/ax_prog_python_version.m4: Likewise.
15515	* autoconf-archive/ax_python_module.m4: Likewise.
15516	* Makefile.am: Add the new files above to the source distribution.
15517	* configure.ac: Include the new m4 macros from the autoconf
15518	archive. Add a new --enable-fedabipkgdiff option. Update the
15519	report at the end of the configure process to show the status of
15520	the fedabipkgdiff feature. Add check for prerequisite python
15521	modules argparse, glob, logging, os, re, shlex, subprocess, sys,
15522	itertools, urlparse, itertools, shutil, unittest, xdg, koji and
15523	mock.  These are necessary for the unit test of
15524	fedabipkgdiff. Generate tests/runtestfedabipkgdiff.py into the
15525	build directory, from the tests/runtestfedabipkgdiff.py.in input
15526	file.
15527	* tools/Makefile.am: Include the fedabipkgdiff to the source
15528	distribution and install it if the "fedabipkgdiff" feature is
15529	enabled.
15530	* tests/Makefile.am: Rename runtestfedabipkgdiff.sh into
15531	runtestfedabipkgdiff.py.  Add the new runtestfedabipkgdiff.py.in
15532	autoconf template file in here.
15533	* tests/runtestfedabipkgdiff.py.in: New unit test file.
15534	* tools/fedabipkgdiff: New fedabipkgdiff tool.
15535	* doc/manuals/fedabipkgdiff.rst: New manual.
15536
155372016-05-07  Dodji Seketeli <dodji@redhat.com>
15538
15539	Implement a [suppress_file] suppression directive
15540	* doc/manuals/libabigail-concepts.rst: Document the new
15541	'suppress_file' directive.
15542	* include/abg-suppression.h (file_suppression): Define new class.
15543	(file_suppression_sptr): Define new typedef.
15544	(is_file_suppression, file_is_suppressed): Declare new functions.
15545	* src/abg-suppression.cc ():
15546	(read_file_suppression, is_file_suppression, file_is_suppressed):
15547	Define new functions.
15548	(file_suppression::{file_suppression, suppresses_file,
15549	~file_suppression}): Define new member functions.
15550	* tools/abidiff.cc (main): If a suppression specification
15551	suppresses one of the input files, then do not perform the
15552	comparison.
15553	* tools/abipkgdiff.cc (compare): If a suppression specification
15554	suppresses a file that is to be compared, then do not perform the
15555	comparison.
15556	* tools/abicompat.cc (create_diff_context): New static function.
15557	(perform_compat_check_in_normal_mode)
15558	(perform_compat_check_in_weak_mode): Adjust to take a context in
15559	parameter.  Do not create a diff context here anymore, do not load
15560	suppression files here either.
15561	(main): Use the new create_diff_context to create a diff context
15562	and initialize it, including loading suppression specifications.
15563	If any suppression specification suppresses a file to load, then
15564	do not load perform any compatibility checking.  Adjust
15565	invocations of perform_compat_check_in_weak_mode and
15566	perform_compat_check_in_normal_mode to pass the diff context.
15567	* tests/data/test-diff-suppr/test0-type-suppr-3.suppr: New test
15568	input.
15569	* tests/data/test-diff-suppr/test0-type-suppr-4.suppr: Likewise.
15570	* tests/data/test-diff-suppr/test0-type-suppr-report-4.txt: Likewise.
15571	* tests/data/test-diff-suppr/test0-type-suppr-5.suppr: Likewise.
15572	* tests/data/test-diff-suppr/test0-type-suppr-report-5.txt:
15573	Likewise.
15574	* tests/data/test-diff-suppr/test0-type-suppr-6.suppr: Likewise.
15575	* tests/data/test-diff-suppr/test0-type-suppr-report-6.txt:
15576	Likewise.
15577	* tests/data/test-diff-suppr/test0-type-suppr-report-7.txt:
15578	Likewise.
15579	* tests/test-diff-suppr.cc (in_out_specs): Use the new test
15580	inputs.
15581	* tests/data/test-abicompat/test0-fn-changed-1.suppr: New test
15582	input.
15583	* tests/data/test-abicompat/test0-fn-changed-report-3.txt:
15584	Likewise.
15585	* tests/test-abicompat.cc (in_out_specs):: Use the new test
15586	inputs.
15587	* tests/data/Makefile.am: Add the new test material to source
15588	distribution.
15589
155902016-05-07  Dodji Seketeli <dodji@redhat.com>
15591
15592	Split suppression engine off of abg-comparison.{cc,h}
15593	* include/Makefile.am: Add abg-suppression.h to source
15594	distribution.
15595	* include/abg-comparison.h: Remove abg-ini.h include directive.
15596	(suppression_sptr, suppressions_type): Move these typedefs to
15597	abg-fwd.h.
15598	(class suppression_base, type_suppression)
15599	(type_suppression::insertion_range)
15600	(type_suppression::insertion_range::boundary)
15601	(type_suppression::insertion_range::integer_boundary)
15602	(type_suppression::insertion_range::fn_call_expr_boundary)
15603	(function_suppression, function_suppression::parameter_spec)
15604	(variable_suppression): Move these type definitions to the new
15605	abg-suppression.h.
15606	(read_suppressions, is_type_suppression, is_integer_boundary)
15607	(is_fn_call_expr_boundary, is_function_suppression)
15608	(is_variable_suppression, operator&)
15609	(operator|): Move these function declarations to the new
15610	abg-suppression.h.
15611	(type_suppression, type_suppression_sptr, type_suppression_type)
15612	(function_suppression, function_suppression_sptr)
15613	(function_suppressions_type, variable_suppression)
15614	(variable_suppression_sptr, variable_suppressions_type): Move
15615	these forward declaration and typedefs to the new
15616	abg-suppression.h.
15617	(diff_context::suppressions): Adjust return type to
15618	suppr::suppressions_type&.
15619	(diff_context::add_suppression): Adjust parameter type to
15620	suppr::suppressions_sptr.
15621	(diff_context::add_suppressions): Adjust parameter type
15622	suppr::suppressions_type&.
15623	(is_type_diff, is_decl_diff, is_var_diff, is_function_decl_diff)
15624	(is_pointer_diff, is_reference_diff, is_fn_parm_diff)
15625	(is_base_diff, is_child_node_of_function_parm_diff)
15626	(is_child_node_of_base_diff): Declare these new functions.  They
15627	were previously static, local to abg-comparison.cc only.  Now they
15628	need to be exported because they are used by the suppression
15629	engine's code that now lives in its one files.
15630	* include/abg-fwd.h (suppr::{suppression_base, suppression_sptr,
15631	suppressions_type}): Forward declare these here.
15632	* include/abg-suppression.h (class suppression_base)
15633	(type_suppression, type_suppression::insertion_range)
15634	(type_suppression::insertion_range::boundary)
15635	(type_suppression::insertion_range::integer_boundary)
15636	(type_suppression::insertion_range::fn_call_expr_boundary)
15637	(function_suppression, function_suppression::parameter_spec)
15638	(variable_suppression): Move these type definitions here, in the
15639	namespace suppr.
15640	(read_suppressions, is_type_suppression, is_integer_boundary)
15641	(is_fn_call_expr_boundary, is_function_suppression)
15642	(is_variable_suppression, operator&)
15643	(operator|): Move these function decalration here, in the
15644	namespace suppr.
15645	(type_suppression_sptr, type_suppressions_type)
15646	(function_suppression_sptr, function_suppressions_type)
15647	(variable_suppression_sptr, variable_suppressions_type): Move
15648	these typedefs here, in the namespace suppr.
15649	* src/Makefile.am: add src/abg-suppression.cc to source
15650	distribution.
15651	* src/abg-comparison.cc (is_type_diff, is_decl_diff, is_var_diff)
15652	(is_function_decl_diff, is_pointer_diff, is_reference_diff)
15653	(is_reference_or_pointer_diff, is_fn_parm_diff, is_base_diff)
15654	(is_child_node_of_function_parm_diff, is_child_node_of_base_diff):
15655	Export these functions.
15656	(*suppression*): Move all the suppression-related definitions to
15657	the new abg-suppression.cc.
15658	* src/abg-suppression.cc: New file. Contains all the *suppression*
15659	definitions from src/abg-comparison.cc, that are put in the suppr
15660	namespace.
15661	* tools/abicompat.cc: Adjust.
15662	* tools/abidiff.cc: Likewise.
15663	* tools/abipkgdiff.cc: Likewise.
15664
156652016-05-08  Dodji Seketeli <dodji@redhat.com>
15666
15667	Fix indentation for abidiff manual
15668	* doc/manuals/abidiff.rst: Fix indentation for the --suppression
15669	paragraph.
15670
156712016-05-08  Dodji Seketeli <dodji@redhat.com>
15672
15673	Add several shortcuts to options for abicompat
15674	* doc/manuals/abicompat.rst: Update documentation.
15675	* tools/abicompat.cc (display_usage): Update help strings.
15676	(parse_command_line): Add shortcuts --suppr, --appd, --libd1 and
15677	--libd2.
15678
156792016-05-08  Dodji Seketeli <dodji@redhat.com>
15680
15681	Update copyright year in tools/abicompat.cc
15682	* tools/abicompat.cc: Update copyright years to 2016.
15683
156842016-05-07  Dodji Seketeli <dodji@redhat.com>
15685
15686	Fix mention of tool's name in abidiff error message
15687	* src/abg-tools-utils.cc (emit_prefix): Try to emit the prefix
15688	only if the program name was provided.
15689	* abidiff.cc (maybe_check_suppression_files): Pass the name of the
15690	tool to the check_file function.
15691
156922016-05-07  Dodji Seketeli <dodji@redhat.com>
15693
15694	Update copyright year on abg-comparison.h
15695	* include/abg-comparison.h: Update copyright year.
15696
156972016-05-08  Dodji Seketeli <dodji@redhat.com>
15698
15699	Doc not show classes' inherited members in apidoc
15700	* doc/api/libabigail.doxy: Don't show inherited member functions
15701	or variables of a given class.
15702
157032016-05-08  Dodji Seketeli <dodji@redhat.com>
15704
15705	Fix typo in concept manual
15706	* doc/manuals/libabigail-concepts.rst: Do not refer to abidiff
15707	specifically for suppressions because several tools use
15708	suppressions.
15709
157102016-05-08  Dodji Seketeli <dodji@redhat.com>
15711
15712	Fix indentation in concepts manual
15713	* doc/manuals/libabigail-concepts.rst: Fix indentation.
15714
157152016-05-06  Dodji Seketeli <dodji@redhat.com>
15716
15717	Add some apidoc to dwarf_reader
15718	* include/abg-dwarf-reader.h (namespace dwarf_reader): Add apidoc.
15719	(enum elf_type): Add an apidoc for each enumerator.
15720	* src/abg-dwarf-reader.cc (get_type_of_elf_file): Add an apidoc
15721	for the 'type' parameter.
15722
157232016-04-28  Dodji Seketeli <dodji@redhat.com>
15724
15725	[abipkgdiff] Show SONAME of removed/added libraries
15726	* tools/abipkgdiff.cc (abi_diff::{added,removed}_binaries): Change
15727	the type of these data member from vector<string> to
15728	vector<elf_file_sptr>.
15729	(compare): Adjust.  Show the soname of added/removed binaries.
15730
157312016-04-27  Dodji Seketeli <dodji@redhat.com>
15732
15733	Bug 20015 - support file_name_not_regexp and soname_not_regexp in suppr specs
15734	* include/abg-comparison.h
15735	(suppression_base::{get,set}_file_name_not_regex_str): Declare new
15736	member functions.
15737	(suppression_base::{get,set}_soname_not_regex_str): Likewise.
15738	(suppression_base::{names,sonames}_of_binaries_match): Likewise.
15739	* src/abg-comparison.cc
15740	(suppression_base::priv::get_file_name_regex): Fix comment.
15741	(suppression_base::priv::get_file_name_not_regex): New member
15742	function.
15743	(suppression_base::priv::get_soname_regex): Fix comment.
15744	(suppression_base::priv::get_soname_not_regex): New member
15745	function.
15746	(suppression_base::{get,set}_file_name_not_regex_str): Define new
15747	member functions.
15748	(suppression_base::{get,set}_soname_not_regex_str): Likewise.
15749	(suppression_base::{names,sonames}_of_binaries_match): Likewise.
15750	These got factorized out of type_suppression::suppresses_type,
15751	function_suppression::suppresses_function,
15752	function_suppression::suppresses_function_symbol,
15753	variable_suppression::suppresses_variable,
15754	variable_suppression::suppresses_variable_symbol.
15755	(type_suppression::suppresses_type): Use the new
15756	suppression_base::{names,sonames}_of_binaries_match.
15757	(read_type_suppression): Read the new file_name_not_regexp and
15758	soname_not_regexp properties.
15759	(function_suppression::{suppresses_function,
15760	suppresses_function_symbol}): Use the new
15761	suppression_base::{names,sonames}_of_binaries_match.
15762	(read_function_suppression): Read the new file_name_not_regexp and
15763	soname_not_regexp properties.
15764	(variable_suppression::{suppresses_variable,
15765	variable_suppression::suppresses_variable_symbol}): Use the new
15766	suppression_base::{names,sonames}_of_binaries_match.
15767	(read_variable_suppression): Use the new
15768	suppression_base::{names,sonames}_of_binaries_match.
15769	* doc/manuals/libabigail-concepts.rst: Document the new
15770	file_name_not_regexp and soname_not_regexp suppression properties.
15771	* tests/data/test-diff-suppr/test24-soname-report-10.txt: New test
15772	reference output.
15773	* tests/data/test-diff-suppr/test24-soname-report-11.txt: Likewise.
15774	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
15775	* tests/data/test-diff-suppr/test24-soname-report-13.txt: Likewise.
15776	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
15777	* tests/data/test-diff-suppr/test24-soname-report-15.txt: Likewise.
15778	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
15779	* tests/data/test-diff-suppr/test24-soname-report-9.txt: Likewise.
15780	* tests/data/test-diff-suppr/test24-soname-suppr-10.txt: New test input.
15781	* tests/data/test-diff-suppr/test24-soname-suppr-11.txt: Likewise.
15782	* tests/data/test-diff-suppr/test24-soname-suppr-12.txt: Likewise.
15783	* tests/data/test-diff-suppr/test24-soname-suppr-13.txt: Likewise.
15784	* tests/data/test-diff-suppr/test24-soname-suppr-14.txt: Likewise.
15785	* tests/data/test-diff-suppr/test24-soname-suppr-15.txt: Likewise.
15786	* tests/data/test-diff-suppr/test24-soname-suppr-16.txt: Likewise.
15787	* tests/data/test-diff-suppr/test24-soname-suppr-9.txt: Likewise.
15788	* tests/data/test-diff-suppr/test29-soname-report-2.txt: New test
15789	reference output.
15790	* tests/data/test-diff-suppr/test29-soname-report-3.txt: Likewise.
15791	* tests/data/test-diff-suppr/test29-soname-report-4.txt: Likewise.
15792	* tests/data/test-diff-suppr/test29-soname-report-5.txt: Likewise.
15793	* tests/data/test-diff-suppr/test29-soname-report-6.txt: Likewise.
15794	* tests/data/test-diff-suppr/test29-soname-report-7.txt: Likewise.
15795	* tests/data/test-diff-suppr/test29-soname-report-8.txt: Likewise.
15796	* tests/data/test-diff-suppr/test29-suppr-2.txt: New test input.
15797	* tests/data/test-diff-suppr/test29-suppr-3.txt: Likewise.
15798	* tests/data/test-diff-suppr/test29-suppr-4.txt: Likewise.
15799	* tests/data/test-diff-suppr/test29-suppr-5.txt: Likewise.
15800	* tests/data/test-diff-suppr/test29-suppr-6.txt: Likewise.
15801	* tests/data/test-diff-suppr/test29-suppr-7.txt: Likewise.
15802	* tests/data/test-diff-suppr/test29-suppr-8.txt: Likewise.
15803	* tests/data/Makefile.am: Add the new test material to source
15804	distribution.
15805	* tests/test-diff-suppr.cc (in_out_specs): Make this test harness
15806	run over the new test inputs.
15807
158082016-04-27  Dodji Seketeli <dodji@redhat.com>
15809
15810	Make API documentation of thread pools visible
15811	* include/abg-workers.h: Document the workers namespace, the task,
15812	queue and queue::task_done_notify types.
15813	* src/abg-workers.cc: Move the documentation of the thread_pool
15814	module inside the abigail::worker namespace, so that references to
15815	task and queue types (which are also in the abigail::worker
15816	namespace) can be resolved in the apidoc.
15817
158182016-04-27  Dodji Seketeli <dodji@redhat.com>
15819
15820	Update documentation to require doxygen and python-sphinx for building
15821	* COMPILING: Add python-sphinx to the set of required packages to
15822	build the documentation.
15823	* doc/website/mainpage.txt: Update the website to mention doxygen
15824	and python-sphinx for documentation.
15825
158262016-04-27  Dodji Seketeli <dodji@redhat.com>
15827
15828	Add doc, info, man and html-doc targets to generate documentation
15829	* Makefile.am: Add info, man and html-doc targets to generate
15830	documentation in info, man and html formats.  If you want to
15831	generate them all, then the doc target is the one to be used.
15832	* COMPILING: Add documentation for the above.
15833
158342016-04-25  Dodji Seketeli <dodji@redhat.com>
15835
15836	Bug 19964 - Cannot load function aliases on ppc64
15837	* src/abg-dwarf-reader.cc (read_context::load_symbol_maps): While
15838	filling the ppc64-specific "function-entry-address => symbol" map,
15839	if we stumble accross a function-entry-address that belongs to an
15840	alias of 'symbol', then assume the alias must have been registered
15841	as an alias already, by the platform-agnostic code.  Do not try to
15842	register the alias again.
15843	* tests/data/Makefile.am: Add the new test input binaries to the
15844	source distribution.
15845	* tests/data/test-diff-dwarf/libtest36-ppc64-aliases-v0.so: New
15846	binary test input.
15847	* tests/data/test-diff-dwarf/libtest36-ppc64-aliases-v1.so: Likewise.
15848	* tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt:
15849	New test reference output.
15850	* tests/data/test-diff-dwarf/test36-ppc64-aliases-v0.cc: Source
15851	code for the new binary test input above.
15852	* tests/data/test-diff-dwarf/test36-ppc64-aliases-v1.cc: Likewise.
15853	* tests/test-diff-dwarf.cc: Add the new test input to the list of
15854	test inputs considered by this test harness.
15855
158562016-04-20  Sinny Kumari <sinny@redhat.com>
15857
15858	Bug 19961 - Distinguish between PI executable and shared library
15859	* include/abg-dwarf-reader.h (elf_type): Add new enumerator
15860	ELF_TYPE_PI_EXEC.
15861	* src/abg-dwarf-reader.cc
15862	(lookup_data_tag_from_dynamic_segment): New function for
15863	data tag lookup in dynamic segment of an elf
15864	(elf_file_type): Return ELF_TYPE_PI_EXEC file type for
15865	a PI executable.
15866	(get_elf_file_type): Change this to take an elf handle.
15867	(get_type_of_elf_file): New function that got factorized out of ...
15868	(load_dt_soname_and_needed): ... this one.
15869	* tools/abipkgdiff.cc (create_maps_of_package_content): Also
15870	consider ELF_TYPE_PI_EXEC file type.
15871	(compare): Likewise.
15872	* tests/test-diff-pkg.cc (in_out_specs): Test case additions
15873	* tests/data/Makefile.am: Include test files
15874	* tests/data/test-diff-pkg/tarpkg-1-dir1.tar.gz: New test data
15875	* tests/data/test-diff-pkg/tarpkg-1-dir2.tar.gz: New test data
15876	* tests/data/test-diff-pkg/tarpkg-1-report-0.txt: New test result
15877
158782016-04-17  Dodji Seketeli <dodji@redhat.com>
15879
15880	Update website to 1.0.rc4
15881	* doc/website/mainpage.txt: Update tarball reference to 1.0.rc4
15882
158832016-04-17  Dodji Seketeli <dodji@redhat.com>
15884
15885	Bump current version number to 1.0.rc5
15886	* configure.ac: Bump current version number to 1.0.rc5
15887
158882016-04-17  Dodji Seketeli <dodji@redhat.com>
15889
15890	Add a 'release' target to main Makefile
15891	* Makefile.am: Add tarball, upload-release-only, upload-release
15892	and release targets.
15893
158942016-04-11  Dodji Seketeli <dodji@redhat.com>
15895
15896	Update ChangeLog for 1.0.rc4
15897	* ChangeLog: Update automatically by running "make
15898	update-changelog"
15899
159002016-04-11  Dodji Seketeli <dodji@redhat.com>
15901
15902	Update NEWS for 1.0.rc4
15903	* NEWS: Update for 1.0.rc4
15904
159052016-04-16  Dodji Seketeli <dodji@redhat.com>
15906
15907	Fix typos in the suppression specifications manual
15908	* doc/manuals/libabigail-concepts.rst: Fix typos.
15909
159102016-04-16  Dodji Seketeli <dodji@redhat.com>
15911
15912	Ease use of soname_regexp/file_name_regexp in suppr specs
15913	* doc/manuals/libabigail-concepts.rst: Update the manual to
15914	reflect the changes in the suppression_type, suppress_function and
15915	suppress_variable directives.
15916	* src/abg-comparison.cc (read_type_suppression): Accept that
15917	the suppress_type directive contains only file_name_regexp
15918	or the soname_regexp property.
15919	(read_function_suppression): Likewise for the suppress_function
15920	directive.
15921	(read_variable_suppression): Likewise for the suppress_variable
15922	directive.
15923	* tests/data/test-diff-suppr/libtest29-soname-v0.so: New binary
15924	test input.
15925	* tests/data/test-diff-suppr/libtest29-soname-v1.so: Likewise.
15926	* tests/data/test-diff-suppr/test24-soname-report-5.txt: New
15927	reference test output.
15928	* tests/data/test-diff-suppr/test24-soname-report-6.txt: Likewise.
15929	* tests/data/test-diff-suppr/test24-soname-report-7.txt: Likewise.
15930	* tests/data/test-diff-suppr/test24-soname-report-8.txt: Likewise.
15931	* tests/data/test-diff-suppr/test24-soname-suppr-5.txt: New test
15932	suppression file.
15933	* tests/data/test-diff-suppr/test24-soname-suppr-6.txt: Likewise.
15934	* tests/data/test-diff-suppr/test24-soname-suppr-7.txt: Likewise.
15935	* tests/data/test-diff-suppr/test24-soname-suppr-8.txt: Likewise.
15936	* tests/data/test-diff-suppr/test29-soname-report-0.txt: New
15937	reference test output.
15938	* tests/data/test-diff-suppr/test29-soname-report-1.txt: Likewise.
15939	* tests/data/test-diff-suppr/test29-soname-v0.cc: Source code for
15940	the new binary output above.
15941	* tests/data/test-diff-suppr/test29-soname-v1.cc: Likewise.
15942	* tests/data/test-diff-suppr/test29-suppr-0.txt: New test
15943	suppression file.
15944	* tests/data/test-diff-suppr/test29-suppr-1.txt: Likewise.
15945	* tests/data/Makefile.am: Add the new test material above to
15946	source distribution.
15947	* tests/test-diff-suppr.cc (in_out_specs): Make this test harness
15948	run over the new test input above.
15949
159502016-03-31  Dodji Seketeli <dodji@redhat.com>
15951
15952	Fix comments in tests/test-diff-pkg.cc
15953	* tests/test-diff-pkg.cc: Fix the wording of the introductory
15954	comments.
15955
159562016-03-30  Dodji Seketeli <dodji@redhat.com>
15957
15958	Bug 19885 - Cannot associates a function DIE to a symbol on powerpc64
15959	*from* the address of its entry point.
15960	More precisely, on ppc64, the address of a function is the address of
15961	a function descriptor.  The function descriptor is a set of three 64
15962	bits addresses.  The first element of the triplet is the function
15963	entry pointer address.  So to get the symbol a given function entry
15964	point address belongs to, one must get to the function descriptor
15965	which contains said function entry point address.  And function
15966	descriptors are in the ".opd" special section.
15967	Unfortunately, Libabigail's  ELF/DWARF reader has no knowledge of all
15968	this.  So it cannot get the symbol of a given function DWARF
15969	description.  So it considers all functions as having no ELF symbols.
15970	So it shows no ABI change pertaining to function sub-types on ppc64.
15971	This patch makes Libabigail support function descriptors on ppc64 so
15972	it can detect changes on function sub-types there.
15973	* src/abg-dwarf-reader.cc (read_context::{opd_section_,
15974	fun_entry_addr_sym_map_}): New data members.
15975	(read_context::read_context): Initialize the new opd_section_ data
15976	member.
15977	(read_context::{find_opd_section,
15978	lookup_ppc64_elf_fn_entry_pointer_address,
15979	fun_entry_addr_sym_map_sptr, fun_entry_addr_sym_map,
15980	elf_architecture_is_ppc64, elf_architecture_is_big_endian}): New
15981	member functions.
15982	(read_context::lookup_elf_fn_symbol_from_address): Adjust to use
15983	the new read_context::fun_entry_addr_sym_map() function.
15984	(read_context::load_symbol_maps): Populate the function entry
15985	addresses -> symbol map, for ppc64 ELFv1.
15986	(read_context::load_elf_properties): Renamed
15987	read_context::load_remaining_elf_data into this.
15988	(read_corpus_from_elf): Load elf properties before trying to load
15989	elf symbols information.
15990	* tests/data/test-diff-filter/libtest32-struct-change-v0.so: New
15991	binary test input, compiled for ppc64le.
15992	* tests/data/test-diff-filter/libtest32-struct-change-v1.so: Likewise.
15993	* tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt:
15994	New test reference output.
15995	* tests/data/test-diff-filter/test32-ppc64le-struct-change-v0.c:
15996	Source code of the new binary test input above.
15997	* tests/data/test-diff-filter/test32-ppc64le-struct-change-v1.c:
15998	Likewise.
15999	* tests/data/Makefile.am: Add the new test material above to
16000	source distribution.
16001	* tests/test-diff-filter.cc (in_out_spec): Make this test harness
16002	run over the new test input binaries above.
16003
160042016-03-25  Dodji Seketeli <dodji@redhat.com>
16005
16006	Fix logs in abipkgdiff and add some more
16007	* tools/abipkgdiff.cc (compare): Fix logs to make them more
16008	readable in a multithreaded context.
16009	(create_maps_of_package_content): Likewise.  Add logs about the
16010	number of elf files found in a given directory.  Add logs about
16011	skipping files.
16012
160132016-03-25  Dodji Seketeli <dodji@redhat.com>
16014
16015	Bug 19867 - abipkgdiff skips symbolic links
16016	* include/abg-tools-utils.h (maybe_get_symlink_target_file_path):
16017	Declare new function.
16018	* src/abg-tools-utils.cc (get_stat): Use lstat here, not stat.
16019	Update comment.
16020	* tools/abipkgdiff.cc (first_package_tree_walker_callback_fn)
16021	(second_package_tree_walker_callback_fn): Follow symbolic links to
16022	elf files to get their target paths, and only work with that
16023	target path.
16024	(maybe_get_symlink_target_file_path): Define new function.
16025	* test-diff-pkg/symlink-dir-test1-report0.txt New test material.
16026	* test-diff-pkg/symlink-dir-test1/dir1/symlinks/foo.o: Likewise.
16027	* test-diff-pkg/symlink-dir-test1/dir1/symlinks/libfoo.so: Likewise.
16028	* test-diff-pkg/symlink-dir-test1/dir1/targets/foo.c: Likewise.
16029	* test-diff-pkg/symlink-dir-test1/dir1/targets/foo.o: Likewise.
16030	* test-diff-pkg/symlink-dir-test1/dir1/targets/libfoo.so: Likewise.
16031	* test-diff-pkg/symlink-dir-test1/dir2/symlinks/foo.o: Likewise.
16032	* test-diff-pkg/symlink-dir-test1/dir2/symlinks/libfoo.so: Likewise.
16033	* test-diff-pkg/symlink-dir-test1/dir2/targets/foo.c: Likewise.
16034	* test-diff-pkg/symlink-dir-test1/dir2/targets/foo.o: Likewise.
16035	* test-diff-pkg/symlink-dir-test1/dir2/targets/libfoo.so: Likewise.
16036	* tests/data/Makefile.am: Add the new test material to source
16037	distribution.
16038	* tests/test-diff-pkg.cc (in_out_spec): Run this test harness
16039	over the new test material above.
16040
160412016-03-21  Dodji Seketeli <dodji@redhat.com>
16042
16043	Fix typo on the web page
16044	* doc/website/mainpage.txt: Fix typo.
16045
160462016-03-18  Roland McGrath <roland@hack.frob.com>
16047
16048	Fix typo in configure --enable-deb help text
16049	* configure.ac: Fix typo in --enable-deb usage text.
16050
160512016-03-18  Dodji Seketeli <dodji@redhat.com>
16052
16053	Bug 19846 - variable decl associated with the wrong debug info section
16054	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Associate the
16055	decl of the variable to the same debug info file (alternate or
16056	not) as the DIE, not as its specification DIE.
16057
160582016-03-18  Dodji Seketeli <dodji@redhat.com>
16059
16060	Fix typo in the manual of abidiff
16061	* doc/manuals/abidiff.rst: Fix typo.
16062
160632016-03-18  Dodji Seketeli <dodji@redhat.com>
16064
16065	Fix typos in comments in src/abg-dwarf-reader.cc
16066	* src/abg-dwarf-reader.cc (read_context::{die_type_map,
16067	is_wip_class_die_offset, is_wip_function_type_die_offset}): Fix
16068	typo in comments.
16069
160702016-03-18  Dodji Seketeli <dodji@redhat.com>
16071
16072	Bug 19844 - Cannot try to canonicalize a type that is being constructed
16073	* src/abg-dwarf-reader.cc
16074	(read_context::{alternate_die_wip_classes_map_,
16075	alternate_die_wip_function_types_map_}): New data members.
16076	(read_context::lookup_type_from_die_offset): Lookup WIP class and
16077	function types too.
16078	(read_context::{die_wip_classes_map, die_wip_function_types_map}):
16079	Take a flag saying if we should get the map for the alternate
16080	debug info section or not.
16081	(read_context::{is_wip_class_die_offset,
16082	is_wip_function_type_die_offset}): Take a flagy saying if the DIE
16083	is in the alternate debug info section or not.
16084	(build_class_type_and_add_to_ir, build_function_type)
16085	(maybe_canonicalize_type): Adjust.
16086	(build_ir_node_from_die): Do not call maybe_canonicalize_type on
16087	type DIEs which no type has been constructed for.
16088	* tests/data/test-diff-pkg/gtk2-debuginfo-2.24.22-5.el7.i686.rpm:
16089	New test input.
16090	* tests/data/test-diff-pkg/gtk2-debuginfo-2.24.28-8.el7.i686.rpm:
16091	Likewise.
16092	* tests/data/test-diff-pkg/gtk2-immodule-xim-2.24.22-5.el7.i686.rpm:
16093	Likewise.
16094	* tests/data/test-diff-pkg/gtk2-immodule-xim-2.24.28-8.el7.i686.rpm:
16095	Likewise.
16096	* tests/data/test-diff-pkg/gtk2-immodule-xim-2.24.22-5.el7.i686--gtk2-immodule-xim-2.24.28-8.el7.i686-report-0.txt:
16097	New test reference output.
16098	* tests/data/Makefile.am: Add the new test material to the source
16099	distribution.
16100	* tests/test-diff-pkg.cc (in_out_spec): Make this test harness run
16101	on the new test input above.
16102
161032016-03-16  Dodji Seketeli <dodji@redhat.com>
16104
16105	Fix a typo in include/abg-tools-utils.h
16106	* include/abg-tools-utils.h (enum abidiff_status): Fix typo in
16107	comment.
16108
161092016-03-16  Dodji Seketeli <dodji@redhat.com>
16110
16111	Update copyright dates for the manuals
16112	* doc/manuals/conf.py: Update copyright years.
16113
161142016-03-16  Dodji Seketeli <dodji@redhat.com>
16115
16116	More docs about ABIDIFF_ABI_INCOMPATIBLE_CHANGE
16117	* doc/manuals/abidiff.rst: Explain the kind of changes that flip
16118	the ABIDIFF_ABI_INCOMPATIBLE_CHANGE flag.
16119
161202016-03-09  Dodji Seketeli <dodji@redhat.com>
16121
16122	Fix typos on the web page
16123	* doc/website/mainpage.txt: Fix typos.
16124
161252016-03-08  Dodji Seketeli <dodji@redhat.com>
16126
16127	Bump version number to 1.0.rc4
16128	* configure.ac: Bump version number to 1.0.rc4
16129
161302016-03-08  Dodji Seketeli <dodji@redhat.com>
16131
16132	Fix potential race condition in test-diff-pkg.cc
16133	* tests/test-diff-pkg.cc (in_out_spec): Make the tar format tests
16134	output have different names.
16135
161362016-03-08  Dodji Seketeli <dodji@redhat.com>
16137
16138	Updated website to point to 1.0.rc3 tarball
16139	* doc/website/mainpage.txt: Updated website to point to 1.0.rc3
16140	tarball.
16141
161422016-03-08  Dodji Seketeli <dodji@redhat.com>
16143
16144	Update ChangeLog before 1.0.rc3
16145	* ChangeLog: Update for 1.0.rc3
16146
161472016-03-08  Dodji Seketeli <dodji@redhat.com>
16148
16149	Update NEWS file for 1.0.rc3
16150	* NEWS: update for 1.0.rc3
16151
161522016-03-07  Dodji Seketeli <dodji@redhat.com>
16153
16154	Walk function_type_diff tree in a deterministic way
16155	* src/abg-comparison.cc
16156	(function_type_diff::priv::{sorted_subtype_changed_parms_,
16157	sorted_changed_parms_by_id_}): Add two data members.
16158	(function_type_diff::ensure_lookup_tables_populated): Sort the
16159	changed parameters here ...
16160	(function_type_diff::report): ... not here.
16161	(function_type_diff::chain_into_hierarchy): Chain the *sorted*
16162	changed parameters.
16163
161642016-03-07  Dodji Seketeli <dodji@redhat.com>
16165
16166	Fix reference to test file in Makefile.am
16167	* tests/data/Makefile.am: Fix bogus reference to
16168	libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt.
16169
161702016-03-07  Dodji Seketeli <dodji@redhat.com>
16171
16172	Bug 19780 - abipkgdiff doesn't support parallel execution
16173	* tools/abipkgdiff.cc: Update copyright notice.
16174	(package::extracted_packages_parent_dir): Use mkdtemp to generate
16175	the unique root directory under which packages are extracted.
16176	* tests/test-diff-pkg.cc (struct test_task): New type.
16177	(main): Use worker threads to run abipkgdiff in parallel,
16178	depending on the number of CPUs advertised by the underlying
16179	machine.
16180
161812016-03-07  Dodji Seketeli <dodji@redhat.com>
16182
16183	Bug 19778 - diff_has_ancestor_filtered_out() loops forever
16184	* src/abg-comparison.cc (diff_has_ancestor_filtered_out): Add an
16185	overload that takes an additional map of pointer values.  Make the
16186	older overload call the new one.
16187	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm: New test material.
16188	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt:
16189	New reference output.
16190	* tests/data/test-diff-pkg/libICE-1.0.9-2.el7.x86_64.rpm: New test material.
16191	* tests/data/test-diff-pkg/libICE-debuginfo-1.0.6-1.el6.x86_64.rpm: New test material.
16192	* tests/data/test-diff-pkg/libICE-debuginfo-1.0.9-2.el7.x86_64.rpm:
16193	New test material.
16194	* tests/data/Makefile.am: Add the new test material to source distribution.
16195	* tests/test-diff-pkg.cc (in_out_specs): Run this test harness
16196	over the new tests material above.
16197
161982016-03-07  Dodji Seketeli <dodji@redhat.com>
16199
16200	Forgot to add test2-filtered-removed-fns-v{0,1}.o
16201	* test2-filtered-removed-fns-v{0,1}.o: Add these test input files.
16202
162032016-03-03  Dodji Seketeli <dodji@redhat.com>
16204
16205	Bug 19596 - Suppressed removed symbol changes still considered incompatible
16206	* src/abg-comparison.cc (corpus_diff::has_incompatible_changes):
16207	Consider the *net* number of removed function and variable
16208	symbols.  Also, if all function sub-type changes have been
16209	suppressed, then no virtual offset change should be considered
16210	incompatible.
16211	* tests/data/test-abidiff-exit/test1-voffset-change-report1.txt
16212	* tests/data/test-abidiff-exit/test1-voffset-change.abignore
16213	* tests/data/test-abidiff-exit/test2-filtered-removed-fns-report0.txt
16214	* tests/data/test-abidiff-exit/test2-filtered-removed-fns-report1.txt
16215	* tests/data/test-abidiff-exit/test2-filtered-removed-fns-v0.c
16216	* tests/data/test-abidiff-exit/test2-filtered-removed-fns-v1.c
16217	* tests/data/test-abidiff-exit/test2-filtered-removed-fns.abignore
16218	* tests/data/Makefile.am: Add the new test material above to
16219	source distribution.
16220	* tests/test-abidiff-exit.cc (InOutSpec::in_suppr_path): New data
16221	member.
16222	(in_out_specs): Adjust. Add new test inputs.
16223	(main): Adjust.
16224
162252016-02-25  Dodji Seketeli <dodji@redhat.com>
16226
16227	Fixup virtual member functions with linkage and no underlying symbol
16228	* src/abg-dwarf-reader.cc (die_function_decl_map_type): New
16229	typedef.
16230	(read_context::die_function_with_no_symbol_map_): New data member.
16231	(read_context::die_function_decl_with_no_symbol_map): New
16232	accessor.
16233	(read_context::fixup_functions_with_no_symbols): New member
16234	function.
16235	(finish_member_function_reading): Take a read_context.  Schedule
16236	virtual member functions with linkage and no underlying symbol to
16237	be fixed up after all the debug info is read.
16238	(build_function_decl): After a virtual member function_decl has
16239	been updated, if it has its underlying symbol and was scheduled
16240	for fixup, then de-schedule it.
16241	(build_class_type_and_add_to_ir, build_ir_node_from_die): Adjust
16242	call to finish_member_function_reading.
16243	(read_corpus_from_elf): Move the pure ELF (symbol and other mundane
16244	information) information reading ...
16245	(read_debug_info_into_corpus): ...  here.  Make it happen *before*
16246	actual reading of DWARF information.  We need symbol information
16247	to be present and fully set before we start reading debug info.
16248	This is so that we can know when a virtual member function doesn't
16249	need to be fixed up.  Also, perform the fixup after the debug
16250	information was read.
16251	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
16252
162532016-02-25  Dodji Seketeli <dodji@redhat.com>
16254
16255	Add --verbose to abidw
16256	* doc/manuals/abidw.rst: Update the manual for the new --verbose
16257	option.
16258	* tools/abidw.cc (options::do_log): New data member.
16259	(options::options): Initialize it.
16260	(display_usage): New string for --verbose.
16261	(parse_command_line): Parse the --verbose option.
16262	(main): Set the the logging option.
16263
162642016-02-25  Dodji Seketeli <dodji@redhat.com>
16265
16266	Update copyright information
16267	* tools/abidiff.cc: Update copyright info for 2016.
16268	* tools/abidw.cc: Likewise.
16269
162702016-02-24  Dodji Seketeli <dodji@redhat.com>
16271
16272	Make libabigail link with pthread
16273	* src/Makefile.am: Add -pthread to libabigail_la_LDFLAGS.
16274	* tools/Makefile.am: Do not use abinilint_LDFLAGS when it should
16275	be abinilint_LDADD.  This one was fixed by Michi Henning.
16276
162772016-02-24  Dodji Seketeli <dodji@redhat.com>
16278
16279	Update mentions to the build dependencies in the doc
16280	* COMPILING: Mention elfutils, libtool, autoconf, automake and
16281	libtool.
16282	* doc/website/mainpage.txt: Mention automake and libtool.  Fix a typo.
16283
162842016-02-24  Dodji Seketeli <dodji@redhat.com>
16285
16286	Bug 19706 - Core dump from abidiff with suppression
16287	* src/abg-comparison.cc
16288	(function_suppression::suppresses_function): Make sure a function
16289	has a symbol before (de)referencing it.
16290
162912016-02-24  Dodji Seketeli <dodji@redhat.com>
16292
16293	Some small speed optimizations
16294	* include/abg-ir.h (var_decl::get_naked_type): Declare new member function.
16295	* src/abg-ir.cc (var_decl::get_naked_type): Define it.
16296	(equals): For the var_decl overload, avoid copying symbol
16297	smart pointers.  Likewise for variable type smart pointers.
16298	(hash_type_or_decl): Avoid accessing canonical type smart pointer.
16299
163002016-02-24  Dodji Seketeli <dodji@redhat.com>
16301
16302	Mist style cleanups
16303	* include/abg-ir.h: Add missing comments.  Space cleanups.  Use
16304	shorter typedefs rather than long template instantiation names.
16305	Use string rather than the longer std::string.
16306	* src/abg-ir.cc: Space cleanups. Add missing comments.  User
16307	shorter typedefs.
16308	* src/abg-reader.cc: Likewise.
16309	* src/abg-writer.cc: Likewise.
16310
163112016-02-24  Dodji Seketeli <dodji@redhat.com>
16312
16313	Implement string interning for Libabigail
16314	* include/Makefile.am: Add the new abg-interned-str.h file to
16315	source distribution.
16316	* include/abg-corpus.h (corpus::corpus): Re-arrange the order of
16317	* src/abg-corpus.cc
16318	(corpus::exported_decls_builder::priv::get_id): Return
16319	interned_string rather than std::string.
16320	(corpus::corpus): Re-arrange the order of parameters: take an
16321	environment as first parameter.  parameters: take an environment
16322	as first parameter.
16323	* include/abg-dwarf-reader.h (lookup_symbol_from_elf)
16324	(lookup_public_function_symbol_from_elf): Likewise.
16325	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
16326	(lookup_symbol_from_gnu_hash_tab)
16327	(lookup_symbol_from_elf_hash_tab, lookup_symbol_from_symtab)
16328	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf)
16329	(lookup_public_variable_symbol_from_elf, lookup_symbol_from_elf)
16330	(lookup_public_function_symbol_from_elf): Take an environment as
16331	first parameter and adjust.
16332	(build_translation_unit_and_add_to_ir)
16333	(build_namespace_decl_and_add_to_ir, build_type_decl)
16334	(build_enum_type, finish_member_function_reading)
16335	(build_class_type_and_add_to_ir, build_function_type)
16336	(read_debug_info_into_corpus, read_corpus_from_elf): Adjust.
16337	* include/abg-fwd.h: Include abg-interned-str.h
16338	(get_type_name, get_function_type_name, get_method_type_name):
16339	Return a interned_string, rather than a std::string.
16340	* include/abg-interned-str.h: New declarations for interned strings
16341	and their pool.
16342	* include/abg-ir.h (environment::intern): Declare new method.
16343	(elf_symbol::{g,s}et_environment): Likewise.
16344	(type_or_decl_base::type_or_decl_base): Make the default
16345	constructor private.
16346	({translation, type_or_decl_base}::set_environment)
16347	(set_environment_for_artifact): Take a const environment*.
16348	(elf_symbol::elf_symbol)
16349	(elf_symbol::create)
16350	(type_or_decl_base::type_or_decl_base)
16351	(translation::translation, decl_base::decl_base)
16352	(scope_decl::scope_decl, type_base::type_base)
16353	(type_decl::type_decl, scope_type_decl::scope_type_decl)
16354	(namespace_decl::namespace_decl)
16355	(enum_type_decl::enumerator::enumerator)
16356	(function_type::function_type, method_type::method_type)
16357	(template_decl::template_decl, function_tdecl::function_tdecl)
16358	(class_tdecl::class_tdecl, class_decl::class_decl): Take an
16359	environment.
16360	(type_or_decl_base::operator=)
16361	(enum_type_decl::enumerator::get_environment): Declare new method.
16362	(decl_base::{peek_qualified_name, peek_temporary_qualified_name,
16363	get_qualified_name, get_name, get_qualified_parent_name,
16364	get_linkage_name}, qualified_type_def::get_qualified_name)
16365	(reference_type_def::get_qualified_name)
16366	(array_type_def::get_qualified_name)
16367	(enum_type_decl::enumerator::{get_name, get_qualified_name})
16368	({var,function}_decl::get_id)
16369	(function_decl::parameter::{get_type_name, get_name_id}): Return
16370	an interned_string, rather than a std::string.
16371	(decl_base::{set_qualified_name, set_temporary_qualified_name,
16372	get_qualified_name, set_linkage_name})
16373	(qualified_type_def::get_qualified_name)
16374	(reference_type_def::get_qualified_name)
16375	(array_type_def::get_qualified_name)
16376	(function_decl::parameter::get_qualified_name): Take an
16377	interned_string, rather than a std::string.
16378	(class_decl::member_{class,function}_template::member_{class,function}_template):
16379	Adjust.
16380	* src/abg-ir.cc (environment_setter::env_): Make this be a pointer
16381	to const environment.
16382	(environment_setter::visit_begin): Adjust.
16383	(interned_string_pool::priv): Define new type.
16384	(interned_string_pool::*): Define the method declared in
16385	abg-interned-str. h.
16386	(operator==, operator!=, operator+): Define operator for interned_string and
16387	std::string
16388	(operator<<): Define for interned_string.
16389	(translation_unit::priv::env_): Make this be a pointer to const
16390	environment.
16391	(translation_unit::priv::priv): Take a pointer to const
16392	environment.
16393	(elf_symbol::priv::env_): New data member.
16394	(elf_symbol::priv::priv): Adjust.  Make an overoad take an
16395	environment.
16396	(translation_unit::{g,s}et_environment): Adjust.
16397	(interned_string_bool_map_type): New typedef.
16398	(environment::priv::classes_being_compared_): Make this hastable
16399	of string be a hashtable of interned_string.
16400	(environment::priv::string_pool_): New data member.
16401	(environment::{get_void_type_decl,
16402	get_variadic_parameter_type_decl}): Adjust.
16403	(type_or_decl_base::priv::env_): Make this be a pointer to const
16404	environment.
16405	(type_or_decl::base::priv::priv): Adjust.
16406	(type_or_decl_base::set_environment)
16407	(set_environment_for_artifact): Take a pointer to const
16408	environment.
16409	(elf_symbol::{g,s}et_environment, environment::intern)
16410	(type_or_decl_base::operator=): Define new methods.
16411	(decl_base::priv::{name_, qualified_parent_name_,
16412	temporary_qualified_name_, qualified_name_, linkage_name_}): Make
16413	these data member be of tpe interned_string.
16414	(decl_base::priv::priv): Make this take an environment. Adjust.
16415	(decl_base::{peek_qualified_name, peek_temporary_qualified_name,
16416	get_linkage_name, get_qualified_parent_name, get_name,
16417	get_qualified_name}, get_type_name, get_function_type_name)
16418	(get_method_type_name, get_node_name)
16419	(qualified_type_def::get_qualified_name)
16420	(pointer_type_def::get_qualified_name)
16421	(array_type_def::get_qualified_name)
16422	(enum_type_decl::enumerator::get_qualified_name)
16423	(var_decl::get_id, function_decl::get_id)
16424	(function_decl::parameter::get_{name_id, type_name}): Return an
16425	interned_string.
16426	(decl_base::{set_qualified_name, set_temporary_qualified_name})
16427	(qualified_type_def::get_qualified_name)
16428	(pointer_type_def::get_qualified_name)
16429	(reference_type_def::get_qualified_name)
16430	(array_type_def::get_qualified_name)
16431	(function_decl::parameter::get_qualified_name): Take an
16432	interned_string.
16433	(decl_base::{set_name, set_linkage_name}): Intern the std::string
16434	passed in parameter.
16435	(equals): In the overload for decl_base, adjust for a little speed
16436	optimization that is justified by profiling.
16437	(pointer_type_def::priv::{internal_qualified_name_,
16438	temp_internal_qualified_name_}): Make these data member be
16439	interned_string.
16440	(enum_type_decl::enumerator::priv::env_): New data member.
16441	(enum_type_decl::enumerator::priv::{name_, qualified_name}): Make
16442	these data member be of type interned_string.
16443	(enum_type_decl::enumerator::get_environment): New method.
16444	(enum_type_decl::enumerator::priv::priv) Adjust.
16445	(typedef_decl::operator==): Implement a little speed optimization.
16446	(var_decl::priv::nake_type_): New data member.
16447	(var_decl::priv::id_): Make this data member be of type
16448	interned_string.
16449	(equals): In the overload for var_decl, function_type,
16450	function_decl, adjust for the use of interned_string.
16451	(function_decl::priv::id_): Make this be of type interned_string.
16452	(scope_decl::{add_member_decl, insert_member_decl})
16453	(lookup_function_type_in_translation_unit)
16454	(synthesize_type_from_translation_unit, lookup_node_in_scope)
16455	(lookup_type_in_scope, scope_decl::scope_decl)
16456	(qualified_type_def::qualified_type_def)
16457	(qualified_type_def::get_qualified_name)
16458	(pointer_type_def::pointer_type_def)
16459	(reference_type_def::reference_type_def)
16460	(array_type_def::array_type_def, array_type_def::append_subrange)
16461	(array_type_def::get_qualified_name)
16462	(enum_type_decl::enum_type_decl)
16463	(enum_type_decl::enumerator::get_qualified_name)
16464	(enum_type_decl::enumerator::set_name)
16465	(typedef_decl::typedef_decl, var_decl::var_decl)
16466	(function_type::function_type, method_type::method_type)
16467	(function_decl::function_decl)
16468	(function_decl::parameter::parameter)
16469	(class_decl::priv::comparison_started)
16470	(class_decl::add_base_specifier)
16471	(class_decl::base_spec::base_spec)
16472	(class_decl::method_decl::method_decl)
16473	(type_tparameter::type_tparameter)
16474	(non_type_tparameter::non_type_tparameter)
16475	(template_tparameter::template_tparameter)
16476	(type_composition::type_composition)
16477	(function_tdecl::function_tdecl, class_tdecl::class_tdecl)
16478	(qualified_name_setter::do_update): Adjust.
16479	(translation_unit::translation_unit, elf_symbol::elf_symbol)
16480	(elf_symbol::create, type_or_decl_base::type_or_decl_base)
16481	(decl_base::decl_base, type_base::type_base)
16482	(type_decl::type_decl, scope_type_decl::scope_type_decl)
16483	(namespace_decl::namespace_decl)
16484	(enum_type_decl::enumerator::enumerator, class_decl::class_decl)
16485	(template_decl::template_decl, function_tdecl::function_tdecl)
16486	(class_tdecl::class_tdecl): Take an environment.
16487	* src/abg-comparison.cc
16488	(function_suppression::suppresses_function): Adjust.
16489	* src/abg-reader.cc (read_translation_unit)
16490	(read_corpus_from_input, build_namespace_decl, build_elf_symbol)
16491	(build_function_parameter, build_function_decl, build_type_decl)
16492	(build_function_type, build_enum_type_decl, build_enum_type_decl)
16493	(build_class_decl, build_function_tdecl, build_class_tdecl)
16494	(read_corpus_from_native_xml): Likewise.
16495	* src/abg-writer.cc (id_manager::m_cur_id): Make this mutable.
16496	(id_manager::m_env): New data member.
16497	(id_manager::id_manager): Adjust.
16498	(id_manager::get_environment): New method.
16499	(id_manager::{get_id, get_id_with_prefix}): Return an
16500	interned_string.
16501	(type_ptr_map): Make this be a hash map of type_base* ->
16502	interned_string, rather a type_base* -> string.
16503	(write_context::m_env): New data member.
16504	(write_context::m_type_id_map): Make this data member be mutable.
16505	(write_context::m_emitted_type_id_map): Make this be a hash map of
16506	interned_string -> bool, rather than string -> bool.
16507	(write_context::write_context): Take an environment and adjust.
16508	(write_context::get_environment): New method.
16509	(write_context::get_id_manager): New const overload.
16510	(write_context::get_id_for_type): Return an interned_string; adjust.
16511	(write_context::{record_type_id_as_emitted,
16512	record_type_as_referenced}): Adjust.
16513	(write_context::type_id_is_emitted): Take an interned_string.
16514	(write_context::{type_is_emitted,
16515	record_decl_only_type_as_emitted}): Adjust.
16516	(write_translation_unit, write_corpus_to_native_xml, dump):
16517	Adjust.
16518	* tools/abisym.cc (main): Adjust.
16519	* tests/data/test-read-write/test22.xml: Adjust.
16520	* tests/data/test-read-write/test23.xml: Adjust.
16521	* tests/data/test-read-write/test26.xml: Adjust.
16522
165232016-02-24  Dodji Seketeli <dodji@redhat.com>
16524
16525	Update copyright notice
16526	* include/abg-corpus.h: Update copyright notice.
16527	* include/abg-dwarf-reader.h: Likewise.
16528	* src/abg-comparison.cc: Likewise.
16529	* src/abg-corpus.cc: Likewise.
16530	* src/abg-ir.cc: Likewise.
16531
165322016-02-23  Dodji Seketeli <dodji@redhat.com>
16533
16534	Fix crash when handling templates with empty patterns
16535	* src/abg-ir.cc (function_tdecl::traverse): Do not crash when
16536	traversing a template with empty pattern.
16537	(class_tdecl::operator==): Do not crash when comparing templates
16538	with empty patterns.
16539
165402016-02-23  Dodji Seketeli <dodji@redhat.com>
16541
16542	Add missing inequality operators for ABI artifacts
16543	* include/abg-ir.h ({translation_unit, elf_symbol::version,
16544	context_rel, decl_base, type_base, type_decl,
16545	array_type_def::subrange_type, enum_type_def::enumerator,
16546	dm_context_rel, template_parameter}::operator!=): Declare.
16547	(operator==): Make the overload form translation_unit_sptr,
16548	scope_decl_sptr, class_decl::base_spec_sptr,
16549	class_decl::member_function_template_sptr,
16550	class_decl::member_class_template_sptr take const references.
16551	(operator!=): Declare an an overload for the non-member operator
16552	!= of translation_unit_sptr, elf_symbol_sptr,
16553	type_or_decl_base_sptr, type_base_sptr, scope_decl_sptr,
16554	type_decl, qualified_type_def_sptr, pointer_type_def_sptr,
16555	reference_type_def_sptr, enum_type_decl_sptr, class_decl_sptr,
16556	class_decl::base_spec_sptr,
16557	class_decl::member_function_template_sptr,
16558	class_decl::member_class_template_sptr.
16559	* src/abg-ir.cc ({translation_unit, elf_symbol::version,
16560	context_rel, decl_base, type_base, type_decl,
16561	array_type_def::subrange_type, enum_type_def::enumerator,
16562	dm_context_rel, template_parameter}::operator!=): Define.
16563	(operator==): Make the overload for translation_unit_sptr,
16564	scope_decl_sptr, class_decl::base_spec_sptr,
16565	class_decl::member_function_template_sptr,
16566	class_decl::member_class_template_sptr take const references.
16567	(operator!=): Define an an overload for the non-member operator !=
16568	of translation_unit_sptr, elf_symbol_sptr, type_or_decl_base_sptr,
16569	type_base_sptr, scope_decl_sptr, type_decl,
16570	qualified_type_def_sptr, pointer_type_def_sptr,
16571	reference_type_def_sptr, enum_type_decl_sptr, class_decl_sptr,
16572	class_decl::base_spec_sptr,
16573	class_decl::member_function_template_sptr,
16574	class_decl::member_class_template_sptr.
16575
165762016-02-20  Dodji Seketeli <dodji@redhat.com>
16577
16578	Make the tree pass distcheck again.
16579	* tests/data/Makefile.am: Add file
16580	test-diff-suppr/test28-add-aliased-function-report-0.txt to source
16581	distribution.
16582
165832016-02-18  Dodji Seketeli <dodji@redhat.com>
16584
16585	Bug 19658 - Type canonicalization slow for the 2nd binary loaded
16586	* include/abg-corpus.h (corpus::{record_canonical_type,
16587	lookup_canonical_type}): Declare new member functions.
16588	* src/abg-corpus.cc (corpus::priv::canonical_types_): New data
16589	member.
16590	(corpus::{record_canonical_type, lookup_canonical_type}): Define
16591	new member functions.
16592	* src/abg-ir.cc (type_base::get_canonical_type_for): Cache the
16593	canonical type inside the corpus of the type being canonicalized.
16594	Then later when canonicalizing another type, lookup in the cache
16595	inside its corpus to see if there is a type with the same name.
16596	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
16597	Adjust.
16598
165992016-02-18  Dodji Seketeli <dodji@redhat.com>
16600
16601	Add --verbose option to abidiff
16602	* doc/manuals/abidiff.rst: Add documentation for new --verbose
16603	option.
16604	* include/abg-dwarf-reader.h (set_do_log): Declare new function.
16605	* src/abg-dwarf-reader.cc (read_context::do_log_): New data
16606	member.
16607	(read_context::read_context): Initialize the new data member.
16608	(read_context::do_log): Define accessors.
16609	(set_do_log): Define new function;
16610	(read_context::canonicalize_types_scheduled)
16611	(read_debug_info_into_corpus): Add logs.
16612	* tools/abidiff.cc (options::do_log): New data member.
16613	(options::options): Initialize it.
16614	(display_usage): Add an usage string for --verbose.
16615	(parse_command_line): Parse the new --verbose option.
16616	(main): Set the dwarf reader's context wrt presence of the
16617	--verbose option.
16618
166192016-02-18  Dodji Seketeli <dodji@redhat.com>
16620
16621	Fix indentation
16622	* tools/abipkgdiff.cc (parse_command_line): Fix a wrong indentation.
16623
166242016-02-17  Dodji Seketeli <dodji@redhat.com>
16625
16626	Bug 19638 - DWARF reader fails to link clone function to its declaration
16627	* include/abg-ir.h (decl_base::set_linkage_name): Make this member
16628	function virtual.
16629	(class_decl::string_mem_fn_ptr_map_type): Define new member type.
16630	(class_decl::find_member_function): Declare new member function.
16631	(copy_member_function): Declare new function.  Declare it as
16632	friend of class_decl.
16633	(method_decl::set_linkage_name): Declare an overload for this
16634	virtual function.
16635	* src/abg-dwarf-reader.cc (build_function_decl): Allow updating of
16636	linkage_name even if the linkage_name was already defined.
16637	(build_ir_node_from_die): In the case DW_TAG_subprogram, make the
16638	lookup of scope of the DIE work even if it has both an abstract
16639	origin and a specification (DW_AT_abstract_origin and
16640	DW_AT_specification).
16641	* src/abg-ir.cc (maybe_adjust_canonical_type): Define new
16642	function.
16643	(canonicalize): Use it.
16644	(function_decl::get_id): Return the linkage name first, if it
16645	exist.
16646	(class_decl::priv::mem_fns_map_): New data member.
16647	(class_decl::find_member_function): Define new member function.
16648	(class_decl::method_decl::set_linkage_name): Likewise.
16649	(class_decl::add_member_function): Update the new data member
16650	class_decl::priv::mem_fns_map_.
16651	(copy_member_function): Define new static function.
16652	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
16653	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
16654	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
16655	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
16656	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
16657	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
16658	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
16659	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
16660	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
16661
166622016-02-17  Dodji Seketeli <dodji@redhat.com>
16663
16664	Add function lookup by linkage name to libabigail::corpus
16665	* include/abg-corpus.h (corpus::lookup_functions): Declare new
16666	member function.
16667	* src/abg-corpus.cc (class corpus::exported_decls_builder::priv):
16668	Make class corpus be a friend of this type.
16669	(corpus::exported_decls_builder::priv::add_fn_to_id_fns_map): Fix
16670	a thinko that was preventing the fn_id -> functions map from ever
16671	being filled.  Fix this function to make it associate each aliases
16672	of a given function to the function, in the hash table.
16673	(corpus::lookup_functions): Define new member function.
16674
166752016-02-17  Dodji Seketeli <dodji@redhat.com>
16676
16677	Fix style cleanups
16678	* include/abg-ir.h (method_type::{method_type, set_class_type,
16679	get_type, set_type}): Use type_base_sptr and class_decl_sptr
16680	instead of the full non-typedefed name.
16681	(method_type):Do some cleanups in the definition of the
16682	convenience typedefs.
16683	* src/abg-ir.cc (method_type::{method_type, set_class_type,
16684	get_type, set_type}): Use type_base_sptr and class_decl_sptr
16685	instead of the full non-typedefed name.
16686	* src/abg-writer.cc (write_class_decl): Add a comment.
16687
166882016-02-13  Dodji Seketeli <dodji@redhat.com>
16689
16690	Bug 19619 - failing to suppress added aliased function reports for C++
16691	* src/abg-comparison.cc
16692	(function_suppression::suppresses_function): Make the evaluation
16693	of the "name" and "name_regexp" consider the cases of languages in
16694	which the function name is the same as the symbol name and the
16695	case of languages in which it is not.  In the former case, all
16696	symbol alias names must be matched.  In the latter case, if "name"
16697	and "name_regexp" match the function name, the suppression
16698	specification is considered to match the report about the function
16699	change.  Also, use the elf_symbol::is_main_symbol() predicate to
16700	test for the symbol being a main symbol, rather than using
16701	error-prone pointer equality.
16702	* tests/data/test-diff-suppr/test27-add-aliased-function-0.suppr:
16703	New test input.
16704	* tests/data/test-diff-suppr/test27-add-aliased-function-1.suppr: Likewise.
16705	* tests/data/test-diff-suppr/test27-add-aliased-function-2.suppr: Likewise.
16706	* tests/data/test-diff-suppr/test27-add-aliased-function-3.suppr: Likewise.
16707	* tests/data/test-diff-suppr/test27-add-aliased-function-4.suppr: Likewise.
16708	* tests/data/test-diff-suppr/test27-add-aliased-function-report-0.txt: Likewise.
16709	* tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise.
16710	* tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise.
16711	* tests/data/test-diff-suppr/test27-add-aliased-function-report-3.txt: Likewise.
16712	* tests/data/test-diff-suppr/test27-add-aliased-function-report-4.txt: Likewise.
16713	* tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise.
16714	* tests/data/test-diff-suppr/test27-add-aliased-function-v0.cc: Likewise.
16715	* tests/data/test-diff-suppr/test27-add-aliased-function-v0.o: Likewise.
16716	* tests/data/test-diff-suppr/test27-add-aliased-function-v1.cc: Likewise.
16717	* tests/data/test-diff-suppr/test27-add-aliased-function-v1.o: Likewise.
16718	* tests/data/test-diff-suppr/test28-add-aliased-function-0.suppr: Likewise.
16719	* tests/data/test-diff-suppr/test28-add-aliased-function-1.suppr: Likewise.
16720	* tests/data/test-diff-suppr/test28-add-aliased-function-2.suppr: Likewise.
16721	* tests/data/test-diff-suppr/test28-add-aliased-function-3.suppr: Likewise.
16722	* tests/data/test-diff-suppr/test28-add-aliased-function-4.suppr: Likewise.
16723	* tests/data/test-diff-suppr/test28-add-aliased-function-5.suppr: Likewise.
16724	* tests/data/test-diff-suppr/test28-add-aliased-function-report-0.txt: Likewise.
16725	* tests/data/test-diff-suppr/test28-add-aliased-function-report-1.txt: Likewise.
16726	* tests/data/test-diff-suppr/test28-add-aliased-function-report-2.txt: Likewise.
16727	* tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise.
16728	* tests/data/test-diff-suppr/test28-add-aliased-function-report-4.txt: Likewise.
16729	* tests/data/test-diff-suppr/test28-add-aliased-function-report-5.txt: Likewise.
16730	* tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise.
16731	* tests/data/test-diff-suppr/test28-add-aliased-function-v0.c: Likewise.
16732	* tests/data/test-diff-suppr/test28-add-aliased-function-v0.o: Likewise.
16733	* tests/data/test-diff-suppr/test28-add-aliased-function-v1.c: Likewise.
16734	* tests/data/test-diff-suppr/test28-add-aliased-function-v1.o: Likewise.
16735	* tests/data/Makefile.am: Add the new test material above to the
16736	source distribution.
16737	* tests/test-diff-suppr.cc: Add the new test inputs above to this
16738	test harness.
16739
167402016-02-12  Dodji Seketeli <dodji@redhat.com>
16741
16742	Emit more informational messages on unrecognized options
16743	* tools/abicompat.cc (options::prog_name): New data member.
16744	(display_help, perform_compat_check_in_normal_mode)
16745	(perform_compat_check_in_weak_mode, main): Prefix error messages
16746	with the name of the program.
16747	* tools/abidw.cc (options::wrong_option): New data member.
16748	(display_help): Prefix error messages with the name of the
16749	program.n
16750	(parse_command_line): Record the name of the unrecognized option.
16751	(main): Tell the name of the unrecognized option.  Prefix error
16752	messages with the name of the program.
16753	* tools/abilint.cc (optionqs::wrong_option): New data member
16754	(display_usage): Prefix error messages with the name of the
16755	program.
16756	(parse_command_line): Record the name of the unrecognized option.
16757	(main): Tell the name of the unrecognized option.  Prefix error
16758	messages with the name of the program.
16759	* tools/abipkgdiff.cc (options::{wrong_option, prog_name}): New
16760	data members.
16761	(package::erase_extraction_directory, display_usage, extract_rpm)
16762	(extract_deb, extract_tar)
16763	(erase_created_temporary_directories_parent, extract_package)
16764	(compare, create_maps_of_package_content): Prefix error messages
16765	with the name of the program.
16766	(maybe_check_suppression_files): Adjust.
16767	(parse_command_line): Record the name of the unrecognized option,
16768	and the name of option which lacks an operand.
16769	(main): Give the name of the unrecognized option.  Prefix error
16770	messages with the name of the program.
16771
167722016-02-12  Dodji Seketeli <dodji@redhat.com>
16773
16774	Prefix abidiff error message with the 'abidiff' program name
16775	* include/abg-tools-utils.h (emit_prefix): Declare new function.
16776	(check_file): Add a new parameter with a default value, so that
16777	existing code keeps compiling.
16778	* src/abg-tools-utils.cc (emit_prefix): Define new function.
16779	(check_file): Use the emit_prefix function and give it the program
16780	name passed as a new parameter.
16781	* tools/abidiff.cc (display_usage, main): Use the new emit_prefix
16782	to prefix error messages.
16783
167842016-02-11  Dodji Seketeli <dodji@redhat.com>
16785
16786	Bug 19606 - Need better error message for invalid options
16787	* tools/abidiff.cc (options::wrong_option): New data member.
16788	(parse_command_line): Record the name of the unknown option and of
16789	the option which value is missing.
16790
167912016-02-11  Dodji Seketeli <dodji@redhat.com>
16792
16793	Add a comment about libabigail needing elfutils 0.159 at least.
16794	* configure.ac: Add a comment saying that we require at least
16795	elfutils 0.159.
16796
167972016-02-11  Dodji Seketeli <dodji@redhat.com>
16798
16799	Talk about mandatory properties in suppress_* directives
16800	* doc/manuals/libabigail-concepts.rst: Talk about the mandatory
16801	properties for suppress_type, suppress_function and
16802	suppress_variable directives.
16803
168042016-02-11  Dodji Seketeli <dodji@redhat.com>
16805
16806	Make abipkgdiff check for the presence of suppression spec files
16807	* tools/abipkgdiff.cc (maybe_check_suppression_files): Define new
16808	static function.
16809	(main): Use it.
16810
168112016-02-11  Dodji Seketeli <dodji@redhat.com>
16812
16813	Make abipkgdiff return correct exit code on usage error
16814	* tools/abipkgdiff.cc (main): Return the correct error code on
16815	usage error.
16816
168172016-02-11  Dodji Seketeli <dodji@redhat.com>
16818
16819	Bug 19604 - abidiff --suppressions doesn't complain about invalid file name
16820	* tools/abidiff.cc (maybe_check_suppression_files): Define new
16821	static function.
16822	(main): Use it.
16823
168242016-02-10  Dodji Seketeli <dodji@redhat.com>
16825
16826	Use proper WIFEXITED and WEXITSTATUS macros to get exit code
16827	* tests/test-diff-dwarf-abixml.cc (main): Use WIFEXITED and
16828	WEXITSTATUS macros to get the return code of the abidiff program.
16829	* tests/test-diff-filter.cc (test_task::perform): Likewise.
16830	* tests/test-diff-pkg.cc (main): Likewise.
16831	* tests/test-diff-suppr.cc (main): Likewise.
16832
168332016-02-10  Dodji Seketeli <dodji@redhat.com>
16834
16835	Bug 19596 - Incorrect exit status for incompatible ABI change
16836	* include/abg-comparison.h (enum diff_category): Adjust the
16837	comment for enumerator VIRTUAL_MEMBER_CHANGE_CATEGORY; changes of
16838	this category are incompatible ABI changes.
16839	(corpus_diff::diff_stats::num_func_with_virtual_offset_changes):
16840	Declare new accessors.
16841	* src/abg-comparison.cc
16842	(corpus_diff::diff_stats::priv::num_func_with_virt_offset_changes):
16843	New data member.
16844	(corpus_diff::diff_stats::priv::priv): Initialize the new data
16845	member.
16846	(corpus_diff::diff_stats::num_func_with_virtual_offset_changes):
16847	Define new accessors.
16848	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the
16849	new accessor to set the number of functions with virtual offset
16850	changes onto the stats data structure.
16851	(corpus_diff::has_incompatible_changes): Take functions with
16852	virtual offset changes into account.
16853	* tests/test-abidiff-exit.cc: New test harness to test for exit
16854	codes of abidiff.
16855	* tests/Makefile.am: Build the new test harness runtestabidiff
16856	from the test-abidiff-exit.cc source file.
16857	* tests/data/test-abidiff-exit/test1-voffset-change-report0.txt:
16858	New reference test output.
16859	* tests/data/test-abidiff-exit/test1-voffset-change-v0.cc: New
16860	test input source code.
16861	* tests/data/test-abidiff-exit/test1-voffset-change-v0.o: New test input.
16862	* tests/data/test-abidiff-exit/test1-voffset-change-v1.cc: New
16863	test input source code.
16864	* tests/data/test-abidiff-exit/test1-voffset-change-v1.o: New test input.
16865	* tests/data/Makefile.am: tests/data/Makefile.am: Add the new test
16866	inputs above to the source distribution.
16867
168682016-02-04  Dodji Seketeli <dodji@redhat.com>
16869
16870	Fix synthesizing of reference type
16871	* src/abg-ir.cc (synthesize_type_from_translation_unit): Support
16872	synthesizing reference types.
16873	* tests/data/test-abicompat/libtest9-fn-changed-v0.so: Add new
16874	test input.
16875	* tests/data/test-abicompat/libtest9-fn-changed-v1.so: Likewise.
16876	* tests/data/test-abicompat/test9-fn-changed-app: Likewise.
16877	* tests/data/test-abicompat/test9-fn-changed-app.cc: : Likewise.
16878	* tests/data/test-abicompat/test9-fn-changed-report-0.txt: Likewise.
16879	* tests/data/test-abicompat/test9-fn-changed-v0.cc: Likewise.
16880	* tests/data/test-abicompat/test9-fn-changed-v0.h: Likewise.
16881	* tests/data/test-abicompat/test9-fn-changed-v1.cc: Likewise.
16882	* tests/data/test-abicompat/test9-fn-changed-v1.h: Likewise.
16883	* tests/data/Makefile.am: Add the new material to source
16884	distribution.
16885	* tests/test-abicompat.cc (in_out_specs): Add the new test inputs
16886	to the test harness.
16887
168882016-02-03  Dodji Seketeli <dodji@redhat.com>
16889
16890	Fix synthesizing of pointer type
16891	* include/abg-ir.h: Update copyright.
16892	* src/abg-ir.cc (synthesize_type_from_translation_unit): Support
16893	synthesizing pointer types.
16894	* tests/data/test-abicompat/libtest8-fn-changed-libapp-v0.so: New
16895	test input.
16896	* tests/data/test-abicompat/libtest8-fn-changed-libapp-v1.so: Likewise.
16897	* tests/data/test-abicompat/test8-fn-changed-app: Likewise.
16898	* tests/data/test-abicompat/test8-fn-changed-app.c: Likewise.
16899	* tests/data/test-abicompat/test8-fn-changed-libapp-v0.c: Likewise.
16900	* tests/data/test-abicompat/test8-fn-changed-libapp-v0.h: Likewise.
16901	* tests/data/test-abicompat/test8-fn-changed-libapp-v1.c: Likewise.
16902	* tests/data/test-abicompat/test8-fn-changed-libapp-v1.h: Likewise.
16903	* tests/data/test-abicompat/test8-fn-changed-report-0.txt: Likewise.
16904	* tests/data/Makefile.am: Add the new test input files to source
16905	distribution.
16906	* tests/test-abicompat.cc (in_out_specs): Add the new test inputs
16907	above to the test harness.
16908
169092016-01-26  Mark Wielaard <mjw@redhat.com>
16910
16911	Remove defined but not used functions pointed out by GCC6.
16912	* src/abg-ir.cc (convert_node_to_decl(decl_base_sptr)): Remove
16913	definition.
16914	(get_node_name(decl_base_sptr)): Likewise.
16915
169162016-01-26  Mark Wielaard <mjw@redhat.com>
16917
16918	Make make more silent.
16919	* Makefile.am (AM_MAKEFLAGS): Set --no-print-directory.
16920
169212016-01-26  Mark Wielaard <mjw@redhat.com>
16922
16923	Fix GCC6 -Wmisleading-indentation warnings.
16924	* src/abg-dwarf-reader.cc (find_import_unit_point_before_die):
16925	Properly indent code after if clause.
16926	* src/abg-ini.cc (write_property_value): Properly indent return
16927	statement after else clause.
16928
169292016-01-27  Dodji Seketeli <dodji@redhat.com>
16930
16931	Fix abicompat's handling of library types not used by the application
16932	* tools/abicompat.cc (perform_compat_check_in_weak_mode): If the
16933	application doesn't use a given type defined and exported by the
16934	library, then skip it.
16935
169362016-01-27  Dodji Seketeli <dodji@redhat.com>
16937
16938	Do not crash when looking up a type from global scope
16939	* src/abg-ir.cc (lookup_type_in_scope): Gently Handle empty access
16940	path.
16941
169422016-01-25  Dodji Seketeli <dodji@redhat.com>
16943
16944	Comparing aliases of the same symbol must be done by pointer
16945	* src/abg-ir.cc (elf_symbol::operator==): Fix thinko and
16946	indentation.  What was I thinking ...
16947	(elf_symbol::add_alias)
16948	(compute_aliases_for_elf_symbol): Do not compare aliases using the
16949	equality operator, because it considers all aliases of a given
16950	symbol as equal.  Rather, use elf_symbol::is_main_symbol() to test
16951	if an alias is the main symbol alias.
16952	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
16953	Likewise.
16954	* src/abg-corpus.cc
16955	(corpus::priv::build_unreferenced_symbols_tables): Likewise.
16956	* src/abg-writer.cc (write_elf_symbol_aliases): Likewise.
16957
169582016-01-21  Dodji Seketeli <dodji@redhat.com>
16959
16960	Bug 19204 - libabigail aborts on DWARF referencing non-existing DIE
16961	* src/abg-dwarf-reader.cc (get_parent_die): If we couldn't find
16962	the parent of a given DIE, return false, do not abort.  Also,
16963	assert that if we don't find the parent of a DIE in the main debug
16964	info, we don't find it in the alternate debug info either (and
16965	vice versa).  This is because I'd like to abort on cases where we
16966	look for a DIE in the wrong debug info; those cases are likely to
16967	be hint that the DWARF reader is doing something wrong which ought
16968	to be investigated and fixed.
16969	(get_scope_for_die): If we couldn't get the parent of the DIE,
16970	then return a nil scope.
16971	* tests/data/test-types-stability/pr19204-libtcmalloc.so.4.2.6-xlc:
16972	New test binary input.
16973	* tests/data/Makefile.am: Add the new binary test input to the
16974	source distribution.
16975	* tests/test-types-stability.cc (elf_paths): Account for the new
16976	binary input.
16977
169782016-01-20  Dodji Seketeli <dodji@redhat.com>
16979
16980	Pass parm of elf_symbol::add_alias by reference
16981	* include/abg-ir.h (elf_symbol::add_alias): Pass parameter by
16982	reference.
16983	* src/abg-ir.cc (elf_symbol::add_alias): Likewise.
16984
169852016-01-20  Dodji Seketeli <dodji@redhat.com>
16986
16987	Bug 19141 - Libabigail doesn't support common ELF symbols
16988	* include/abg-ir.h (elf_symbol::elf_symbol): Take a new flag to
16989	say if the symbol is common.
16990	(elf_symbol::{is_common_symbol, has_other_common_instances,
16991	get_next_common_instance, add_common_instance}): New member functions.
16992	* src/abg-ir.cc (elf_symbol::priv::{is_common_,
16993	next_common_instance_): New data members.
16994	(elf_symbol::priv::priv): Adjust.
16995	(elf_symbol::{elf_symbol, create}): Take a new flag to say if the
16996	symbol is common.
16997	(textually_equals): Adjust to account for symbol common-ness.
16998	(elf_symbol::{is_common_symbol, has_other_common_instances,
16999	get_next_common_instance, add_common_instance}): Define new member
17000	functions.
17001	(elf_symbol::add_alias): Drive-by fix; compare symbols using
17002	pointer value.  Value comparison is not necessary.
17003	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
17004	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
17005	(read_context::lookup_elf_symbol_from_index): Adjust the creation
17006	of the symbol to account for common-ness.
17007	(read_context::load_symbol_maps): Recognize instances of a given
17008	common symbol and represent them as such.  Do not mistake this
17009	with symbol aliases.
17010	* src/abg-reader.cc (build_elf_symbol): Adjust the creation of the
17011	symbol to account for common-ness.
17012	* src/abg-writer.cc (write_elf_symbol): Adjust symbol
17013	serialization to account common-ness.
17014	* tests/data/test-types-stability/pr19141-get5d.o: Add new test
17015	binary input.
17016	* tests/data/test-types-stability/pr19142-topo.o: Likewise.
17017	* tests/data/Makefile.am: Add the new test inputs to source distribution.
17018	* tests/test-types-stability.cc (elf_paths): The the new test
17019	inputs into account.
17020
170212016-01-13  Dodji Seketeli <dodji@redhat.com>
17022
17023	Bug 19434 - invalid character in attribute value
17024	* include/abg-tools-utils.h (string_is_ascii_identifier): Declare
17025	new function.
17026	* src/abg-tools-utils.cc (string_is_ascii_identifier): Define new function.
17027	* src/abg-dwarf-reader.cc (build_function_type): Discard parameter
17028	name if it's made of non-identifier ascii characters.
17029	* tests/data/test-types-stability/pr19434-elf0: New test binary input file.
17030	* tests/data/Makefile.am: Add the new test input to source distribution.
17031	* tests/test-types-stability.cc: Test the new test input into account.
17032
170332016-01-18  Dodji Seketeli <dodji@redhat.com>
17034
17035	Sort the tests run in tests/ by running the slowest ones first
17036	* tests/Makefile.am: Sort the tests  by running the slowest ones
17037	first.
17038
170392016-01-15  Dodji Seketeli <dodji@redhat.com>
17040
17041	Use worker threads pattern to speed up some tests
17042	* include/Makefile.am: Add the new abg-workers.h to source
17043	distribution.
17044	* include/abg-workers.h: New file.
17045	* src/Makefile.am: Add the new abg-worker.cc to source
17046	distribution.
17047	* src/abg-workers.cc: New file.
17048	* tests/test-utils.cc: Update copyright.  Make get_src_dir() and
17049	get_build_dir() return a const char*, as opposed to returning a
17050	string.  Make that const char reside in thread local storage, so
17051	that two concurrent threads can safely call these functions in
17052	parallel, without any race.
17053	* tests/test-utils.h: Make get_src_dir() and get_build_dir()
17054	return a const char*, as opposed to returning a string.
17055	* tests/test-abicompat.cc: Update copyright.  Adjust for
17056	get_src_dir() and get_build_dir() change.
17057	* tests/test-abidiff.cc: Likewise.
17058	* tests/test-alt-dwarf-file.cc: Likewise.
17059	* tests/test-core-diff.cc: Likewise.
17060	* tests/test-diff-dwarf-abixml.cc: Likewise.
17061	* tests/test-diff-dwarf.cc: Likewise.
17062	* tests/test-diff-pkg.cc: Likewise.
17063	* tests/test-diff-suppr.cc: Likewise.
17064	* tests/test-lookup-syms.cc: Likewise.
17065	* tests/test-read-dwarf.cc: Likewise.
17066	* tests/test-read-write.cc: Likewise.
17067	* tests/test-types-stability.cc: Likewise.  Use the new task queue
17068	type to run these tests in parallel.
17069	* tests/test-diff-filter.cc: Likewise.
17070
170712016-01-18  Ondrej Oprala <ooprala@redhat.com>
17072
17073	Escape the value of the filepath attribute.
17074	* src/abg-writer.cc (write_location): Sanitize the filepath with
17075	xml::escape_xml_string().
17076	(write_translation_unit): Likewise.
17077	(write_corpus_to_native_xml): Likewise.
17078	* tests/data/test-types-stability/pr19433-custom0: Add a new test file.
17079	* tests/test-types-stability.cc: Add the test file to the test harness.
17080	* tests/data/Makefile.am: Add the new test file to the list.
17081
170822016-01-09  Dodji Seketeli <dodji@redhat.com>
17083
17084	Make enum values take 64 bits on all platforms
17085	* include/abg-ir.h: Include stdint.h for int64_t.
17086	(enumerator::enumerator): Take an int64_t value for the value of
17087	the enumerator.
17088	(enumerator::{s,g}et_value): Take/return an int64_t value.
17089	* src/abg-ir.cc (enum_type_decl::enumerator::priv): Store the
17090	value in an int64_t.
17091	(enumerator::priv::priv): Take a int64_t for the value.
17092	(enum_type_decl::enumerator::enumerator): Likewise.
17093	(enum_type_decl::enumerator::{s,g}et_value): Take/returnan int64_t
17094	value.
17095	* src/abg-dwarf-reader.cc (die_unsigned_constant_attribute): Take
17096	an uint64_t value.
17097	(die_signed_constant_attribute): Take an int64_t value.
17098	(die_location, die_size_in_bits, die_access_specifier)
17099	(die_virtuality, die_is_virtual, die_is_declared_inline)
17100	(build_translation_unit_and_add_to_ir, build_type_decl)
17101	(build_enum_type, build_pointer_type_def, build_array_type):
17102	Adjust.
17103	* src/abg-reader.cc (build_enum_type_decl): Adjust.
17104	* src/abg-writer.cc (write_enum_type_decl): Do not cast the result
17105	of enumerator::get_value() anymore, it's value is now a int64_t.
17106
171072016-01-08  Dodji Seketeli <dodji@redhat.com>
17108
17109	Include missing <algorithm> to abg-dwarf-reader.cc
17110	* src/abg-dwarf-reader.cc: Add missing <algorithm> include file.
17111
171122016-01-08  Dodji Seketeli <dodji@redhat.com>
17113
17114	Bug 19138 - Failure to relate variables address from DWARF and ELF
17115	* include/abg-dwarf-reader.h (elf_type::ELF_TYPE_RELOCATABLE): New
17116	enumerator.
17117	* src/abg-dwarf-reader.cc (find_section): Factorize this from ...
17118	(find_text_section, find_bss_section): ... these.
17119	(find_rodata_section, find_data_section, find_data1_section):
17120	Define new static functions.
17121	(elf_file_type): Move this static function definition up.
17122	(read_context::{get_elf_file_type, address_is_in_section,
17123	get_data_section_for_variable_address}): New member functions.
17124	(read_context::maybe_adjust_fn_sym_address): Adjust comment.
17125	Adjust to use the new
17126	read_context::get_data_section_for_variable_address().
17127	* tests/data/test-types-stability/pr19138-elf0: New test input
17128	binary.
17129	* tests/data/Makefile.am: Add the new test input binary to the
17130	test suite.
17131	* tests/test-types-stability.cc (elf_paths): Take it into account.
17132
171332016-01-08  Dodji Seketeli <dodji@redhat.com>
17134
17135	Bump version revision to 1.0.rc3
17136	* configure.ac: Change version_revision to rc3
17137
171382016-01-08  Dodji Seketeli <dodji@redhat.com>
17139
17140	Add a release announcement text pattern
17141	* release-text-template.txt: New file.
17142
171432016-01-08  Dodji Seketeli <dodji@redhat.com>
17144
17145	Upate build instructions on the website
17146	* doc/website/mainpage.txt: Add instruction about how to build
17147	tarballs.
17148
171492016-01-07  Dodji Seketeli <dodji@redhat.com>
17150
17151	Update website link for 1.0.rc2
17152	* doc/website/mainpage.txt: Update tarball link for 1.0.rc2
17153
171542016-01-07  Dodji Seketeli <dodji@redhat.com>
17155
17156	Update ChangeLog before 1.0.rc2
17157	* ChangeLog: Update with make update-changelog
17158
171592016-01-07  Dodji Seketeli <dodji@redhat.com>
17160
17161	Update NEWS for 1.0.rc2
17162	* NEWS: Update.
17163
171642016-01-07  Dodji Seketeli <dodji@redhat.com>
17165
17166	Fix tests/data/Makefile.am glitch
17167	* tests/data/Makefile.am: Fix a faulty file path.
17168
171692016-01-07  Dodji Seketeli <dodji@redhat.com>
17170
17171	Lexicographically sort added/removed base classes in change report
17172	* src/abg-comparison.cc (sort_string_base_diff_sptr_map): Define
17173	new static function.
17174	(struct base_spec_comp): Define new type.
17175	(class_diff::priv::sorted_{deleted,inserted}_bases_): New data
17176	members.
17177	(class_diff::ensure_lookup_tables_populated): Sort the deleted and
17178	inserted base classes.
17179	(class_diff::report): Use the sorted set of deleted/inserted base
17180	classes in the report.
17181	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust.
17182
171832016-01-06  Dodji Seketeli <dodji@redhat.com>
17184
17185	Fix regression on the support for alternate debug info files
17186	* src/abg-dwarf-reader.cc
17187	(imported_unit_point::imported_unit_from_alt_di): New data member.
17188	(imported_unit_point::imported_unit_point): Adjust.
17189	(read_context::alt_tu_die_imported_unit_points_map_): New data
17190	member.
17191	(read_context::alt_tu_die_imported_unit_points_map): New accessor.
17192	(die_die_attribute): Remove the overload which doesn't say if the
17193	resulting DIE comes from alternate debug info.
17194	(build_die_parent_relations_under): Take a new flag which says if
17195	we are building the relations about DIEs in the alternate debug
17196	info section or not.  Use that flag to know if the imported unit
17197	trace we are building is for an alternate debug info file or not.
17198	(build_die_parent_maps): Build two different imported unit point
17199	trace vectors: one for the main debug info file, and another one
17200	for the alternate debug info file.
17201	(find_import_unit_point_between_dies): Take a flag that says if
17202	the beginning of the search is a DIE in the alternate debug info
17203	file or not.  Use it to know if we should use the import point
17204	trace vectors from alternate debug info or from the main debug
17205	info file.  When the import point trace vector is empty, return
17206	immediatly.
17207	(get_parent_die): If the parent DIE is a DW_TAG_partial_unit which
17208	hasn't been imported into this TU, then assume the logical parent
17209	is the DIE for the current translation unit.
17210	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
17211	Reference test output.
17212	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64.rpm: New
17213	input test rpm.
17214	* tests/data/test-diff-pkg/tbb-4.3-3.20141204.fc23.x86_64.rpm:
17215	Likewise.
17216	* tests/data/test-diff-pkg/tbb-debuginfo-4.1-9.20130314.fc22.x86_64.rpm:
17217	Likewise.
17218	* tests/data/test-diff-pkg/tbb-debuginfo-4.3-3.20141204.fc23.x86_64.rpm:
17219	Likewise.
17220	* tests/data/Makefile.am: Add the new test materials to the source
17221	distribution.
17222	* tests/test-diff-pkg.cc (int_out_specs): Add the new rpms to the
17223	list of rpms to test against.
17224
172252016-01-06  Dodji Seketeli <dodji@redhat.com>
17226
17227	Bump revision number to 1.0.rc2
17228	* configure.ac: Bump revision number to 1.0.rc2
17229
172302016-01-05  Dodji Seketeli <dodji@redhat.com>
17231
17232	Update link to the 1.0.rc1 tarball
17233	* doc/website/mainpage.txt: Update the "Getting source code"
17234	section.
17235
172362016-01-05  Dodji Seketeli <dodji@redhat.com>
17237
17238	Update ChangeLog before 1.0.rc1
17239	* ChangeLog: Update automatically with make update-changelog
17240
172412016-01-05  Dodji Seketeli <dodji@redhat.com>
17242
17243	Fix abidw -v
17244	* tools/abidw.cc (parse_command_line): Simplify logic.
17245	(main): Fix logic.
17246
172472016-01-05  Dodji Seketeli <dodji@redhat.com>
17248
17249	Add a NEWS file
17250	* NEWS: New file.
17251	* Makefile.am: Add NEWS file to source distribution.
17252
172532016-01-04  Dodji Seketeli <dodji@redhat.com>
17254
17255	Bug 19355 - Libabigail slow on r300_dri.so
17256	* src/abg-dwarf-reader.cc (struct imported_unit_point): Define new
17257	type.
17258	(operator<(const imported_unit_point&, const
17259	imported_unit_point&)): Define less-than operator for new
17260	imported_unit_point& type.
17261	(imported_unit_points_type, tu_die_imported_unit_points_map_type):
17262	New typedefs.
17263	(find_lower_bound_in_imported_unit_points): Define new static function.
17264	(read_context::tu_die_imported_unit_points_map_): New data member.
17265	(read_context::tu_die_imported_unit_points_map): New getter.
17266	(die_die_attribute): Define new overload.
17267	(build_die_parent_relations_under): Take imported_unit_points_type
17268	output parameter and populate it along the way. Remove the
17269	overload that takes a read_context as a parameter.
17270	(build_primary_die_parent_relations_under)
17271	(build_alternate_die_parent_relations_under): Remove.
17272	(build_die_parent_maps): Pass an instance of
17273	imported_unit_points_type to build_die_parent_relations_under.
17274	(find_import_unit_point_between_dies): Rename one overload of
17275	find_last_import_unit_point_before_die into this.  Adjust to make
17276	it find the import point between two offsets.
17277	(find_import_unit_point_before_die): Rename the other overload of
17278	find_last_import_unit_point_before_die into this. Adjust to use
17279	find_import_unit_point_between_dies.
17280	(get_parent_die): Adjust to use find_import_unit_point_before_die.
17281
172822016-01-04  Dodji Seketeli <dodji@redhat.com>
17283
17284	Support two different variables having the same underlying symbol
17285	* src/abg-ir.cc (var_decl::get_id()): Include the name of the
17286	variable in the ID.
17287
172882016-01-04  Dodji Seketeli <dodji@redhat.com>
17289
17290	Avoid adding the same base class twice
17291	* src/abg-dwarf-reader.cc:
17292	* src/abg-reader.cc:
17293
172942016-01-04  Dodji Seketeli <dodji@redhat.com>
17295
17296	Speed up class_decl::find_base_class
17297	* src/abg-ir.cc (class_decl::priv::bases_map_): New data member.
17298	(class_decl::add_base_specifier): Add the new base specifier to
17299	the new class_decl::priv::bases_map_ data member.
17300	(class_decl::find_base_class): Use the new
17301	class_decl::priv::bases_map_ data member to speed up finding the
17302	base class.
17303
173042016-01-04  Dodji Seketeli <dodji@redhat.com>
17305
17306	Make class_decl::base_spec class follow the pimpl pattern
17307	* include/abg-ir.h (class_decl::base_spec::priv): Declare new
17308	private data type.
17309	(class_decl::base_spec::priv_): Declare new pimpl data member.
17310	(class_decl::base_spec::{base_class_, offset_in_bits_,
17311	is_virtual_}): Remove.
17312	(class_decl::base_spec::{get_base_class, get_is_virtual,
17313	get_offset_in_bits}): Make these member functions out of line.
17314	* src/abg-ir.cc (struct class_decl::base_spec::priv): New type.
17315	(class_decl::base_spec::{get_base_class, get_is_virtual,
17316	get_offset_in_bits}): Define these functions here.
17317	(class_decl::base_spec::base_spec): Adjust because now there is
17318	only one pimpl data member to initialize.
17319
173202015-11-16  Ondrej Oprala <ooprala@redhat.com>
17321
17322	Add the option of printing the file, line and column information about a type being reported.
17323	* bash-completion/abicompat: Complete the new "--no-show-locs" option.
17324	* bash-completion/abidiff: Likewise.
17325	* bash-completion/abidw: Likewise.
17326	* bash-completion/abipkgdiff: Likewise.
17327	* doc/manuals/abicompat.rst: Mention the new "--no-show-locs" option.
17328	* doc/manuals/abidiff.rst: Likewise.
17329	* doc/manuals/abidw.rst: Likewise.
17330	* doc/manuals/abipkgdiff.rst: Likewise.
17331	* include/abg-comparison.h (show_locs): Add declarations.
17332	* src/abg-comparison.cc: (diff_context::priv): Add a new switch
17333	called "show_locs_" and set its default value to false.
17334	(report_loc_info): New function. Outputting the extra information
17335	is conditionalized based on the associated diff contexts settings.
17336	(show_locs): define a getter/setter for
17337	diff_context::priv::show_locs_.
17338	({distinct,pointer,reference,qualified_type,enum,class,scope,fn_parm,
17339	typedef,corpus}_diff::report): Call report_loc_info when
17340	appropriate.
17341	(maybe_report_diff_for_member): Likewise.
17342	(represent): Accept a const reference to a diff_context_sptr as a first
17343	argument and call report_loc_info on its second argument.
17344	* src/abg-dwarf-reader.cc:
17345	* tests/data/Makefile.am: Add the new test reference files.
17346	* tests/data/test-abicompat/test0-fn-changed-report-2.txt: New test
17347	reference output.
17348	* tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise.
17349	* tests/data/test-abicompat/test6-var-changed-report-1.txt: Likewise.
17350	* tests/data/test-abicompat/test7-fn-changed-report-2.txt: Likewise.
17351	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
17352	Likewise.
17353	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
17354	Likewise.
17355	* tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise.
17356	* tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise.
17357	* tests/test-abidiff.cc: Explicitly create a diff context and turn off
17358	location emitting.
17359	* tests/test-diff-dwarf.cc: Likewise.
17360	* tests/test-abicompat.cc: Add --no-show-locs to all existing test
17361	arguments. Run a few of the existing tests again, but without this
17362	option.
17363	* tests/test-diff-filter.cc: Likewise.
17364	* tests/test-diff-pkg.cc: Likewise.
17365	* tests/test-diff-suppr.cc: Likewise.
17366	* tools/abicompat.cc: Handle the new "--no-show-locs" option.
17367	* tools/abidiff.cc: Likewise.
17368	* tools/abidw.cc: Likewise.
17369	* tools/abipkgdiff.cc: Likewise.
17370
173712015-11-16  Ondrej Oprala <ooprala@redhat.com>
17372
17373	Fix a function doc
17374	* src/abg-ir.cc: (location_manager::expand_location): Fix a factual
17375	error in the function documentation.
17376
173772015-12-11  Dodji Seketeli <dodji@redhat.com>
17378
17379	[PERF] Speedup comparing declaration-only class_decls
17380	* src/abg-ir.cc (equals): In the overload for class_decl, avoid
17381	calling class_decl::get_is_declaration_only() several times.
17382	Avoid copying the qualified name of the class_decl.  Also, use the
17383	== operator to compare strings, rather than the != one.
17384
173852015-12-11  Dodji Seketeli <dodji@redhat.com>
17386
17387	[PERF] Access naked pointers for canonical types and function types
17388	* include/abg-ir.h (type_base::get_naked_canonical_type): Declare
17389	new accessor.
17390	(function_decl::get_naked_canonical_type): Likewise.
17391	(function_decl::set_type): Pass a reference to the shared_ptr.
17392	* src/abg-ir.cc (type_base::priv::naked_canonical_type): New data
17393	member.
17394	(type_base::priv::priv): Initialize it.
17395	(canonicalize): Set the naked canonicalize type when we set its
17396	shared pointer.
17397	(type_base::get_naked_canonical_type): Define new accessor.
17398	({pointer_type_def,reference_type_def,function_type,class_decl}::operator==):
17399	Use naked canonical pointers rather than the slower shared_ptr to
17400	canonical pointers.
17401	(function_decl::priv::naked_type_): New data member.
17402	(function_decl::priv::priv): Initialize it.
17403	(function_decl::get_naked_type): Define new accessor.
17404	(function_decl::set_type): Pass a reference to the shared_ptr .
17405	(equals): In the overload for function_decl, use the faster naked
17406	pointers to the type of the function.
17407
174082015-12-11  Dodji Seketeli <dodji@redhat.com>
17409
17410	[PERF] Turn some pimpl pointers into naked pointers
17411	* include/abg-ir.h ({decl_base, type_base, function_decl}::priv_)
17412	Make this a naked pointer to priv, rather than a shared_ptr<priv>.
17413	* src/abg-ir.cc (decl_base::~decl_base): Destroy the private data
17414	pointer, aka pimpl pointer.
17415	(type_base::~type_base): Likewise.
17416	(function_decl::~function_decl): Likewise.
17417	(class_decl::~class_decl): Likewise.
17418
174192015-12-11  Dodji Seketeli <dodji@redhat.com>
17420
17421	[PERF] Pass a bunch of perf-sensitive smart pointers by reference
17422	* include/abg-fwd.h (lookup_type_in_corpus, lookup_type_in_scope)
17423	(lookup_var_decl_in_scope): Pass the decls smart pointers by
17424	reference.
17425	* src/abg-ir.cc (lookup_type_in_corpus, lookup_type_in_scope)
17426	(lookup_var_decl_in_scope): Pass the decls smart pointers by
17427	reference, for performance reasons.
17428
174292015-12-10  Dodji Seketeli <dodji@redhat.com>
17430
17431	Bug 19126 - abidw segv on a dwz compressed version of r300_dri.so
17432	* include/abg-ir.h (class location_manager): Forward declare it
17433	before class location.
17434	(location::loc_manager_): New data member.
17435	(location::location): Take the location manager in one overload
17436	and initialize the new loc_managers_ in all the overloads.
17437	(location::get_location_manager): New getter.
17438	(location::expand): New member function.
17439	(location::*): Add API doc to all entry points.
17440	(location_manager::expand_location): Take a const location.
17441	(type_or_decl_base::set_corpus): Remove.
17442	(type_or_decl_base::{get,set}_translation): New accessors.
17443	(decl_base::{decl_base,get_location}): Take or return a reference
17444	on location.
17445	(scope_decl::scope_decl): Likewise.
17446	(type_decl::type_decl): Likewise.
17447	(namespace_decl::namespace_decl): Likewise.
17448	(qualified_type_def::qualified_type_def): Likewise.
17449	(pointer_type_def::pointer_type_def): Likewise.
17450	(reference_type_def::reference_type_def): Likewise.
17451	(array_type_def::subrange_type::{subrange_type,
17452	get_location}): Likewise.
17453	(enum_type_decl::enum_type_decl): Likewise.
17454	(typedef_decl::typedef_decl): Likewise.
17455	(var_decl::var_decl): Likewise.
17456	(function_decl::function_decl): Likewise.
17457	(function_decl::parameter::parameter): Likewise.
17458	(template_decl::template_decl): Likewise.
17459	(type_tparameter::type_tparameter): Likewise.
17460	(non_type_tparameter::non_type_tparameter): Likewise.
17461	(function_tdecl::function_tdecl): Likewise.
17462	(class_tdecl::class_tdecl): Likewise.
17463	(class_decl::class_decl): Likewise.
17464	(class_decl::method_decl::method_decl): Likewise.
17465	* src/abg-ir.cc (location::expand_location): Define new member
17466	function.
17467	(type_or_decl_base::priv::corpus_): Remove.
17468	(type_or_decl_base::priv::translation_unit_): New data member.
17469	(type_or_decl_base::priv::priv): Adjust.
17470	(type_or_decl_base::set_corpus): Remove.
17471	(type_or_decl_base::get_corpus): Adjust.
17472	(type_or_decl_base::{get,set}_translation_unit): New member
17473	functions.
17474	(decl_base::priv::priv): Take a reference to location.
17475	(decl_base::decl_base): Likewise.
17476	(decl_base::get_location): Return a reference to location.
17477	(location_manager::create_new_location): Adjust.
17478	(location_manager::expand_location): Take a reference to location.
17479	(translation_unit::get_global_scope()): Adjust.
17480	(translation_unit::bind_function_type_life_time): Likewise.
17481	(scope_decl::{add,insert}_member_decl): Adjust.
17482	(get_translation_unit): Likewise.
17483	(type_decl::type_decl): Take a reference to location.
17484	(namespace_decl::namespace_decl): Likewise.
17485	(qualified_type_def::qualified_type_def): Likewise.
17486	(pointer_type_def::pointer_type_def): Likewise.
17487	(reference_type_def::reference_type_def): Likewise.
17488	(array_type_def::subrange_type::priv::priv): Likewise.
17489	(array_type_def::subrange_type::{subrange_type,
17490	get_location}): Likewise.
17491	(enum_type_decl::enum_type_decl): Likewise.
17492	(typedef_decl::typedef_decl): Likewise.
17493	(var_decl::var_decl): Likewise.
17494	(function_decl::function_decl): Likewise.
17495	(function_decl::parameter::parameter): Likewise.
17496	(template_decl::template_decl): Likewise.
17497	(type_tparameter::type_tparameter): Likewise.
17498	(non_type_tparameter::non_type_tparameter): Likewise.
17499	(function_tdecl::function_tdecl): Likewise.
17500	(class_tdecl::class_tdecl): Likewise.
17501	(class_decl::class_decl): Likewise.
17502	(class_decl::method_decl::method_decl): Likewise.
17503	* src/abg-writer.cc (write_location): Take a reference to
17504	location and adjust.
17505	(write_array_type_def, write_function_decl, dump_decl_location):
17506	Adjust.
17507
175082015-12-08  Dodji Seketeli <dodji@redhat.com>
17509
17510	Fix some white space nits
17511	* src/abg-comparison.cc (class_diff::report): Remove a useless
17512	horizontal white space.
17513	* src/abg-ir.cc (operator==): Add a vertical space.
17514
175152015-12-08  Dodji Seketeli <dodji@redhat.com>
17516
17517	Filter out harmless diagnostics glitches due to some ODR violation
17518	* src/abg-comp-filter.cc
17519	(class_diff_has_harmless_odr_violation_change): New static
17520	function.
17521	(harmless_filter::visit): Call it.
17522
175232015-12-08  Dodji Seketeli <dodji@redhat.com>
17524
17525	Fix internal name for pointers, typedefs and arrays
17526	* include/abg-ir.h (pointer_type_def::priv_): New data structure.
17527	The type is now pimpled.
17528	(typedef_decl::priv_): Likewise.
17529	* src/abg-ir.cc (struct pointer_type_def::priv): New struct.
17530	(pointer_type_def::pointer_type_def): Adjust.
17531	(pointer_type_def::get_pointed_to_type): Likewise.
17532	(pointer_type_def::get_qualified_name): Store temporary/internal
17533	names into different caches.
17534	(array_type_def::priv::{temp_internal_qualified_name_,
17535	internal_qualified_name_}): New data members.
17536	(get_type_representation): In the overload for array_type_def,
17537	take requests for internal names into account.
17538	(array_type_def::get_qualified_name): Take requests for internal
17539	names into account.  Store temporary/internal names into different
17540	caches.
17541	(typedef_decl::priv): New struct.
17542	(typedef_decl::typedef_decl): Adjust.
17543	(typedef_decl::get_underlying_type): Likewise.
17544
175452015-12-08  Dodji Seketeli <dodji@redhat.com>
17546
17547	Avoid try/catch code paths when that is possible
17548	* src/abg-ir.cc (is_type, equals): Do not use try/catch based
17549	dynamic_cast.
17550
175512015-12-08  Dodji Seketeli <dodji@redhat.com>
17552
17553	Fix comparison in qualified_type_diff::has_changes
17554	* src/abg-comparison.cc (qualified_type_diff::has_changes): Make
17555	this stupid and simple, now that we have (fast) canonical type
17556	based comparison.
17557	* include/abg-ir.h (qualified_type_diff::operator==): Add an
17558	overload for qualified_type_diff here.
17559	(operator==): Likewise.
17560	* src/abg-ir.cc (qualified_type_diff::operator==): Define it.
17561	(operator==): Likewise.
17562
175632015-12-06  Dodji Seketeli <dodji@redhat.com>
17564
17565	Bug 19336 - Better handle redundantly qualified reference types
17566	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Do not nuke
17567	the qualified type.  Rather, just turn the redundant const
17568	qualifier into a no-op one.
17569	* src/abg-comparison.cc (compute_diff_for_types): Look through
17570	no-op qualified types.
17571	* include/abg-ir.h
17572	(decl_base::{peek,set}_temporary_qualified_name): Declare new
17573	accessors.
17574	* src/abg-ir.cc (decl_base::priv::temporary_qualified_name_): New
17575	data member.
17576	(decl_base::{peek,set}_temporary_qualified_name): Define new
17577	accessors.
17578	(qualified_type_def::priv::{temporary_internal_name_,
17579	internal_name}): New data members.
17580	(qualified_type_def::build_name): For a no-op qualified type, the
17581	internal name (which contains the 'none' qualifier) is different
17582	from the non-internal name.
17583	(qualified_type_def::get_qualified_name): Handle temporary names
17584	and non-temporary names in two different caches.  Also handle
17585	internal and non-internal names in two different caches.  This
17586	makes four different caches.
17587	(qualified_name_setter::do_update): Do not touch the non-internal,
17588	non-temporary qualified name cache if the qualified parent name is
17589	empty.
17590	* tools/abidw.cc (main): change --check-alternate-debug-info to
17591	make it *not* display the name/path to the alternate debug info,
17592	when it's found.  Rather, only
17593	--check-alternate-debug-info-base-name keeps displaying the base
17594	name of the alternate debug info.
17595	* tests/data/test-alt-dwarf-file/test1-libgromacs-debug-dir/*: New
17596	test material.
17597	* tests/data/Makefile.am: Add the new test material to the build
17598	system.
17599	* tests/test-alt-dwarf-file.cc (in_out_specs): Take the new test
17600	input into account.
17601	* tests/data/test-read-dwarf/test1.abi: Adjust.
17602	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
17603	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
17604	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
17605	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
17606	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
17607	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
17608	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
17609	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
17610	Likewise.
17611	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
17612	Likewise.
17613	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
17614	Likewise.
17615	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
17616	Likewise.
17617
176182015-12-06  Dodji Seketeli <dodji@redhat.com>
17619
17620	Do not forget to peel qualified type off when peeling types
17621	* include/abg-fwd.h (peel_qualified_type): Declare new function
17622	...
17623	* src/abg-ir.cc (peel_qualified_type): ... and define it.
17624	(peel_typedef_pointer_or_reference_type): Peel qualified types
17625	here too.
17626
176272015-12-06  Dodji Seketeli <dodji@redhat.com>
17628
17629	Find more spots where to discriminate internal and non-internal names
17630	* src/abg-ir.cc (get_type_name, get_method_type_name)
17631	({typedef_decl,var_decl,function_decl,class_decl}::get_pretty_representation):
17632	Propagate the internal-ness to the call to get_qualified_name().
17633
176342015-12-06  Dodji Seketeli <dodji@redhat.com>
17635
17636	Constify is_qualified_type()
17637	* include/abg-fwd.h (is_qualified_type): Make this take a const
17638	parameter.
17639	* src/abg-ir.cc (is_qualified_type): Likewise.
17640
176412015-11-28  Dodji Seketeli <dodji@redhat.com>
17642
17643	Add missing new line to abidiff help message
17644	* tools/abidiff.cc (display_usage): Add missing new line.
17645
176462015-11-26  Dodji Seketeli <dodji@seketeli.org>
17647
17648	Do not abort when there is no binary to compare in a package
17649	* tests/data/test-diff-pkg/empty-pkg-libvirt-0.9.11.3-1.el7.ppc64.rpm:
17650	New input test package.
17651	* tests/data/test-diff-pkg/empty-pkg-libvirt-1.2.17-13.el7_2.2.ppc64.rpm:
17652	Likewise.
17653	* tests/data/test-diff-pkg/empty-pkg-report-0.txt: New test
17654	reference output.
17655	* data/Makefile.am: Add the new test material above to the build system.
17656	* tests/test-diff-pkg.cc (int_out_specs): Add the new test inputs
17657	to the set of tests.
17658	* tools/abipkgdiff.cc (compare): Do not abort if there is no
17659	binary to compare.
17660
176612015-11-14  Ondrej Oprala <ooprala@redhat.com>
17662
17663	Abidiff: Remove doubled line in help.
17664	* tools/abidiff.cc (display_usage): Remove a doubled help message.
17665
176662015-11-14  Ondrej Oprala <ooprala@redhat.com>
17667
17668	Add bash-completion scripts for the libabigail tools
17669	* Makefile.am: include bash-completion/Makefile.am
17670	* bash-completion/Makefile.am: New makefile for the bash-completion
17671	directory.
17672	* bash-completion/abicompat: New completion script.
17673	* bash-completion/abidiff: Likewise.
17674	* bash-completion/abidw: Likewise.
17675	* bash-completion/abilint: Likewise.
17676	* bash-completion/abinilint: Likewise.
17677	* bash-completion/abipkgdiff: Likewise.
17678	* bash-completion/abisym: Likewise.
17679	* configure.ac: Check for the bash-completion package. Handle
17680	the new --enable-bash-completion[=WHEN] configure option.
17681	* manuals/libabigail-tools.rst: Mention the scripts.
17682
176832015-11-17  Dodji Seketeli <dodji@redhat.com>
17684
17685	Read enum values in the size_t and write them in ssize_t
17686	* include/abg-ir.h (enum_type_def::enumerator::get_value): Return
17687	a size_t.
17688	* src/abg-ir.cc (enum_type_decl::enumerator::get_value): Likewise.
17689	* src/abg-dwarf-reader.cc (die_signed_constant_attribute): #if-out
17690	this static function that is not used anymore.
17691	(build_enum_type): Read the value of the enumerator using a size_t
17692	value.
17693	* src/abg-reader.cc (build_enum_type_decl): Read the enum value
17694	using a long long int.
17695	* src/abg-writer.cc (write_enum_type_decl): Write using a ssize_t.
17696
176972015-11-17  Dodji Seketeli <dodji@redhat.com>
17698
17699	Bump version to release candidate 1.0.rc1
17700	* configure.ac: Bump version to release candidate 1.0.rc1
17701
177022015-11-17  Dodji Seketeli <dodji@redhat.com>
17703
17704	Do not use designated initializers in abipkgdiff.cc
17705	* tools/abipkgdiff.cc (prepare_packages): Do not use designated
17706	initializers syntax.
17707
177082015-11-16  Dodji Seketeli <dodji@redhat.com>
17709
17710	Update ChangeLog for 1.0.rc0
17711	* ChangeLog: Udpate using make update-changelog
17712
177132015-11-16  Dodji Seketeli <dodji@redhat.com>
17714
17715	Fix doxygen configuration file paths in doc/Makefile.am
17716	* doc/Makefile.am: There was an extra "/doc" in the path.
17717
177182015-11-16  Dodji Seketeli <dodji@redhat.com>
17719
17720	Update ChangeLog file in preparation of 1.0.rc0 release
17721	* ChangeLog: Update using make update-changelog.
17722
177232015-11-16  Dodji Seketeli <dodji@redhat.com>
17724
17725	Add --version option to several libabigail tools
17726	* configure.ac: Set the version revision to "rc0".
17727	* doc/manuals/abicompat.rst: Adjust manual for new --version
17728	option.
17729	* doc/manuals/abidiff.rst: Likewise.
17730	* doc/manuals/abidw.rst: Likewise.
17731	* doc/manuals/abilint.rst: Likewise.
17732	* doc/manuals/abipkgdiff.rst: Likewise.
17733	* include/abg-config.h (config::{m_format_minor, m_format_major}):
17734	Make these be strings.
17735	(config::{get,set}_format_minor_version_number): Make these return
17736	strings.
17737	(config::{get,set}_format_major_version_number): Make these return
17738	or take strings.
17739	(abigail_get_library_version): Make this take strings.
17740	* src/abg-config.cc (config::config): Adjust.
17741	(config::{get,set}_format_major_version_number): Make these return
17742	or take strings.
17743	(config::{get,set}_format_minor_version_number): Make these return
17744	strings.
17745	(abigail_get_library_version): Make this take strings.
17746	* include/abg-version.h.in: Make the version variables be strings.
17747	* src/abg-writer.cc (write_translation_unit): The version numbers
17748	are now strings so adjust.
17749	* tools/{abicompat,abidiff,abidw,abilint,abipkgdiff,abisym}.cc
17750	(options::display_version): New data member.
17751	(options::options): Initialize it.
17752	(display_usage): Add documentation for new --version option.
17753	(parse_command_line): Parse new --version option.
17754	(main): Support --version.
17755
177562015-11-12  Dodji Seketeli <dodji@redhat.com>
17757
17758	Correctly handle fn DIE with abstract_origin in alt debug info
17759	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Consider that
17760	the function decl is for a DIE in the alternate debug info file only if
17761	the DIE itself comes from the alternate debug info file, not if
17762	the specification or the origin of the function comes from the
17763	alternate debug info file.
17764	* tests/data/test-diff-pkg/qemu-img-rhev-2.3.0-20.el7.ppc64.rpm:
17765	New test input rpm.
17766	* tests/data/test-diff-pkg/qemu-img-rhev-2.3.0-7.el7.ppc64.rpm: Likewise.
17767	* tests/data/test-diff-pkg/qemu-kvm-rhev-debuginfo-2.3.0-20.el7.ppc64.rpm: Likewise.
17768	* tests/data/test-diff-pkg/qemu-kvm-rhev-debuginfo-2.3.0-7.el7.ppc64.rpm: Likewise.
17769	* tests/data/test-diff-pkg/qemu-img-rhev-2.3.0-7.el7.ppc64--qemu-img-rhev-2.3.0-20.el7.ppc64-report-0.txt:
17770	New test reference output.
17771	* tests/data/Makefile.am: Add the new test material to the source
17772	distribution.
17773	* tests/test-diff-pkg.cc (in_out_specs): Use the new test rpm
17774	inputs.
17775
177762015-11-09  Ondrej Oprala <ooprala@redhat.com>
17777
17778	Bug 19081 - abipkgdiff parallelization
17779	* doc/manuals/abipkgdiff.rst: Mention the new --no-parallel option.
17780	* tools/Makefile.am: Add -pthread to abipkgdiffs link options.
17781	* tools/abipkgdiff.cc (elf_file_paths_tls_key): New key for the
17782	thread-local vector of ELF filepaths.
17783	(reports_map): A map of the path of the first ELF of a compared pair
17784	and a corpus representing the difference.
17785	(env_map): A map of the corpus difference and a corresponding
17786	environment needed to be kept alive until the diff is reported.
17787	({arg,map}_lock): mutexes to control access to the comparison argument
17788	list and the {reports,env}_map respectively.
17789	(options): Add a new member "parallel" and set it to true in the ctor.
17790	(elf_file): Add a new "size" member and set it in the ctor.
17791	(package descriptor): Arguments passed to extract_package_set.
17792	(compare_args): Arguments passed to the ELF comparison function.
17793	(display_usage): Mention the new "--no-parallel" option.
17794	(pthread_routine_extract_package): A wrapper function around
17795	extract_package to be used in a multi-threaded environment.
17796	({first_second}_package_tree_walker_callback_fn): Add the new ELF file
17797	paths to a thread-specific vector.
17798	(compare): In an overload of compare, verbose output is updated to
17799	always mention the ELF files being compared for each reported stage.
17800	Reporting is no longer done in this function, the resulting difference
17801	is instead passed back to the calling function for reporting in the
17802	main thread, along with a corresponding environment.
17803	(pthread_routine_compare): Accept a pointer to a vector of comparison
17804	arguments. This function is to be called NTHREAD times and share the
17805	vector passed to it with its other invocations. Create the environment
17806	for compare() and store its output in a map if there is a difference.
17807	(create_maps_of_package_content): Allocate memory for a thread local
17808	vector of ELF paths and dispose of it before returning.
17809	(pthread_routine_extract_pkg_and_map_its_content): Renamed from
17810	extract_package_and_map_its_content. Extract the debuginfo as well as
17811	the regular package in this function. Spawn a separate thread for the
17812	extraction of the debug package.
17813	(pthread_join): A function handling thread joining throughout package
17814	extractions.
17815	(prepare_packages): Spawn a thread to extract each set of packages.
17816	(elf_size_is_greater): New comparison function used to order ELF pairs
17817	by size.
17818	(compare): In the overload of compare, pass through the ELF path
17819	vectors and identify pairs to be diffed. Put them in a vector and sort
17820	it by the summed ELF pair size. Spawn comparison threads and safely
17821	check for results in the proper order of the ELF pairs. Report any
17822	differences ASAP and collect the threads after all the reporting is
17823	done, checking their return status.
17824	(parse_command_line): Check for the "--no-parallel" option.
17825
178262015-11-10  Dodji Seketeli <dodji@redhat.com>
17827
17828	Fix typo in test-diff-dwarf-abixml.cc
17829	* tests/test-diff-dwarf-abixml.cc (main): Fix typo.
17830
178312015-10-14  Ondrej Oprala <ooprala@redhat.com>
17832
17833	Document abipkgdiff's option --no-abignore
17834	* doc/manuals/abipkgdiff.rst: Mention the new option.
17835	* tools/abipkgdiff.cc: Likewise.
17836
178372015-11-09  Dodji Seketeli <dodji@redhat.com>
17838
17839	Avoid canonicalizing function types too early
17840	* src/abg-dwarf-reader.cc (die_function_type_map_type): New
17841	typedef.
17842	*  ():
17843	(read_context::die_wip_function_types_map_): New data member.
17844	(read_context::{die_wip_function_types_map,
17845	is_wip_function_type_die_offset}): New methods.
17846	(build_function_type): Mark the function being built as "work in
17847	progress".
17848	(maybe_canonicalize_type): Do not early-canonicalize WIP function
17849	types.
17850	* src/abg-reader.cc (build_function_type): Mark the function being
17851	built as "work in progress".
17852	* tests/test-diff-dwarf-abixml.cc: New test harness.
17853	* tests/Makefile.am: Add new test harness runtestdiffdwarfabixml
17854	to the build system.
17855	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1:
17856	New test binary input.
17857	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
17858	New test input.
17859	* tests/data/Makefile.am: Add new test inputs to source
17860	distribution.
17861	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
17862
178632015-11-09  Dodji Seketeli <dodji@redhat.com>
17864
17865	Propagate environment property to base specifiers
17866	* src/abg-comparison.cc (compute_diff): In the overload for
17867	class_decl::base_spec_sptr, assert that the environment of the
17868	base classes are equal and that the environment the base class is
17869	the same as the environment of the base specifier.
17870	* src/abg-ir.cc (add_base_specifier): Propagate the environment of
17871	the class to its base specifiers.
17872	* tests/data/test-types-stability/pr19026-libvtkIOSQL-6.1.so.1:
17873	New test binary input.
17874	* tests/data/Makefile.am: Add the new test input to the build
17875	system.
17876	* tests/test-types-stability.cc (elf_paths): Add new binary to the
17877	test harness.
17878
178792015-11-09  Dodji Seketeli <dodji@redhat.com>
17880
17881	Misc style fixes
17882	* src/abg-comparison.cc (diff_context::mark_diff_as_visited): Add
17883	missing space.
17884	(corpus_diff::priv::ensure_lookup_tables_populated): Likewise.
17885	* src/abg-dwarf-reader.cc (lookup_symbol_from_elf): Likewise.
17886	(get_soname_of_elf_file, get_type_of_elf_file): Likewise.
17887	* src/abg-ir.cc (var_decl::get_pretty_representation): Likewise.
17888
178892015-11-07  Dodji Seketeli <dodji@redhat.com>
17890
17891	Support DW_AT_count DWARF attribute
17892	* src/abg-dwarf-reader.cc (get_default_array_lower_bound): Define
17893	new static function.
17894	(build_array_type): Support the DW_AT_count attribute.
17895	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang.so:
17896	New test binary input.
17897	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang2.so: Likewise.
17898	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang-report-0.txt:
17899	New test reference output.
17900	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc.so:
17901	New test binary input.
17902	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc2.so:
17903	New test binary input.
17904	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc-report-0.txt:
17905	New test reference output.
17906	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long.c: Source
17907	code for the binaries above.
17908	* tests/data/Makefile.am: Add the new test material to the build
17909	system.
17910	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs
17911	to the harness.
17912
179132015-11-07  Dodji Seketeli <dodji@redhat.com>
17914
17915	Bug 19173 - Abidiff doesn't detect symbol size change in library
17916	* include/abg-ir.h (elf_symbol::{elf_symbol, create}): Take a size
17917	parameter.
17918	(elf_symbol::{get,set}_size): New accessors.
17919	* src/abg-ir.cc (elf_symbol::priv::size_): New data member.
17920	(elf_symbol::priv::priv): Initialize it.
17921	(elf_symbol::{elf_symbol, create}) Take a size parameter.
17922	(textually_equals): Compare the size of variable symbols.
17923	(elf_symbol::{get, set}_size): New accessors.
17924	* src/abg-comparison.cc (maybe_report_diff_for_symbol): New static
17925	function.
17926	({function_decl_diff,var_diff}::report): Use it.
17927	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
17928	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
17929	(read_context::lookup_elf_symbol_from_index): Set the size of the
17930	elf symbols' internal representation.
17931	* src/abg-reader.cc (build_elf_symbol): Read the size attribute if
17932	present.
17933	* src/abg-writer.cc (write_elf_symbol): Write the size attribute
17934	for variable symbols, if it's not zero.
17935	* tests/data/test-diff-dwarf/test34-pr19173-libfoo.so: New test
17936	input binary.
17937	* tests/data/test-diff-dwarf/test34-pr19173-libfoo2.so: Likewise.
17938	* tests/data/test-diff-dwarf/test34-pr19173-libfoo-report-0.txt:
17939	New reference test output.
17940	* tests/data/Makefile.am: Add the new test input binaries to the
17941	build system.
17942	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test input
17943	above to the test harness.
17944	* tests/data/test-diff-dwarf/test9-report.txt: Adjust.
17945	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
17946	* tests/data/test-read-dwarf/test0.abi: Likewise.
17947	* tests/data/test-read-dwarf/test1.abi: Likewise.
17948	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
17949	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
17950	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
17951	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
17952	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
17953	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
17954	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
17955	Likewise.
17956	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
17957	Likewise.
17958	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
17959	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
17960	Likewise.
17961	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
17962	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
17963
179642015-11-07  Dodji Seketeli <dodji@redhat.com>
17965
17966	Add some needed vertical space
17967	* src/abg-dwarf-reader.cc (build_array_type): Add a new line after
17968	this function.
17969
179702015-11-07  Dodji Seketeli <dodji@redhat.com>
17971
17972	Pass a bunch of parameters by reference as they ought to be
17973	* include/abg-ir.h (operator==): In the overload for
17974	elf_symbol_sptr, pass the parameters by reference.
17975	* src/abg-ir.cc (operator==): Do the same at definition site.
17976	* src/abg-comparison.cc (maybe_report_diff_for_member): Pass
17977	parameters by reference.
17978
179792015-11-05  Dodji Seketeli <dodji@redhat.com>
17980
17981	Bug 19139 - DWARF reader doesn't handle garbage in function names
17982	* include/abg-tools-utils.h (string_is_ascii): Declare new
17983	function ...
17984	* src/abg-tools-utils.cc (string_is_ascii): ... and define it.
17985	* src/abg-writer.cc (write_function_type): Escape forbidden XML
17986	characters in function type names.
17987	* src/abg-dwarf-reader.cc (build_function_type):  If a parameter
17988	name is not ascii, drop it on the floor.
17989	* tests/data/test-types-stability/pr19139-DomainNeighborMapInst.o:
17990	New test input binary.
17991	* tests/data/test-types-stability/pr19202-libmpi_gpfs.so.5.0:
17992	Likewise.
17993	* tests/data/Makefile.am: Add the new binaries above to the build
17994	system.
17995	* tests/test-types-stability.cc: New test harness.
17996	* tests/Makefile.am: Add the new test harness to the build system.
17997
179982015-11-05  Dodji Seketeli <dodji@redhat.com>
17999
18000	Introduce the name abixml in some comments
18001	* src/abg-reader.cc: Mention abixml in the comment at the top of
18002	the file.
18003	* src/abg-writer.cc: Likewise.
18004
180052015-10-17  Dodji Seketeli <dodji@redhat.com>
18006
18007	Bug 19026 - Types with same name and different size considered equivalent
18008	* src/abg-ir.cc (type_base::get_canonical_type_for): Really
18009	compare the size of the type to be canonicalized against the size
18010	of the *current* potential canonical type of the same name.
18011
180122015-10-17  Dodji Seketeli <dodji@redhat.com>
18013
18014	Add a script to update the reference output of runtestreaddwarf
18015	* tests/update-test-read-dwarf-output.py: New helper python program.
18016
180172015-10-17  Dodji Seketeli <dodji@redhat.com>
18018
18019	Style fixes in the abixml writer.
18020	* src/abg-writer.cc (write_var_decl): Use the var_decl_sptr
18021	typedef.
18022	(write_class_decl): Indent.
18023
180242015-10-17  Dodji Seketeli <dodji@redhat.com>
18025
18026	Fix typo in test-read-dwarf.cc
18027	* tests/test-read-dwarf.cc (for test test21-pr19092.so.abi): Fix
18028	typo in the output path of that test.
18029
180302015-10-17  Dodji Seketeli <dodji@redhat.com>
18031
18032	Adjust regression tests reference output for the current patch set
18033	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so:
18034	New test input binary.
18035	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
18036	New test reference output.
18037	* tests/data/Makefile.am: Add the new test files above to the
18038	source distribution.
18039	* tests/test-read-dwarf.cc (in_out_specs): Add the two new test
18040	files above to the set of test input files.
18041	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
18042	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
18043	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
18044	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
18045	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
18046	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
18047	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
18048	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
18049	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
18050	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
18051	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
18052	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
18053
180542015-10-17  Dodji Seketeli <dodji@redhat.com>
18055
18056	Use abidw --abidiff in test-read-dwarf.cc
18057	* tests/test-read-dwarf.cc (handle_in_out_spec): Rather than
18058	calling abilint on the abixml and abidiff-ing the .so file against
18059	its .so.abi, call abidw --abidiff on the .so file and voila.  Ok,
18060	it does one extra save of abixml, but then that won't hurt.  And
18061	things are faster now than what they were anyway :-)
18062
180632015-10-17  Dodji Seketeli <dodji@redhat.com>
18064
18065	Fix emitting of referenced type in abixml writer
18066	* Use of canonical pointers in the hash map of referenced types
18067	The abixml writer was using canonical types pointer values to hash
18068	referenced types in a map.  It was doing so "by hand"; and it was thus
18069	messing things up for types without canonical types (like some class
18070	declarations) etc.
18071	This patch changes that by using the generic solution of
18072	abigail::ir::hash_type_or_decl(), which also uses the same canonical
18073	pointer type values.  For types with no canonical types, that
18074	functions knows has to gracefully fallback.  At worst, it will just
18075	make things slower, not wrong.
18076	* Sorting of referenced types
18077	The patch also changes the sorting function used for the hash map of
18078	referenced types.  The previous solution was sorting the pretty
18079	representation of types; but then when two types have the same pretty
18080	representation (think, typedefs, for instance) then their relative
18081	position in the sorted result was random.  This causes some stability
18082	issues, in that emitting the abixml for the same binary several times
18083	can lead to the some types being sorted differently -- they have the
18084	same name, but not necessarily the same type *IDs*, as they are
18085	different types.
18086	The new sorting code handles this better; it also uses the pretty
18087	representations of types, when they are equal, it uses the type IDs to
18088	tell the types apart.  At least this brings stability in the abixml
18089	output, for a given binary.
18090	* Avoiding duplicating declaration-only types when emitting the
18091	context of referenced member types.
18092	We don't keep track of declaration-only classes that are emitted.
18093	This is because we allow a given class declaration (that carries no
18094	definition) to appear several times in a given ABI corpus.  So when a
18095	referenced type is a class declaration, it always appears as if that
18096	referenced type has not been emitted.  So when we specifically emit
18097	the not-emitted referenced types, it can happen that declaration-only
18098	classes can appear a lot of times.  This is unnecessary duplication,
18099	aka bloat.
18100	This patch thus introduces a new hash map that tracks emitted
18101	declaration-only classes, so that we can allow duplication of class
18102	declarations when they follow what's done in the IR read from DWARF,
18103	and disallow that duplication when it's totally artificial and
18104	useless.
18105	* Better tracking of referenced types
18106	We were blatantly forgetting to mark some referenced types as such.
18107	So those were missing in some abixml output.
18108	This patch fixes the spots where we were forgetting that important
18109	information.
18110	* Better representation of the scopes of the referenced types that
18111	were specifically emitted.
18112	The previous code was failing at properly representing the class scope
18113	of some referenced types that were specifically emitted, or sometimes,
18114	for member types, representing the scope would be so screwed that the
18115	(referenced) member type itself wouldn't be emitted at all.
18116	This is because I thought that to emit a given member type, just
18117	emitting its parent scope would be enough. I thought that would
18118	automatically trigger emitting the member type itself.  First, that
18119	would emit too much information at times; the other members of the
18120	scope are not necessarily needed.  And second the "duplication
18121	detection code" would sometime refuse to emit the scope class, because
18122	it has already been emitted earlier!  But the incarnation that got
18123	emitted didn't have this member type as member, then.  Yes, in DWARF,
18124	the same class A can be declared several times with different member
18125	types in it.  The complete representation of A would be a union of all
18126	those declarations of A that are seen.
18127	This patch addresses this issue by carefully emitting just the
18128	information that is needed from the scope of the referenced type.
18129	Basically the scope is declared just to declare/define the type we are
18130	interested in; period.  The abixml reader is now properly geared to
18131	re-construct the scope by merging its different parts that are now
18132	scattered around, in the ABI corpus.  That support is part of this
18133	patch set.
18134	instance, a member typedef would be emitted with the information of
18135	its parent class badly formatted.
18136	* src/abg-writer.cc (struct type_ptr_comp_functor): Remove this.
18137	(sort_type_ptr_map): Likewise.
18138	(write_context::record_type_as_referenced): Do not add the
18139	canonical type of the type to record as referenced directly.
18140	(write_context::type_is_referenced): Adjust accordingly.
18141	(struct write_context::type_ptr_cmp): New comparison functor.
18142	(write_context::sort_types): New sorting function.
18143	(write_context::{record_decl_only_type_as_emitted,
18144	decl_only_type_is_emitted}): New member functions.
18145	(write_member_type_opening_tag): Factorize out of ...
18146	(write_member_type): ... here.
18147	(write_class_decl_opening_tag): Factorize out of ...
18148	(write_class_decl): ... here.  Now, keep track also of
18149	declaration-only classes that are emitted.
18150	(write_decl_in_scope): Use the new write_member_type_opening_tag
18151	and write_class_decl_opening_tag.  Now write class scopes
18152	ourselves; they only contain the type declarations that we are
18153	emitting.
18154	(write_translation_unit): Use the new sorting code to sort the
18155	referenced types to emit.  Do not emit referenced types that are
18156	declaration-only classes that have already been emitted.  Handle
18157	the fact that emitting the referenced types might make those
18158	emitted type *reference* other types too! So handle those new
18159	referenced types as such, and emit them too.
18160	(write_qualified_type_def, write_typedef_decl, write_var_decl): Do
18161	not forget to mark referenced types as such.
18162
181632015-10-17  Dodji Seketeli <dodji@redhat.com>
18164
18165	Support updating a class in the abixml reader
18166	* include/abg-ir.h (class_decl::{find_base_class,
18167	find_member_type, find_data_member}): Declare new member functions ..
18168	* src/abg-ir.cc (class_decl::{find_base_class,
18169	find_member_type, find_data_member}): ... and define them.
18170	* src/abg-reader.cc (build_class_decl): Add the ability to update
18171	a class to add new data members, member types and base classes to
18172	it, if necessary.
18173
181742015-10-17  Dodji Seketeli <dodji@redhat.com>
18175
18176	Don't canonicalize types not added to their context in abixml reader
18177	* src/abg-reader.cc (read_context::maybe_canonicalize_type):
18178	Assert that a class type that is scheduled for canonicalization
18179	must be in a scope.  We do this only for classes, for now.  The
18180	assert here helped to spot (and fix)  a lot of places where we
18181	were canonicalizing types without scope.
18182	(read_context::build_or_get_type_decl):  Canonicalize types here,
18183	when they are built and (hopefully) added to their scope.  There
18184	might be cases here where we try to canonicalize types that are
18185	not added to their scope.  That should bomb in the assert above,
18186	at least for class types, for now.  We'll then fix the places where
18187	the types are created, to make them properly scoped.
18188	(build_type_decl, build_qualified_type_decl)
18189	(build_pointer_type_def, build_reference_type_def)
18190	(build_array_type_def, build_enum_type_decl, build_typedef_decl):
18191	Do not try to canonicalize the types early, right when they are
18192	created.  Canonicalization should happen at the point where (or
18193	after) they are added to their scope.
18194	(build_class_decl): Likewise.  Also, schedule member types for
18195	canonicalization once they've been added to their scope.
18196	(build_class_tdecl): Schedule the pattern of the class template
18197	for canonicalization once it has been added to its scope.  I am
18198	not sure I should do this, as the pattern is not yet a real type,
18199	but I am taking my bet.
18200	(build_type_composition): Schedule the composed type for
18201	canonicalization once it's been added to its scope.
18202	(handle_type_decl, handle_qualified_type_decl)
18203	(handle_pointer_type_def, handle_reference_type_def)
18204	(handle_function_type, handle_array_type_def)
18205	(handle_enum_type_decl, handle_typedef_decl, handle_class_decl):
18206	At this point, we should know if the type is to be added to a
18207	scope or not.  If it's in a scope, then schedule for
18208	canonicalization.
18209
182102015-10-15  Dodji Seketeli <dodji@redhat.com>
18211
18212	Bug 19092 - abidw aborts on types that violate the ODR
18213	* src/abg-ir.cc (type_base::get_canonical_type_for): Look at the
18214	size of types with the same name which could be considered
18215	ODR-equal, to spot possible violations that would induce a type
18216	canonicalization error.
18217	* tests/data/test-read-dwarf/test21-pr19092.so: New test input
18218	binary.
18219	* tests/data/test-read-dwarf/test21-pr19092.so.abi: New reference
18220	abixml for the binary above.
18221	* tests/data/Makefile.am: Add the new test input above to source
18222	distribution.
18223	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
18224	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
18225	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18226	Likewise.
18227	* tests/test-read-dwarf.cc (int_out_specs): Add the two test input
18228	above.
18229
182302015-10-15  Dodji Seketeli <dodji@redhat.com>
18231
18232	Fix activation of Debian package support
18233	* configure.ac: If we cannot activate Debian package support, then
18234	report it clearly.
18235
182362015-10-15  Dodji Seketeli <dodji@redhat.com>
18237
18238	Misc style cleanup
18239	* include/abg-fwd.h: Remove unnecessary declaration of class
18240	parameter.
18241	* src/abg-ir.cc: Remove trailing space in a comment.
18242	* src/abg-reader.cc: Fix a comment.
18243
182442015-10-15  Dodji Seketeli <dodji@redhat.com>
18245
18246	Emit statistics about resolved class declarations
18247	* src/abg-dwarf-reader.cc
18248	(read_context::resolve_declaration_only_classes): Emit statistics
18249	about resolved classes and the missed ones.
18250
182512015-10-15  Dodji Seketeli <dodji@redhat.com>
18252
18253	Add a missing xml text reader call
18254	* src/abg-reader.cc (read_corpus_from_input): Add the necessary
18255	call to xmlTextReaderNext call after the xmlTextReaderExpand call.
18256
182572015-10-15  Dodji Seketeli <dodji@redhat.com>
18258
18259	Pass some more parameters in reference
18260	* include/abg-ir.h (operator==): For the type_base_sptr and
18261	decl_base_sptr overloads, pass the parameters by reference.
18262	({var,function}_decl::{set,get}_symbol): Pass the elf_symbol_ptr
18263	by reference.
18264	* src/abg-ir.cc (operator==): For the type_base_sptr and
18265	decl_base_sptr overloads, pass the parameters by reference, now in
18266	the definition.
18267	({var,function}_decl::{set,get}_symbol): Pass the elf_symbol_ptr
18268	by reference, now in the definition.
18269
182702015-10-15  Dodji Seketeli <dodji@redhat.com>
18271
18272	Adjust tests for the patchset
18273	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
18274	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
18275	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
18276	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
18277	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
18278	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
18279	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
18280	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
18281	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
18282	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
18283	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
18284
182852015-10-15  Dodji Seketeli <dodji@redhat.com>
18286
18287	Make abidw --abidiff not show definitely harmless changes
18288	* tools/abidw.cc (set_diff_context): New function.
18289	(main): Use that new function.  Do not show any output for
18290	--abidiff if only compatible changes were detected.  Also, do not
18291	abort if no input binary was giving.
18292
182932015-10-15  Dodji Seketeli <dodji@redhat.com>
18294
18295	Allow only one definition of a given type per corpus in abixml
18296	* src/abg-writer.cc (write_translation_unit): Do not clear some
18297	important per-translation unit maps here.  There are needed to
18298	keep track of the emitted and referenced types through the entire
18299	corpus.  Avoid (wrongly) recording function types twice.
18300	(write_array_type_def, write_function_decl, write_function_type):
18301	Record referenced types.
18302	(write_class_decl): Record referenced types, and, allow only
18303	declarations to be duplicated in a corpus.
18304
183052015-10-15  Dodji Seketeli <dodji@redhat.com>
18306
18307	A series of small speed optimizations here and there
18308	* src/abg-comparison.cc (var_diff::has_changes): Just compare the
18309	two var_decl.  It's (way) faster now than using recursive hashing
18310	for that.
18311	* src/abg-ir.cc (elf_symbol::does_alias): Get out early if the two
18312	main symbols are equal.
18313	(equals): In the overload for function_decl, start by comparing
18314	types.  This can be very fast for functions with different types,
18315	as it amounts to a pointer comparison.  In the overload for
18316	class_decl, avoid a map lookup when it's not necessary.
18317
183182015-10-15  Dodji Seketeli <dodji@redhat.com>
18319
18320	Accelerate a slow path in hash_type_or_decl()
18321	* include/abg-ir.h (is_function_parameter, is_class_base_spec):
18322	Declare new functions.
18323	* src/abg-ir.cc (is_function_parameter, is_class_base_spec):
18324	Define them.
18325	(hash_type_or_decl): Handle hashing of function parameters are
18326	class base specifications with the fast path of type hashing.
18327
183282015-10-15  Dodji Seketeli <dodji@redhat.com>
18329
18330	Implement fast type lookup in a corpus
18331	* include/abg-fwd.h (components_to_type_name): Declare new
18332	function.
18333	* include/abg-ir.h (string_type_base_wptr_map_type): New typedef.
18334	(translation_unit::{get,set}_types): Declare new member functions.
18335	* src/abg-ir.cc (translation_unit::priv::types_): New data member.
18336	(translation_unit::{get,set}_types): Define these member
18337	functions.
18338	(maybe_update_types_lookup_map): Define new static function.
18339	(components_to_type_name): Define new function.
18340	(scope_decl::{add_member_decl, insert_member_decl}): Call the new
18341	maybe_update_types_lookup_map.
18342	(scope_decl::find_iterator_for_member): Fix logic.
18343	(class_decl::set_is_declaration_only): When a class declaration
18344	becomes a definition, update the name -> type map maintained in
18345	the scope of the class.
18346	(lookup_type_in_translation_unit): Use the hash map of qualified
18347	name -> types that is now maintained in the translation unit.
18348	This is way faster than the previous walking algorithm.
18349	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
18350	When fixing up global variable declarations that need to be
18351	re-added to the translation unit, use the new fast type lookup
18352	function.
18353
183542015-10-15  Dodji Seketeli <dodji@redhat.com>
18355
18356	Set the corpus of all ABI artifact reads from abixml
18357	* src/abg-reader.cc (read_translation_unit): Set the current
18358	corpus to the current translation unit being built.
18359
183602015-10-14  Dodji Seketeli <dodji@redhat.com>
18361
18362	Make canonicalization non sensitive to struct-ness of subtypes
18363	* include/abg-fwd.h (get_type_name, get_function_type_name)
18364	(get_method_type_name, get_pretty_representation): Add an
18365	"internal" flag to all overoads.
18366	* include/abg-ir.h
18367	({type_or_decl_base, decl_base, type_decl, scope_type_decl,
18368	qualified_type_def, array_type_def, enum_type_decl, typedef_decl,
18369	var_decl, function_decl, function_decl::parameter, function_type,
18370	method_type, class_decl}::get_pretty_representation): Add an
18371	'internal' flag.
18372	({decl_base, qualified_type_def, pointer_type_def,
18373	reference_type_def, array_type_def, enum_type_decl::enumerator,
18374	function_decl::parameter}::get_qualified_name): Likewise.
18375	(qualified_type_def::build_name): Likewise.
18376	* src/abg-ir.cc ({decl_base, qualified_type_def, pointer_type_def,
18377	reference_type_def, array_type_def, enum_type_decl,
18378	enum_type_decl::enumerator,
18379	function_decl::parameter}::get_qualified_name): Take an "internal"
18380	flag.
18381	(qualified_type_def::build_name): Likewise.
18382	({decl_base, type_decl, namespace_decl, array_type_def,
18383	enum_type_decl, typedef_decl, var_decl, function_type,
18384	method_type, function_decl,
18385	class_decl}::get_pretty_representation): Likewise.
18386	(get_type_name, get_function_type_name, get_method_type_name)
18387	(get_pretty_representation): Likewise.
18388	(type_base::get_canonical_type_for): Call
18389	get_pretty_representation() with the "internal" flag set to
18390	"true", to get a pretty representation that is independant from
18391	the struct-ness of the subtypes of the type being canonicalized.
18392
183932015-10-14  Dodji Seketeli <dodji@redhat.com>
18394
18395	Handle aliased function decls when comparing decls in general
18396	* include/abg-ir.h (is_function_decl): Add a const to the
18397	reference parameter, making it comply with the definition.
18398	* src/abg-ir.cc (equals): In the overload for decl_base, when the
18399	two linkage names are different, consider the case of the decls
18400	being aliased functions.
18401
184022015-10-14  Dodji Seketeli <dodji@redhat.com>
18403
18404	Fix const-ness of a function parameter
18405	* include/abg-fwd.h (is_function_decl): Add a const to the
18406	parameter to make it comply with the definition in abg-ir.cc.
18407	Woops.
18408
184092015-10-14  Dodji Seketeli <dodji@redhat.com>
18410
18411	Fix "is-anonymous" abixml property impact on some tests
18412	* tests/data/test-abidiff/test-PR18166-libtirpc.so: New file.
18413	* tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Likewise.
18414	* tests/data/test-abidiff/test-corpus0-report0.txt: Renamed into
18415	tests/data/test-abidiff/test-PR18166-libtirpc.so.report.txt.
18416	* tests/data/test-abidiff/test-corpus0-v{0,1}.so.abi: Removed.
18417	* tests/data/Makefile.am: Renamed test-corpus0-* files into
18418	test-PR18166-libtirpc.so-* files.
18419	* tests/test-abidiff.cc (specs): Adjust.
18420
184212015-10-14  Dodji Seketeli <dodji@redhat.com>
18422
18423	Do not compare access specs for member types & functions
18424	* include/abg-fwd.h (is_function_decl): Declare a new overload.
18425	* src/abg-ir.cc (is_function_decl): Define a new overload.
18426	(equals): In the overload for decl_base, do not compare access
18427	specifiers when comparing member functions and types.
18428	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
18429	* tests/data/test-diff-filter/test0-report.txt: Likewise.
18430	* tests/data/test-diff-filter/test01-report.txt: Likewise.
18431	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
18432	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
18433	* tests/data/test-diff-filter/test4-report.txt: Likewise.
18434
184352015-10-14  Dodji Seketeli <dodji@redhat.com>
18436
18437	Fix strip_typedef issues
18438	* src/abg-ir.cc (strip_typedef): Do not canonicalize
18439	the return type of the method type to typedef-strip.
18440	Acknowledge that the return type can be nil.
18441
184422015-10-14  Dodji Seketeli <dodji@redhat.com>
18443
18444	Force late canonicalizing of function types read from abixml
18445	* src/abg-reader.cc (build_function_type): Late-canonicalize
18446	function types.
18447
184482015-10-13  Ondrej Oprala <ooprala@redhat.com>
18449
18450	Bug 19082 - Recognize suppression spec files
18451	* tests/data/Makefile.am: Add new test material to the build system.
18452	* tests/data/test-diff-pkg/dirpkg-{0-dir1,{1,2}-dir2}/dir.abignore:
18453	A test suppression specification.
18454	* tests/data/test-diff-pkg/dirpkg-{2,3}-dir2/.abignore: Likewise.
18455	* tests/data/test-diff-pkg/dirpkg-3.suppr: Likewise.
18456	* tests/data/test-diff-pkg/dirpkg-{1,2,3}-dir{1,2}/libobj-v0.so: New
18457	binary test inputs.
18458	* tests/data/test-diff-pkg/dirpkg-{1,2,3}-dir{1,2}/obj-v0.cc: New test
18459	source files
18460	* tests/data/test-diff-pkg/dirpkg-{1,2,3}-report-{0,1}.txt: New
18461	reference outputs
18462	* tests/test-diff-pkg.cc: Adjust to run the new tests.
18463	* tools/abipkgdiff.cc (prog_options): New static pointer to struct
18464	opts.
18465	(file_tree_walker_callback_fn): Rename to
18466	first_package_tree_walker_callback_fn.
18467	(second_package_tree_walker_callback_fn): Check for ELF files just
18468	like the previous function but additionally check for files
18469	ending with ".abignore", unless disabled from the command line.
18470	({create_maps_of_package,extract_package_and_map_its}_content):
18471	Add a callback as a new argument.
18472	(main) handle the new "--no-abignore" option, which turns off
18473	the search for suppression files within the new package.
18474
184752015-10-08  Dodji Seketeli <dodji@redhat.com>
18476
18477	Bug 19024 - Failing to flag underlying type of enums as anonymous
18478	* src/abg-dwarf-raeder.cc (build_enum_type): Set the is-anonymous
18479	flag on the underlying type of the enum.
18480	* tests/data/test-read-dwarf/test0.abi: Adjust.
18481	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
18482	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
18483	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
18484	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
18485	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
18486	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
18487	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
18488	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
18489	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
18490	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
18491	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
18492	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
18493
184942015-10-08  Dodji Seketeli <dodji@redhat.com>
18495
18496	Bug 19025 - abixml writer forgets to emit some member types
18497	* include/abg-fwd.h (is_namespace): Fix prototype.
18498	* src/abg-writer.cc (struct type_ptr_comp_functor): New internal
18499	type.
18500	(sort_type_ptr_map): New static function.
18501	(write_context::m_referenced_types_map): Renamed
18502	m_referenced_fntypes_map data member into this.
18503	(write_context::get_referenced_types): New member function.
18504	(write_context::record_type_as_referenced): Renamed
18505	record_fntype_as_referenced member function into this.  Adjust.
18506	(write_context::type_is_referenced): Renamed fntype_is_referenced
18507	into this.
18508	(write_context::clear_referenced_types_map): Renamed
18509	clear_referenced_fntypes_map member function into this.  Adjust.
18510	(write_decl_in_scope): New static function.
18511	(write_translation_unit): Use it here to emit types that are
18512	referenced by other types in the TU, but that are not emitted.
18513	Adjust.
18514	(write_pointer_type_def, write_reference_type_def)
18515	(write_typedef_decl): Record the underlying types referenced by
18516	the emitted types as being, well, referenced.
18517	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so:
18518	New test binary input.
18519	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18520	New reference output of the binary input above.
18521	* tests/data/Makefile.am: Add the new test material above to the
18522	source distribution.
18523	* tests/test-read-dwarf.cc (in_out_spec): Add the new test inputs.
18524	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
18525	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
18526	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
18527	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
18528	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
18529	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
18530	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
18531	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
18532	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18533	Likewise.
18534	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18535	Likewise.
18536
185372015-10-06  Ondrej Oprala <ooprala@redhat.com>
18538
18539	Parallelize test read-dwarf.
18540	* tests/Makefile.am: Link runtestreaddwarf with libpthread.
18541	* tests/test-read-dwarf.cc (main) Create worker threads corresponding
18542	to the number of CPUs online, add a "--no-parallel" option and move
18543	the main loop...
18544	(handleInOutSpec) ...here.
18545
185462015-10-07  Dodji Seketeli <dodji@redhat.com>
18547
18548	Bug 19023 - Type canonicalization is sensitive to struct-ness
18549	* include/abg-ir.h (class_decl::is_struct): Declare a setter for the
18550	"is-struct" property.
18551	* src/abg-ir.cc (class_decl::is_struct): And define that setter
18552	here.
18553	(type_base::get_canonical_type_for): Temporarily set the
18554	'is-struct' flag of the class type to 'false' before building its
18555	pretty representation.
18556	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so:
18557	New test input binary.
18558	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18559	New test reference output.
18560	* tests/data/Makefile.am: Add the new test material above to the
18561	source distribution.
18562	* tests/test-read-dwarf.cc (in_out_specs): Add the two new test
18563	inputs to the list of test inputs to consider.
18564	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
18565
185662015-10-06  Dodji Seketeli <dodji@redhat.com>
18567
18568	Style adjustment in abg-corpus.cc
18569	* src/abg-corpus.cc (corpus::exported_decls_builder::id_var_map_):
18570	Renamed data member vars_map_ into this.
18571	(corpus::exported_decls_builder::id_var_map): Renamed vars_map
18572	into this.
18573	(corpus::exported_decls_builder::var_id_is_in_id_var_map): Renamed
18574	var_is_in_map into this.
18575	(corpus::exported_decls_builder::{add_var_to_map,
18576	add_var_to_exported, maybe_add_var_to_exported_vars}): Adjust.
18577
185782015-10-06  Dodji Seketeli <dodji@redhat.com>
18579
18580	Bug 19037 - Make ABI corpus support several functions with same symbol
18581	* include/abg-corpus.h
18582	(corpus::exported_decls_builder::str_{fn,var}_ptr_map_type):
18583	Remove these typedefs from here as they only used internally in
18584	abg-corpus.cc.  So we move them there instead.
18585	* src/abg-corpus.cc (str_fn_ptrs_map_type): New typedef.
18586	(str_var_ptr_map_type): Moved the typedef that was in
18587	corpus::exported_decls_builder here.
18588	(corpus::exported_decls_builder::id_fns_map_): Rename the fns_
18589	data member into this.  Make it have a str_fn_ptrs_map_type as a
18590	type.
18591	(corpus::exported_decls_builder::id_fns_map): Renamed the
18592	fns_map() accessor into this one.
18593	(corpus::exported_decls_builder::{fn_id_is_in_id_fns_map,
18594	fn_is_in_fns}): New member functions.
18595	(corpus::exported_decls_builder::fn_is_in_id_fns_map): Rename
18596	fn_is_in_map into this.
18597	(corpus::exported_decls_builder::add_fn_to_id_fns_map): Rename
18598	add_fn_to_map into this.
18599	(corpus::exported_decls_builder::add_fn_to_exported): Adjust.
18600	(corpus::exported_decls_builder::maybe_add_fn_to_exported_fns):
18601	Adjust.
18602	* src/abg-comparison.cc (function_decl_diff::report): Emit reports
18603	about function name changes (for a given function ID) only if
18604	there are sub-type changes to be reported for the function.  In
18605	that case, do not forget to emit the sub-type changes after the
18606	name changes have been reported.
18607	(corpus_diff::priv::ensure_lookup_tables_populated): Several
18608	functions of the same ID can be removed or added from/to the
18609	corpus.
18610	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so:
18611	New test input binary.
18612	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18613	New test output reference.
18614	* tests/data/Makefile.am: Add the new test materials to the source
18615	distribution.
18616	* tests/test-read-dwarf.cc (in_out_specs): Adjust to add the new
18617	test inputs above.
18618
186192015-10-05  Ondrej Oprala <ooprala@redhat.com>
18620
18621	Do not imply private access when building a struct from ABIXML.
18622	* src/abg-reader.cc (read_context): Abort if we run into an
18623	unsupported access specifier.
18624	(build_class_decl) Default to public access for the children
18625	of a struct.
18626
186272015-10-05  Ondrej Oprala <ooprala@redhat.com>
18628
18629	Fix minor warnings when building documentation.
18630	* manuals/abilint.rst: Fix the "Literal block expected" warning.
18631	* manuals/abipkgdiff.rst: Fix the "Title underline too short" warning.
18632
186332015-10-05  Ondrej Oprala <ooprala@redhat.com>
18634
18635	Fix an "Unknown target name" error during make info.
18636	* doc/manuals/libabigail-overview.rst: Fix the reference to
18637	"ELF symbols".
18638
186392015-10-05  Ondrej Oprala <ooprala@redhat.com>
18640
18641	Fix a path in doc/Makefile.am
18642	* doc/Makefile.am: Prefix the path for DOXY_WEBSITE_SRC_CFG and
18643	DOXY_WEBSITE_BLD_{CFG,DIR} with "/doc" to protect it against make
18644	clean.
18645
186462015-10-04  Dodji Seketeli <dodji@redhat.com>
18647
18648	Misc style cleanups
18649	* src/abg-reader.cc (read_is_struct): Fix comment.
18650	(build_type_decl): Use type_decl_sptr rather than
18651	shared_ptr<type_decl>.
18652	(build_type_decl): Use typedef_decl_sptr rather than
18653	shared_ptr<typedef_decl>.
18654
186552015-10-04  Dodji Seketeli <dodji@redhat.com>
18656
18657	Use the ODR to speed up type canonicalization
18658	* include/abg-fwd.h (class corpus): Forward-declare this.
18659	(is_anonymous_type): Declare this new function.
18660	* include/abg-ir.h (corpus_sptr, corpus_wptr): Declare these
18661	typedefs here too.
18662	(translation_unit::{g,s}et_corpus): Declare new member functions.
18663	(type_or_decl_base::{g,s}et_corpus): Likewise.
18664	* src/abg-ir.cc (translation_unit::priv::corpus): New data member.
18665	(translation_unit::priv::priv): Initialize it.
18666	(translation_unit::{g,s}et_corpus): Define new accessors.
18667	(translation_unit::get_global_scope): Propagate the corpus of the
18668	translation unit to its newly created global scope.
18669	(translation_unit::bind_function_type_life_time): Propagate the
18670	corpus of the translation_unit to the added function type.
18671	(type_or_decl_base::priv::corpus_): Add new data member.
18672	(type_or_decl_base::priv::priv): Initialize it.
18673	(type_or_decl_base::{g,s}et_corpus): Define new accessors.
18674	(scope_decl::{add,insert}_member_decl): Propagate the context's
18675	corpus to the member added to the context.
18676	(decl_base::priv::is_anonymous_): Add new data member.
18677	(decl_base::priv::priv): Initialize it.
18678	(decl_base::{s,g}et_is_anonymous): Define accessors.
18679	(is_anonymous_type): Define a new test function.
18680	(decl_base::set_name): Update the "is_anonymous" property.
18681	(type_base::get_canonical_type_for): Implement the ODR-based
18682	optimization to type canonicalization.
18683	* src/abg-corpus.cc (corpus::add): When a translation unit is
18684	added to a corpus, set the corpus of the translation unit.
18685	* src/abg-dwarf-reader.cc (build_enum_type)
18686	(build_class_type_and_add_to_ir): Set the "is_anonymous" flag on
18687	anonymous enums and classes.
18688	* src/abg-reader.cc (read_is_anonymous): Define new static
18689	function.
18690	(build_type_decl, build_enum_type, build_class_decl): Call the new
18691	read_is_anonymous function and set the "is_anonymous" property on
18692	the built type declaration.
18693	* src/abg-writer.cc (write_is_anonymous): Define new static
18694	function.
18695	(write_type_decl, write_enum_type_decl, write_class_decl): Write
18696	the "is_anonymous" property.
18697	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
18698	Adjust.
18699	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
18700	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
18701	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
18702	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
18703	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
18704	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
18705	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
18706	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
18707	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
18708
187092015-10-04  Dodji Seketeli <dodji@redhat.com>
18710
18711	Late canonicalize all types that reference classes when reading DWARF
18712	* include/abg-fwd.h (peel_array_type): Declare new function.
18713	* src/abg-ir.cc (peel_array_type): Define it.
18714	(peel_typedef_pointer_or_reference_type): Peel arrays too, to get
18715	the type of its element.
18716	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): If a pointer,
18717	reference, array or typedef references a class, then do
18718	late-canonicalize this type.
18719
187202015-10-04  Dodji Seketeli <dodji@redhat.com>
18721
18722	Fix infinite loop in peel_typedef_pointer_or_reference_type
18723	* src/abg-ir.cc (peel_typedef_pointer_or_reference_type): Make
18724	sure the variable tested in the condition is the one updated by
18725	the loop.
18726
187272015-10-02  Dodji Seketeli <dodji@redhat.com>
18728
18729	Try harder to hash_type_or_decl avoid the slow path
18730	* src/abg-ir.cc (hash_type_or_decl):  When a declaration-only
18731	class has a definition, then use the canonical type of that
18732	definition as a hash value.  If the class no definition, only
18733	then, use the slow patfh of computing the recursive progressive
18734	hash value of the type.
18735
187362015-10-02  Dodji Seketeli <dodji@redhat.com>
18737
18738	Do not use recursive type hashing when writing out function types
18739	* src/abg-writer.cc (typedef fn_shared_ptr_map): Remove.
18740	(write_context::m_referenced_fntypes_map): Change the type of this
18741	into type_ptr_map.
18742	(write_context::{record_fntype_as_referenced,
18743	fntype_is_referenced}): Use the pointer value of the canonical
18744	type of the referenced type as key for the map.
18745
187462015-10-02  Dodji Seketeli <dodji@redhat.com>
18747
18748	Prevent build_function_type from not canonicalizing certain types
18749	* src/abg-dwarf-reader.cc (build_function_type): Associate the
18750	type being built with its DIE, before starting to build the
18751	sub-types.  The current type is then amended with the sub-types
18752	that are built later.
18753	(build_ir_node_from_die): In the case for DW_TAG_subroutine_type,
18754	do not associate the type to the DIE here, as it's been done in
18755	build_function_type.
18756	* src/abg-ir.cc (function_type::set_parameters): Adjust the index
18757	of the parameters being set to the function: they start at 1,
18758	unless the first parameter is artificial, in which case its index
18759	starts at zero.  This is just like what is done when the function
18760	type is constructed directly with the parameters passed as an
18761	argument to the constructor.
18762
187632015-10-02  Dodji Seketeli <dodji@redhat.com>
18764
18765	Fix detection of changes in pointer diff in the comparison engine
18766	* src/abg-comparison.cc (pointer_diff::has_changes): Just
18767	comparing the underlying type might not be enough.  Let's just
18768	compare the pointer itself.  Now that we have canonical types,
18769	comparing the pointer itself is not slower.
18770
187712015-10-02  Dodji Seketeli <dodji@redhat.com>
18772
18773	Do not overly canonicalize types during typedef stripping
18774	* src/abg-ir.cc (strip_typedef): Do not canonicalize the stripped
18775	type if the input one is not canonicalized.
18776
187772015-10-02  Dodji Seketeli <dodji@redhat.com>
18778
18779	Cleanup some IR type comparison operators
18780	* include/abg-ir.h (operator==): In the overloads for type_decl,
18781	enum and class_decl, turn the shared_ptr parameter into a const
18782	reference to the shared_ptr.
18783	* src/abg-ir.cc (operator==): Do the same in the definitions.
18784
187852015-10-02  Dodji Seketeli <dodji@redhat.com>
18786
18787	Add missing deep equality operator for pointer and reference types
18788	* include/abg-ir.h (pointer_type_def::operator==): Add an overload
18789	for pointer_type_def.
18790	(reference_type_def::operator==) Add an overload for
18791	reference_type_def.
18792	(operator==): Add an overload for pointer_type_def_sptr and
18793	reference_type_def_sptr.
18794	* src/abg-ir.cc (pointer_type_def::operator==): Make the overload
18795	for type_base& use the overload for decl_base&.  Add a new
18796	overload for pointer_type_def& and make is use the overload for
18797	decl_base& too.
18798	(operator==): Add free form overloads for pointer_type_def& and
18799	reference_type_def&.
18800	(reference_type_def::operator==): Add comments. Add an overload
18801	for reference_type_def&.
18802
188032015-10-02  Dodji Seketeli <dodji@redhat.com>
18804
18805	constify is_class_type()
18806	* include/abg-fwd.h (is_class_type): Take a pointer to const.
18807	* src/abg-ir.cc (is_class_type): Adjust.
18808
188092015-10-01  Ondrej Oprala <ooprala@redhat.com>
18810
18811	Bug 19027 - ABI asymmetry with enums over INT_MAX
18812	* src/abg-reader.cc (build_enum_type_decl): Use strtol
18813	instead of atoi to parse the values and check for overflow.
18814	* tests/data/Makefile.am: Add the new test material to the build
18815	system.
18816	* tests/data/test-read-dwarf/test17-pr19027.so: New test file.
18817	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
18818	* tests/test-read-dwarf.cc: Adjust to launch the new test.
18819
188202015-10-01  Dodji Seketeli <dodji@redhat.com>
18821
18822	Encourage people to use autoreconf -i
18823	* COMPILING: Mention autoreconf -i, rather than just autoreconf.
18824
188252015-09-23  Ondrej Oprala <ooprala@redhat.com>
18826
18827	Bug 17340 - Support pointers and references to functions
18828	* include/abg-comparison.h (compute_diff_for_distinct_kinds): Take the
18829	first two arguments of type const type_or_decl_base_sptr instead.
18830	* include/abg-ir.h (translation_unit::get_function_types): Declare new
18831	method.
18832	(function_types): Declare new typedef.
18833	* src/abg-comparison.cc (compute_diff_for_types): Take the first two
18834	arguments of type const type_or_decl_base_sptr instead of a const
18835	decl_base_sptr.
18836	(try_to_diff): Likewise.
18837	(try_to_diff<class_decl>): Likewise.
18838	(try_to_diff_distinct_kinds): Likewise.
18839	(compute_diff_for_distinct_kinds): Likewise. Also remove a variant
18840	accepting arguments of type const type_base_sptr.
18841	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Skip
18842	building a pointer if it points to the beginning of a vptr.
18843	(build_pointer_type_def): Declare utype_decl of type
18844	type_or_decl_base_sptr and adjust assignments to it accordingly.
18845	(build_function_type): New function definition.
18846	(build_function_decl): Call build_function_type instead of building
18847	an ftype manually.
18848	(build_ir_node_from_die): Amend case DW_TAG_subroutine_type with
18849	appropriate calls to build a function type.
18850	* src/abg-ir.cc (translation_unit::get_function_types): New method
18851	definition.
18852	({pointer,reference}_type_def::pointer_type_def): Expect that
18853	pointed_to might not have an accompanying declaration and set a type's
18854	name in this case as well.
18855	({pointer,reference}_type_def::get_qualified_name): Generate a
18856	qualified name even if the pointed-to type has no declaration.
18857	* src/abg-reader.cc (build_function_type): New function definition.
18858	(handle_element_node): Return a type_or_decl_base_sptr instead and
18859	try calling handle_function_type in addition to others.
18860	(handle_function_type): New function definition that calls
18861	build_function_type.
18862	(build_type): Try calling build_function_type as well.
18863	* src/abg-writer.cc (fn_shared_ptr_map): Declare new typedef.
18864	(write_context::{clear_referenced_fntypes_map,fntype_is_referenced,
18865	record_fntype_as_referenced}): New member functions.
18866	(write_translation_unit): Call the new clear_referenced_fntypes_map.
18867	* tests/data/Makefile.am: Add the new test material to the build
18868	system.
18869	(write_translation_unit): Separately write function types that have
18870	been recorded to emit by write_{pointer,reference}_type_def.
18871	(write_{pointer,reference}_type_def): Record the type pointed to as
18872	a type to be emitted if type == function type.
18873	(write_function_type): Write the details of a function type in the
18874	abixml format and unmark the type.
18875	* tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: New
18876	test reference report.
18877	* tests/data/test-diff-dwarf/test32-fnptr-changes-v{0,1}.cc: New test
18878	source files.
18879	* tests/data/test-diff-dwarf/test32-fnptr-changes-v{0,1}.o: New binary
18880	test inputs.
18881	* tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: New
18882	test reference report.
18883	* tests/data/test-diff-dwarf/test33-fnref-changes-v{0,1}.cc: New test
18884	source files.
18885	* tests/data/test-diff-dwarf/test33-fnref-changes-v{0,1}.o: New binary
18886	test inputs.
18887	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
18888	Adjust.
18889	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
18890	Likewise.
18891	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
18892	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
18893	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
18894	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
18895	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
18896	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
18897	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
18898	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
18899	* tests/data/test-read-write/test27.xml: New test source file.
18900	* tests/test-diff-dwarf.cc: Adjust to launch the new tests.
18901	* tests/test-read-write.cc: Likewise.
18902
189032015-09-09  Ondrej Oprala <ooprala@redhat.com>
18904
18905	Generalize some dwarf-reader functions to generate and return instances of type_or_decl_base_stpr to be able to propagate types occurring without an accompanying declaration.
18906	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Return
18907	a type_or_decl_base_sptr instead.
18908	(get_scope_for_die): Likewise.
18909	(build_class_type_and_add_to_ir): Typecast the assignment from
18910	build_ir_node_from_die properly.
18911	(build_{qualified,reference,array,typedef}_type): Likewise.
18912	(build_pointer_type_def): Likewise.
18913	(build_{var,function}_decl): Likewise.
18914
189152015-09-29  Ondrej Oprala <ooprala@redhat.com>
18916
18917	Move a constructor declaration
18918	* include/abg-ir.h (decl_base): Change the decl_base() declaration's
18919	visibility to private.
18920
189212015-09-24  Dodji Seketeli <dodji@redhat.com>
18922
18923	Bug 18535 - abidiff reports false positive ABI difference for libstdc++
18924	*non-static* data member; a static data member only is not enough to
18925	make the class declaration become a definition.
18926	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): The
18927	presence of a data member shouldn't make a declaration-only class
18928	loose its declaration-only-ness; the presence of a enon-static*
18929	data member should.
18930	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
18931	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
18932	* tests/data/test-diff-filter/test31-pr18535-libstdc++-4.8.3.so:
18933	New binary test input.
18934	* tests/data/test-diff-filter/test31-pr18535-libstdc++-4.9.2.so:
18935	Likewise.
18936	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
18937	New test reference output.
18938	* tests/data/Makefile.am: Add the new test material to the build
18939	system.
18940	* tests/test-diff-filter.cc (in_out_specs): Add the new test
18941	inputs to the set of inputs to consider.
18942
189432015-09-21  Dodji Seketeli <dodji@redhat.com>
18944
18945	Remove duplicated runtestreaddwarf test
18946	* tests/Makefile.am: Remove one copy of the runtestreaddwarf test
18947	that is present twice.
18948
189492015-09-21  Dodji Seketeli <dodji@redhat.com>
18950
18951	Add a missing function declaration
18952	* include/abg-tools-utils.h (dir_name): Add missing function
18953	declaration.
18954
189552015-09-21  Dodji Seketeli <dodji@redhat.com>
18956
18957	Remove some dead code in abilint
18958	* tools/abilint.cc (options::bidiff): Remove.
18959	(options::options): Adjust.
18960	(display_usage): Remove usage string for --bidiff
18961	(parse_command_line): Remove parsing of un-implemented option
18962	--bidiff.
18963
189642015-09-21  Dodji Seketeli <dodji@redhat.com>
18965
18966	Add a new --abidiff option to abidw
18967	* tools/abidw.cc (options::abidiff): New data member.
18968	(options::options): Initialize it.
18969	(display_usage): Add a usage string for the new --abidiff option.
18970	(parse_command): Parse the new --abidiff options.
18971	(main): Save the abi of the input elf in a temporary abixml file;
18972	read it back and compare both.
18973
189742015-09-21  Dodji Seketeli <dodji@redhat.com>
18975
18976	Misc style fixes
18977	* src/abg-hash.cc (class_decl::hash::operator()): Use a temporary
18978	variable to ease debugging.
18979	* src/abg-reader.cc (read_context::is_wip_type): Make this
18980	function const.
18981	* src/abg-writer.cc (write_context): Move data members at the top.
18982
189832015-09-21  Dodji Seketeli <dodji@redhat.com>
18984
18985	Speed up type canonicalization by avoiding recursive hashing
18986	* include/abg-ir.h (canonical_types_map_type): Adjust this typedef
18987	to make it point to an unordered_map which the key is now a string
18988	and the value is a vector of types.
18989	(type_or_decl_base::{get_cached_hash_value, set_cached_hash_value,
18990	cached_hash}): Remove these member functions and type.
18991	(struct type_base::cached_hash): Remove.
18992	* src/abg-ir.cc (struct type_or_decl_base::priv::hash_): Remove.
18993	(type_or_decl_base::priv::priv): Adjust.
18994	(type_or_decl_base::{g,s}et_cached_hash_value): Remove.
18995	(type_base::get_canonical_type_for): For declaration-only classes,
18996	look at their definition for the canonical_type.  Do not use
18997	recursive type hashing anymore.  Rather, use the pretty
18998	representation string, and hash that.
18999	(class_decl::base_spec::get_hash): Do away with hash value caching
19000	here.
19001	(class_decl::operator==): For decl-only classes, look at their
19002	definitions for canonical types.
19003	(hash_type_or_decl): Adjust comment.  Use the canonical type
19004	pointer value for type hash.  That's the fast path.  Otherwise, if
19005	not available, fall back to a slow path which is the recursive
19006	type hash we were using before.
19007	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Schedule all
19008	classes and typedef to classes for late canonicalization.
19009	* src/abg-hash.cc (type_base::dynamic_hash::operator()): There is
19010	no hash value cashing anymore.
19011	(type_base::cached_hash::operator()): Remove.
19012	* src/abg-reader.cc (read_context::get_type): Slight style
19013	adjustment.
19014	(read_translation_unit_from_file)
19015	(read_translation_unit_from_buffer): Do not forget to canonicalize
19016	types when reading just one translation unit.
19017	(build_type_tparameter, build_template_tparameter): Canonicalize
19018	the type.
19019	* src/abg-writer.cc (struct type_hasher): New hasher type.
19020	(type_ptr_map): Use a deep pointer comparison equal operator
19021	functor, and canonical types as type hash values.
19022	(write_class_decl): Do not write size and alignment on decl-only
19023	classes.  Do not record decl-only classes as being emitted.  Their
19024	definition must be emitted before.
19025	* tests/test-read-write.cc (main): Do not do abi testing on
19026	translation units (as opposed to doing it on abi corpora) as that
19027	code is not wet yet.  We need to know how to diff namespaces.
19028	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
19029	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
19030	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
19031	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
19032	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
19033	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
19034	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
19035	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
19036
190372015-09-21  Dodji Seketeli <dodji@redhat.com>
19038
19039	Update qualified name of a decl when it's added to its context
19040	* include/abg-ir.h (decl_base::priv_): Make this be public, so
19041	that the qualified name updater function can access it.
19042	(class class_decl): Make set_member_is_static() a friend function.
19043	* src/abg-ir.cc (class ::qualified_name_setter): New tree walking
19044	type.
19045	(decl_base::get_qualified_parent_name): Do not do any computation
19046	here.  Just return the pre-computed qualified parent name string.
19047	(decl_base::get_qualified_name): Likewise, for qualified name.
19048	(scope_decl::{add,insert}_member_decl): Update the qualified name of the
19049	newly added member.  Set the scope of the member here.  It's not
19050	going to be set elsewhere, from now on.
19051	(add_decl_to_scope): Do not set the scope here anymore.  Just call
19052	scope_decl::add_member_decl and let it do the work.
19053	(insert_decl_into_scope): Likewise, just call
19054	scope_decl::insert_member_decl and let it do the work.
19055	(class_decl::{add_data_member, add_member_function}): Do not
19056	handle details of context setting at this point.  Let
19057	scope_decl::add_member_decl do it.  Adjust the properties of the
19058	context relation afterwards.  In add_data_member, when a data
19059	member changes its static-ness, move the data member into the
19060	class_decl::priv::non_static_data_members_ or out of it, as
19061	necessary.
19062	(class_decl::insert_member_decl): By default, a data member is
19063	considered static.
19064	(set_member_is_static): Move this definition after the definitions
19065	of class_decl, so that this function can see those.  Also, when a
19066	data member changes its static-ness, move the data member into the
19067	class_decl::priv::non_static_data_members_ or out of it, as
19068	necessary.
19069	(class_decl::add_member_function_template):  As we the
19070	underlying function template decl to the context, do not do any
19071	scope adding for it here.
19072	(::qualified_name_setter::{do_update, visit_begin}): Define new
19073	member functions.
19074	(update_qualified_name): Define new static function.
19075	* src/abg-reader.cc (build_class_decl): Make build_function_decl,
19076	build_var_decl, build_function_tdecl and build_class_tdecl
19077	automatically add the created decl to their context, and then
19078	update the properties of the resulting member decl later, just
19079	like what we do in the DWARF reader.
19080
190812015-09-21  Dodji Seketeli <dodji@redhat.com>
19082
19083	Add new test functions
19084	* include/abg-fwd.h (is_function_decl, is_decl, is_namespace)
19085	(is_scope_decl): Declare new function overloads.
19086	* src/abg-ir.cc (is_function_decl, is_decl, is_namespace)
19087	(is_scope_decl): Define them.
19088
190892015-09-21  Dodji Seketeli <dodji@redhat.com>
19090
19091	Constify some diff-utils functor operators
19092	* include/abg-diff-utils.h (deep_ptr_eq_functor::operator()): Make
19093	the overloads be const.
19094
190952015-09-16  Dodji Seketeli <dodji@redhat.com>
19096
19097	Support source_location_not_in and source_location_not_regexp suppressions
19098	* include/abg-ini.h (enum property_value::value_kind): Add a
19099	LIST_PROPERTY_VALUE kind.
19100	(class {list_property_value, list_property}): Declare new types.
19101	(is_list_property, is_list_property_value): Declare new functions.
19102	* src/abg-ini.cc (struct list_property_value::priv): Define new
19103	type.
19104	(list_property_value::{list_property_value, get_content,
19105	set_content, as_string}): Define new member functions.
19106	(is_list_property_value): Define new function.
19107	(struct list_property::priv): Define new type.
19108	(list_property::{list_property, get_value, set_value,
19109	handle_escape}): Define new member functions.
19110	(is_list_property): Define new function.
19111	(read_context::buf_): New data member.
19112	(read_context::{peek, get, put_back, good, eof, read_string,
19113	read_list_property_value}): New member functions.
19114	(read_context::read_next_char): Use the new read_context::{get,
19115	good, eof} member function, rather than using the input stream
19116	directly.
19117	(read_context::{skip_white_spaces, skip_comments,
19118	skip_white_spaces_or_comments, read_property_name,
19119	read_function_name, read_function_argument,
19120	read_function_call_expr, read_property_value,
19121	read_tuple_property_value, read_section_name, read_section}):
19122	Adjust to use the new member functions of read_context rather than
19123	using the input stream directly.
19124	(read_context::read_string_property_value): Likewise.  Use the new
19125	read_context::read_string() method.
19126	(read_context::{read, write}_property): Support reading list_property.
19127	* include/abg-comparison.h
19128	(type_suppression::{get_source_locations_to_keep,
19129	set_source_locations_to_keep,
19130	set_source_location_to_keep_regex_str,
19131	get_source_location_to_keep_regex_str}): Add new member functions.
19132	* src/abg-comparison.cc
19133	(type_suppression::priv::{source_location_to_keep_,
19134	source_location_to_keep_regex_str_,
19135	source_location_to_keep_regex_}): Add new data members.
19136	(type_suppression::priv::{g,s}et_source_location_to_keep_regex):
19137	Define new member functions.
19138	(type_suppression::{g,s}et_source_locations_to_keep): Define new
19139	member functions.
19140	(type_suppression::{g,s}et_source_location_to_keep_regex_str):
19141	Likewise.
19142	(type_suppression::suppresses_type): Support
19143	"source_location_not_regexp" and "source_location_not_in"
19144	properties of suppression specifications.
19145	(read_type_suppression): Likewise. Also adjust to the fact that
19146	ta tuple property value that is a list of strings is not a list
19147	property value.
19148	* doc/manuals/libabigail-concepts.rst: Add documentation for
19149	source_location_not_in and source_location_not_regexp.
19150	* tests/data/test-diff-suppr/libtest26-loc-suppr-v{0,1}.so: New
19151	binary test inputs.
19152	* tests/data/test-diff-suppr/test26-loc-suppr-{0,1,2}.suppr: New
19153	suppression specification test inputs.
19154	* tests/data/test-diff-suppr/test26-loc-suppr-report-{0,1,2,3}.txt:
19155	New test reference reports.
19156	* tests/data/test-diff-suppr/test26-loc-suppr-v{0,1}.cc: Source
19157	code of the test binary input above.
19158	* tests/data/test-diff-suppr/test26-loc-suppr.h: Likewise.
19159	* tests/data/Makefile.am: Add the new test material to source
19160	distribution.
19161	* tests/test-diff-suppr.cc (in_out_specs): Add the new test inputs above.
19162
191632015-09-16  Dodji Seketeli <dodji@redhat.com>
19164
19165	Pass simple property data by reference
19166	* include/abg-ini.h (simple_property::{simple_property,
19167	set_value}): Pass the value shared pointer by reference.
19168	* src/abg-ini.cc (simple_property::{simple_property, set_value):
19169	Pass the value shared pointer by reference.
19170
191712015-09-15  Dodji Seketeli <dodji@redhat.com>
19172
19173	Make string_ends_with() allow long suffixes
19174	* src/abg-tools-utils.cc (string_ends_with): Allow suffixes of the
19175	same size as the input string.
19176
191772015-09-13  Dodji Seketeli <dodji@redhat.com>
19178
19179	Add missing 'break' keyword in e_machine_to_string()
19180	* src/abg-dwarf-reader.cc (e_machine_to_string): Add missing
19181	'break' keywords in switch/case statement.
19182
191832015-09-09  Dodji Seketeli <dodji@redhat.com>
19184
19185	Fix compilation warnings in abipkgdiff.cc
19186	* tools/abipkgdiff.cc (package::erase_extraction_directory)
19187	(extract_rpm, extract_deb, extract_tar)
19188	(erase_created_temporary_directories_parent): Check the return
19189	value of the system() function.
19190	(extract_package): Add necessary white space.
19191
191922015-09-09  Dodji Seketeli <dodji@redhat.com>
19193
19194	Fix spurious errors in the install-man-and-info-doc target
19195	* doc/manuals/Makefile.am (install-man-and-info-doc): Don't check
19196	for abidiff.info, that thing doesn't exist.  Rather, check for
19197	abigail.info.  Use gzip -f in case the zipped file exists already.
19198
191992015-09-09  Dodji Seketeli <dodji@redhat.com>
19200
19201	Compare qualified name in decl_base comparison operator
19202	* src/abg-ir.cc (equals): In the overload for decl_base, compare
19203	qualified names, not just names.
19204	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
19205
192062015-09-08  Dodji Seketeli <dodji@redhat.com>
19207
19208	Fix a stupid typo in function sorting code
19209	* src/abg-comparison.cc (function_comp::operator()): Fix a typo
19210	preventing the proper sorting of function name when their
19211	declarator names are equal.  Oops.
19212	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
19213
192142015-09-08  Dodji Seketeli <dodji@redhat.com>
19215
19216	Update manual for abipkgdiff
19217	* doc/manuals/abipkgdiff.rst: Say we support tarballs and plain
19218	directories.
19219
192202015-09-07  Dodji Seketeli <dodji@redhat.com>
19221
19222	Adjust {s,g}et_show_stats() to use a reference
19223	* include/abg-dwarf-reader.h ({s,g}et_show_stats): Use a reference
19224	to the reader.
19225	* tools/abidiff.cc (main): Adjust.
19226	* tools/abidw.cc (main): Likewise.
19227
192282015-09-07  Dodji Seketeli <dodji@redhat.com>
19229
19230	Use cache type hash values only after type canonicalization is done
19231	*when* we request that hash value.  If we are computing the hash value
19232	of struct list itself, then the temporary value of "struct list" is
19233	zero.  But then once we are done computing the hash value of "struct
19234	list", that value becomes non-zero.
19235	Hence, the hash value of a type depends on when that value is
19236	computed.
19237	But then if we want to cache that hash value and re-use it later,
19238	which value should we cache?  Definitely not the zero value!
19239	So in other words, we can use (and thus cache) the hash value of a
19240	given type T only after the hash values of all types which use T have
19241	been computed.
19242	To satisfy that condition, we decide to use the (cached) hash value of
19243	each type only after we've computed all the hash values of all types
19244	of the system.
19245	So, during type canonicalization, when a type T is canonicalized, this
19246	patch stores the hash value of T.  But then it's only when all types
19247	are canonicalized that the hashing code is allowed to re-use the
19248	cached value of types.
19249	This fixes the issues of spurious type differences introduced when the
19250	same type was read either from DWARF or from abixml.  Those
19251	differences where introduced by differences in the order of hashing
19252	types which sub-types refer to themselves. The patch also updates
19253	regression tests accordingly.
19254	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Before we
19255	read debug info and build the IR, set a flag in the environment
19256	saying that type canonicalization isn't finished yet.  But then,
19257	after type canonicalization is done, flip that flag to say that
19258	type canonicalization is done.
19259	* src/abg-reader.cc (read_corpus_from_input): Likewise.
19260	* src/abg-ir.cc (type_base::get_canonical_type_for): Once a type
19261	has been canonicalized, cache its hash value.
19262	* src/abg-hash.cc (type_base::dynamic_hash::operator()): If type
19263	canonicalization has been done and if the type has a cached value,
19264	use that one.
19265	* tests/data/test-read-dwarf/test2.so.abi: Adjust.
19266	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
19267	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
19268	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
19269	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
19270	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
19271	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
19272	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
19273
192742015-09-07  Dodji Seketeli <dodji@redhat.com>
19275
19276	Introduce the concept of environment
19277	* include/abg-ir.h: Adjust note about memory management.
19278	(class environment): Declare new class.
19279	(translation_unit::translation_unit): Take an environment in
19280	parameter.
19281	(translation_unit::{g,s}et_environment): Declare new member
19282	functions.
19283	(type_or_decl_base::{g,s}et_environment): Likewise.
19284	(type_or_decl_base::{get_cached_hash_value,
19285	set_cached_hash_value}): Change the name of
19286	decl_base::peek_hash_value() and decl_base::set_hash() here into
19287	these and move them here.
19288	(type_or_decl_base::hashing_started): Move
19289	decl_base::hashing_started() here.
19290	({g,s}et_environment_for_artifact): Declare new functions.
19291	(class decl_base): Move member functions hashing_started(),
19292	peek_hash_value() and set_hash() on to the type_or_decl_base base
19293	class.
19294	(scope_decl::scope_decl): Initialize the virtual member
19295	type_or_decl_base().
19296	(type_decl::{get_void_type_decl,
19297	get_variadic_parameter_type_decl}): Remove these static member
19298	functions.  They are now non-static member functions of the new
19299	environment type.
19300	* src/abg-ir.cc (class environment_setter): New internal class.
19301	(get_canonical_types_map): Remove.  This now becomes a member
19302	function of the environment type.
19303	(class usage_watchdog): Remove.
19304	(usage_watchdog_{s,w}ptr): Remove these typedefs.
19305	(get_usage_watchdog_wptr, ref_usage_watchdog)
19306	(maybe_cleanup_type_system_data): Remove these functions.
19307	(translation_unit::priv::usage_watchdog_): Remove data member.
19308	(translation_unit::priv::env_): New data member.
19309	(translation_unit::priv::priv): Take an environment and initialize
19310	the new env_ data member.  Do not initialize the removed
19311	usage_watchdog_.
19312	(translation_unit::translation_unit): Take an environment
19313	parameter.
19314	(translation_unit::get_global_scope): Set the environment of a new
19315	global scope.
19316	(translation_unit::{g,s}et_environment): New accessors.
19317	(translation_unit::bind_function_type_life_time): Set the
19318	environment of the function type.
19319	(struct environment::priv): New class.
19320	(environment::{environment, ~environment, get_canonical_types_map,
19321	get_variadic_parameter_type_decl, canonicalization_is_done}): New
19322	member functions.
19323	(struct type_or_decl_base::priv): New class.
19324	(type_or_decl_base::{type_or_decl_base, hashing_started,
19325	get_cached_hash_value, set_cached_hash_value, set_environment,
19326	get_environment, traverse}): New member functions.
19327	({s,g}get_environment_for_artifact): New functions.
19328	(decl_base::priv::{hash_, hashing_started}): Remove.
19329	(decl_base::priv::priv): Adjust.
19330	(decl_base::decl_base): In the copy constructor, initialize the
19331	virtual base type_or_decl_base.  Do not initialize hash_ and
19332	hashing_started data member that got removed.
19333	(decl_base::{hashing_started, peek_hash_value, set_hash}): Remove
19334	member functions.
19335	(strip_typedef): Set the environment of the new type which has its
19336	typedefs stripped off.  Adjust the call to type_or_void().
19337	(scope_decl::{add, insert}_member_decl): Set the environment of
19338	the new member decl to the environment of its scope.
19339	(synthesize_type_from_translation_unit)
19340	(synthesize_function_type_from_translation_unit): Set the
19341	environment for the newly synthesized type. Adjust calls to
19342	type_or_void().
19343	(type_or_void): Take an environment in parameter.  Get the void
19344	type from the environment.
19345	(get_canonical_types_map): Remove.
19346	(type_base::get_canonical_type_for): Get the canonical types map
19347	from the environment, not from a global variable.
19348	(type_decl::{get_void_type_decl,
19349	get_variadic_parameter_type_decl}): Remove.
19350	(pointer_type_def::pointer_type_def): Adjust call to type_or_void.
19351	(reference_type_def::reference_type_def): Likewise.
19352	(function_decl::parameter::get_pretty_representation): Get the
19353	variadic parameter type decl from the environment.
19354	(class_decl::priv::classes_being_compared_): Remove static data
19355	member.
19356	(class_decl::priv::{mark_as_being_compared,
19357	unmark_as_being_compared, comparison_started): Use the "classes
19358	being compared" map from the environment.
19359	(class_decl::base_spec::get_hash): Adjust.
19360	(keep_type_alive): Get the alive types array from the environment)
19361	not from a global variable anymore.
19362	(get_next_string): Put the counter in thread-local storage.
19363	* src/abg-hash.cc (scope_decl::hash::operator())
19364	(function_decl::hash::operator()): Do not handle caching (here).
19365	* include/abg-corpus.h (corpus::{g,s}et_environment): Declare new
19366	accessors.
19367	* src/abg-corpus.cc (corpus::priv::env): New data member.
19368	(corpus::priv::priv): Initialize it.
19369	(corpus::corpus):  Take an environment in parameter.
19370	(corpus::{g,s}et_environment): Define new member functions
19371	(corpus::add): Set the environment of the newly added translation
19372	unit, if it's not set already set.  In any case, assert that the
19373	translation unit must use the same environment as the corpus.
19374	* include/abg-dwarf-reader.h (create_read_context)
19375	(read_corpus_from_elf): Take an environment parameter.
19376	({s,g}et_debug_info_root_path, {s,g}et_environment): Declare new
19377	functions.
19378	* src/abg-dwarf-reader.cc (read_context::{env_,
19379	offline_callbacks_}): New data members.
19380	(read_context::read_context): Initialize them.
19381	(read_context::clear_per_translation_unit_data): Do not touch the
19382	void type declaration, it doesn't belong to the translation unit.
19383	(read_context::{env, offline_callbacks}): New accessors.
19384	(read_context::{create_default_dwfl}): New member function.
19385	(read_context::dwfl_handle): Add a setter overload.
19386	({s,g}et_debug_info_root_path): Define new accessors.
19387	(create_default_dwfl, create_dwfl_sptr, create_default_dwfl_sptr):
19388	Remove these.
19389	(build_translation_unit_and_add_to_ir): Adjust to pass the
19390	environment to the newly created translation unit.
19391	(build_function_decl): Adjust to pass the environment to the
19392	created function and parameter types.  Get variadic parameter type
19393	node from the current environment, not from a global variable.
19394	And do not try to canonicalize function types here.
19395	(read_debug_info_into_corpus): Set the environment of the newly
19396	created corpus.
19397	(build_ir_node_for_void_type): Get the void type node from the
19398	current environment, rather than from a global variable.
19399	(create_read_context): Take the environment in parameter.
19400	Create the default dwarf front end library handle using the new
19401	member function of the read context.  Set the current environment
19402	used by the reader.
19403	(read_corpus_from_elf): Take an environment in
19404	parameter. Overhaul.  This is now simpler.
19405	(has_alt_debug_info): Adjust the call to create_read_context() to
19406	make it pass an empty environment.
19407	* include/abg-fwd.h (class environment): Forward declare.
19408	* include/abg-reader.h (read_translation_unit_from_file)
19409	(read_translation_unit_from_buffer)
19410	(read_translation_unit_from_istream)
19411	(read_corpus_from_native_xml): Take an environment in parameter.
19412	* src/abg-reader.cc (read_context::m_env): New data member.
19413	(read_context::read_context): Initialize it.
19414	(read_context::{get_environment, set_environment}): New data
19415	member.
19416	(read_translation_unit): Set environment of the new translation
19417	unit.
19418	(read_corpus_from_input): Set the environment of the new corpus.
19419	(read_translation_unit_from_file)
19420	(read_translation_unit_from_buffer)
19421	(read_translation_unit_from_istream, read_corpus_from_native_xml):
19422	Take an environment in parameter.
19423	(build_function_parameter): Get variadic parameter type from the environment.
19424	* src/abg-comparison.cc (compute_diff): Add asserts in all the
19425	overloads to ensure that the artifact being compared come from the
19426	same environment.
19427	* tests/print-diff-tree.cc (main): Create an env for the ABI
19428	artifacts to use.
19429	* tests/test-abidiff.cc (main): Likewise.
19430	* tests/test-diff-dwarf.cc (main): Likewise.
19431	* tests/test-ir-walker.cc (main): Likewise.
19432	* tests/test-read-dwarf.cc (main): Likewise.
19433	* tests/test-read-write.cc (main): Likewise.
19434	* tools/abicompat.cc (main): Likewise.
19435	* tools/abidiff.cc (main): Likewise.
19436	* tools/abidw.cc (main): Likewise.
19437	* tools/abilint.cc (main): Likewise.
19438	* tools/abipkgdiff.cc (main): Likewise.
19439
194402015-09-07  Dodji Seketeli <dodji@redhat.com>
19441
19442	Fix redundant const qualifier stripping
19443	* include/abg-ir.h (operator&, operator~): Add overloaded bitwise
19444	operators for qualified_type_def::CV.
19445	* src/abg-ir.cc (operator&, operator~): Define them.
19446	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Fix
19447	comment.  If there are multiple qualifiers, only strip the const
19448	one.
19449	(build_ir_node_from_die): Once we've built a qualified type, if
19450	the 'const' qualifier is stripped, then add the new (stripped)
19451	type to the set of new types.
19452
194532015-09-05  Dodji Seketeli <dodji@redhat.com>
19454
19455	Fix wording in README
19456	* README: Fix wording.
19457
194582015-09-02  Dodji Seketeli <dodji@redhat.com>
19459
19460	Misc style fixes
19461	* src/abg-hash.cc (class_decl::hash::operator()): Remove some dead
19462	code.
19463	* src/abg-ir.cc (equals): In the overload for class_decl,
19464	re-indent.
19465
194662015-09-02  Dodji Seketeli <dodji@redhat.com>
19467
19468	Re-arrange some regression tests order
19469	* tests/Makefile.am: Run runtestreaddwarf and
19470	runtestcanonicalizetypes at the beginning.
19471
194722015-09-02  Dodji Seketeli <dodji@redhat.com>
19473
19474	Bug 18904 - Fix support for C++ rvalue references
19475	* src/abg-comparison.cc (reference_diff::has_changes): Just
19476	compare the references, rather than assuming that the change can
19477	only be on underlying types.
19478	(reference_diff::report): Describe lvalue/rvalue changes for
19479	references.
19480	* src/abg-ir.cc (reference_type_def::reference_type_def): Properly
19481	set the name for an rvalue reference.
19482	(equals): For references, compare lvalue-ness too.
19483	(reference_type_def::get_qualified_name): Properly set rvalue
19484	reference names.
19485	* tests/data/test-diff-filter/test30-pr18904-rvalueref-liba.so:
19486	New test input.
19487	* tests/data/test-diff-filter/test30-pr18904-rvalueref-libb.so:
19488	New test input.
19489	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
19490	New test reference output.
19491	* tests/data/Makefile.am: Add the new files to source
19492	distribution.
19493	* tests/test-diff-filter.cc (in_out_specs): Run the new tests.
19494
194952015-09-02  Dodji Seketeli <dodji@redhat.com>
19496
19497	More type degradation fixes (from DWARF to abixml)
19498	* include/abg-fwd.h (get_type_scope): Declare new function.
19499	* src/abg-hash.cc (var_decl::hash::operator()): Do not cache the
19500	hash because that can alter the hash computing of a larger type
19501	which embeds a var decl as a member declaration.  This is
19502	especially true if the var decl indirectly references the larger
19503	type.  The only way to cache the value of a var decl would be to
19504	wait after all canonical types have been computed.  We'd then seal
19505	all types.  After that sealing happens, we can cache var decls
19506	starting from the top-level ones.
19507	(function_decl::hash::operator()): Likewise.
19508	* src/abg-ir.cc (get_type_scope): Define new functions.
19509	* src/abg-reader.cc (read_is_declaration_only): Declare this
19510	function earlier.
19511	(typedef const_types_map_it): Adjust this to make it point to a
19512	map of string and vector of types, as opposed to a map to string
19513	and type as it was before.
19514	(typedef types_map_it): New typedef.
19515	(read_context::map_id_and_node): Map a type id to the last
19516	xmlNodePtr that represent a *declaration*.  That gives more leeway
19517	to the declaration resolution code to choose the right definition
19518	later.  Otherwise, there are cases where the wrong definition.  By
19519	wrong definition, I mean a definition that is different from the
19520	one chosen by the DWARF reading code, for a given declaration.
19521	Basically for a given ABI corpus, a type declaration resolve to
19522	the first definition seen in the corpus.
19523	(read_context::get_all_type_decls): Define new member function.
19524	(read_context::types_equal): Use qualified names only if both
19525	types have a scope.
19526	(read_context::key_type_decl): Now a given ID is associated to
19527	*all* the declarations and definition that have that ID.
19528	(read_translation_unit_from_input): Make sure the current corpus
19529	node points to the right node.
19530	(build_class_decl): Resolve class declarations to the first
19531	definition seen in the corpus.  Key a type decl before reading its
19532	members as a reading a member can request the current decl.  No
19533	need to try and canonicalize a member type, as build_class_decl()
19534	does that already.
19535	* tests/data/test-read-dwarf/test16-pr18904.so: New test binary
19536	input.
19537	* tests/data/test-read-dwarf/test16-pr18904.so.abi: New test
19538	output reference.
19539	* tests/test-read-dwarf.cc: Run the test above.
19540	* tests/data/Makefile.am: Add the new test input to source
19541	distribution.
19542	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
19543	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
19544	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
19545	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
19546
195472015-08-30  Dodji Seketeli <dodji@redhat.com>
19548
19549	Bug 18892 - type degradation from DWARF to abixml on libtsan.so
19550	* src/abg-reader.cc (read_context::maybe_canonicalize_type): Late
19551	canonicalize enum types.
19552	(build_enum_type_decl): Read the linkage name of the enum type.
19553	* src/abg-writer.cc (write_enum_type_decl): Emit the linkage name
19554	of the enum type.
19555	* tests/data/test-read-dwarf/test15-pr18892.so: New binary test
19556	input.
19557	* tests/data/test-read-dwarf/test15-pr18892.so.abi: New test
19558	output reference.
19559	* tests/data/Makefile.am: Add the new test inputs above to source
19560	distribution.
19561	* tests/test-read-dwarf.cc (in_out_specs): Run the two tests above.
19562
195632015-08-30  Dodji Seketeli <dodji@redhat.com>
19564
19565	Bug 18893 - type degradation from dwarf to abixml on libGLU.so
19566	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
19567	consider that virtual member functions disqualify a class from
19568	being declaration-only.
19569	* src/abg-hash.cc (var_decl::hash::operator()): Do not cache the
19570	result of hashing before we are done building the type of the
19571	var_decl.
19572	(function_decl::hash::operator()): Likewise, do not cache the
19573	result of hashing before we are done building the type of the
19574	function_decl.
19575	* src/abg-reader.cc (build_class_decl): Build the link between a
19576	class declaration and its definition.  If there are several
19577	definitions of a class in the corpus, keep just one.
19578	* src/abg-writer.cc (write_class_is_declaration_only): Emit the
19579	link between a class declaration and its definition.
19580	(write_class_decl): Emit a class declaration even if it has a
19581	definition.  The definition is going to be emitted
19582	separately.
19583	* tests/data/test-read-dwarf/test14-pr18893.so: New binary test
19584	input.
19585	* tests/data/test-read-dwarf/test14-pr18893.so.abi: New test
19586	reference output.
19587	* tests/data/Makefile.am: Add the new test input files to source
19588	distribution.
19589	* tests/test-read-dwarf.cc (in_out_specs): Run the new tests.
19590	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
19591	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
19592	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
19593	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
19594	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
19595	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
19596
195972015-08-30  Dodji Seketeli <dodji@redhat.com>
19598
19599	Use common canonicalization oracle when reading class type from dwarf
19600	* src/abg-dwarf-reader.cc (build_ir_node_from_die):
19601	(maybe_canonicalize_type): Move the specific logic that was in
19602	build_ir_node_from_die (for class types) here.
19603
196042015-08-30  Dodji Seketeli <dodji@redhat.com>
19605
19606	Fix crash in file type guessing
19607	* src/abg-tools-utils.cc (string_ends_with): Handle the case where
19608	the string suffix is longer than the string itself.
19609
196102015-08-29  Dodji Seketeli <dodji@redhat.com>
19611
19612	Bug 18894 - Fix representation of enumerators in abixml format
19613	* include/abg-ir.h (enum_type_decl::enumerator::get_value()):
19614	Change the type of this from size_t to ssize_t.
19615	* src/abg-ir.cc (enum_type_decl::enumerator::get_value): Do the
19616	same on the definition side.
19617	(non_canonicalized_subtype_detector::visit_begin): If a type
19618	refers to itself, late canonicalize it to have a similar hashing
19619	result as what the abixml reader does.
19620	* src/abg-reader.cc (build_enum_type_decl): Use ssize_t to read
19621	the value of enumerators.
19622	* tests/data/test-read-dwarf/test13-pr18894.so.abi: New test input.
19623	* tests/data/Makefile.am: Add the new test inputs above to source
19624	distribution.
19625	* tests/test-read-dwarf.cc (in_out_specs): Add new test inputs.
19626	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
19627	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
19628	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
19629	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
19630
196312015-08-29  Dodji Seketeli <dodji@redhat.com>
19632
19633	Detect vtable changes from member function changes
19634	* include/abg-ir.h (class_decl::{has_virtual_base, has_vtable}):
19635	Declare new member functions.
19636	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): New overload
19637	for function_decl_diff.
19638	(has_virtual_mem_fn_change): In the overload for diff*, support
19639	virtual member function changes detection for function_decl_diff*.
19640	* src/abg-comparison.cc (function_decl_diff::report): Detect and
19641	report changes to a vtable by looking a changes that can happen to
19642	a given member function.
19643	(corpus_diff::report): Detect and report changes to vtables by
19644	looking at changes change to member functions.
19645	* tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt:
19646	New text input.
19647	* tests/data/test-diff-dwarf/test29-vtable-changes-v{0,1}.cc: Source
19648	code of new test input binaries.
19649	* tests/data/test-diff-dwarf/test29-vtable-changes-v{0,1}.o: New
19650	test input binaries.
19651	* tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt:
19652	New text input.
19653	* tests/data/test-diff-dwarf/test30-vtable-changes-v{0,1}.cc: New
19654	test input.
19655	* tests/data/test-diff-dwarf/test30-vtable-changes-v{0,1}.o: New
19656	test input binaries.
19657	* tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt:
19658	New test input.
19659	* tests/data/test-diff-dwarf/test31-vtable-changes-v{0,1}.cc:
19660	Source code of new test input binary.
19661	* tests/data/test-diff-dwarf/test31-vtable-changes-v{0,1}.o: New
19662	test input binary.
19663	* tests/data/Makefile.am: Add the new test input files above to
19664	source distribution.
19665	* tests/test-diff-dwarf.cc (in_out_specs): Consume the new test
19666	inputs above.
19667
196682015-08-29  Dodji Seketeli <dodji@redhat.com>
19669
19670	Do not hash or compare virtual member functions as par of classes
19671	* src/abg-ir.cc (equals): When comparing two classes, do not
19672	compare their virtual member functions.
19673	* src/abg-hash.cc (class_decl::hash::operator()): Do not hash
19674	virtual member functions when hashing a class.
19675	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
19676
196772015-08-29  Dodji Seketeli <dodji@redhat.com>
19678
19679	Misc style fixes
19680	* src/abg-ir.cc (qualified_type_def::get_qualified_name): Fix
19681	typos in comments.
19682	(class_decl::member_class_template::operator==): Add comments.
19683	(operator==): Add comment for the overload of
19684	class_decl::member_class_template_sptr.
19685	(function_tdecl::operator==): Add comments.
19686
196872015-08-29  Dodji Seketeli <dodji@redhat.com>
19688
19689	Adjust many reference output for the non-regression test suite
19690	* tests/data/test-abidiff/test-enum0-report.txt: Adjust.
19691	* tests/data/test-abidiff/test-enum1-report.txt: Adjust.
19692	* tests/data/test-abidiff/test-qual-type0-report.txt: Adjust.
19693	* tests/data/test-abidiff/test-struct0-report.txt: Adjust.
19694	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
19695	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
19696	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
19697	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
19698	* tests/data/test-read-write/test17.xml: Adjust.
19699
197002015-08-29  Dodji Seketeli <dodji@redhat.com>
19701
19702	Make test-read-dwarf.cc and test-read-write.cc abidiff the ABIs
19703	* tests/test-read-dwarf.cc (main): Use abidiff to compare the
19704	input elf file with the XML emitted.  That should yield the empty
19705	set.
19706	* tests/test-read-write.cc (main): Likewise, use abidiff to
19707	compare the input abixml file with the one that is emitted.
19708
197092015-08-29  Dodji Seketeli <dodji@redhat.com>
19710
19711	Add a new --noout option to abidw
19712	* tools/abidw.cc (options::noout): New data member.
19713	(options::options): Initialize it.
19714	(display_usage): Add a usage string for the new option.
19715	(parse_command_line): Parse the new option.
19716	(main): If --noout is provided, do not emit the XML form.
19717	* doc/manuals/abidw.rst: Document the new option.
19718
197192015-08-29  Dodji Seketeli <dodji@redhat.com>
19720
19721	Add a --no-architecture option to abidiff
19722	* tools/abidiff.cc (options::no_arch): New data member.
19723	(options::options): Initialize it.
19724	(display_usage): Display a help string for the new options.
19725	(parse_command_line): Parse the new options.
19726	(main): If --no-architecture is provided, set the corpus
19727	architecture to "".
19728	* doc/manuals/abidiff.rst: Document the new options.
19729
197302015-08-29  Dodji Seketeli <dodji@redhat.com>
19731
19732	Read abixml as a whole file and fix lots discrepancies with dwarf
19733	* src/abg-reader.cc (class read_context): Move data member at
19734	the top of the class like what is done elsewhere in the code
19735	base.
19736	(read_context::m_corp_node): New data member.
19737	(read_context::read_context): Initialize it.
19738	(read_context::{get,set}_corpus_node): New accessors.
19739	(read_context::map_id_and_node): Accept that a node id previously
19740	defined is defined again.  In that case we just remember the first
19741	mapping id -> xml-node.  That seems to work for now.
19742	(read_context::get_translation_unit): Fix the logic.
19743	(read_context::m_wip_types_map): Rename
19744	read_context::m_wip_classes_map into this.
19745	(read_context::clear_wip_types_map): Rename
19746	read_context::clear_wip_classes into this.
19747	(read_context::mark_type_as_wip): Rename
19748	read_context::mark_class_as_wip into this.
19749	(read_context::unmark_type_as_wip): Rename
19750	read_context::unmark_type_as_wip into this.
19751	(read_context::is_wip_type): Rename read_context::is_wip_class
19752	into this.
19753	(read_context::types_equal): New member function.
19754	(read_context::clear_per_translation_unit_data): Do not clear
19755	anything anymore as the previous data that were per-tu are now
19756	per-corpus.
19757	(read_context::clear_per_corpus_data): Clear here the previous
19758	data that were per-tu.
19759	(read_context::maybe_canonicalize_type): Add a new force_delay
19760	flag that forces the type to be late-canonicalized.  Also force
19761	late-canonicalize references, pointers, qualified-type and typedef
19762	because they must be canonicalized once they've been added to
19763	their context; but then this function might be called too early,
19764	before they are added to their context.
19765	(read_context::type_id_new_in_translation_unit): Remove this
19766	member function.
19767	(read_translation_unit_from_input): Be able to either use the
19768	xmlTextReader interface, or get the current 'abi-instr' xml
19769	element node.  If using the xmlTextReader interface, use it to
19770	move to the 'abi-instr' node, expand it and then use that.  In
19771	either case, call read_translation_unit() with the 'abi-instr' xml
19772	element node.
19773	(read_translation_unit): Take an 'abi-instr' XML element in
19774	argument now, use that to read the translation unit, as opposed to
19775	using the xmlTextReader interface we where using before to walk
19776	the sub-tree of the abi-instr xml node.
19777	(read_context::get_scope_for_node): If the scope is a new
19778	translation unit, then build the new translation unit.
19779	(read_symbol_db_from_input): Take the function and variable symbol
19780	data bases, and read the current xml element node (do not use the
19781	xmlTextReader interface anymore) to populate the function and
19782	variable symbols.
19783	(read_elf_needed_from_input): Do not use the xmlTextReader
19784	interface anymore.  Rather, use the current xml element node, look
19785	for the 'elf-needed' xml element node and use it to populate the
19786	set of elf dependencies.
19787	(read_corpus_from_input): Rework to expand the contents of the
19788	corpus node and use the result, rather than just exclusively
19789	relying on the xmlTextReader interface.
19790	(build_function_parameter): Build a proper IR node for variadic
19791	parameters.  Build function type node *after* having built all the
19792	parameters IR, so that parameter indexing is the same as what is
19793	done in the DWARF reader.  Also, if the function is not being
19794	added to its context yet, then delay the canonicalizing of its
19795	type, just like what is done by the DWARF reader.
19796	(build_qualified_type_decl, build_pointer_type_def)
19797	(build_reference_type_def, build_enum_type_decl, build_type_decl):
19798	Adjust.  Do not enforce anymore that the ID of this type be new in
19799	the current TU.  Delay canonicalizing if the type is not being
19800	added to its context.  For typedefs, use an adapted way of
19801	checking the consistency of the underlying type.
19802	(build_array_type_def): Do not enforce anymore that the ID of this
19803	type be new in the current TU.  Support the fact that the array
19804	might not have any DW_AT_byte_size attribute.  Force late
19805	canonicalizing if the array is not being added to its context.
19806	(build_class_decl): Adjust.  Reuse the
19807	read_context::maybe_canonicalize_type() function rather than
19808	trying to determine locally when to canonicalize.
19809	(build_template_tparameter): Adjust
19810
198112015-08-29  Dodji Seketeli <dodji@redhat.com>
19812
19813	Fix handling of class declaration during DWARF reading
19814	*virtual* member functions, data members, base classes or a
19815	DW_AT_byte_size as being conditions for being defined.
19816	* src/abg-dwarf-reader.cc (read_context::decl_only_classes_map_):
19817	Remove this data member.
19818	(read_context::{declaration_only_classes_to_force_defined,
19819	schedule_declaration_only_class_for_forced_resolution}): Remove
19820	these member functions.
19821	(read_context::resolve_declaration_only_classes): Do not force
19822	resolution of class declaration.
19823	(build_class_type_and_add_to_ir): Do not schedule classes for
19824	forced-resolution when they are used as base classes.  The
19825	presence of a member function is not enough to make the class be
19826	defined.  It needs to be a virtual member function.
19827
198282015-08-28  Dodji Seketeli <dodji@redhat.com>
19829
19830	Fix important hashing issues
19831	* src/abg-hash.cc (class_decl::hash::operator()): Do not force
19832	base classes to have definitions anymore.  GCC and Clang (at
19833	least) some time emits debug info in which the definition of some
19834	base classes are missing, especially when those base classes have
19835	vtables.  In that case, the definition of the class might it's in
19836	the binary where the vtable is emitted, which might not be the
19837	binary we are looking at.  So let's relax the assertion we had
19838	here for base classes.  For hashing virtual member functions,
19839	directly walk the virtual member functions by looking at
19840	class_decl::get_virtual_mem_fns() rather than walking all
19841	member functions and looking for the virtual ones.  This is a
19842	speed optimization but it also helps during debugging.
19843
198442015-08-28  Dodji Seketeli <dodji@redhat.com>
19845
19846	Fix template comparison operators
19847	* include/abg-ir.h (function_tdecl::operator==): Introduce a new
19848	virtual member operator that takes a function_tdecl&.
19849	* src/abg-ir.cc
19850	(class_decl::member_function_template::operator==): Avoid the
19851	static cast in the overload for member_base.  In the overload for
19852	member_class_template, avoid infinite recursion.
19853	(function_tdecl::operator==): In the overload for decl_base, do
19854	not do the real work here in the overload for decl_base Rather,
19855	the real work is done in the new overload for function_tdecl, and
19856	all other overloads call that one.
19857
198582015-08-28  Dodji Seketeli <dodji@redhat.com>
19859
19860	Use size/alignment of class definition when requested on declaration
19861	* include/abg-ir.h (type_base::{set_size_in_bits,
19862	set_alignment_in_bits}): Make these member functions virtual.
19863	(class_decl::{set_size_in_bits, get_size_in_bits,
19864	get_alignment_in_bits, set_alignment_in_bits}): Declare these
19865	virtual member functions.
19866	* src/abg-ir.cc (class_decl::{set_size_in_bits, get_size_in_bits,
19867	get_alignment_in_bits, set_alignment_in_bits}): Define these
19868	virtual functions.
19869
198702015-08-28  Dodji Seketeli <dodji@redhat.com>
19871
19872	Fix type lookup algorithm
19873	* src/abg-ir.cc (find_next_delim_in_cplus_type): Define new static
19874	function.
19875	(fqn_to_components): Use the new function above to break up a
19876	fully qualified name into components, rather than the too simple
19877	string::find_first_of() we were using previously.
19878	(lookup_node_in_scope): If the found type (class) is a
19879	declaration-only and if it has a definition, then return it.
19880
198812015-08-26  Dodji Seketeli <dodji@redhat.com>
19882
19883	Make decl hashing always take qualified name into account
19884	* src/abg-hash.cc (decl_base::hash::operator()(const decl_base&)):
19885	Always hash the qualified name of the decl.
19886
198872015-08-26  Dodji Seketeli <dodji@redhat.com>
19888
19889	Accept base classes which types are compatible with class type
19890	* include/abg-fwd.h (is_compatible_with_class_type): Declare a new
19891	overload.
19892	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Rather
19893	than requiring that base classes be of class type, just require
19894	that they be compatible with class types.
19895	* src/abg-ir.cc (is_compatible_with_class_type): Define a new
19896	overload.
19897
198982015-08-26  Dodji Seketeli <dodji@redhat.com>
19899
19900	Harden function_decl::get_pretty_representation()
19901	* src/abg-ir.cc (function_decl::get_pretty_representation): Make
19902	sure the function type is a member function before calling
19903	get_member_function_is_{virtual,ctor,dtor,const}.
19904
199052015-08-25  Dodji Seketeli <dodji@redhat.com>
19906
19907	Don't cache type qualified name before canonicalization
19908	* src/abg-ir.cc (decl_base::{get_qualified_parent_name,
19909	get_qualified_name}): Use the qualified name cache only if the
19910	type is fully built, i.e, when its canonical type is present.
19911	(qualified_type_def::get_qualified_name): Likewise.
19912	(pointer_type_def::get_qualified_name): Likewise.
19913	(reference_type_def::get_qualified_name): Likewise.
19914	(array_type_def::get_qualified_name): Likewise.
19915
199162015-08-22  Dodji Seketeli <dodji@redhat.com>
19917
19918	Misc style cleanups
19919	* configure.ac: Fix some spelling typos.
19920	* src/abg-tools-utils.cc (guess_file_type): Fix indentation.
19921	* tests/test-diff-pkg.cc (int_out_specs): Add some vertical spaces
19922	for better legibility.
19923	* tools/abidiff.cc (main): Add a missing space.
19924	* tools/abipkgdiff.cc (extract_deb): Fix a typo in the comment.
19925
199262015-08-22  Dodji Seketeli <dodji@redhat.com>
19927
19928	Make abipkgdiff compare tar archives containing binaries
19929	* config.h.in (WITH_TAR): New configuration preprocessor macro.
19930	* configure.ac: Add a new --enable-tar option.  It's turned on
19931	automatically if the tar program is found in the PATH.  Adjust the
19932	build configuration report to add the tar archive support.
19933	* include/abg-tools-utils.h (string_ends_with): Declare new
19934	function.
19935	(enum file_type): Add a new FILE_TYPE_TAR enumerator.
19936	* src/abg-tools-utils.cc (string_ends_with): Define new function.
19937	(operator<<(ostream&, file_type)): Serialize the new FILE_TYPE_TAR
19938	enumerator.
19939	(guess_file_type): Detect UStar format file by reading its magic
19940	number.  Detect compressed tar files based on the file path
19941	extension.
19942	* tools/abipkgdiff.cc (extract_tar): Define new function.
19943	(extract_package): Handle tar packages.
19944	(main): Handle tar archives.
19945	* tools/abidiff.cc (main): Handle the new FILE_TYPE_TAR
19946	enumerator.
19947	* tools/abilint.cc (main): Likewise.
19948	* tests/data/test-diff-pkg/tarpkg-0-dir{1,2}.ta{,r,.bz2, gz}: New
19949	test input tarballs.
19950	* tests/data/test-diff-pkg/tarpkg-0-report-0.txt: New test output
19951	reference.
19952	* tests/data/Makefile.am: Add the new test data file above to
19953	source distribution.
19954	* tests/test-diff-pkg.cc (in_out_specs): Add new tests cases.
19955
199562015-08-22  Dodji Seketeli <dodji@redhat.com>
19957
19958	Misc style fixes in abipkgdiff
19959	* include/abg-tools-utils.h (enum file_type): Fix the comment for
19960	for the FILE_TYPE_DEB enumerator.
19961	* tools/abipkgdiff.cc (main): Fix the style of the conditions.
19962	Also, fix the text emitted.
19963
199642015-08-22  Dodji Seketeli <dodji@redhat.com>
19965
19966	Make abipkgdiff compare directories containing binaries
19967	* include/abg-tools-utils.h (enum file_type): Add a new
19968	FILE_TYPE_DIR enumerator.
19969	* src/abg-tools-utils.cc (operator<<(ostream&, file_type)):
19970	Support serialization of the new FILE_TYPE_DIR enumerator.
19971	(guess_file_type): Detect that the path given is a directory.
19972	* tools/abipkgdiff.cc (package::package): If the package is a
19973	directory, then set its extracted directory path to the path of
19974	the directory.
19975	(package::erase_extraction_directory): Do not erase the extraction
19976	directory if the package is a directory provided by the user.
19977	(extract_package): If the package is a directory provided by the
19978	user, then there is nothing to extract.
19979	(main): If the first package is a directory, then the second one
19980	should be a directory as well.
19981	* tools/abidiff.cc (main): Support directories as input.
19982	* tools/abilint.cc (main): Likewise.
19983	* tests/data/test-diff-pkg/dirpkg-0-dir{1,2}/libobj-v0.so: New
19984	binary test inputs.
19985	* test/data/test-diff-pkg/dirpkg-0-report-0.txt: New input test
19986	file.
19987	* tests/data/test-diff-pkg/dirpkg-1-dir{1,2}/obj-v0.cc: Source
19988	code of the binary test inputs above.
19989	* tests/data/Makefile.am: Add the new files above to the source
19990	distribution.
19991	* tests/test-diff-pkg.cc (in_out_specs): Add the new test input
19992	files above to the set of tests this harness has to run over.
19993
199942015-08-22  Dodji Seketeli <dodji@redhat.com>
19995
19996	[dwarf reader] Support reference types without explicit DW_AT_byte_size
19997	* src/abg-dwarf-reader.cc (build_reference_type): If the type DIE
19998	has no DW_AT_byte_size, assume the type size is the translation
19999	unit's address size.
20000	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
20001	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
20002
200032015-08-21  Dodji Seketeli <dodji@redhat.com>
20004
20005	[dwarf reader] Support pointer types without explicit DW_AT_byte_size
20006	* abg-dwarf-reader.cc (build_pointer_type_def): If the type DIE
20007	has no DW_AT_byte_size, assume the type size is the translation
20008	unit's address size.
20009	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
20010	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
20011
200122015-08-21  Dodji Seketeli <dodji@redhat.com>
20013
20014	make abipkgdiff compile with GCC 4.4.7
20015	* tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
20016	The string holding the dir name is no more __thread, as this won't
20017	compile with GCC 4.4.7
20018
200192015-08-21  Dodji Seketeli <dodji@redhat.com>
20020
20021	Misc style fixes
20022	* src/abg-dwarf-reader.cc (read_context::die_type_map): Fix typo
20023	in the comment.
20024	* src/abg-ir.cc (peel_typedef_type): Fix typo in the comment.
20025	* src/abg-reader.cc
20026	(read_context::perform_late_type_canonicalizing): Fix a type in
20027	the comment.
20028
200292015-08-21  Dodji Seketeli <dodji@redhat.com>
20030
20031	Make get_pretty_representation work on method types
20032	* include/abg-fwd.h (is_method_type): Declare new overloads for
20033	naked pointers.
20034	(get_method_type_name): Declare new functions.
20035	(get_pretty_representation): Declare new overloads for
20036	method_type.
20037	* src/abg-ir.cc (get_function_type_name): If the function type is
20038	a method type, handle it as such.
20039	(get_method_type_name): Define new functions.
20040	(get_pretty_representation): If the function type is a method
20041	type, handle it as such.
20042	(get_pretty_representation): Define new overloads for method_type
20043	and pointer/reference to method_type.
20044	(is_method_type): Add overloads for naked pointers.
20045
200462015-08-21  Dodji Seketeli <dodji@redhat.com>
20047
20048	Hash a class declaration the same as its definition
20049	* src/abg-hash.cc (class_decl::hash::operator()(const class_decl&)):
20050	If the class declaration has a definition, hash its definition
20051	instead.  Otherwise, if the class declaration has no definition,
20052	just return a zero hash, like what we were doing before.
20053	* src/abg-reader.cc (read_context::maybe_canonicalize_type): Do
20054	not early canonicalize method types because most of the time, when
20055	this function is called, the method hasn't been added to its
20056	parent class yet.  So wait until late before canonicalizing.
20057	* src/abg-writer.cc (write_class_is_declaration_only): Do not emit
20058	the "is-declaration-only" property if the declaration has a
20059	definition.
20060	(write_class_decl): If the class declaration has a definition,
20061	emit the definition instead.
20062	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
20063	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
20064	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
20065	* tests/data/test-read-write/test18.xml: Likewise.
20066	* tests/data/test-read-write/test20.xml: Likewise.
20067	* tests/data/test-read-write/test21.xml: Likewise.
20068
200692015-08-20  Dodji Seketeli <dodji@redhat.com>
20070
20071	Add a --stats to abidiff and abidw
20072	* include/abg-dwarf-reader.h (get_show_stats)
20073	(set_show_stats): New accessors for a new "show_stats" property of
20074	the dwarf reader context.
20075	* src/abg-dwarf-reader.cc: Include iostream to use std::cerr.
20076	(dwarf_reader::show_stats_): New data member.
20077	(dwarf_reader::dwarf_reader): Initialize it.
20078	(dwarf_reader::show_stats)
20079	(get_show_stats)
20080	(set_show_stats): Define new accessors.
20081	(dwarf_reader::die_type_map): Add const overload to this accessor.
20082	(dwarf_reader::lookup_type_from_die_offset): Make this accessor
20083	const.
20084	(dwarf_reader::add_late_canonicalized_types_stats): New member
20085	function.
20086	(dwarf_reader::perform_late_type_canonicalizing): Emit the
20087	statistics about late-canonicalized types if the user asked for
20088	it.
20089	* tools/abidiff.cc (options::show_stats): New data member.
20090	(options::options): Initialize it.
20091	(display_usage): Document it.
20092	(parse_command_line): Parse the new --stats option.
20093	(main): Create a dwarf reader context, set the show_stats to it
20094	and then use that context to read the corpora before diffing them.
20095	* tools/abidw.cc (options::show_stats): New data member.
20096	(options::options): Initialize it.
20097	(display_usage): Document it.
20098	(parse_command_line): Parse the new --stats option.
20099	(main): Set the show_stats to the dwarf reader context before
20100	using it.
20101	* doc/manuals/abidiff.rst: Update the manual.
20102	* doc/manuals/abidw.rst: Update the manual.
20103
201042015-08-19  Dodji Seketeli <dodji@redhat.com>
20105
20106	Canonicalize all types that got scheduled for late canonicalization
20107	* src/abg-dwarf-reader.cc
20108	(read_context::canonicalize_types_scheduled): Canonicalize all
20109	types scheduled for late canonicalization.
20110	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
20111	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
20112
201132015-08-19  Dodji Seketeli <dodji@redhat.com>
20114
20115	Propagate canonical type of a class definition to its declaration
20116	* src/abg-ir.cc: (canonicalize): Propagate the canonical type of
20117	the type definition to its declaration.
20118	(class_decl::set_definition_of_declaration): Likewise.
20119
201202015-08-19  Dodji Seketeli <dodji@redhat.com>
20121
20122	Make type_has_non_canonicalized_subtype() tighter
20123	* include/abg-fwd.h (is_typedef, is_pointer_type)
20124	(is_reference_type): Declare new overloads.
20125	(peel_typedef_type): Renamed get_typedef_underlying_type into
20126	this.
20127	(peel_pointer_type, peel_reference_type)
20128	(peel_typedef_pointer_or_reference_type): Declare new functions.
20129	* src/abg-ir.cc (peel_typedef_type): Renamed
20130	get_typedef_underlying_type into this.
20131	(is_typedef, is_pointer_type, is_reference_type): Define new
20132	overloads.
20133	(peel_pointer_type, peel_reference_type)
20134	(peel_typedef_pointer_or_reference_type): Define new functions.
20135	(non_canonicalized_subtype_detector::has_non_canonical_type_):
20136	Make the type of this data member be a type_base*, not a bool.
20137	This is so that we can return the first non-canonicalized subtype
20138	of the type we are looking at.
20139	(non_canonicalized_subtype_detector::non_canonicalized_subtype_detector):
20140	Adjust the data member initialization.
20141	(non_canonicalized_subtype_detector::visit_begin): Add an overload
20142	for function_decl*, to avoid looking into non-virtual member
20143	functions.
20144	In the overload for type_base*, peel typedefs, pointers and
20145	reference of each sub-type that has no canonical type, to see if
20146	refers to the type we are actually walking.  If yes, then keep
20147	going.
20148	(type_has_non_canonicalized_subtype): Return the non-canonicalized
20149	sub-type found.
20150	* src/abg-comparison.cc (type_suppression::suppresses_diff):
20151	Adjust for the get_typedef_underlying_type -> peel_typedef_type
20152	renaming.
20153
201542015-08-19  Dodji Seketeli <dodji@redhat.com>
20155
20156	Make decl_base::get_qualified_name() work when decl context changes
20157	* include/abg-ir.h (class decl_base): Make class scope_decl a
20158	friend of decl_base.
20159	(type_base::priv_): Make this protected, rather than private.
20160	* src/abg-ir.cc (scope_decl::add_member_decl)
20161	(scope_decl::insert_member_decl): Reset the cache of the result of
20162	decl_base::get_qualified_name().
20163	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
20164
201652015-08-18  Dodji Seketeli <dodji@redhat.com>
20166
20167	Bug 18844 - assert failure in abidw at abg-dwarf-reader.cc:6537
20168	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
20169	Schedule declaration-only class resolution before the class
20170	appears as usable as to other types being built.
20171	* tests/data/test-read-dwarf/test12-pr18844.so: Add a new binary
20172	test input.
20173	* tests/data/test-read-dwarf/test12-pr18844.so.abi: The reference
20174	ABI XML output for the binary above.
20175	* tests/data/Makefile.am: Add the new test inputs above to the
20176	source distribution.
20177	* tests/test-read-dwarf.cc (in_out_specs): Add the new test inputs
20178	above to the set of input this test harness has to run over.
20179
201802015-08-18  Dodji Seketeli <dodji@redhat.com>
20181
20182	Fix a little glitch in the test suite
20183	* test-read-dwarf.cc (in_out_specs): Emit the output of the test11
20184	to output/test-read-dwarf/test11-pr18828.so.abi, not
20185	output/test-read-dwarf/test10-pr18828.so.abi.
20186
201872015-08-18  Dodji Seketeli <dodji@redhat.com>
20188
20189	Escape XML property names that were not escaped before
20190	* src/abg-writer.cc (write_namespace_decl, write_typedef_decl)
20191	(write_var_decl): Escape the XML characters that are forbidden in
20192	XML properties, and that are emitted as value of the 'name'
20193	property.
20194
201952015-08-15  Dodji Seketeli <dodji@redhat.com>
20196
20197	Bug 18828 - Handle force-resolving of multiple declarations-only of the same type
20198	* src/abg-dwarf-reader.cc
20199	(read_context::resolve_declaration_only_classes): Accept that a
20200	class that needs to be force-resolved might have been declared
20201	several times.  In that case, some instances of that
20202	declaration-only class might have already been resolved (or
20203	completed).
20204	* tests/data/test-read-dwarf/test11-pr18828.so: New binary input.
20205	It comes from bug https://sourceware.org/bugzilla/show_bug.cgi?id=18828.
20206	* tests/data/test-read-dwarf/test11-pr18828.so.abi: The reference
20207	output for the binary above.
20208	* tests/data/Makefile.am: Add the test input files above to source
20209	distribution.
20210	* tests/test-read-dwarf.cc (in_out_specs): Add the test inputs
20211	above to the set of input this test harness has to run over.
20212
202132015-08-15  Dodji Seketeli <dodji@redhat.com>
20214
20215	Avoid declaring a type several times in the same TU in the XML format
20216	* src/abg-writer.cc (write_context::{record_type_id_as_emitted,
20217	record_type_as_emitted, type_id_is_emitted, type_is_emitted,
20218	clear_emitted_types_map}): New member functions.
20219	(write_context::m_emitted_type_id_map): New data member.
20220	(write_translation_unit): Clear the per-translation unit map of
20221	emitted types.  Do not emit a type that has already been emitted
20222	in this translation unit.
20223	(write_namespace_decl): Do not emit a type that has already been
20224	emitted in this translation unit.
20225	(write_type_decl, write_qualified_type_def)
20226	(write_pointer_type_def, write_reference_type_def)
20227	(write_array_type_def, write_typedef_decl, write_class_decl)
20228	(write_type_tparameter, write_template_tparameter): Record the
20229	type we've just written as having been written out.
20230	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust as
20231	duplicated declarations got removed.
20232
202332015-08-14  Dodji Seketeli <dodji@redhat.com>
20234
20235	Misc style fixes in the XMLABI writer
20236	* src/abg-writer.cc (write_context): Align data members.
20237	(write_translation_unit): Remove useless horizontal white spaces.
20238	(write_decl, write_qualified_type_def, write_pointer_type_def)
20239	(write_reference_type_def, write_array_type_def)
20240	(write_enum_type_decl, write_typedef_decl, write_class_decl)
20241	(write_type_tparameter): Use the *_sptr typedefs rather than the
20242	longer form of shared_ptr<sometype> in function signatures.
20243	(write_enum_type_decl): In this function in particular, indent a
20244	line properly.
20245
202462015-08-14  Dodji Seketeli <dodji@redhat.com>
20247
20248	Fix typos in abipkgdiff
20249	* tools/abipkgdiff.cc (display_usage): s/pompare/compare.  Give a
20250	better help message for --help.
20251	(extract_rpm): Insert a space after the path of the package being
20252	extracted, when emitting a verbose message.
20253
202542015-08-14  Dodji Seketeli <dodji@redhat.com>
20255
20256	Install the manpage for abipkgdiff
20257	* doc/manuals/Makefile.am (section1_manpages): Add abipkgdiff.1 to
20258	the set of manpages to be install into section 1.
20259
202602015-08-12  Dodji Seketeli <dodji@redhat.com>
20261
20262	Bug 18818 - abidw aborts on a class with a non-complete base class
20263	* src/abg-dwarf-reader.cc
20264	(read_context::decl_only_classes_to_force_defined_map_): New data
20265	member.
20266	(read_context::declaration_only_classes_to_force_defined): New
20267	accessors.
20268	(read_context::schedule_declaration_only_class_for_forced_resolution):
20269	New member function.
20270	(build_class_type_and_add_to_ir): If a base class is a
20271	declaration-only class then mark it as needing to be force-defined
20272	*if* it's still not defined at the end of the abi corpus loading.
20273	(read_context::resolve_declaration_only_classes): If
20274	declaration-only classes that need to force-defined are present
20275	and not defined (when we reach the end of the ABI corpus) then
20276	force-define them as empty classes.
20277	* tests/data/test-read-dwarf/test10-pr18818-gcc.so: New test
20278	binary input file.  This comes from a user binary submitted to bug
20279	https://sourceware.org/bugzilla/show_bug.cgi?id=18818.  The
20280	original URL to the binary is
20281	https://sourceware.org/bugzilla/attachment.cgi?id=8518.
20282	* tests/data/test-read-dwarf/test9-pr18818-clang.so: New binary
20283	input file.  This comes from the same bug report as above.  The
20284	original URL to the binary is
20285	https://sourceware.org/bugzilla/attachment.cgi?id=8511.
20286	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: New
20287	reference output file.
20288	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
20289	* tests/data/Makefile.am: Add the new files above to the source
20290	distribution.
20291	* tests/test-read-dwarf.cc (in_out_specs): Add the test inputs
20292	above the set of tests input this harness has to run over.
20293
202942015-08-14  Dodji Seketeli <dodji@redhat.com>
20295
20296	Update the abipkgdiff manual to say that .deb files are now supported
20297	* doc/manuals/abipkgdiff.rst: Say that .deb fiel are now supported
20298	by abipkgdiff.
20299
203002015-08-14  Dodji Seketeli <dodji@redhat.com>
20301
20302	Update comment about the supported formats in abipkgdiff
20303	* tools/abipkgdiff.cc: Now that .deb packages are supported, say
20304	it.
20305
203062015-08-14  Dodji Seketeli <dodji@redhat.com>
20307
20308	Make the support of RPM and DEB package formats conditional
20309	* config.h.in: Define WITH_DEB and WITH_RPM pre-processor macros.
20310	* configure.ac: Add --enable-{rpm,deb} switches.  Check for
20311	rpm2cpio and cpio programs, unless --disable-rpm was provided.  If
20312	they are found and if --enable-rpm=auto was provided, then
20313	consider that --enable-rpm=yes was provided.  In that case, set
20314	the WITH_RPM macro to 1.  Otherwise, undefine that macro.
20315	Similarly, check for dpkg unless --disable-deb was provided.  If
20316	it's found and if --enable-deb=auto was provided, consider that
20317	--enable-deb=yes was provided.  In that case, set the WITH_DEB
20318	macro to 1.  Otherwise, undefine that macro.  Define the
20319	ENABLE_RPM and ENABLE_DEB conditional automake variables, if the
20320	rpm resp. deb support is enabled.  Emit a notice about the rpm and
20321	deb features being enabled or not, at the end of the configure
20322	process.
20323	* tests/test-diff-pkg.cc: Include the config.h header.
20324	(in_out_spec): Guard rpm tests by the WITH_RPM macro.  Similarly,
20325	guard deb tests by the WITH_DEB macro.
20326	* tools/abipkgdiff.cc: Include the config.h header.
20327	(extract_rpm): Guard this function definition with the WITH_RPM
20328	macro.
20329	(extract_deb): Guard this function definition with the WITH_DEB
20330	macro.
20331	(extract_package): Guard the handling of rpm packages with the
20332	WITH_RPM macro and the handling of deb package with the WITH_DEB
20333	macro.  If a package not-support package format is encountered,
20334	emit an appropriate error message and error out.
20335
203362015-08-07  Matthias Klose <doko@debian.org>
20337
20338	Add support for .deb files to abipkgdiff
20339	* include/abg-tools-utils.h (file_type): Add FILE_TYPE_DEB.
20340	* tools/abipkgdiff.cc (extract_deb): New.
20341	(extract_package, main): Handle FILE_TYPE_DEB.
20342	* src/abg-tools-utils.cc (operator<<): Handle FILE_TYPE_DEB.
20343	(guess_file_type): Detect FILE_TYPE_DEB.
20344	* tools/abidiff.cc (main): Handle FILE_TYPE_DEB.
20345	* tools/abilint.cc (main): Handle FILE_TYPE_DEB.
20346	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a-dbgsym_2.4.0-1_amd64.ddeb:
20347	Input debian debug info package; to be compared by the test
20348	harness runtestdiffpkg.
20349	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64.deb:
20350	Input debian package; to be compared by the test harness
20351	runtestdiffpkg.
20352	* tests/data/test-diff-pkg/libsigc++-2.0-0v5-dbgsym_2.4.1-1ubuntu2_amd64.ddeb:
20353	Input debug info package
20354	* tests/data/test-diff-pkg/libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64.deb:
20355	Input debian package; to be compared by the test harness
20356	runtestdiffpkg.
20357	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt:
20358	Reference output for the comparison of the packages above.
20359	* tests/data/Makefile.am: Add the new files above to the source distribution.
20360	* tests/test-diff-pkg.cc (in_out_specs): Add the input packages
20361	above to the set of files to be compared by this test harness.
20362
203632015-08-14  Dodji Seketeli <dodji@redhat.com>
20364
20365	Add configure check for rm and mkdir used by abipkgdiff
20366	* configure.ac: Add configure checks for rm and mkdir used by
20367	abipkgdiff.
20368
203692015-08-14  Dodji Seketeli <dodji@redhat.com>
20370
20371	Fix a comment in configure.ac
20372	* configure.ac: Fix a comment.
20373
203742015-08-14  Dodji Seketeli <dodji@redhat.com>
20375
20376	Do not remove api and website source files by accident
20377	* doc/Makefile.am: Do not remove the entirety of the build dir of
20378	doxygen for the apidoc and the website as these can be also the
20379	source dirs.  Rather, remove that is under the html/ sub-directory
20380	of the build dir, as this is always generated by doxygen.
20381
203822015-08-13  Dodji Seketeli <dodji@redhat.com>
20383
20384	Add an abipkgdiff --fail-no-dbg command line option
20385	* tools/abipkgdiff.cc (options::fail_if_no_debug_info): New data
20386	member.
20387	(options::options): Initialize it.
20388	(display_usage): Document it.
20389	(compare): If the user asked for it, fail if the we couldn't file
20390	the debug info for the corpus files being compared.
20391
203922015-08-13  Dodji Seketeli <dodji@redhat.com>
20393
20394	Add -h and -d option shortcuts to abidw
20395	* tools/abidw.cc (display_usage): Added a documentation string.
20396	(parse_command_line): Parse the new -h and -d shortcuts.
20397	* doc/manuals/abidw.rst: Update the manual.
20398
203992015-08-13  Dodji Seketeli <dodji@redhat.com>
20400
20401	Add a -h option shortcut to abidiff
20402	* tools/abidiff.cc (display_usage): Add documentation for the new
20403	switch.
20404	(parse_command_line): Parse the -h option.
20405	* doc/manuals/abidiff.rst: Update the manual.
20406
204072015-08-13  Dodji Seketeli <dodji@redhat.com>
20408
20409	Add a -h shortcup to abipkgdiff --help
20410	* tools/abipkgdiff.cc (display_usage): Document the -h shortcut.
20411	(parse_command_line): Parse the -h shortcut to --help.
20412
204132015-08-09  Dodji Seketeli <dodji@redhat.com>
20414
20415	Bug 18791 - libabigail fails to read the output of abidw
20416	* src/abg-reader.cc (read_context::get_scope_for_node): Take an
20417	access_specifier output parameter to set the access specifier of
20418	the current node in its scope.  Update the function to set the
20419	access_specifier.
20420	(read_context::build_or_get_type_decl): Adjust to set the access
20421	specifier of the type we are building, in case it's a member type.
20422	* tests/data/test-abidiff/test-PR18791-v{0,1}.so.abi: New test input files.
20423	* tests/data/test-abidiff/test-PR18791-report0.txt: New test
20424	output reference.
20425	* tests/data/Makefile.am: Add the new test material to the source
20426	distribution.
20427	* tests/test-abidiff.cc (specs): Add the new test inputs to the set of
20428	input files this test harness has to run over.
20429
204302015-08-09  Dodji Seketeli <dodji@redhat.com>
20431
20432	Fix a thinko in language support de-serialization
20433	* src/abg-ir.cc (string_to_translation_unit_language): Fix
20434	thinko.  What was I thinking ...
20435
204362015-08-06  Dodji Seketeli <dodji@redhat.com>
20437
20438	Add --no-added-syms to abipkgdiff
20439	* tools/abipkgdiff.cc (options::show_added_syms): New data member.
20440	(options::options): Initialize it.
20441	(parse_command_line): Parse the new --no-added-syms option and set
20442	the options::show_added_syms flag accordingly.
20443	(display_usage): Add a help string for the new option.
20444	(set_diff_context_from_opts): Set the diff context according to
20445	the state of the new options::show_added_syms flag.
20446	* doc/manuals/abipkgdiff.rst: Add manual entry for the new
20447	--no-added-syms options.
20448	* tests/data/test-diff-pkg/test-rpm-report-5.txt: New test
20449	reference input file.
20450	* tests/data/Makefile.am: Add the new file above to source
20451	distribution.
20452	* tests/test-diff-pkg.cc (InOutSpec::prog_options): New data
20453	member.
20454	(in_out_specs): Adjust.  Add a new input to run the test again
20455	with --no-added-syms.
20456	(main): Adjust to pass the program options contained in
20457	InOutSpec::prog_options to abipkgdiff.
20458	fixup! Add --no-added-syms to abipkgdiff
20459
204602015-08-06  Dodji Seketeli <dodji@redhat.com>
20461
20462	Update diff stats when added symbols are removed from change report
20463	* include/abg-comparison.h (diff_context_wptr)
20464	(corpus_diff::diff_stats_sptr): New typedefs.
20465	(corpus_diff::diff_stats::diff_stats): Make this constructor take
20466	a diff_context_sptr.  Make the default constructor private.
20467	* src/abg-comparison.cc (corpus_diff::diff_stats::priv::ctxt_):
20468	New data member.  This is a weak pointer to a diff_context.
20469	(corpus_diff::diff_stats::priv::priv): Take a diff_context_sptr
20470	and initialize the weak pointer ctxt_ to it.
20471	(corpus_diff::diff_stats::priv::ctxt): New accessor to the
20472	diff_context hold by the diff_stats.
20473	(corpus_diff::diff_stats::{num_removed_func_filtered_out,
20474	num_added_func_filtered_out, num_removed_vars_filtered_out,
20475	num_added_vars_filtered_out, num_removed_func_syms_filtered_out,
20476	num_added_func_syms_filtered_out,
20477	num_removed_var_syms_filtered_out,
20478	num_added_var_syms_filtered_out}): If the user asked for the added
20479	[or removed] variables/functions/symbols to be ignored, the
20480	accessors for the number of filtered added/removed variables/functions/symbols
20481	return the total number of added/removed
20482	variables/functions/symbols; that is, say that *all* added/removed
20483	variables/functions/symbols got filtered out.
20484	(corpus_diff::priv::diff_stats_): Turn this data member into a
20485	[shared] pointer to diff_stats.
20486	(corpus_diff::priv::filters_and_suppr_applied_): Remove this data
20487	member.  Now that diff_stats_ is a pointer, we don't need this
20488	boolean anymore.
20489	(corpus_diff::apply_filters_and_suppressions_before_reporting):
20490	Adjust to the fact that filters_and_suppr_applied_ is gone, and
20491	that diff_stats_ is now a pointer.
20492	(corpus_diff::report): Control un-referenced added symbols
20493	reporting with
20494	diff_context::show_added_symbols_unreferenced_by_debug_info()
20495
204962015-07-31  Dodji Seketeli <dodji@redhat.com>
20497
20498	Make applying supp specs through pointer access look through typedefs
20499	* include/abg-comparison.h (type_suppression::suppresses_type):
20500	Declare new member function.
20501	(get_typedef_diff_underlying_type_diff): Declare new function.
20502	* include/abg-fwd.h (get_typedef_underlying_type): Likewise.
20503	* src/abg-comparison.cc (type_suppression::suppresses_type):
20504	Define new member function.
20505	(get_typedef_diff_underlying_type_diff): Define new function.
20506	(type_suppression::suppresses_diff): After looking through the
20507	different kind of access methods, use the new
20508	type_suppression::suppresses_type(), rather than doing lots of
20509	stuff ourselves here.  But then, if the suppression doesn't apply
20510	to the subjects of the diff, look through typedefs and try to
20511	apply the suppression again.
20512	* src/abg-ir.cc (get_typedef_underlying_type): Define new
20513	function.
20514	* tests/data/test-diff-suppr/libtest25-typedef-v{0,1}.so: New
20515	binary test input files.
20516	* tests/data/test-diff-suppr/test25-typedef-v{0,1}.c: Source code
20517	for the binary test input files above.
20518	* tests/data/test-diff-suppr/test25-typedef-report-{0, 1}.txt: New test
20519	input files.
20520	* tests/data/test-diff-suppr/test25-typedef-suppr-0.txt: New test
20521	input file.
20522	* tests/data/Makefile.am: Add the new test material to the source
20523	distribution.
20524	* tests/test-diff-suppr.cc (in_out_specs): Add the test inputs
20525	above to the set of test inputs this harness has to run over.
20526
205272015-07-24  Dodji Seketeli <dodji@redhat.com>
20528
20529	Make abipkgdiff erase the *parent* directory of temporary files
20530	* tools/abipkgdiff.cc
20531	(erase_created_temporary_directories_parent): New static function.
20532	(compare): After comparison, erase the temporary parent directory
20533	as well.
20534
205352015-07-24  Dodji Seketeli <dodji@redhat.com>
20536
20537	Make the name of the removed variable section be consistent
20538	* src/abg-comparison.cc (corpus_diff::report): Introduce the
20539	section of removed variables with the string "Removed variable",
20540	rather than with the string "Deleted variable".
20541	* tests/data/test-abicompat/test2-var-removed-report-0.txt: Adjust.
20542	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-0.txt: Likewise.
20543	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise.
20544	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-5.txt: Likewise.
20545
205462015-07-24  Dodji Seketeli <dodji@redhat.com>
20547
20548	Consider default symbol versions when computing added/removed fns/vars
20549	* include/abg-corpus.h (corpus::{lookup_function_symbol,
20550	lookup_variable_symbol}): Take a elf_symbol::version object,
20551	rather than a string representing the version.  Add an overload
20552	that takes an elf_symbol.
20553	* src/abg-corpus.cc (find_symbol_by_version): New static function.
20554	(corpus::{lookup_function_symbol, lookup_variable_symbol}): Take a
20555	elf_symbol::version object, rather than a string representing the
20556	version.  Add an overload that takes an elf_symbol.  If the looked
20557	up symbol has no version and if the corpus contains a symbol with
20558	the same name and with a default version, then return that latter
20559	symbol if the corpus doesn't contain a symbol with the same name
20560	and empty version.
20561	* src/abg-comparison.cc
20562	(class_diff::ensure_lookup_tables_populated): Adjust.
20563	(corpus_diff::priv::ensure_lookup_tables_populated): Before
20564	deciding that a symbol has been added, if the symbol has a default
20565	version, make sure no symbol with the same name and without
20566	version was present in the former corpus.  Similarly, before
20567	deciding that a symbol has been removed, if the symbol has no
20568	version, make sure the latter corpus has no symbol with the same
20569	name and with a default version.
20570	* tests/data/test-diff-dwarf/test12-report.txt: Adjust.  The
20571	function should not be considered as added, because its symbol
20572	(and version) was already present in the former DSO.
20573
205742015-07-24  Dodji Seketeli <dodji@redhat.com>
20575
20576	Fix a thinko in removed variables detection
20577	* src/abg-comparison.cc
20578	(corpus_diff::priv::ensure_lookup_tables_populated): Once we have
20579	computed a set of potentially deleted variables that turned out to
20580	contain variables that were actually *NOT* deleted, really take
20581	these into account by removing these false positives from the set
20582	of deleted *variables*.  We were trying to delete these from the
20583	set deleted *functions*; woops, I guess this was a copy & paste
20584	error.
20585
205862015-07-24  Dodji Seketeli <dodji@redhat.com>
20587
20588	Fix logic of type_has_non_canonicalized_subtype()
20589	* src/abg-ir.cc (type_has_non_canonicalized_subtype): Once the
20590	type has been traversed, just test if the visitor has accumulated
20591	the 'has_non_canonical_type' property.
20592
205932015-07-24  Dodji Seketeli <dodji@redhat.com>
20594
20595	Fix style issues
20596	* include/abg-ir.h (struct ir_node_visitor): Fix the wording of
20597	the comment of this type.
20598	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Fix the
20599	filling of the text of the comment of the code that chooses to
20600	perform early canonicalizing.
20601
206022015-07-24  Dodji Seketeli <dodji@redhat.com>
20603
20604	Adding member type doesn't reset declaration-only-ness of a class
20605	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
20606	Adding a new member type shouldn't remove the
20607	declaration-only-ness of the class.
20608
206092015-07-22  Dodji Seketeli <dodji@redhat.com>
20610
20611	Extract all packages for a given run of abipkgdiff under the same temp dir
20612	* tools/abipkgdiff.cc (package::{<all data members>}): Make the
20613	data members be private.  Make their names end with an underscore.
20614	(package::extracted_package_parent_dir_path): Remove.
20615	(package::extracted_package_dir_path): Rename into
20616	package::extracted_dir_path_.
20617	(package::extracted_packages_parent_dir): New static member
20618	function, accessor.
20619	(package::package): Adjust to the new names of the data members.
20620	Call the new package::extracted_package_parent_dir() static member
20621	function to initial the package::extracted_dir_path_ data member.
20622	(package::{path, extracted_dir_path, type, is_debug,
20623	path_elf_file_sptr_map, debug_info_package}): New accessors for
20624	the data members.
20625	(package::{erase_extraction_directory,
20626	erase_extraction_directories}): Adjust.
20627	(erase_created_temporary_directories)
20628	(create_maps_of_package_content)
20629	(extract_package_and_map_its_content, prepare_packages, compare)
20630	(main): Adjust.
20631
206322015-07-22  Dodji Seketeli <dodji@redhat.com>
20633
20634	Add a --keep-tmp-files option to abipkgidff
20635	* tools/abipkgdiff.cc (options::keep_tmp_files): New data member.
20636	(options::options): Initialize it.
20637	(display_usage): Display a usage string for the new
20638	--keep-tmp-files option.
20639	(parse_command_line): Parse the new --keep-tmp-files option.
20640	(compare): Do not erase temporary directories if the users asked so.
20641	* doc/manuals/abipkgdiff.rst: Document the new --keep-tmp-files
20642	options.
20643
206442015-07-21  Dodji Seketeli <dodji@redhat.com>
20645
20646	Show linkage names in abipkgdiff output
20647	* doc/manuals/abipkgdiff.rst: Document the new --no-linkage-name
20648	options.
20649	* tools/abipkgdiff.cc (options::show_linkage_names): New data
20650	member.
20651	(options::options): Initialize it.
20652	(display_usage): Display a usage string for --no-linkage-name.
20653	(parse_command_line): Parse the --no-linkage-name option.
20654	(set_diff_context_from_opts): Set the diff context accordingly.
20655	* tests/data/test-diff-pkg/test-rpm-report-0.txt: Adjust.
20656
206572015-07-21  Dodji Seketeli <dodji@redhat.com>
20658
20659	Add --no-added-binaries to abipkgdiff
20660	* tools/abipkgdiff.cc (options::show_added_binaries): New data
20661	member.
20662	(options::options): Initialize it.
20663	(display_usage): Add a help string for --no-added-binaries.
20664	(parse_command_line): Parse the new --no-added-binaries option.
20665	(compare): Do not show added binaries if the user doesn't want to.
20666	* doc/manuals/abipkgdiff.rst: Document the new --no-added-binaries
20667	option.
20668
206692015-07-21  Dodji Seketeli <dodji@redhat.com>
20670
20671	make abipkgdiff return a proper exit code
20672	* tools/abipkgdiff.cc (compare): Return an instance
20673	abigail::tools_utils::abidiff_status, just like what we do in
20674	abidiff.
20675	* doc/manuals/abipkgdiff.rst: Document the new exit code.
20676
206772015-07-21  Dodji Seketeli <dodji@redhat.com>
20678
20679	Fix logic of determining if changes happened in abidiff
20680	* tools/abidiff.cc (main): Simplify the logic when determining if
20681	the comparison between two corpora yields worthwhile changes.
20682
206832015-07-21  Dodji Seketeli <dodji@redhat.com>
20684
20685	Add a new corpus_diff::has_net_changes() entry point
20686	* include/abg-comparison.h (corpus_diff::has_net_changes): Declare
20687	new member function.
20688	* src/abg-comparison.cc (corpus_diff::has_net_changes): Define it.
20689
206902015-07-20  Dodji Seketeli <dodji@redhat.com>
20691
20692	Fix type synthesis to fix abicompat weak mode
20693	* include/abg-fwd.h
20694	(synthesize_type_from_translation_unit): Declare new function.
20695	(synthesize_function_type_from_translation_unit): Make the
20696	translation_unit parameter non-const because the function needs to
20697	bind the life time of the synthesized function to the life time of
20698	the translation unit.  Make this function be a friend of
20699	abigail::ir::translation_unit.
20700	(synthesize_function_type_from_translation_unit):
20701	* src/abg-ir.cc (translation_unit::priv::synthesized_types_): New
20702	data member.
20703	(synthesize_type_from_translation_unit): Define new function.
20704	(synthesize_function_type_from_translation_unit): Make the
20705	translation_unit parameter non-const.  If the return is void, then
20706	take that in account carefuly.  Rather than just looking up the
20707	type of parameters and return value, synthesize them too,
20708	especially when they are qualified types.  Bind the life time of
20709	the synthesized function type to the lifetime of the translation
20710	unit.
20711	* tests/data/test-abicompat/test7-fn-changed-report-1.txt: New
20712	test reference output.
20713	* tests/test-abicompat.cc (in_out_spec): Run the harness on the
20714	exisiting test7-fn-changed-app and libtest7-fn-changed-libapp-v1
20715	but in weak mode this time.
20716
207172015-07-20  Dodji Seketeli <dodji@redhat.com>
20718
20719	Clean up the output of abicompat weak mode
20720	* tools/abicompat.cc (perform_compat_check_in_weak_mode): Remove
20721	disgracious vertical spaces in the wording.
20722	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust.
20723	* tests/data/test-abicompat/test6-var-changed-report-0.txt: Adjust.
20724
207252015-07-20  Sinny Kumari <sinny@redhat.com>
20726
20727	Display --suppressions|--suppr option in help usage
20728	* tools/abipkgdiff.cc (display_usage): Print
20729	--suppressions|--suppr <path> option in help usage
20730
207312015-07-20  Dodji Seketeli <dodji@redhat.com>
20732
20733	Fix computing the set of exported functions and varible symbols
20734	* src/abg-ir.cc (elf_symbol::get_name_and_version_from_id): Always
20735	set the version and name of the symbol.
20736	*  src/abg-corpus.cc
20737	(corpus::exported_decls_builder::{keep_wrt_id_of_fns_to_keep,
20738	keep_wrt_id_of_vars_to_keep}): Reset the symbol name *and* version
20739	before passing it.  This is redundant with the fix in
20740	elf_symbol::get_name_and_version_from_id() that always set the
20741	symbol name and version now, but I felt it makes it easier to
20742	understand the fix overall.
20743	* tests/data/test-abicompat/libtest7-fn-changed-libapp-v{0,1}.so:
20744	New test input binaries.
20745	* tests/data/test-abicompat/test7-fn-changed-app: Likewise.
20746	* tests/data/test-abicompat/test7-fn-changed-{app, libapp-v0,
20747	libapp-v1}.c: Source code of the binary test inputs above.
20748	* * tests/data/test-abicompat/test7-fn-changed-{libapp-v0,
20749	libapp-v1}.h: Likewise.
20750	* tests/data/test-abicompat/test7-fn-changed-report-0.txt: Test
20751	input.
20752	* tests/data/Makefile.am: Add the new test material above to
20753	source distribution.
20754	* tests/test-abicompat.cc (int_out_specs): Add the test inputs
20755	above to the set of inputs this test harness has to run over.
20756
207572015-07-20  Dodji Seketeli <dodji@redhat.com>
20758
20759	Fix the wording of description of abipkgdiff.cc again
20760	* tools/abipkgdiff.cc: Fix the wording again.
20761
207622015-07-20  Dodji Seketeli <dodji@redhat.com>
20763
20764	Remove use of tmpnam from abilint
20765	* include/abg-tools-utils.h (abigail::tools_utils::temp_file):
20766	Declare new type.
20767	(abigail::tools_utils::temp_file_sptr): New typedef.
20768	* src/abg-tools-utils.cc (temp_file::priv): Define new type.
20769	(temp_file::{temp_file, is_good, get_path, get_stream, create}):
20770	Define new member functions.
20771	* tools/abilint.cc (main): Do not use tmpnam anymore.  Use the new
20772	abigail::tools_utils::temp_file type instead.
20773
207742015-07-20  Dodji Seketeli <dodji@redhat.com>
20775
20776	Try to avoid a race condition when abipkgdiff extracts packages.
20777	* include/abg-tools-utils.h (get_random_number)
20778	(get_random_number_as_string): Declare new functions.
20779	* src/abg-tools-utils.cc (get_random_number)
20780	(get_random_number_as_string): Define them.
20781	* tools/abipkgdiff.cc
20782	(package::extracted_package_parent_dir_path): New data member.
20783	(package::package): Initialize
20784	package::extracted_package_parent_dir_path to
20785	<tmpdir>/<randomname>, with randomname being a random number
20786	represented as a string.
20787	(extract_rpm): Make sure to create a hierarchy of directories, not
20788	just a directory.
20789
207902015-07-19  Dodji Seketeli <dodji@redhat.com>
20791
20792	Fix the wording of the description of the abipkgdiff.cc file
20793	* tools/abipkgdiff.cc: Fix the wording of the description.
20794
207952015-07-19  Dodji Seketeli <dodji@redhat.com>
20796
20797	Fix the --suppressions manual doc for abidiff
20798	* doc/manuals/abidiff.rst: Talk about the --suppr shortcut of the
20799	--suppressions option.
20800
208012015-07-19  Dodji Seketeli <dodji@redhat.com>
20802
20803	On changed fn, show symbol info when name is different from linkage name in C
20804	* include/abg-ir.h (translation_unit::language): New enum type.
20805	(translation_unit::{get_language, set_language}): Declare new
20806	accessors.
20807	(translation_unit_language_to_string)
20808	(string_to_translation_unit_language, is_c_language)
20809	(is_cplus_plus_language): Declare new functions.
20810	* src/abg-ir.cc (translation_unit::priv::language_): New data
20811	member.
20812	(translation_unit::priv::language_): Initialize it.
20813	(translation_unit::{set_language, get_language}): Define new
20814	member functions.
20815	(translation_unit_language_to_string)
20816	(string_to_translation_unit_language, is_c_language)
20817	(is_cplus_plus_language): Define new functions.
20818	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): New
20819	static function.
20820	(build_translation_unit_and_add_to_ir): Read the language of the
20821	translation unit.
20822	* src/abg-comparison.cc (corpus_diff::report): When reporting a
20823	change in a function sub-type, if we are in C language translation
20824	unit, if the function name is different from its linkage name,
20825	even if the symbol doesn't have any alias, show symbol
20826	information.
20827	* src/abg-reader.cc (read_translation_unit_from_input): Read the
20828	'language' property of the translation unit, if present.
20829	* src/abg-writer.cc (write_translation_unit): Write the 'language'
20830	property to the translation unit, if present.
20831	* tests/data/test-read-dwarf/test0.abi: Adjust for the new
20832	'language' property of the 'abi-instr' element.
20833	* tests/data/test-read-dwarf/test1.abi: Likewise.
20834	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
20835	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
20836	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
20837	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
20838	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
20839	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
20840	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
20841	Likewise.
20842
208432015-07-19  Dodji Seketeli <dodji@redhat.com>
20844
20845	Add --suppressions to abipkgdiff
20846	* tools/abipkgdiff.cc (options::suppressions): New data member.
20847	(set_diff_context_from_opts): Set the suppression specifications
20848	provided by the user to the diff context.
20849	(parse_command_line): Parse the --suppressions and --suppr command
20850	line options.
20851	* doc/manuals/abipkgdiff.rst: Document the --suppressions and
20852	--suppr options.
20853
208542015-07-18  Dodji Seketeli <dodji@redhat.com>
20855
20856	Support file_name_regexp and soname_regexp in supp-specs
20857	* include/abg-comparison.h (suppression_base::priv_): Make this
20858	pimpl member protected.
20859	(suppression_base::set_file_name_regex_str)
20860	(get_file_name_regex_str, get_soname_regex_str)
20861	(set_soname_regex_str): Declare new accessors.
20862	(function_suppression::{suppresses_function,
20863	suppresses_function_symbol}): Take a diff_context_sptr.
20864	(variable_suppression::{suppresses_variable,
20865	suppresses_variable_symbol}): Take a diff_context_sptr.
20866	* src/abg-comparison.cc
20867	(suppression_base::priv::{file_name_regex_str_, file_name_regex_,
20868	soname_regex_str_, soname_regex_}): Define new data members.
20869	(suppression_base::priv::get_file_name_regex_str)
20870	(get_soname_regex_str): Define new member functions.
20871	(suppression_base::set_file_name_regex_str)
20872	(get_file_name_regex_str, get_soname_regex_str)
20873	(set_soname_regex_str): Define new accessors.
20874	(type_suppression::suppresses_diff): Evaluate file_name_regexp and
20875	soname_regexp.
20876	(read_type_suppression): Fix the reading of the "label" property.
20877	Read the file_name_regexp and soname_regexp properties.
20878	(function_suppression::{suppresses_function,
20879	suppresses_function_symbol): Take a diff_context_sptr parameter.
20880	Evaluate file_name_regexp and soname_regexp properties.
20881	(function_suppression::suppresses_diff): Adjust for the api change
20882	of function_suppression::suppresses_function().
20883	(read_function_suppression): Read the file_name_regexp and
20884	soname_regexp properties.
20885	(variable_suppression::suppresses_variable): Take a
20886	diff_context_sptr parameter and evaluate file_name_regexp and
20887	soname_regexp properties.
20888	(variable_suppression::suppresses_variable_symbol): Likewise.
20889	(variable_suppression::suppresses_diff): Adjust for the api change
20890	of variable_suppression::suppresses_variable().
20891	(read_variable_suppression): Read the file_name_regexp and
20892	soname_regexp properties.
20893	(function_is_suppressed, variable_is_suppressed): Take a
20894	diff_context_sptr parameter.
20895	(corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars):
20896	Adjust.
20897	* doc/manuals/libabigail-concepts.rst: Document file_name_regexp
20898	and soname_regexp in the manual.
20899	* tests/data/test-diff-suppr/libtest24-soname-v{0,1}.so: New test
20900	binary input files.
20901	* tests/data/test-diff-suppr/test24-soname-report-{0,4}.txt: New
20902	test input files.
20903	* tests/data/test-diff-suppr/test24-soname-suppr-{0,4}.txt:
20904	Likewise.
20905	* tests/data/test-diff-suppr/test24-soname-v{0,1}.cc: Source code
20906	of the binary test input files above.
20907	* tests/data/Makefile.am: Add the new test material above to
20908	source distribution.
20909	* tests/test-diff-suppr.cc (in_out_spec): Add the new test inputs
20910	to the set of tests this harness has to run over.
20911
209122015-07-18  Dodji Seketeli <dodji@redhat.com>
20913
20914	Fix possible crash in suppression evaluation
20915	* src/abg-comparison.cc (type_suppression::suppresses_diff): When
20916	evaluating the reach_kind property, do not crash on diff nodes
20917	that are pointer_diff or reference_diff to something else but a
20918	type diff.
20919
209202015-07-17  Dodji Seketeli <dodji@redhat.com>
20921
20922	Fix '--' being rendered as '-' in html manuals
20923	* doc/manuals/abicompat.rst: Quote options as verbatim.
20924	* doc/manuals/abidiff.rst: Likewise.
20925	* doc/manuals/abidw.rst: Likewise.
20926	* doc/manuals/abilint.rst: Likewise.
20927	* doc/manuals/abipkgdiff.rst: Likewise.
20928
209292015-07-17  Dodji Seketeli <dodji@redhat.com>
20930
20931	Fix the --verbose option
20932	* tools/abipkgdiff.cc (compare): In the elf_file overload, do not
20933	emit an error message when a binary could not be analyzed unless
20934	--verbose was provided.
20935
209362015-07-16  Dodji Seketeli <dodji@redhat.com>
20937
20938	Cleanup the output for added/removed binaries
20939	* tools/abipkgdiff.cc (compare): In the overload for packages,
20940	indent the content of the "Removed binaries" and "Added binaries"
20941	paragraphs.
20942
209432015-07-16  Dodji Seketeli <dodji@redhat.com>
20944
20945	Avoid redundant diff report messages by default.
20946	* tools/abipkgdiff.cc (options::show_redundant_changes): New data
20947	member.
20948	(options::options): Initialize it.
20949	(display_usage): Add a help string for the --redundant command
20950	Line option.
20951	(set_diff_context_from_opts): New static function.
20952	(compare): Take the options variable.  Set the diff context from
20953	the options, especially if we should show redundant changes or
20954	not.  Use that diff context when comparing ABIs.
20955	(parse_command_line): Parse the new --redundant command line
20956	switch.
20957	* doc/manuals/abipkgdiff.rst: Document the new --redundant option.
20958
209592015-07-16  Dodji Seketeli <dodji@redhat.com>
20960
20961	Support comparing only shared libraries
20962	* tools/abipkgdiff.cc (options::compare_dso_only): New data
20963	member.
20964	(options::options): Initialize it.
20965	(display_usage): Display a little help string for it.
20966	(create_maps_of_package_content): Take the option variable.  Do
20967	not compare non-dso files if the --dso-only option was provided.
20968	(extract_package_and_map_its_content, prepare_packages, compare):
20969	Take the option variable.
20970	(parse_command_line): Parse the new --dso-only option.
20971	* doc/manuals/abipkgdiff.rst: Add documentation for the new
20972	--dso-only option.
20973
209742015-07-15  Dodji Seketeli <dodji@redhat.com>
20975
20976	Comment functions and types of abipkgdiff
20977	* src/abg-dwarf-reader.cc (get_soname_of_elf_file): Better wording
20978	of the apidoc of this function.
20979	* tools/abipkgdiff.cc (verbose, elf_file_paths): Add apidoc for
20980	these global variables.
20981	(struct options, ): Add apidoc for these types.
20982	(options::{erase_extraction_directory,
20983	erase_extraction_directories}, display_usage, extract_rpm)
20984	(erase_created_temporary_directories, extract_package)
20985	(file_tree_walker_callback_fn, compare)
20986	(create_maps_of_package_content)
20987	(extract_package_and_map_its_content, prepare_packages, compare)
20988	(parse_command_line): Add apidoc for these functions.
20989
209902015-07-16  Sinny Kumari <sinny@redhat.com>
20991
20992	Add regression tests for abipkgdiff tool
20993	* tests/Makefile.am: Build new runtestdiffpkg regression test
20994	* tests/data/Makefile.am: Add new test files to source
20995	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64.rpm:
20996	Test data for abipkgdiff tool
20997	* tests/data/test-diff-pkg/dbus-glib-0.80-3.fc12.x86_64.rpm: Likewise
20998	* tests/data/test-diff-pkg/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm:
20999	Likewise
21000	* tests/data/test-diff-pkg/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm:
21001	Likewise
21002	* tests/data/test-diff-pkg/test-rpm-report-0.txt: Expected test output
21003	* tests/data/test-diff-pkg/test-rpm-report-1.txt: Likewise
21004	* tests/data/test-diff-pkg/test-rpm-report-2.txt: Likewise
21005	* tests/data/test-diff-pkg/test-rpm-report-3.txt: Likewise
21006	* tests/data/test-diff-pkg/test-rpm-report-4.txt: Likewise
21007	* tests/test-diff-pkg.cc: New file
21008
210092015-07-15  Dodji Seketeli <dodji@redhat.com>
21010
21011	Add a manual for abipkgidiff
21012	* doc/manuals/abipkgdiff.rst: New manual file.
21013	* doc/manuals/libabigail-tools.rst: Refer to the manual for
21014	abipkgdiff.
21015	* doc/manuals/Makefile.am: Add the new manual file to source
21016	distribution.
21017	* doc/manuals/conf.py: Add the manual for abipkgdiff to section 1.
21018
210192015-07-15  Dodji Seketeli <dodji@redhat.com>
21020
21021	Comment functions and types of abipkgdiff
21022	* src/abg-dwarf-reader.cc (get_soname_of_elf_file): Better wording
21023	of the apidoc of this function.
21024	* tools/abipkgdiff.cc (verbose, elf_file_paths): Add apidoc for
21025	these global variables.
21026	(struct options, ): Add apidoc for these types.
21027	(options::{erase_extraction_directory,
21028	erase_extraction_directories}, display_usage, extract_rpm)
21029	(erase_created_temporary_directories, extract_package)
21030	(file_tree_walker_callback_fn, compare)
21031	(create_maps_of_package_content)
21032	(extract_package_and_map_its_content, prepare_packages, compare)
21033	(parse_command_line): Add apidoc for these functions.
21034
210352015-07-15  Dodji Seketeli <dodji@redhat.com>
21036
21037	Various style fixes
21038	* abipkgdiff.cc (get_soname_of_elf_file): Fix spacing.
21039	* tools/abipkgdiff.cc (elf_file_paths): Make this global variable
21040	static.
21041	(extract_rpm): Rename parameter pkg_path name into package_path.
21042
210432015-07-15  Dodji Seketeli <dodji@redhat.com>
21044
21045	Remove the last direct fiddling with ELF from abipkgdiff.cc
21046	* abg-dwarf-reader.h (enum elf_type): Move this declaration here
21047	from abipkgdiff.cc to here.
21048	(get_type_of_elf_file): Declare this new function.
21049	(get_soname_from_elf): Change this to take a path to the elf file
21050	rather than a Elf* handler.  So now to use this, the user doesn't
21051	have to get her hand dirty with elfutils.
21052	* src/abg-dwarf-reader.cc (get_soname_from_elf): Change this to
21053	take a path to the elf file rather than a Elf* handler.
21054	(elf_file_type): Move this static function here, from
21055	abipkgdiff.cc.
21056	(get_type_of_elf_file): New function.  This has been factorized
21057	out of create_maps_of_package_content() in abipkgdiff.cc.
21058	* tools/abipkgdiff.cc (class elf_file): Changed struct elf_file
21059	into this.  Make the default constructor private.
21060	(elf_file::elf_file): Change the constructor to just take the path
21061	to the elf_file.  The base name, soname and elf file type are now
21062	computed from the path file, in the constructor.  This makes
21063	instantiation much much easier from the point of view of the user
21064	of the type.
21065	(struct abi_diff): Renamed struct abi_changes into this.
21066	(abi_diff::has_changes): Define new member function.
21067	(abi_diffs): Remove this global variable.
21068	(package::package): Remove the elf file type from the set of
21069	parameters of this constructor.  Rather, compute that elf file
21070	type from the path to the elf file, in the constructor.  Again,
21071	this eases the use of the type.
21072	(elf_file_type): Remove this from here, as it got moved to
21073	abg-dwarf-reader.cc.
21074	(compare): In the elf_file overload, return true if the comparison
21075	yields ABI changes.
21076	(create_maps_of_package_content): Do not fiddle with elfutils
21077	stuff here.  Rather, just instantiate elf_file and the analyzing
21078	of the file magically happens.
21079	(compare): Make the package overload take an abi_diff as output
21080	parameter, rather than populating a global variable in return.
21081	(compare): Add an other overload for package that doesn't take the
21082	abi_diff as output parameter and write it in terms of the previous
21083	one.
21084	(main): Adjust as the instantiation of package is now simpler.
21085
210862015-07-08  Dodji Seketeli <dodji@redhat.com>
21087
21088	Add a --verbose option to abipkgdiff
21089	* tools/abipkgdiff.cc (verbose): Add a new global variable.
21090	(package::erase_extraction_directory, extract_rpm, compare)
21091	(create_maps_of_package_content): Emit verbose information.
21092	(parse_command_line): Parse the --verbose option.
21093
210942015-07-08  Dodji Seketeli <dodji@redhat.com>
21095
21096	Use the library to implement ABI comparison in abipkgdiff
21097	* tools/abipkgdiff.cc (compare): In the overload for elf_file, use
21098	abigail::comparison::compute_diff() to compare the ABI of two
21099	corpora.  The corpora themselves is read using
21100	abigail::dwarf_reader::read_corpus_from_elf().  This cleans up the
21101	output of the tool because nothing is emitted to standard output
21102	if the two ABI corpora compares equal.
21103
211042015-07-08  Dodji Seketeli <dodji@redhat.com>
21105
21106	Fix several string passing issues in abipkgdiff.cc
21107	* tools/abipkgdiff.cc (elf_file::elf_file): Pass the strings by
21108	reference.  Also, change the order of the parameters; all the
21109	strings are passed first, then the elf_type is passed last.
21110	(package::package): Likewise, pass the strings by reference, not
21111	by value.
21112	(create_maps_of_package_content): Adjust for the change in
21113	parameters order of elf_file::elf_file.
21114
211152015-07-08  Dodji Seketeli <dodji@redhat.com>
21116
21117	Only try to compare DSOs or executable binaries in abipkgdiff
21118	* tools/abipkgdiff.cc (compare): In the overload for packages,
21119	only compare binaries that are DSO or executable.
21120
211212015-07-08  Dodji Seketeli <dodji@redhat.com>
21122
21123	Avoid flushing the output stream in abipkgdiff.cc
21124	* tools/abipkgdiff.cc (extract_package)
21125	(create_maps_of_package_content, compare, main): Avoid flushing
21126	the output stream arbitrarily.
21127
211282015-07-08  Sinny Kumari <sinny@redhat.com>
21129
21130	Move get_soname() function to abg-dwarf-reader.h/cc
21131	* include/abg-dwarf-reader.h (get_soname_from_elf): Declare
21132	new function
21133	* src/abg-dwarf-reader.cc (get_soname_from_elf): Define new
21134	function
21135	* tools/abipkgdiff.cc (get_soname): Remove function
21136	(pkg_diff): Call get_soname_from_elf() instead of get_soname()
21137
211382015-07-07  Dodji Seketeli <dodji@redhat.com>
21139
21140	Important organizational changes in abipkgdiff.cc
21141	* Avoid using shortened names when the line is not too long.
21142	* Use shared_ptr when possible.
21143	* When a function parameter is not meant to be nil, do not pass it
21144	as a pointer; rather, pass it as a reference.
21145	* Avoid doing things that can "fail" in a destructor; e.g, spawning
21146	a process.  Also, it's not common practise to cleanup a resource in a
21147	type destructor, when that resource has not been created in one of the
21148	member functions of the type.  It eases maintenance when resource
21149	creation and cleanup is performed at the same logical level.
21150	* tools/abipkgdiff.cc (option::package{1,2}): Rename
21151	option::pkg{1,2} into this, to increase legibility.
21152	(option::debug_package{1,2}): Likewise, rename
21153	option::debug_pkg{1,2} into this.
21154	(elf_file::~elf_file): Do not "delete this" in a destructor.  This
21155	leads to double free.  It's when someone invokes the "delete"
21156	operator on a pointer to the object that the destructor of the
21157	object is executed automatically; so if in the destructor the
21158	delete operator is called again, bad things are going to happen.
21159	As the destructor is now empty, remove it altogether.
21160	(elf_file_sptr): New typedef for shared_ptr<elf_file>.
21161	(package::path): Rename package::pkg_path into this, for better
21162	legibility.
21163	(package::extracted_package_dir_path): Rename
21164	package::extracted_pkg_dir_path into this.
21165	(package::type): Rename package::pkg_type into this.
21166	(package::is_debug_info): Rename package::is_debuginfo_pkg into
21167	this.
21168	(package::path_elf_file_sptr_map): Rename
21169	package::dir_elf_files_map into this because this is a map of
21170	path -> elf_file_sptr.  Also, now the value of the map element is
21171	a elf_file_sptr, no more an elf_file*.
21172	(package::debug_info_package): Rename package::debuginfo_pkg into
21173	this.
21174	(package::package): Adjust for the changes above.
21175	(package::{erase_extraction_directory,
21176	erase_extraction_directories}): New member functions.
21177	(elf_file_paths): Renamed dir_elf_files_path into this.
21178	(erase_created_temporary_directories)
21179	(create_maps_of_package_content)
21180	(extract_package_and_map_its_content, prepare_packages): New
21181	static functions.
21182	(get_soname, elf_file_type, extract_rpm): Make this static.
21183	(extract_package): Take a const package& rather than a
21184	package_sptr to express that the function really expects a non-nil
21185	object by reference (not by copy) and that the object won't be
21186	modified.  Using a reference removes the possibility that the
21187	pointer could be nil, causing crashes in the code where
21188	parameter->something was used.  Now only parameter.something can
21189	be used, so no crash possible there.  This is more solid code.
21190	(file_tree_walker_callback_fn): Rename callback() into this.  It
21191	makes the code more legible and kind of 'self-documented'.  At
21192	least you get the hint that this is a callback function for some
21193	file tree walking (ftw) function. Adjust for the relevant names
21194	renaming above.
21195	(compare): Rename compute_abidiff into this; again, this increases
21196	legibility; at least at the point of use of this function.  Rename
21197	compare_package() into a an overload of compare() as well.
21198	compare_package() used to take a vector of packages.  It was hard
21199	to guess by reading the signature of the function, which element
21200	of the vector is expected to be the first vector of the
21201	comparison, which one is to be the second, etc.  Now, this
21202	function takes two packages, named first_package and
21203	second_package.  That is more "typed"; that is, the signature is
21204	more meaningful.  Greater legibility, hopefully.  And in the body
21205	of the function, the debug information packages are now accessed
21206	using the package::debug_info_package data member.  Again, this is
21207	less surprising, I believe.  Also, explicitly erase the temporary
21208	files that were created during this comparison.  All this
21209	simplifies the logic of this function, hopefully.
21210	(parse_command_line): Make this static.  Add new --d1 and --d2
21211	command line switches that are shortcuts of --debug-info-pkg1 and
21212	--debug-info-pkg2.  Adjust this function for the relevant name
21213	changes above.  Make lines be shorter than 80 characters.
21214	(main): Do not create any vector of parameters anymore as the
21215	compare_packages() function don't take any vector of parameter
21216	anymore.  Just instantiate first_package and second_package now.
21217	Adjust for the relevant name changes above.  This hopefully
21218	simplifies the logic of this function.
21219
212202015-07-06  Dodji Seketeli <dodji@redhat.com>
21221
21222	Wording fixes in abipkgdiff.cc
21223	* tools/abipkgdiff.cc (extract_package): Renamed extract_pkg into
21224	this because shortening 'package' into 'pkg' provides no
21225	legibility improvement.
21226	(compare_packages): Renamed pkg_diff() into this, so that the name
21227	of the function starts with a verb, and the shortened 'pkg' word
21228	is renamed back to the 'package' word.  This way, the code almost
21229	reads like normal English sentences with verbs and complement,
21230	thus enhancing legibility and easing latter maintenance.
21231	(main): Adjust for the changes above.
21232
212332015-07-06  Dodji Seketeli <dodji@redhat.com>
21234
21235	Re-indent tools/abipkgdiff.cc
21236	* tools/abipkgdiff.cc: Re-indent the file properly and fix some
21237	white spacing here and there.
21238
212392015-07-06  Dodji Seketeli <dodji@redhat.com>
21240
21241	Some slight typo and wording fixes in abipkgdiff
21242	* tools/abipkgdiff.cc (display_usage): Fixed the typo in
21243	'bi-pacakge.'  Also, refer to 'package', not to 'bi-package' that
21244	is surprising to the user at first.
21245	(compute_abidiff): Shorten the size of the introductory line.
21246
212472015-07-03  Dodji Seketeli <dodji@redhat.com>
21248
21249	Remove names of unused variables in callback()
21250	* tools/abipkgdiff.cc (callback): Remove the name of parameters st
21251	and flag.
21252
212532015-07-03  Dodji Seketeli <dodji@redhat.com>
21254
21255	Remove useless const from the declaration of extract_rpm()
21256	* tools/abipkgdiff.cc (extract_rpm): Remove useless const qualifier.
21257
212582015-07-03  Dodji Seketeli <dodji@redhat.com>
21259
21260	End all branches of get_soname() finish with a return statement
21261	* tools/abipkgdiff.cc (get_soname): Have just one return statement
21262	at the end of this function.
21263
212642015-07-03  Dodji Seketeli <dodji@redhat.com>
21265
21266	Fix abipkgdiff compilation issues
21267	* tools/abipkgdiff.cc (elf_file::elf_file): Initialize data member
21268	in the same order as they were declared.
21269	(package::package): Likewise.
21270
212712015-06-19  Sinny Kumari <sinny@redhat.com>
21272
21273	Exclude processing symlink, display removed/added binaries between two packages
21274	* tools/abipkgdiff.cc (abi_changes): Declare new struct
21275	(callback): Exclude symbloic link file for durther processing
21276	(compute_abidiff): Consider SONAME if exists as key in map instead
21277	of binary name, else binary as key. Also, print if removed/added
21278	binaries exist between packages
21279
212802015-06-09  Sinny Kumari <sinny@redhat.com>
21281
21282	Stdout ABI changes if same binary found in both package
21283	* tools/abipkgdiff.cc (compute_abidiff): New function
21284	tools/abipkgdiff.cc (pkg_diff): Iterate through list of binaries
21285	in both package directory and call compute_diff function if
21286	same binary found in both file.
21287	tools/abipkgdiff.cc (main): Also consider debug-info directories
21288	avilable in debu-info packages.
21289
212902015-06-02  Sinny Kumari <sinny@redhat.com>
21291
21292	Save ELF files, their type and SONAME if exist for extracted packages
21293	* tools/abipkgdiff.cc (elf_type): Declare new enum
21294	(elf_file): Declare new struct
21295	(package): Add member variable dir_elf_files_map
21296	(get_soname): Define new function
21297	(elf_file_type): Define new function
21298	(extract_rpm): Iterate over extracted directory files
21299	and filter ELF binary files along with their information
21300	like name, soname, elf_type and save in dir_elf_files_map
21301
213022015-05-26  Sinny Kumari <sinny@redhat.com>
21303
21304	Extract packages(RPMs) into temporary directories for further processing
21305	* tools/abipkgdiff.cc (struct package): Declare new struct
21306	(package_sptr): Declare shared_ptr for struct package
21307	(extract_rpm): Define new fuction to extract rpm package
21308	(extract_pkg): Define new function to extract pacakge
21309	(pkg_diff): Define new function to get ABI diff between
21310	two packages
21311	(main): Create new object of type pacakge for each binary
21312	and debuginfo pacakge passed in commandline options
21313
213142015-05-21  Sinny Kumari <sinny@redhat.com>
21315
21316	Guess RPM file type
21317	* include/abg-tools-utils.h (file_type): Added member
21318	FILE_TYPE_RPM and FILE_TYPE_SRPM
21319	(operator<<): New function declaration.
21320	* src/abg-tools-utils.cc (file_type): Detect RPM and
21321	SRPM file type
21322	(operator<<): New function definition
21323	* tools/abidiff.cc (main): Check for RPM and SRPM
21324	file type as well.
21325	* tools/abilint.cci (main): Check for RPM and SRPM file
21326	type as well.
21327	* tools/abipkgdiff.cc (main): Check whether input files
21328	to abipkgdiff are valid RPM files or not.
21329
213302015-05-19  Sinny Kumari <sinny@redhat.com>
21331
21332	Initial skeleton of abipkgdiff tool
21333	* tools/Makefile.am: Include abipkgdiff.cc in compilation and
21334	generate abipkgdiff binary.
21335	* tools/abipkgdiff.cc: New file
21336
213372015-07-16  Dodji Seketeli <dodji@redhat.com>
21338
21339	Support reading binaries that do not have a symbol table
21340	* src/abg-dwarf-reader.cc
21341	(read_context::find_symbol_table_section): Allow returning a nil
21342	pointer to symbol table.
21343	(read_context::lookup_elf_symbol_from_index): Return an empty elf
21344	symbol if we got a nil pointer to symbol table.
21345	(read_context::load_symbol_maps): If no symbol table is found then
21346	consider that the symbol maps loading failed.
21347
213482015-07-16  Dodji Seketeli <dodji@redhat.com>
21349
21350	Remove extra vertical spaces from diff report
21351	* src/abg-comparison.cc (class_diff::report): Do not emit new line
21352	unless the diff is to be reported.
21353	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Adjust.
21354	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Adjust.
21355	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt:
21356	: Adjust.
21357
213582015-07-09  Dodji Seketeli <dodji@redhat.com>
21359
21360	Allow null types in type comparison again
21361	* src/abg-comparison.cc (compute_diff): In the overload of
21362	type_base_sptr accept nil types.
21363
213642015-07-08  Dodji Seketeli <dodji@redhat.com>
21365
21366	Handle the life time of the map of canonical types
21367	* include/abg-ir.h (type_base::canonical_types_map_type): Move
21368	this typedef into abg-ir.cc and out of the type_base namespace.
21369	(type_base::get_canonical_types_map): Likewise.
21370	* src/abg-ir.cc (canonical_types_map_type): New typedef that got
21371	moved here from type_base::canonical_types_map_type.
21372	(get_canonical_types_map): Likewise got moved here from
21373	type_base::get_canonical_types_map.  Made static in the process.
21374	(class usage_watchdog): New type.
21375	(usage_watchdog_sptr, usage_watchdog_wptr): New typedefs.
21376	(get_usage_watchdog, get_usage_watchdog_wptr, ref_usage_watchdog)
21377	(maybe_cleanup_type_system_data): New static functions.
21378	(translation_unit::priv::usage_watchdog_): Add new data member.
21379	(translation_unit::priv::priv): Get a reference on the usage
21380	watchdog.
21381	(translation_unit::priv::~priv): If the usage watchdog says that
21382	the type system is not used, then cleanup the global data
21383	logically owned by the type system.
21384	* include/abg-dwarf-reader.h (read_corpus_from_elf): Make this
21385	return a corpus and set the status by reference using a parameter.
21386	* src/abg-dwarf-reader.cc (read_corpus_from_elf): Implement the
21387	above.
21388	* include/abg-reader.h (read_translation_unit_from_file)
21389	(read_translation_unit_from_buffer)
21390	(read_translation_unit_from_istream): Remove the overloads that do
21391	not return a translation_unit_sptr and that pass it as a
21392	parameter.  Only keep the overloads that return a
21393	translation_unit_sptr, forcing users of the API to own a proper
21394	reference on the resulting translation_unit pointer.  That is
21395	important to handle the life time of the global data of the type
21396	system that need to be cleared when the last translation unit is
21397	de-allocated.
21398	* src/abg-reader.cc (read_translation_unit_from_input): Make this
21399	return a translation_unit_sptr.
21400	(read_translation_unit_from_file)
21401	(read_translation_unit_from_buffer)
21402	(read_translation_unit_from_istream): Remove the overloads that do
21403	not return a translation_unit_sptr and that pass it as a
21404	parameter.  Only keep the overloads that return a
21405	translation_unit_sptr.
21406	(read_to_translation_unit): Make this return a
21407	translation_unit_sptr.
21408	* tests/print-diff-tree.cc (main): Adjust.
21409	* tests/test-diff-dwarf.cc (main): Likewise.
21410	* tests/test-ir-walker.cc (main): Likewise.
21411	* tests/test-read-dwarf.cc (main): Likewise.
21412	* tests/test-read-write.cc (main): Likewise.
21413	* tools/abicompat.cc (main): Likewise.
21414	* tools/abidiff.cc (main): Likewise.
21415	* tools/abidw.cc (main): Likewise.
21416	* tools/abilint.cc (main): Likewise.
21417
214182015-07-08  Dodji Seketeli <dodji@redhat.com>
21419
21420	Add --d{1,2} shortcut options for --debug-info-dir{1,2} in abidiff
21421	* tools/abidiff.cc (display_usage): Add the --d{1,2} to the help
21422	strings.
21423	(parse_command_line): Parse the new --d1 and --d2 options.
21424
214252015-07-08  Dodji Seketeli <dodji@redhat.com>
21426
21427	Factorize incompatible and subtype changes detection
21428	* include/abg-comparison.h (corpus_diff::{has_incompatible_changes,
21429	has_net_subtype_changes}): Declare new member functions.
21430	* src/abg-comparison.cc (corpus_diff::{has_incompatible_changes,
21431	has_net_subtype_changes}): Define them.
21432	* abidiff.cc (main): Use the new member functions above.
21433
214342015-07-09  Dodji Seketeli <dodji@redhat.com>
21435
21436	Adjust some tests for output changes
21437	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.
21438	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
21439	* tests/data/test-diff-dwarf/test11-report.txt: Likewise.
21440	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
21441	* tests/data/test-diff-filter/test2-report.txt: Likewise.
21442	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Likewise.
21443	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Likewise.
21444	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
21445	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise.
21446
214472015-07-06  Dodji Seketeli <dodji@redhat.com>
21448
21449	Fix missing newlines in diff report
21450	* src/abg-comparison.cc (class_diff::report): The overload of
21451	represent() for instances of var_decl does not emit new lines.  So
21452	the caller must ensure a new line is emitted.
21453
214542015-07-02  Dodji Seketeli <dodji@redhat.com>
21455
21456	Support filtering out just one alias of a function
21457	* include/abg-comparison.h (function_suppression::{get,
21458	set}_allow_other_aliases): Declare new member functions.
21459	* src/abg-comparison.cc
21460	(function_suppression::priv::allow_other_aliases_): New data
21461	member.
21462	(function_suppression::priv::priv): Initialize it to 'true'.
21463	(function_suppression::{get, set}_allow_other_aliases): Define new
21464	member functions.
21465	(read_function_suppression): Parse the new "allow_other_aliases"
21466	property.
21467	(function_suppression::suppresses_function): Update to evaluate
21468	the new 'allow_other_aliases' property when there is a property to
21469	match against some a symbol name of the function.
21470	(corpus_diff::report): Fix the printing of function aliases when
21471	printing sub-type changes to properly emit the plural of the word
21472	'symbol' when the function has several aliases.
21473	* include/abg-ir.h (elf_symbol::get_number_of_aliases): Declare
21474	new member function.
21475	* src/abg-ir.cc (elf_symbol::get_number_of_aliases): Define new
21476	member function.
21477	* doc/manuals/libabigail-concepts.rst: Update manual.
21478	* tests/data/test-diff-dwarf/test5-report.txt: Adjust.
21479	* tests/data/test-diff-suppr/libtest23-alias-filter-v0.so: New
21480	test input.
21481	* tests/data/test-diff-suppr/libtest23-alias-filter-v1.so: Likewise.
21482	* tests/data/test-diff-suppr/test23-alias-filter-0.suppr: Likewise.
21483	* tests/data/test-diff-suppr/test23-alias-filter-1.suppr: Likewise.
21484	* tests/data/test-diff-suppr/test23-alias-filter-2.suppr: Likewise.
21485	* tests/data/test-diff-suppr/test23-alias-filter-3.suppr: Likewise.
21486	* tests/data/test-diff-suppr/test23-alias-filter-4.suppr: Likewise.
21487	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
21488	* tests/data/test-diff-suppr/test23-alias-filter-report-1.txt: Likewise.
21489	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise.
21490	* tests/data/test-diff-suppr/test23-alias-filter-report-3.txt: Likewise.
21491	* tests/data/test-diff-suppr/test23-alias-filter-report-4.txt: Likewise.
21492	* tests/data/test-diff-suppr/test23-alias-filter-report-5.txt: Likewise.
21493	* tests/data/test-diff-suppr/test23-alias-filter-v0.c: Likewise.
21494	* tests/data/test-diff-suppr/test23-alias-filter-v1.c: Likewise.
21495	* tests/data/test-diff-suppr/test23-alias-filter-version-script: Likewise.
21496	* tests/data/Makefile.am: Add the new test stuff to source
21497	distribution.
21498	* tests/test-diff-suppr.cc (in_out_spec): Add the tests inputs
21499	above to the list of input to run over.
21500
215012015-07-01  Dodji Seketeli <dodji@redhat.com>
21502
21503	Complete apidoc
21504	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Finish the
21505	incomplete apidoc for this member function.
21506
215072015-07-01  Dodji Seketeli <dodji@redhat.com>
21508
21509	Show aliases of functions with changed sub-types
21510	* include/abg-ir.h (elf_symbol::get_aliases_id_string): Declare
21511	new overload.
21512	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Define new
21513	overload.
21514	* src/abg-comparison.cc (corpus_diff::report): For functions with
21515	sub-type changes report their aliases.  Do not do this if the
21516	function is a constructor or destructor because these almost
21517	always have aliases, at least with GCC and the developer most
21518	certainly has not done anything special for that; she would thus
21519	be uselessly surprised by that remote implementation detail.
21520	* tests/data/test-diff-dwarf/test5-report.txt: Adjust test.
21521
215222015-06-25  Dodji Seketeli <dodji@redhat.com>
21523
21524	Update ChangeLog file
21525	* ChangeLog: Update automatically using 'make update-changelog'.
21526
215272015-06-23  Dodji Seketeli <dodji@redhat.com>
21528
21529	Misc typo fixes
21530	* src/abg-comparison.cc
21531	(corpus_diff::priv::{deleted, added}n_variable_is_suppressed): Fix
21532	a typo.
21533	* tests/data/test-diff-dwarf/test16-syms-only-v0.cc: Fix a typo in
21534	the comments.
21535	* tests/data/test-diff-dwarf/test16-syms-only-v1.cc: Likewise.
21536
215372015-06-22  Dodji Seketeli <dodji@redhat.com>
21538
21539	Apply suppression specifications to added and removed functions and variables
21540	* include/abg-comparison.h (is_type_suppression)
21541	(is_function_suppression): Declare new functions.
21542	({function, variable}_suppression::change_kind): Declare new enum.
21543	(function_suppression::{parse_change_kind, get_change_kind,
21544	set_change_kind, suppresses_function,
21545	suppresses_function_symbol}): Declare new member functions.
21546	(variable_suppression::{parse_change_kind, get_change_kind,
21547	set_change_kind, suppresses_variable, suppresses_variable,
21548	suppresses_variable_symbol}): Declare new member functions.
21549	(operator{&,|}): Declare new operators for
21550	function_suppression::change_kind and
21551	variable_suppression::change_kind enums.
21552	(corpus_diff::diff_stats::{num_removed_func_filtered_out,
21553	net_num_func_removed, num_added_func_filtered_out,
21554	net_num_func_added, num_removed_vars_filtered_out,
21555	net_num_vars_removed, num_added_vars_filtered_out,
21556	net_num_vars_added, num_removed_func_syms_filtered_out,
21557	num_added_func_syms_filtered_out, net_num_removed_func_syms,
21558	net_num_added_func_syms, num_added_var_syms_filtered_out,
21559	num_removed_vars_filtered_out, net_num_removed_var_syms,
21560	net_num_added_var_syms}): Declare new member functions.
21561	(corpus_diff::diff_stats::num_changed_vars_filtered_out): Renamed
21562	corpus_diff::diff_stats::num_vars_filtered_out into this.
21563	(corpus_diff::diff_stats::num_changed_func_filtered_out): Renamed
21564	corpus_diff::diff_stats::num_func_filtered_out into this.
21565	* src/abg-comparison.cc (is_type_suppression)
21566	(is_function_suppression): Define new
21567	function.
21568	(function_suppression::priv::change_kind): New data member.
21569	(function_suppression::priv): Initialize it.
21570	(function_suppression::{parse_change_kind, get_change_kind,
21571	set_change_kind, suppresses_function,
21572	suppresses_function_symbol}): Define new member functions.
21573	(operator{&,|}): Define new operators for the new
21574	function_suppression::change_kind enum.
21575	(function_suppression::suppresses_diff): Re-write this in terms of
21576	the new function_suppression::suppresses_function() function.
21577	(read_function_suppression): Support reading the new "change_kind"
21578	property.
21579	(variable_suppression::priv::change_kind_): New data member.
21580	(variable_suppression::priv::priv): Initialize it.
21581	(variable_suppression::{parse_change_kind, get_change_kind,
21582	set_change_kind, suppresses_variable,
21583	suppresses_variable_symbol}): Define new member functions.
21584	(is_variable_suppression): Define new function.
21585	(operator{&,|}): Define new operators for
21586	variable_suppression::change_kind enum.
21587	(variable_suppression::suppresses_diff): Re-write in terms of the
21588	new variable_suppression::suppresses_variable function.
21589	(read_variable_suppression): Support reading the new "change_kind"
21590	property.
21591	(corpus_diff::diff_stats::priv::{num_removed_func_filtered_out,
21592	num_added_func_filtered_out, num_removed_vars_filtered_out,
21593	num_added_vars_filtered_out, num_removed_func_syms_filtered_out,
21594	num_added_func_syms_filtered_out,
21595	num_removed_var_syms_filtered_out,
21596	num_added_var_syms_filtered_out}): New data members.
21597	(corpus_diff::diff_stats::priv::num_changed_func_filtered_out):
21598	Renamed the data member num_func_filtered_out into this.
21599	(corpus_diff::diff_stats::priv::num_changed_vars_filtered_out):
21600	Renamed data member num_vars_filtered_out into this.
21601	(corpus_diff::diff_stats::priv::priv): Initialize the new data
21602	members.
21603	(corpus_diff::diff_stats::{num_removed_func_filtered_out,
21604	num_removed_func_filtered_out, net_num_func_removed,
21605	net_num_func_added, num_added_func_filtered_out,
21606	net_num_func_added, num_removed_vars_filtered_out,
21607	num_removed_vars_filtered_out, net_num_vars_removed,
21608	num_added_vars_filtered_out, net_num_vars_added,
21609	num_removed_func_syms_filtered_out,
21610	num_added_func_syms_filtered_out, net_num_removed_func_syms,
21611	net_num_added_func_syms, num_added_var_syms_filtered_out,
21612	num_removed_vars_filtered_out, net_num_removed_var_syms,
21613	net_num_added_var_syms}): Define new member functions.
21614	(corpus_diff::diff_stats::num_changed_func_filtered_out): Renamed
21615	corpus_diff::diff_stats::num_func_filtered_out into this.
21616	(corpus_diff::diff_stats::num_changed_vars_filtered_out): Renamed
21617	corpus_diff::diff_stats::num_vars_filtered_out into this.
21618	(corpus_diff::diff_stats::{net_num_func_changed,
21619	net_num_vars_changed}): Adjust.
21620	(corpus_diff::priv::{suppressed_deleted_fns_,
21621	suppressed_added_fns_, suppressed_deleted_vars_,
21622	suppressed_added_vars_, suppressed_added_unrefed_fn_syms_,
21623	suppressed_deleted_unrefed_fn_syms_,
21624	suppressed_added_unrefed_var_syms_,
21625	suppressed_deleted_unrefed_fn_syms_}): New data members.
21626	(corpus_diff::priv::{apply_suppressions_to_added_removed_fns_vars,
21627	deleted_function_is_suppressed, added_function_is_suppressed,
21628	deleted_variable_is_suppressed, added_variable_is_suppressed,
21629	added_unrefed_fn_sym_is_suppressed,
21630	deleted_unrefed_fn_sym_is_suppressed,
21631	added_unrefed_var_sym_is_suppressed,
21632	deleted_unrefed_var_sym_is_suppressed}): Define member functions.
21633	(function_is_suppressed, variable_is_suppressed): Define new
21634	functions.
21635	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Compute
21636	stats for filtered added or removed functions, variables and their
21637	symbols.
21638	(corpus_diff::priv::emit_diff_stats): Emit diff stats for filtered
21639	added or removed functions, variables and symbols.
21640	(corpus_diff::report): Support suppressed reports about added or
21641	removed functions, variables and symbols.  Fixed a typo that was
21642	in there for a while.  Note that that fix requires updating some
21643	regression tests, and the part of this patch that touches
21644	regression tests does that.
21645	(apply_suppressions):  In the overload for corpus_diff, apply the
21646	suppression to added or removed functions and variables.
21647	* doc/manuals/libabigail-concepts.rst: Update this manual to
21648	reflect the changes above.  Also, perform an extensive cleanup of
21649	the manual to introduce more section titles to make it easier to
21650	navigate the document using the table of content.
21651	* tests/data/test-abicompat/test2-var-removed-report-0.txt:
21652	Adjust.
21653	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
21654	* tests/data/test-diff-dwarf/test12-report.txt: Likewise.
21655	* tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt:
21656	Likewise.
21657	* tests/data/test-diff-dwarf/test19-soname-report-0.txt: Likewise.
21658	* tests/data/test-diff-dwarf/test7-report.txt: Likewise.
21659	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
21660	* tests/data/test-diff-dwarf/test9-report.txt: Likewise.
21661	* tests/data/test-diff-dwarf/test16-syms-only-report.txt: Likewise.
21662	* tests/data/test-diff-dwarf/test17-non-refed-syms-report-0.txt:
21663	Likewise.
21664	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
21665	Likewise.
21666	* tests/data/test-diff-filter/test0-report.txt: Likewise.
21667	* tests/data/test-diff-filter/test01-report.txt: Likewise.
21668	* tests/data/test-diff-filter/test13-report.txt: Likewise.
21669	* test-diff-suppr/test15-suppr-added-fn-v0.o: Add new test
21670	material.
21671	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
21672	* tests/data/test-diff-filter/test2-report.txt: Likewise.
21673	* tests/data/test-diff-filter/test21-compatible-vars-report-0.txt:
21674	Likewise.
21675	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
21676	Likewise.
21677	* test-diff-suppr/test15-suppr-added-fn-v1.o: Likewise.
21678	* test-diff-suppr/test15-suppr-added-fn-0.suppr: Likewise.
21679	* test-diff-suppr/test15-suppr-added-fn-1.suppr: Likewise.
21680	* test-diff-suppr/test15-suppr-added-fn-2.suppr: Likewise.
21681	* test-diff-suppr/test15-suppr-added-fn-3.suppr: Likewise.
21682	* test-diff-suppr/test15-suppr-added-fn-4.suppr: Likewise.
21683	* test-diff-suppr/test15-suppr-added-fn-report-0.txt: Likewise.
21684	* test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise.
21685	* test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise.
21686	* test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise.
21687	* test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise.
21688	* test-diff-suppr/test15-suppr-added-fn-report-5.txt: Likewise.
21689	* test-diff-suppr/test15-suppr-added-fn-v0.cc: Likewise.
21690	* test-diff-suppr/test15-suppr-added-fn-v1.cc: Likewise.
21691	* test-diff-suppr/test16-suppr-removed-fn-v0.o: Likewise.
21692	* test-diff-suppr/test16-suppr-removed-fn-v1.o: Likewise.
21693	* test-diff-suppr/test16-suppr-removed-fn-0.suppr: Likewise.
21694	* test-diff-suppr/test16-suppr-removed-fn-1.suppr: Likewise.
21695	* test-diff-suppr/test16-suppr-removed-fn-2.suppr: Likewise.
21696	* test-diff-suppr/test16-suppr-removed-fn-3.suppr: Likewise.
21697	* test-diff-suppr/test16-suppr-removed-fn-4.suppr: Likewise.
21698	* test-diff-suppr/test16-suppr-removed-fn-report-0.txt: Likewise.
21699	* test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise.
21700	* test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise.
21701	* test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise.
21702	* test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise.
21703	* test-diff-suppr/test16-suppr-removed-fn-report-5.txt: Likewise.
21704	* test-diff-suppr/test16-suppr-removed-fn-v0.cc: Likewise.
21705	* test-diff-suppr/test16-suppr-removed-fn-v1.cc: Likewise.
21706	* test-diff-suppr/test17-suppr-added-var-v0.o: Likewise.
21707	* test-diff-suppr/test17-suppr-added-var-v1.o: Likewise.
21708	* test-diff-suppr/test17-suppr-added-var-0.suppr: Likewise.
21709	* test-diff-suppr/test17-suppr-added-var-1.suppr: Likewise.
21710	* test-diff-suppr/test17-suppr-added-var-2.suppr: Likewise.
21711	* test-diff-suppr/test17-suppr-added-var-3.suppr: Likewise.
21712	* test-diff-suppr/test17-suppr-added-var-4.suppr: Likewise.
21713	* test-diff-suppr/test17-suppr-added-var-report-0.txt: Likewise.
21714	* test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise.
21715	* test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise.
21716	* test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise.
21717	* test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise.
21718	* test-diff-suppr/test17-suppr-added-var-report-5.txt: Likewise.
21719	* test-diff-suppr/test17-suppr-added-var-v0.cc: Likewise.
21720	* test-diff-suppr/test17-suppr-added-var-v1.cc: Likewise.
21721	* test-diff-suppr/test18-suppr-removed-var-v0.o: Likewise.
21722	* test-diff-suppr/test18-suppr-removed-var-v1.o: Likewise.
21723	* test-diff-suppr/test18-suppr-removed-var-0.suppr: Likewise.
21724	* test-diff-suppr/test18-suppr-removed-var-1.suppr: Likewise.
21725	* test-diff-suppr/test18-suppr-removed-var-2.suppr: Likewise.
21726	* test-diff-suppr/test18-suppr-removed-var-3.suppr: Likewise.
21727	* test-diff-suppr/test18-suppr-removed-var-4.suppr: Likewise.
21728	* test-diff-suppr/test18-suppr-removed-var-report-0.txt: Likewise.
21729	* test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise.
21730	* test-diff-suppr/test18-suppr-removed-var-report-2.txt: Likewise.
21731	* test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise.
21732	* test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise.
21733	* test-diff-suppr/test18-suppr-removed-var-report-5.txt: Likewise.
21734	* test-diff-suppr/test18-suppr-removed-var-v0.cc: Likewise.
21735	* test-diff-suppr/test18-suppr-removed-var-v1.cc: Likewise.
21736	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o: New
21737	test input.
21738	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o:
21739	Likewise.
21740	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-0.suppr:
21741	Likewise.
21742	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-1.suppr:
21743	Likewise.
21744	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-2.suppr:
21745	Likewise.
21746	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-3.suppr:
21747	Likewise.
21748	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-4.suppr:
21749	Likewise.
21750	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-0.txt:
21751	Likewise.
21752	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-1.txt:
21753	Likewise.
21754	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-2.txt:
21755	Likewise.
21756	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-3.txt:
21757	Likewise.
21758	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-4.txt:
21759	Likewise.
21760	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-5.txt:
21761	Likewise.
21762	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v0.cc:
21763	Likewise.
21764	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v1.cc:
21765	Likewise.
21766	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o:
21767	Likewise.
21768	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o:
21769	Likewise.
21770	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-0.suppr:
21771	Likewise.
21772	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-1.suppr:
21773	Likewise.
21774	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-2.suppr:
21775	Likewise.
21776	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-3.suppr:
21777	Likewise.
21778	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-4.suppr:
21779	Likewise.
21780	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-0.txt:
21781	Likewise.
21782	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-1.txt:
21783	Likewise.
21784	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-2.txt:
21785	Likewise.
21786	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-3.txt:
21787	Likewise.
21788	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-4.txt:
21789	Likewise.
21790	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-5.txt:
21791	Likewise.
21792	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.cc:
21793	Likewise.
21794	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.cc:
21795	Likewise.
21796	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-v0.o:
21797	Likewise.
21798	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-v1.o:
21799	Likewise.
21800	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-0.suppr:
21801	Likewise.
21802	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-1.suppr:
21803	Likewise.
21804	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-2.suppr:
21805	Likewise.
21806	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-3.suppr:
21807	Likewise.
21808	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-4.suppr:
21809	Likewise.
21810	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-0.txt:
21811	Likewise.
21812	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-1.txt:
21813	Likewise.
21814	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-2.txt:
21815	Likewise.
21816	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-3.txt:
21817	Likewise.
21818	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-4.txt:
21819	Likewise.
21820	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-5.txt:
21821	Likewise.
21822	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-v0.cc:
21823	Likewise.
21824	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-v1.cc:
21825	Likewise.
21826	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o:
21827	Likewise.
21828	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o:
21829	Likewise.
21830	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-0.suppr:
21831	Likewise.
21832	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-1.suppr:
21833	Likewise.
21834	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-2.suppr:
21835	Likewise.
21836	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-3.suppr:
21837	Likewise.
21838	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-4.suppr:
21839	Likewise.
21840	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-0.txt:
21841	Likewise.
21842	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-1.txt:
21843	Likewise.
21844	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-2.txt:
21845	Likewise.
21846	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-3.txt:
21847	Likewise.
21848	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-4.txt:
21849	Likewise.
21850	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-5.txt:
21851	Likewise.
21852	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v0.cc:
21853	Likewise.
21854	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v1.cc:
21855	Likewise.
21856	* tests/data/Makefile.am: Add the new test materials above to source
21857	distribution.
21858	* tests/test-diff-suppr.cc (in_out_specs): Add the new tests
21859	material above to the list of test inputs this harness has to run
21860	over.
21861
218622015-06-22  Dodji Seketeli <dodji@redhat.com>
21863
21864	Do not compare static data members when comparing types
21865	* include/abg-ir.h (class_decl::get_non_static_data_members):
21866	Declare new data members.
21867	* src/abg-comparison.cc
21868	(class_diff::ensure_lookup_tables_populated): Only look at
21869	non-static data members.
21870	(compute_diff): In the overload for class_decl, only compare
21871	non-static data members.
21872	* src/abg-hash.cc (class_decl::hash::operator()): Do not hash
21873	static data members members hashing a class_decl.
21874	* src/abg-ir.cc (class_decl::priv::data_members_): New data
21875	member.
21876	(class_decl::priv::priv): When initializing data members, store
21877	the non-static data members on the side, in the new
21878	class_decl::priv::non_static_data_members_ data member.
21879	(class_decl::get_non_static_data_members): Define member function.
21880	(class_decl::add_data_member): Store the non-static data members
21881	on the side in class_decl::priv::non_static_data_members_.
21882	(equals): In the overload for class_decl, do not take in account
21883	static data members when running the comparison.
21884	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
21885	* tests/data/test-diff-filter/test12-report.txt: Adjust.
21886
218872015-06-23  Dodji Seketeli <dodji@redhat.com>
21888
21889	Add a --suppr short alias to the --suppressions option of abidiff
21890	* tools/abidiff.cc (display_usage): Add a help string for the new
21891	--suppr option.
21892	(parse_command_line): Support the --suppr option which is an alias
21893	for --suppressions.
21894
218952015-06-23  Dodji Seketeli <dodji@redhat.com>
21896
21897	Enable large file support
21898	* configure.ac: Call the AC_SYS_LARGEFILE autoconf macro.
21899	* config.h.in: Update.
21900
219012015-06-23  Dodji Seketeli <dodji@redhat.com>
21902
21903	Do not build zip archive support by default
21904	* configure.ac: By default, unconditionally disable the
21905	zip-archive support.
21906
219072015-06-23  Dodji Seketeli <dodji@redhat.com>
21908
21909	Put the man pages of the binaries in section 1
21910	* doc/manuals/Makefile.am(section1_manpages, section7_manpages):
21911	Two new variables to contain the man page names per section.
21912	(manpages): Set this variable to $section1_manpages and $section7_manpages.
21913	(install-man-and-info-doc): In this rule, create the destination
21914	directories for section 1 and 7 and copy the right man pages in
21915	their right directory.
21916	* doc/manuals/conf.py (man_pages): Generate the binary man pages
21917	into section 1 and the libabigail man page into section 7.
21918
219192015-06-23  Dodji Seketeli <dodji@redhat.com>
21920
21921	Sort deleted/added variables and symbols before emitting report
21922	* src/abg-comparison.cc (sort_string_var_ptr_map)
21923	(sort_string_elf_symbol_map): Define new static functions.
21924	(var_comp, elf_symbol_comp): Define new comparison functors.
21925	(corpus_diff::report): Sort the deleted variables, added
21926	variables, deleted function symbols, added function symbols,
21927	deleted variable symbols, and added variable symbols before
21928	walking them to emit reports.
21929
219302015-06-23  Dodji Seketeli <dodji@redhat.com>
21931
21932	Remove useless white space
21933	* src/abg-comparison.cc (sort_string_parm_map): Remove trailing
21934	white space from comment.
21935
219362015-06-23  Dodji Seketeli <dodji@redhat.com>
21937
21938	Bug 18580 - abidw ignores --out-file
21939	* tools/abidw.cc (main): Take the argument of --out-file into
21940	account when emitting the serialized form of the ABI.
21941
219422015-06-23  Dodji Seketeli <dodji@redhat.com>
21943
21944	Fix a thinko in the comparison code
21945	* src/abg-comparison.cc
21946	(class_diff::ensure_lookup_tables_populated): Ensure that when a
21947	member function is wrongly considered as being added, then either
21948	the new member function doesn't have a symbol name (linkage name)
21949	or it has one, and it was already present in the first version of
21950	the binary.
21951	# Veuillez saisir le message de validation pour vos
21952	modifications. Les lignes # commençant par '#' seront ignorées, et
21953	un message vide abandonne la validation.  # Sur la branche
21954	fix-master # Votre branche est à jour avec 'origin/master'.  # #
21955	Modifications qui seront validées : # modified:
21956	src/abg-comparison.cc # # Modifications qui ne seront pas validées
21957	: # modified: tools/abidw.cc # # Fichiers non suivis: # abidw.abi
21958	# build/ # depcomp # missing # patch-edited.txt # patch.txt #
21959	prtests/ # test-driver # # ------------------------ >8
21960	------------------------ # Ne touchez pas à la ligne ci-dessus #
21961	Tout se qui suit sera éliminé.
21962	diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc
21963	index 14208f5..ef7c6c9 100644
21964	--- a/src/abg-comparison.cc
21965	+++ b/src/abg-comparison.cc
21966	@@ -7419,8 +7419,8 @@ class_diff::ensure_lookup_tables_populated(void) const
21967	inserted_member_fns().begin();
21968	i != inserted_member_fns().end();
21969	++i)
21970	-	if (i->second->get_symbol()
21971	-	    && f->lookup_function_symbol(i->second->get_symbol()->get_name(),
21972	+	if (!i->second->get_symbol()
21973	+	    || f->lookup_function_symbol(i->second->get_symbol()->get_name(),
21974	i->second->get_symbol()->get_version().str()))
21975	to_delete.push_back(i->first);
21976
219772015-06-07  Dodji Seketeli <dodji@redhat.com>
21978
21979	Build libabigail tests with position-independent code
21980	* tests/Makefile.am: Add -fPIC to the compile flags.
21981
219822015-06-07  Dodji Seketeli <dodji@redhat.com>
21983
21984	Build libabigail tools as position-independent code
21985	* tools/Makefile.am: Compile the binaries here with -fPIC.  Note
21986	that the library libabigail.la is built with libtool which already
21987	takes care of this, so no need to worry about this for
21988	libabigail.la.
21989
219902015-06-07  Dodji Seketeli <dodji@redhat.com>
21991
21992	Update ChangeLog file
21993	* ChangeLog: Update this automatically by typing make
21994	update-changelog.
21995
219962015-06-07  Dodji Seketeli <dodji@redhat.com>
21997
21998	Avoid infinite loop in elf_symbol::get_alias_from_name()
21999	* src/abg-ir.cc (elf_symbol::get_alias_from_name)
22000	(elf_symbol::get_alias_which_equals): Test for the next alias
22001	pointing to the main symbol, in the loop exit condition.
22002
220032015-06-04  Dodji Seketeli <dodji@redhat.com>
22004
22005	Change the linkage name only when necessary
22006	* include/abg-ir.h (elf_symbol::get_alias_from_name): Declare new
22007	member function.
22008	* src/abg-ir.cc (elf_symbol::get_alias_from_name): Define it.
22009	* src/abg-dwarf-reader.cc (build_var_decl, build_function_decl):
22010	Once the linkage name is supposed to contain the value of the
22011	DW_AT_linkage_name attribute, set it the name of the underlying
22012	symbol only if value of DW_At_linkage_name is missing or different
22013	from the names of all the aliases of the underlying symbol.
22014	* tests/data/test-read-dwarf/test2.so.abi: Adjust.
22015
220162015-06-04  Dodji Seketeli <dodji@redhat.com>
22017
22018	Various white space cleanups
22019	* include/abg-comparison.h: Remove various useless vertical white
22020	spaces.
22021	* tests/test-diff-dwarf.cc (in_out_spec): Fix indentation of some
22022	entries.
22023
220242015-06-04  Dodji Seketeli <dodji@redhat.com>
22025
22026	Fix various comments here and there
22027	* src/abg-comparison.cc
22028	(diff_context::set_or_get_canonical_diff_for, compute_diff)
22029	(redundancy_marking_visitor::visit_begin): Fix comment in these
22030	functions.
22031	* src/abg-ir.cc (elf_symbol::is_variable): Likewise.
22032
220332015-06-04  Dodji Seketeli <dodji@redhat.com>
22034
22035	Add missing apidoc to elf_symbol type
22036	* src/abg-ir.cc (elf_symbol::{elf_symbol, get_name, set_name,
22037	get_type, set_type, get_binding, set_binding, get_version,
22038	is_defined, is_public, is_function, is_variable}): Add missing
22039	apidoc to these member functions.
22040
220412015-06-04  Dodji Seketeli <dodji@redhat.com>
22042
22043	Cleanup logic in class_diff::ensure_lookup_tables_populated()
22044	* src/abg-comparison.cc
22045	(class_diff::ensure_lookup_tables_populated): Remove the code that
22046	tries to lookup allegedly added functions from the set of deleted
22047	ones, by using the pretty printed name of the function.  Handling
22048	the case of a function decl not correctly tied to it symbol is
22049	handled my generically a bit later in this function.
22050
220512015-06-04  Dodji Seketeli <dodji@redhat.com>
22052
22053	Report possible changes in the set of aliases of a symbol.
22054	* src/abg-comparison.cc (function_decl_diff::report): Report
22055	a change in the aliases of the symbols of a function; note that
22056	everything else but have stayed equal in the function.
22057
220582015-06-04  Dodji Seketeli <dodji@redhat.com>
22059
22060	Report vtable changes in top-level function change reports
22061	* src/abg-comparison.cc (function_decl_diff::report): Report about
22062	virtual-ness and vtable offset changes.
22063	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
22064	New test input file.
22065	* tests/data/test-diff-dwarf/test28-vtable-changes-v{0,1}.o: New
22066	test input binaries.
22067	* tests/data/test-diff-dwarf/test28-vtable-changes-v{0,1}.cc:
22068	Source code of the input binaries above.
22069	* tests/data/Makefile.am: Add the new test input above to source
22070	distribution.
22071	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test input
22072	above to the list of input this test harness has to run over.
22073
220742015-06-03  Dodji Seketeli <dodji@redhat.com>
22075
22076	Support new 'accessed_through' suppression property
22077	* include/abg-comparison.h (enum type_suppression::reach_kind):
22078	Define new enum.
22079	(type_suppression::{get_consider_reach_kind,
22080	set_consider_reach_kind, get_reach_kind,
22081	mark_last_diff_visited_per_class_of_equivalence,
22082	clear_last_diffs_visited_per_class_of_equivalence,
22083	get_last_visited_diff_of_class_of_equivalence}): Declare new
22084	member functions.
22085	* src/abg-comparison.cc (diff_has_ancestor_filtered_out)
22086	(read_suppression_reach_kind): Define static function.
22087	(type_suppression::priv::{consider_reach_kind_, reach_kind_}):
22088	Define new data members.
22089	(type_suppression::priv::priv): Take a new reach_kind parameter.
22090	(type_suppression::type_suppression): Adjust to new prototype of
22091	priv constructor.
22092	(type_suppression::{get_consider_reach_kind,
22093	set_consider_reach_kind, get_reach_kind, set_reach_kind}): Define
22094	new member functions.
22095	(type_suppression::suppresses_diff): Interpret the result of
22096	type_suppression::get_reach_kind() to determine if the suppression
22097	specification suppresses a given diff node.
22098	(read_type_suppression): Support reading the content of the
22099	"accessed_through" property.
22100	(diff_context::priv::last_visited_diff_node_): New data member.
22101	(diff_context::{mark_last_diff_visited_per_class_of_equivalence,
22102	clear_last_diffs_visited_per_class_of_equivalence,
22103	get_last_visited_diff_of_class_of_equivalence}): Define new data
22104	members.
22105	(redundancy_marking_visitor::visit_begin): So if the current diff
22106	node has already been visited, but if the previously visited node
22107	has been filtered out, then do not mark this node as being
22108	redundant.  And mark the current diff node as being the last
22109	visited one in its class of equivalence.
22110	(categorize_redundancy): Clear the map of diff nodes visited per
22111	class of equivalence.
22112	* doc/manuals/libabigail-concepts.rst: Document the new
22113	'accessed_through' property.
22114	* tests/data/test-diff-suppr/test13-suppr-through-pointer-0.suppr:
22115	New test input data.
22116	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-{0,1}.txt:
22117	Likewise.
22118	* tests/data/test-diff-suppr/libtest13-suppr-through-pointer-v{0,1}.so:
22119	New test input binaries.
22120	* tests/data/test-diff-suppr/test13-suppr-through-pointer-v{0,1}.cc:
22121	Source code of the test input binaries above.
22122	* tests/data/test-diff-suppr/test14-suppr-non-redundant-0.suppr:
22123	New test input data.
22124	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt:
22125	Likewise.
22126	* tests/data/test-diff-suppr/test14-suppr-non-redundant-v{0,1}.o:
22127	New test input binaries.
22128	* tests/data/test-diff-suppr/test14-suppr-non-redundant-v{0,1}.cc:
22129	Source code of the binaries above.
22130
221312015-06-03  Dodji Seketeli <dodji@redhat.com>
22132
22133	Fix redundancy marking for change of types used directly
22134	* include/abg-comparison.h (pointer_map): Make this be a map of
22135	{size_t, size_t} pairs, rather than {size_t, bool}, so that each
22136	pointer in the map can be associated to another one.
22137	(diff_context::diff_has_been_visited): Return the pointer to the
22138	first diff node of the equivalence class that has been visited.
22139	* src/abg-comparison.cc (is_pointer_diff, is_reference_diff)
22140	(is_reference_or_pointer_diff, is_fn_parm_diff, is_base_diff)
22141	(is_child_node_of_function_parm_diff, is_child_node_of_base_diff):
22142	Define new static functions.
22143	(diff_context::diff_has_been_visited): Return the pointer to the
22144	first diff node of the equivalence class that has been visited.
22145	(diff_context::mark_diff_as_visited): Save the pointer to the
22146	first diff node of a given class of equivalence that has been
22147	visited.
22148	(redundancy_marking_visitor::visit_begin): If a diff node is a
22149	child node of a function parameter diff or base diff node and if
22150	it's not a pointer or reference diff node, then do not mark it as
22151	redundant.  Also, make sure to not mark the first diff node of a
22152	given class of equivalence that has been visited, as redundant;
22153	only the other subsequent nodes should be marked redundant; we
22154	were hitting this case because of an optimization that makes
22155	equivalent class diff nodes to share their private (pimpl) data.
22156	* tests/data/test-diff-filter/test29-finer-redundancy-marking-v{0,1}.o:
22157	New test input binaries.
22158	* tests/data/test-diff-filter/test29-finer-redundancy-marking-v{0,1}.cc:
22159	Source code of the new test input binaries above.
22160	* tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt:
22161	New test input.
22162	* tests/data/Makefile.am: Add the new test material above to the
22163	source distribution.
22164	* tests/test-diff-filter.cc (in_out_specs): Make this test harness
22165	run over the additional test input above.
22166	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
22167
221682015-06-02  Dodji Seketeli <dodji@redhat.com>
22169
22170	Fix detection of local changes in base classes
22171	* abg-ir.cc (equals): In the overload of class_decl::base_spec, if
22172	the underlying class carries changes, then do not flag these
22173	changes as local for the class_decl::base_spec.
22174	* tests/data/test-diff-dwarf/test27-local-base-diff-v{0,1}.o: New
22175	test input binaries.
22176	* tests/data/test-diff-dwarf/test27-local-base-diff-v{0,1}.cc: Source
22177	code for the test input binaries above.
22178	* tests/data/test-diff-dwarf/test27-local-base-diff-report.txt:
22179	New test input.
22180	* tests/data/Makefile.am: Add the test inputs above to source
22181	distribution.
22182
221832015-06-02  Dodji Seketeli <dodji@redhat.com>
22184
22185	Fix symbols comparison
22186	* include/abg-ir.h (elf_symbol_wptr): New typedef.
22187	(elf_symbol): Make the constructors and assignment operator
22188	private.  The type can neither be copied nor created with the new
22189	operator.
22190	(elf_symbol::create): New static member function.
22191	(elf_symbol::{get_main_symbol, get_next_alias, add_alias}):
22192	Adjust.
22193	( compute_aliases_for_elf_symbol): Likewise.
22194	(elf_symbol::operator=): Make this private.
22195	(elf_symbol::get_alias_which_equals): Declare new member function.
22196	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
22197	Adjust.
22198	* src/abg-comparison.cc
22199	(class_diff::ensure_lookup_tables_populated): Adjust.
22200	* src/abg-corpus.cc
22201	(corpus::priv::build_unreferenced_symbols_tables): Likewise.
22202	* include/abg-dwarf-reader.h (lookup_symbol_from_elf)
22203	(lookup_public_function_symbol_from_elf): Adjust.
22204	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
22205	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_elf_hash_tab)
22206	(lookup_symbol_from_symtab, lookup_symbol_from_elf)
22207	(lookup_public_function_symbol_from_elf)
22208	(lookup_public_variable_symbol_from_elf): Adjust.
22209	(read_context::lookup_elf_symbol_from_index): Likewise.
22210	(read_context::lookup_elf_fn_symbol_from_address): Likewise.
22211	(read_context::lookup_elf_var_symbol_from_address): Likewise.
22212	(read_context::lookup_public_function_symbol_from_elf): Likewise.
22213	(read_context::lookup_public_variable_symbol_from_elf): Likewise.
22214	(read_context::load_symbol_maps): Likewise.
22215	(build_var_decl, build_function_decl): Likewise.
22216	* src/abg-ir.cc (elf_symbol::priv::{main_symbol_, next_alias_}):
22217	Change the type of these from elf_symbol* to elf_symbol_wptr.
22218	(elf_symbol::priv::priv): Adjust.
22219	(elf_symbol::{create, get_alias_which_equals}): Define new functions.
22220	(textually_equals): Likewise.
22221	(elf_symbol::{get_main_symbol, is_main_symbol, get_next_alias,
22222	add_alias}): Adjust to return or take elf_symbol_sptr type, rather
22223	than a elf_symbol* one.
22224	(elf_symbol::{get_aliases_id_string, does_alias}): Adjust.
22225	(compute_alias_for_elf_symbol): Likewise.
22226	(elf_symbol::operator==): Two symbols A and B are now equal if A
22227	has at least one alias that is textually equal to B.
22228	(equals): In the overload for function_decls, in the part where we
22229	compare the decl_base part of the functions without considering
22230	their decl names, we now also omit considering their linkage
22231	names, because we compared they symbols before.
22232	* tools/abisym.cc (main): Adjust.
22233	* tests/data/test-diff-dwarf/test12-report.txt: Adjust.
22234	* tests/data/test-diff-dwarf/test12-report.txt: Adjust.
22235	* tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: Adjust.
22236	* tests/data/test-diff-dwarf/test8-report.txt: Adjust.
22237	* tests/data/test-diff-filter/test10-report.txt: Adjust.
22238	* tests/data/test-diff-filter/test13-report.txt: Adjust.
22239	* tests/data/test-diff-filter/test2-report.txt: Adjust.
22240	* tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
22241	* tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust.
22242	* tests/data/test-diff-filter/test9-report.txt: Adjust.
22243
222442015-04-22  Dodji Seketeli <dodji@redhat.com>
22245
22246	Support specifying data member insertion in suppressions
22247	* include/abg-comparison.h (type_suppression::insertion_range):
22248	Declare new type.
22249	(type_suppression::insertion_ranges): Declare new typedef.
22250	(type_suppression::{s,g}et_data_member_insertion_ranges): Declare
22251	new member functions.
22252	(is_integer_boundary, is_fn_call_expr_boundary): Declare new
22253	functions.
22254	(type_suppression::insertion_range::{boundary, integer_boundary,
22255	fn_call_expr_boundary}): Define new types.
22256	* src/abg-comparison.cc:
22257	(struct type_suppression::insertion_range::priv): New type.
22258	(type_suppression::insertion_range::{insertion_range, begin,
22259	end}): Define new member functions.
22260	(type_suppression::priv::insertion_ranges_): Add data member.
22261	(type_suppression::{s,g}et_data_member_insertion_ranges): Define
22262	new member functions.
22263	(type_suppression::insertion_range::boundary::priv): Define new
22264	type.
22265	(type_suppression::insertion_range::boundary::{boundary,
22266	~boundary}): Define new member functions.
22267	(type_suppression::insertion_range::integer_boundary::priv):
22268	Define new type.
22269	(type_suppression::insertion_range::integer_boundary::{integer_boundary,
22270	as_integer, operator int, ~integer_boundary}): Define member
22271	functions.
22272	(type_suppression::insertion_range::fn_call_expr_boundary::priv):
22273	Define new type.
22274	(type_suppression::insertion_range::fn_call_expr_boundary::{fn_call_expr_boundary,
22275	as_function_call_expr, operator ini::function_call_expr_sptr}):
22276	Define new member functions.
22277	(type_suppression::insertion_range::{create_integer_boundary,
22278	type_suppression::insertion_range::create_fn_call_expr_boundary,
22279	type_suppression::insertion_range::eval_boundary}): Define new
22280	member functions.
22281	(is_integer_boundary, is_fn_call_expr_boundary): Define new
22282	functions.
22283	(read_type_suppression, read_function_suppression)
22284	(read_variable_suppression): Support the new kinds of
22285	property-related types. Aslo, in read_type_suppression, support
22286	the new properties has_data_member_inserted_at,
22287	has_data_member_inserted_between and
22288	has_data_members_inserted_between.
22289	(type_suppression::suppresses_diff): If we are looking at a type
22290	diff node that has inserted data members, evaluate the insertion
22291	ranges of the current type_suppression and see if they match the
22292	inserted data members.
22293	* include/abg-ini.h (property, simple_property, property_value)
22294	(string_property_value, tuple_property_value, function_call_expr):
22295	Declare new types.
22296	(property_sptr, property_value_sptr, string_property_value_sptr)
22297	(tuple_property_value_sptr): Declare new typedefs.
22298	(is_string_property_value, is_tuple_property_value)
22299	(is_simple_property, is_tuple_property, read_function_call_expr):
22300	Declare new functions.
22301	* src/abg-ini.cc (char_is_white_space, char_is_comment_start)
22302	(char_is_delimiter, char_is_property_value_char)
22303	(char_is_section_name_char, char_is_property_name_char)
22304	(char_is_comment_start, char_is_white_space)
22305	(remove_trailing_white_spaces, is_string_property_value)
22306	(is_tuple_property_value, is_simple_property, is_tuple_property)
22307	(write_property_value, char_is_function_name_char)
22308	(char_is_function_argument_char): Define new functions.
22309	(property::priv, tuple_property_value::priv)
22310	(simple_property::priv, tuple_property::priv): Define new types.
22311	(property::{property, get_name, set_name, ~property}): Define new
22312	member functions.
22313	(struct property_value::priv): Define new type.
22314	(property_value::{property_value, get_kind, operator const
22315	string&(), ~property_value}): Define new member functions.
22316	(struct string_property_value::priv): Define new type.
22317	(string_property_value::{string_property_value, set_content,
22318	as_string, operator string()}, ~string_property_value): Define new
22319	member functions.
22320	(tuple_property_value::{tuple_property_value, get_value_items,
22321	~tuple_property_value, as_string}): Likewise.
22322	(simple_property::{simple_property, get_value, set_value,
22323	~simple_property}): Likewise.
22324	(tuple_property::{tuple_property, set_value, get_value}):
22325	Likewise.
22326	(config::section::find_property): Adjust return type.
22327	(read_context::{char_is_delimiter, char_is_property_value_char,
22328	char_is_section_name_char, char_is_property_name_char,
22329	char_is_comment_start, char_is_white_space}): Remove these from
22330	here as they got moved them to be non-member functions above.
22331	(read_context::read_property_value): Return a property_value_sptr
22332	and do not take any parameter anymore.
22333	(read_context::{read_string_property_value,
22334	read_tuple_property_value, read_function_name,
22335	read_function_argument, read_function_call_expr}): Define new
22336	member functions.
22337	(read_context::read_property): Adjust return type.  Also, change to read
22338	the different new kinds of properties values.
22339	(function_call_expr::priv): Define new type.
22340	(function_call_expr::{function_call_expr, get_name,
22341	get_arguments}): New member functions.
22342	(read_context::read_section): Adjust.
22343	(write_property, write_section): Adjust.
22344	* tests/data/test-diff-suppr/libtest{11,12}-add-data-member-v{0,1}.so:
22345	New test input binaries.
22346	* tests/data/test-diff-suppr/test{11,12}-add-data-member-{0,1}.suppr:
22347	New input suppression files.
22348	* tests/data/test-diff-suppr/test11-add-data-member-{2,3,4}.suppr:
22349	Add new test input files.
22350	* tests/data/test-diff-suppr/test{11,12}-add-data-member-report-{0,1}.txt:
22351	New reference output files.
22352	* tests/data/test-diff-suppr/test12-add-data-member-report-2.txt:
22353	Likewise.
22354	* tests/data/test-diff-suppr/test{11,12}-add-data-member-v{0,1}.cc:
22355	Source code for the new binaries above.
22356	* tests/test-diff-suppr.cc (in_out_specs): Add new test inputs.
22357	* tests/data/Makefile.am: Add the new test related files above to
22358	source distribution.
22359	* doc/manuals/libabigail-concepts.rst: Document the new properties
22360	has_data_member_inserted_at, has_data_member_inserted_between and
22361	has_data_members_inserted_between.
22362
223632015-05-24  Dodji Seketeli <dodji@redhat.com>
22364
22365	Make indexes of function parameters start at 1
22366	* src/abg-ir.cc (function_type::function_type): Starts the index
22367	of the parameters at 1, unless the firs parameter is an artificial
22368	one, in which case it starts at 0.
22369	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust.
22370	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
22371	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
22372	* tests/data/test-diff-dwarf/test10-report.txt: Adjust.
22373	* tests/data/test-diff-dwarf/test11-report.txt: Adjust.
22374	* tests/data/test-diff-dwarf/test13-report.txt: Adjust.
22375	* tests/data/test-diff-dwarf/test15-enum-report.txt: Adjust.
22376	* tests/data/test-diff-dwarf/test2-report.txt: Adjust.
22377	* tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: Adjust.
22378	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Adjust.
22379	* tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Adjust.
22380	* tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt: Adjust.
22381	* tests/data/test-diff-dwarf/test25-removed-fn-parms-report-0.txt: Adjust.
22382	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Adjust.
22383	* tests/data/test-diff-dwarf/test4-report.txt: Adjust.
22384	* tests/data/test-diff-dwarf/test6-report.txt: Adjust.
22385	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
22386	* tests/data/test-diff-dwarf/test8-report.txt: Adjust.
22387	* tests/data/test-diff-filter/test0-report.txt: Adjust.
22388	* tests/data/test-diff-filter/test01-report.txt: Adjust.
22389	* tests/data/test-diff-filter/test1-report.txt: Adjust.
22390	* tests/data/test-diff-filter/test10-report.txt: Adjust.
22391	* tests/data/test-diff-filter/test13-report.txt: Adjust.
22392	* tests/data/test-diff-filter/test14-0-report.txt: Adjust.
22393	* tests/data/test-diff-filter/test14-1-report.txt: Adjust.
22394	* tests/data/test-diff-filter/test16-report-2.txt: Adjust.
22395	* tests/data/test-diff-filter/test16-report.txt: Adjust.
22396	* tests/data/test-diff-filter/test17-0-report.txt: Adjust.
22397	* tests/data/test-diff-filter/test17-1-report.txt: Adjust.
22398	* tests/data/test-diff-filter/test18-report.txt: Adjust.
22399	* tests/data/test-diff-filter/test19-enum-report-1.txt: Adjust.
22400	* tests/data/test-diff-filter/test2-report.txt: Adjust.
22401	* tests/data/test-diff-filter/test22-compatible-fns-report-0.txt: Adjust.
22402	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: Adjust.
22403	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Adjust.
22404	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Adjust.
22405	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Adjust.
22406	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Adjust.
22407	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Adjust.
22408	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Adjust.
22409	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Adjust.
22410	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Adjust.
22411	* tests/data/test-diff-filter/test3-report.txt: Adjust.
22412	* tests/data/test-diff-filter/test9-report.txt: Adjust.
22413	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Adjust.
22414	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Adjust.
22415	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Adjust.
22416	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Adjust.
22417	* tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Adjust.
22418	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Adjust.
22419	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Adjust.
22420	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Adjust.
22421	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Adjust.
22422	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Adjust.
22423	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Adjust.
22424	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
22425	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Adjust.
22426	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Adjust.
22427	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Adjust.
22428	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Adjust.
22429	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Adjust.
22430	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Adjust.
22431	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Adjust.
22432	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Adjust.
22433	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Adjust.
22434	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Adjust.
22435	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Adjust.
22436	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Adjust.
22437	* tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Adjust.
22438
224392015-05-22  Dodji Seketeli <dodji@redhat.com>
22440
22441	Some wording fixes to doc/manuals/libabigail-concepts.rst
22442	* doc/manuals/libabigail-concepts.rst: Some light wording fixes.
22443
224442015-05-24  Dodji Seketeli <dodji@redhat.com>
22445
22446	Type read from DWARF don't have alignment information
22447	* src/abg-dwarf-reader.cc (build_type_decl)
22448	(build_class_type_and_add_to_ir, build_pointer_type_def)
22449	(build_reference_type, build_function_decl): Set the alignment for
22450	native types, class, reference and function type to zero,
22451	effectively meaning that they don't have alignment information.
22452	* src/abg-hash.cc (var_decl::hash::operator): Take the hash value
22453	of the data member context in account when computing the hash
22454	value of a given data member.
22455	* tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt:
22456	Adjust.
22457	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
22458	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
22459	* tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise.
22460	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Likewise.
22461	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
22462	* tests/data/test-diff-dwarf/test9-report.txt: Likewise.
22463	* tests/data/test-diff-filter/test13-report.txt: Likewise.
22464	* tests/data/test-diff-filter/test6-report.txt: Likewise.
22465	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise.
22466	* tests/data/test-read-dwarf/test0.abi: Likewise.
22467	* tests/data/test-read-dwarf/test1.abi: Likewise.
22468	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
22469	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
22470	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
22471	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
22472	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
22473	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
22474	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
22475
224762015-05-06  Dodji Seketeli <dodji@redhat.com>
22477
22478	Better name ID function parameters
22479	* src/abg-ir.cc (function_decl::parameter::get_name_id): Make this
22480	be "parameter-<index>".
22481
224822015-05-06  Dodji Seketeli <dodji@redhat.com>
22483
22484	Better detection of parameter sub-type changes
22485	* include/abg-fwd.h (type_has_sub_type_changes): Declare new
22486	function.
22487	* src/abg-ir.cc (type_has_sub_type_changes): Define it.
22488	* src/abg-comparison.cc (fn_parm_diff::report): Use the new
22489	function type_has_sub_type_changes() instead of just looking at
22490	name changes.
22491	* tests/data/test-diff-dwarf/test4-report.txt: Adjust this
22492	reference test output.
22493
224942015-05-06  Dodji Seketeli <dodji@redhat.com>
22495
22496	Fix a potential crash when comparing variadic parameters again
22497	* src/abg-comparison.cc (redundancy_marking_visitor::visit_begin):
22498	Avoid flagging diffs of variadic parameter *types* as redundant as
22499	well.
22500
225012015-05-06  Dodji Seketeli <dodji@redhat.com>
22502
22503	Add debugging function for function parameters
22504	* include/abg-ir.h
22505	(function_decl::parameter::get_pretty_representation): Declare new
22506	virtual member function.
22507	* src/abg-ir.cc
22508	(function_decl::parameter::get_pretty_representation): Define it.
22509
225102015-05-06  Dodji Seketeli <dodji@redhat.com>
22511
22512	Add comments
22513	* src/abg-dwarf-reader.cc (build_function_decl): Add comments when
22514	building the function parameters.
22515
225162015-05-06  Dodji Seketeli <dodji@redhat.com>
22517
22518	Add a debugging function for type_or_decl_base*
22519	* include/abg-fwd.h (get_pretty_representation): Declare new
22520	overload for type_or_decl_base*.
22521	* src/abg-ir.cc (get_pretty_representation): Define it and express
22522	the previous overload for type_or_decl_base_sptr in terms of this
22523	new one.
22524
225252015-05-05  Dodji Seketeli <dodji@redhat.com>
22526
22527	Return a reference to smart pointer for the void type node
22528	* src/abg-ir.h (type_decl::get_void_type_decl): Return a reference
22529	to the smart pointer initially returned.
22530	* src/abg-ir.cc (type_decl::get_void_type_decl): Likewise.
22531
225322015-05-05  Dodji Seketeli <dodji@redhat.com>
22533
22534	Bug 18342 - Segmentation fault while comparing functions with variadic parameters
22535	* include/abg-fwd.h (is_array_type): New overload for a naked
22536	pointer.
22537	* include/abg-ir.h (type_decl::get_variadic_parameter_type_decl): Declare new
22538	static function.
22539	* src/abg-ir.cc (is_array_type): Define new function overload for
22540	naked pointers
22541	(type_decl::get_variadic_parameter_type_decl): Define new static
22542	function.
22543	* src/abg-dwarf-reader.cc (build_function_decl): The type of
22544	variadic parameter is now a special type_decl.
22545	* include/abg-comparison.h (is_diff_of_variadic_parameter_type)
22546	(is_diff_of_variadic_parameter): New function declarations.
22547	* src/abg-comparison.cc (is_diff_of_variadic_parameter_type)
22548	(is_diff_of_variadic_parameter): Define new functions.
22549	(compute_diff): Refuse to return a NULL
22550	diff for types.  Assert that the parameters are non-NULL.
22551	(report_size_and_alignment_changes): We are comparing arrays only
22552	if the two parameters are arrays.
22553	(fn_parm_diff::fn_parm_diff): Refuse that type diff for this diff
22554	node is non empty.
22555	(fn_parm_diff::report): Strengthen an assert.  Cleanup a comment.
22556	(redundancy_marking_visitor::visit_begin): Do not mark function
22557	type and variadic parms diff nodes as redundant for local changes.
22558	* tests/data/test-diff-dwarf/libtest26-added-parms-before-variadic-v{0,1}.so:
22559	New test input binaries.
22560	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt:
22561	New test output reference.
22562	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-v{0,1}.c:
22563	Source code of the new test input binaries above.
22564	* tests/data/Makefile.am: Add the new test stuff to source
22565	distribution.
22566	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs
22567	above to the set of input to run this test harness over.
22568
225692015-04-24  Dodji Seketeli <dodji@redhat.com>
22570
22571	Fix archive writing support
22572	* configure.ac: Require libzip 0.10.1 at least.
22573	* src/abg-writer.cc (archive_write_ctxt::serialized_tus): Make
22574	this be a list<string>, rather than a vector<string>.
22575	(create_archive_write_context): Truncate the archive if it exists
22576	already.
22577	(write_translation_unit_to_archive): Do not use the deprecated
22578	zip_add() function anymore.  Rather, use zip_file_add().
22579	* tests/test-write-read-archive.cc (main): Double check if the
22580	translation unit we read is empty or not.
22581
225822015-04-22  Dodji Seketeli <dodji@redhat.com>
22583
22584	Use a better wording for the COPYING file
22585	* COPYING: Update to a more complete description.
22586
225872015-04-20  Dodji Seketeli <dodji@redhat.com>
22588
22589	Update licence texts
22590	* COPYING: Of course we know the licence we want to use now :-)
22591	* COPYING-GPLV3: Add the text of GPLv3.
22592	* Makefile.am: Add the file COPYING-GPLV3 above to source
22593	distribution.
22594
225952015-04-15  Dodji Seketeli <dodji@redhat.com>
22596
22597	18252 - Added parameters are not properly sorted
22598	* src/abg-comparison.cc (sort_string_parm_map): Define new static
22599	function.
22600	(struct parm_comp): Define new type.
22601	(function_type_diff::priv::{sorted_deleted_parms_,
22602	sorted_added_parms_}): New data members that hold sorted
22603	deleted/added parameters.
22604	(function_type_diff::ensure_lookup_tables_populated): Initialize
22605	the two new data members above.
22606	(function_type_diff::report): For the report of parameters that
22607	got added/removed, use the sorted set of added/removed parameters
22608	above.
22609	* tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt:
22610	New test input.
22611	* tests/data/test-diff-dwarf/libtest24-added-fn-parms-v{0,1}.so:
22612	Likewise.
22613	* tests/data/test-diff-dwarf/test25-removed-fn-parms-report-0.txt:
22614	Likewise.
22615	* tests/data/test-diff-dwarf/libtest25-removed-fn-parms-v{0,1}.so:
22616	Likewise.
22617	* tests/data/test-diff-dwarf/test24-added-fn-parms-v{0,1}.c:
22618	Likewise.
22619	* tests/data/test-diff-dwarf/test25-removed-fn-parms-v{0,1}.c:
22620	Likewise.
22621	* tests/data/Makefile.am: Add the new test material above to the
22622	source distribution.
22623
226242015-04-14  Dodji Seketeli <dodji@redhat.com>
22625
22626	Misc reporting fixes/improvements
22627	* src/abg-comparison.cc (distinct_diff::report): Remove spurious
22628	vertical space before reporting size and alignment changes here.
22629	(represent): In the variables/data member overload, report type
22630	changes first.  Then the other changes.
22631	(report_size_and_alignment_changes): Make this report array size
22632	changes too.  Also, make some small adjustments about how type
22633	size/alignment changes are introduced.
22634	(array_diff::report): Now that report_size_and_alignment_changes()
22635	supports size change reporting, just use that function rather than
22636	doing it here.
22637	(corpus_diff::report): Consistently add a space between each
22638	changed function report.  Prefix changed variables with a [C],
22639	just like for functions.
22640	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
22641	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Likewise.
22642	* tests/data/test-abicompat/test6-var-changed-report-0.txt: Likewise.
22643	* tests/data/test-abidiff/test-qual-type0-report.txt: Likewise.
22644	* tests/data/test-abidiff/test-struct0-report.txt: Likewise.
22645	* tests/data/test-abidiff/test-struct1-report.txt: Likewise.
22646	* tests/data/test-abidiff/test-var0-report.txt: Likewise.
22647	* tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: Likewise.
22648	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
22649	* tests/data/test-diff-dwarf/test1-report.txt: Likewise.
22650	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
22651	* tests/data/test-diff-dwarf/test11-report.txt: Likewise.
22652	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
22653	* tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise.
22654	* tests/data/test-diff-dwarf/test2-report.txt: Likewise.
22655	* tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: Likewise.
22656	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Likewise.
22657	* tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise.
22658	* tests/data/test-diff-dwarf/test3-report.txt: Likewise.
22659	* tests/data/test-diff-dwarf/test6-report.txt: Likewise.
22660	* tests/data/test-diff-dwarf/test7-report.txt: Likewise.
22661	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
22662	* tests/data/test-diff-dwarf/test9-report.txt: Likewise.
22663	* tests/data/test-diff-filter/test0-report.txt: Likewise.
22664	* tests/data/test-diff-filter/test01-report.txt: Likewise.
22665	* tests/data/test-diff-filter/test1-report.txt: Likewise.
22666	* tests/data/test-diff-filter/test10-report.txt: Likewise.
22667	* tests/data/test-diff-filter/test11-report.txt: Likewise.
22668	* tests/data/test-diff-filter/test13-report.txt: Likewise.
22669	* tests/data/test-diff-filter/test14-0-report.txt: Likewise.
22670	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.
22671	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
22672	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.
22673	* tests/data/test-diff-filter/test16-report-2.txt: Likewise.
22674	* tests/data/test-diff-filter/test16-report.txt: Likewise.
22675	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
22676	* tests/data/test-diff-filter/test17-1-report.txt: Likewise.
22677	* tests/data/test-diff-filter/test18-report.txt: Likewise.
22678	* tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
22679	* tests/data/test-diff-filter/test2-report.txt: Likewise.
22680	* tests/data/test-diff-filter/test20-inline-report-1.txt: Likewise.
22681	* tests/data/test-diff-filter/test21-compatible-vars-report-0.txt: Likewise.
22682	* tests/data/test-diff-filter/test22-compatible-fns-report-0.txt: Likewise.
22683	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: Likewise.
22684	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: Likewise.
22685	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Likewise.
22686	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Likewise.
22687	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Likewise.
22688	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Likewise.
22689	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
22690	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
22691	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise.
22692	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
22693	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
22694	* tests/data/test-diff-filter/test3-report.txt: Likewise.
22695	* tests/data/test-diff-filter/test6-report.txt: Likewise.
22696	* tests/data/test-diff-filter/test9-report.txt: Likewise.
22697	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise.
22698	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise.
22699	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
22700	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
22701	* tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise.
22702	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
22703	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
22704	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
22705	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
22706	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise.
22707	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise.
22708	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise.
22709	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
22710	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
22711	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
22712	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
22713	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
22714	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise.
22715	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise.
22716	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise.
22717	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise.
22718	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
22719	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
22720	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
22721	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
22722	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
22723	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
22724	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise.
22725	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise.
22726	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Likewise.
22727	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise.
22728	* tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Likewise.
22729
227302015-04-10  Dodji Seketeli <dodji@redhat.com>
22731
22732	Make abidiff and abicompat return meaningful exit codes
22733	* doc/manuals/abicompat.rst: Update documentation for abicompat
22734	exit codes.
22735	* doc/manuals/abidiff.rst: Likewise for abidiff exit codes.
22736	* include/abg-tools-utils.h (enum abidiff_status): Declare new
22737	enum.
22738	(operator{|,&,|=}): Declare new operators for the new enum
22739	abidiff_status.
22740	(abidiff_status_has_error, abidiff_status_has_abi_change)
22741	(abidiff_status_has_incompatible_abi_change): Declare new
22742	functions.
22743	* src/abg-tools-utils.cc (operator{|,&,|=}): Define these new
22744	operators.
22745	(abidiff_status_has_error, abidiff_status_has_abi_change)
22746	(abidiff_status_has_incompatible_abi_change): Define new
22747	functions.
22748	* tests/test-diff-filter.cc (main): Adjust for the new exit code
22749	of abidiff.
22750	* tests/test-diff-suppr.cc (main): Likewise.
22751	* tests/test-abicompat.cc (main): Likewise.
22752	* tools/abicompat.cc (enum abicompat_status): Remove.
22753	(operator{|,&,|=}): Remove these operators for enum
22754	abicompat_status.
22755	(perform_compat_check_in_normal_mode)
22756	(perform_compat_check_in_weak_mode): Return abidiff_status instead
22757	of abicompat_status.  Adjust therefore.
22758	(main): Adjust to return abidiff_status now, instead of a just
22759	zero for all non-error cases.
22760	* tools/abidiff.cc (main): Likewise.
22761
227622015-04-01  Dodji Seketeli <dodji@redhat.com>
22763
22764	Add support for abicompat weak mode
22765	* include/abg-fwd.h (class type_or_decl_base): Forward declare
22766	this.
22767	(is_decl, is_type, is_function_type, get_name, get_type_name)
22768	(get_function_type_name, get_pretty_representation)
22769	(lookup_function_type_in_corpus, lookup_type_in_translation_unit)
22770	(lookup_function_type_in_translation_unit)
22771	(synthesize_function_type_from_translation_unit)
22772	(hash_type_or_decl): New function declarations.
22773	* src/abg-corpus.cc (lookup_type_in_corpus)
22774	(lookup_function_type_in_corpus): Define new functions.
22775	* include/abg-ir.h
22776	(translation_unit::lookup_function_type_in_translation_unit):
22777	Declare new friend function.
22778	(class type_or_decl_base): Declare this.
22779	(operator==(const type_or_decl_base&, const type_or_decl_base&)):
22780	Declare new operator.
22781	(operator==(const type_or_decl_base_sptr&, const
22782	type_or_decl_base_sptr&)): Likewise.
22783	(class {decl_base, type_base}): Make these class inherit
22784	type_or_decl_base.
22785	(decl_base::get_member_scopes): New const overload.
22786	(bool operator==(const function_decl::parameter_sptr&,
22787	const function_decl::parameter_sptr&)): New operator.
22788	(function_type::get_parameters): Remove the non-const overload.
22789	(function_type::get_pretty_representation): Declare new member
22790	function.
22791	(method_type::get_pretty_representation): Likewise.
22792	* src/abg-ir.cc (bool operator==(const type_or_decl_base&, const
22793	type_or_decl_base&)): Define new equality operator.
22794	(bool operator==(const type_or_decl_base_sptr&, const
22795	type_or_decl_base_sptr&)): Likewise.
22796	(strip_typedef): Do not expect canonicalized types anymore.  Now
22797	the system accepts (and expects) canonicalized types in certain
22798	cases.  For instance, non-complete types and aggregated types that
22799	contain non-complete sub-types.
22800	(get_name, get_function_type_name, get_type_name)
22801	(get_pretty_representation, is_decl, is_type, is_function_type)
22802	(lookup_function_type_in_translation_unit)
22803	(synthesize_function_type_from_translation_unit)
22804	(lookup_type_in_scope, lookup_type_in_translation_unit): Define
22805	new functions or new overloads.
22806	(bool operator==(const function_decl::parameter_sptr&,
22807	const function_decl::parameter_sptr& r)): Define
22808	new operator.
22809	(function_type::get_parameters): Remove non-const overload.
22810	(function_type::get_pretty_representation): Define new function.
22811	(function_type::traverse): Adjust.
22812	(method_type::get_pretty_representation): Likewise.
22813	(function_decl::get_pretty_representation): Avoid emitting the
22814	type of cdtors.
22815	(hash_type_or_decl): Define new function.
22816	* include/abg-dwarf-reader.h (create_read_context)
22817	(read_corpus_from_elf): Take a new 'read_all_types' flag.
22818	* src/abg-dwarf-reader.cc (read_context::load_all_types_): New
22819	flag.
22820	(read_context::read_context): Initialize it.
22821	(read_context::canonical_types_scheduled): If some types still
22822	have non-canonicalized sub-types, then do not canonicalize them.
22823	(read_context::load_all_types): New member functions.
22824	(build_function_decl): Do not represent void return type like
22825	empty type anymore, rather, represent it like a void type node.
22826	(build_ir_node_from_die): When asked, load all types
22827	including those that are not reachable from an exported
22828	declaration.
22829	(create_read_context, read_corpus_from_elf): Take a new
22830	'load_all_types' flag and honour it.
22831	* src/abg-reader.cc (read_context::type_is_from_translation_unit):
22832	Support looking up function types in the current translation unit,
22833	now that we now how to lookup function types.
22834	* include/abg-comparison.h (diff_context::{has_diff_for, add_diff,
22835	set_canonical_diff_for, set_or_get_canonical_diff_for,
22836	get_canonical_diff_for}): Make these take instances of
22837	type_or_decl_base_sptr, instead of decl_base_sptr.
22838	(diff::diff): Likewise.
22839	(diff::{first_subject, second_subject}): Make these return
22840	type_or_decl_base_sptr instead of decl_base_sptr.
22841	(type_diff_base::type_diff_base): Make these take instances of
22842	type_or_decl_base_sptr instead of decl_base_sptr.
22843	(distinct_diff::distinct_diff): Likewise.
22844	(distinct_diff::{first, second}): Make these return
22845	type_or_decl_base_sptr instead of decl_base_sptr.
22846	(distinct_diff::entities_are_of_distinct_kinds): Make these take
22847	instances of type_or_decl_base_sptr instead of decl_base_sptr.
22848	(class function_type_diff): Create this new type.  It's a
22849	factorization of the function_decl_diff type.
22850	* src/abg-comparison.cc ():
22851	* src/abg-comp-filter.cc ({harmless, harmful}_filter::visit):
22852	Adjust as diff::{first,second}_subject() now returns a
22853	type_or_decl_base_sptr, no more a decl_base_sptr.
22854	(decls_type, decls_diff_map_type): Remove these typedefs and replace it with ...
22855	(types_or_decls_type, types_or_decls_diff_map_type): ... these.
22856	(struct {decls_hash, decls_equals): Remove these type sand replace them with ...
22857	(struct {types_or_decls_hash, types_or_decls_equals}): ... these.
22858	({type_suppression, variable_suppression}::suppresses_diff):
22859	Adjust.
22860	(diff_context::priv::decls_diff_map): Replace this with ...
22861	(diff_context::priv::types_or_decls_diff_map): ... this.
22862	(diff_context::{has_diff_for, add_diff, get_canonical_diff_for,
22863	set_canonical_diff_for, set_or_get_canonical_diff_for}): Take
22864	type_or_decl_base_sptr instead of decl_base_sptr.
22865	(diff::priv::{first, second}_subject): Make the type of these be
22866	type_or_decl_base_sptr, no more decl_base_sptr.
22867	(diff::priv::priv): Adjust for the subjects of the diff being of
22868	type type_or_decl_sptr now, no more decl_base_sptr.
22869	(diff_less_than_functor::operator()(const diff_sptr, const
22870	diff_sptr) const): Adjust.
22871	(diff::diff): djust for the subjects of the diff being of type
22872	type_or_decl_sptr now, no more decl_base_sptr.
22873	(diff::{first,second}_subject): Make the type of these be
22874	type_or_decl_base_sptr, no more decl_base_sptr.
22875	(report_size_and_alignment_changes): Likewise.
22876	(type_diff_base::type_diff_base): Make the type of this be
22877	type_or_decl_base_sptr instead of type_base_sptr.
22878	(distinct_diff::distinct_diff): Make this take instances of
22879	type_or_decl_base_sptr instead of decl_base_sptr.
22880	(distinct_diff::{first, second, entities_are_of_distinct_kinds}):
22881	Likewise.
22882	(distinct_diff::has_changes): Simplify logic.
22883	(distinct_diff::report): Adjust.
22884	(compute_diff_for_types): Add an additional case to support the
22885	new function_type.
22886	(report_size_and_alignment_changes): Make this take instances of
22887	type_or_decl_base_sptr instead of decl_base_sptr.
22888	(class_diff::priv::member_type_has_changed): Return an instance of
22889	type_or_decl_base_sptr rather than a decl_base_sptr.
22890	(class_diff::report): Adjust.
22891	(diff_comp::operator()(const diff&, diff&) const): Adjust.
22892	(enum function_decl_diff::priv::Flags): Remove.
22893	(function_decl_diff::priv::{first_fn_flags_, second_fn_flags_,
22894	fn_flags_changes_}): Remove.
22895	(function_decl_diff::priv::{fn_is_declared_inline_to_flag,
22896	fn_binding_to_flag}): Remove.
22897	(function_decl_diff::{deleted_parameter_at,
22898	inserted_parameter_at}): Remove.
22899	(function_decl_diff::ensure_lookup_tables_populated): Empty this.
22900	(function_decl_diff::chain_into_hierarchy): Adjust.
22901	(function_decl_diff::function_decl_diff): This now only takes the
22902	subjects.  It's body is now empty.
22903	(function_decl_diff::{return_type_diff, subtype_changed_parms,
22904	removed_parms, added_parms, type_diff}): Remove these member
22905	functions.
22906	(function_decl_diff::type_diff): Define new member function.
22907	(function_decl_diff::report): Simplify logic by using the
22908	reporting of the child type diff node.
22909	(compute_diff): Likewise, in the overload for function_decl_sptr
22910	simplify logic by using the child type diff object.
22911	(function_type_diff::priv): Define new type.
22912	(function_type_diff::{function_type_diff,
22913	ensure_lookup_tables_populated, deleted_parameter_at,
22914	inserted_parameter_at, finish_diff_type, first_function_type,
22915	second_function_type, return_type_diff, subtype_changed_parms,
22916	removed_parms, added_parms, get_pretty_representation,
22917	has_changes, has_local_changes, report, chain_into_hierarchy}):
22918	Define new functions.
22919	(compute_diff): Define new overload for function_type_sptr.
22920	* tools/abicompat.cc (options::weak_mode): New data member.
22921	(options::options): Initialize it.
22922	(enum abicompat_status): New enum
22923	(abicompat_status operator|(abicompat_status, abicompat_status))
22924	(abicompat_status& operator|=(abicompat_status &, abicompat_status))
22925	(abicompat_status operator&(abicompat_status, abicompat_status)):
22926	New operators to manipulate the abicompat_status enum.
22927	(display_usage): Add help string for the new --weak-mode option.
22928	(parse_command_line): Add the new --weak-mode command line
22929	argument.  If the tool is called with just the application and one
22930	library then assume that we are in the weak mode.
22931	(perform_compat_check_in_normal_mode): Define new function, factorized
22932	from what was in the main function.
22933	(perform_compat_check_in_weak_mode): Define new function.
22934	(struct {fn,var}_change): Define new types.
22935	(main): Use perform_compat_check_in_weak_mode() and
22936	perform_compat_check_in_normal_mode().
22937	* tools/abidiff.cc (main): Adjust.
22938	* tools/abidw.cc: (options::load_all_types): Add new data member.
22939	(options::options): Initialize it.
22940	(display_usage): New help string for --load-all-types.
22941	(parse_command_line): Support the new --load-all-types option.
22942	(main): Adjust and honour the --load-all-types option.
22943	* tools/abilint.cc (main): Adjust.
22944	* doc/manuals/abicompat.rst: Update documentation for the new weak
22945	mode.  Also provide stuff that was missing from the examples
22946	provided.
22947	* doc/manuals/abidw.rst: Update documentation for the new
22948	--load-all-types option.
22949	* tests/print-diff-tree.cc (main): Adjust.
22950	* tests/test-diff-dwarf.cc (main): Likewise.
22951	* tests/test-read-dwarf.cc (main): Likewise.
22952	* tests/data/test-abicompat/test0-fn-changed-app: Recompile this.
22953	* tests/data/test-abicompat/libtest5-fn-changed-libapp-v{0,1}.so:
22954	New new test input binaries
22955	* tests/data/test-abicompat/test5-fn-changed-app: Likewise.
22956	* tests/data/test-abicompat/test6-var-changed-app: Likewise.
22957	* tests/data/test-abicompat/libtest6-var-changed-libapp-v{0,1}.so:
22958	Likewise.
22959	* tests/data/test-abicompat/test5-fn-changed-report-0.txt:
22960	Reference output for one test above.
22961	* tests/data/test-abicompat/test6-var-changed-report-0.txt:
22962	Likewise.
22963	* tests/data/test-abicompat/test5-fn-changed-app.cc: Source file
22964	for a binary above.
22965	* tests/data/test-abicompat/test5-fn-changed-libapp-v{0,1}.{h,cc}:
22966	Likewise.
22967	* tests/data/test-abicompat/test6-var-changed-libapp-v{0,1}.{cc,h}:
22968	Likewise.
22969	* tests/data/test-abicompat/test6-var-changed-app.cc: Likewise.
22970	* tests/data/Makefile.am: Add the test related files above to the
22971	source distribution.
22972	* tests/test-abicompat.cc (in_out_spec): Add the new test input
22973	above to the list of inputs to feed to this test harness.
22974	(main): Support taking just the app and one library.
22975	* tests/data/test-read-dwarf/test{0, 1, 2.so, 3.so, 5.o,
22976	8-qualified-this-pointer.so,}.abi: Adjust for void type being
22977	really emitted now, as opposed to just being an empty type.
22978
229792015-04-01  Dodji Seketeli <dodji@redhat.com>
22980
22981	18186 - Assertion in abigail::ir::class_decl::hash::operator()
22982	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): When
22983	the size of the class is provided then the class is complete, no
22984	matter if this function called to update the class or to build it
22985	for the first time.
22986
229872015-03-31  Sinny Kumari <sinny@redhat.com>
22988
22989	Check if EM_AARCH64, EM_TILEPRO and EM_TILEGX macros are defined in elf.h
22990	* config.h.in: Generated autoheader by configure.ac
22991	for added macros
22992	* configure.ac: Defining HAVE_EM_AARCH64_MACRO,
22993	HAVE_EM_TILEPRO_MACRO and HAVE_EM_TILEGX_MACRO to check
22994	whether EM_AARCH64, EM_TILEPRO and EM_TILEGX macros are defined
22995	in elf.h or not
22996	* src/abg-dwarf-reader.cc (e_machine_to_string): Look for
22997	EM_AARCH64, EM_TILEPRO and EM_TILEGX macros only
22998	if they are defined in elf.h
22999
230002015-03-30  Dodji <dodji@ks305400.kimsufi.com>
23001
23002	PR libabigail/18180
23003	* src/abg-hash.cc (class_decl::hash::operator()(const class_decl&)
23004	const): Return zero only for class declarations that are not
23005	resolved.
23006	* tests/data/test-read-write/test20.xml: Fix the output to make a
23007	class definition to reference its declaration, when there was a
23008	forward declaration for it.
23009
230102015-03-30  Dodji Seketeli <dodji@redhat.com>
23011
23012	18179 - abidiff crashes on libcangjie
23013	* include/abg-fwd.h (lookup_class_type_in_corpus)
23014	(lookup_class_type_in_translation_unit): Declare new functions.
23015	* src/abg-ir.cc (lookup_class_type_in_translation_unit): Define
23016	new function.
23017	(get_node, convert_node_to_decl): Define new specializations for
23018	the class_decl type.
23019	* src/abg-corpus.cc (lookup_class_type_in_corpus): Define new
23020	function.
23021	* src/abg-dwarf-reader.cc
23022	(read_context::resolve_declaration_only_classes): Lookup class
23023	types specifically.
23024
230252015-03-30  Dodji Seketeli <dodji@redhat.com>
23026
23027	Forgot to initialize a data member
23028	* src/abg-reader.cc (read_context::read_context): Initialize the
23029	new m_exported_decls_builder_ data member.
23030
230312015-03-30  Dodji Seketeli <dodji@redhat.com>
23032
23033	18166 - Abidiff fails with internal on Libtirpc ABI in XML format
23034	* src/abg-reader.cc (read_context::m_exported_decls_builder_): New
23035	data member.
23036	(read_context::read_context): Initialize it.
23037	(read_context::{type_is_from_translation_unit,
23038	get_exported_decls_builder, set_exported_decls_builder,
23039	maybe_add_fn_to_exported_decls, maybe_add_fn_to_exported_decls,
23040	type_id_new_in_translation_unit}): New member functions.
23041	(read_context::clear_per_translation_unit_data): Clear id->xml
23042	node map here ...
23043	(read_context::clear_per_corpus_data): ... not here.
23044	(read_context::walk_xml_node_to_map_type_ids): Only walk the
23045	sub-tree we are asked to walk.
23046	(read_translation_unit_from_input): Cleanup.
23047	(read_corpus_from_input): Wire populating of exported declarations
23048	of the current corpus.
23049	(build_function_decl, build_var_decl): Populate exported
23050	declarations of the current corpus here.
23051	(build_type_decl, build_qualified_type_decl)
23052	(build_pointer_type_def, build_reference_type_def)
23053	(build_array_type_def, build_enum_type_decl, build_type_decl)
23054	(build_template_tparameter): Adjust assert on ID to make sure
23055	it's the first type it's being defined in the current translation
23056	unit.
23057	* tests/data/test-abidiff/test-corpus0-report0.txt: New test
23058	reference output.
23059	* tests/data/test-abidiff/test-corpus0-v{0,1}.so.abi: New test
23060	input.
23061	* tests/test-abidiff.cc (specs): Add the test inputs above to the
23062	list of inputs over which to run the test harness.
23063	(main): Support reading corpora too, as this test harness was
23064	reading just translation units before.
23065	(tests/data/Makefile.am): Add test material above to source
23066	distribution.
23067
230682015-03-19  Dodji Seketeli <dodji@redhat.com>
23069
23070	Update the CONTRIBUTING file
23071	* CONTRIBUTING: How to check out the web pages.
23072
230732015-03-19  Dodji Seketeli <dodji@redhat.com>
23074
23075	Update website documentation
23076	* doc/website/mainpage.txt: Update the web page.
23077
230782015-03-18  Dodji Seketeli <dodji@redhat.com>
23079
23080	Cleanup type canonicalizing logic
23081	* src/abg-ir.cc (type_base::get_canonical_type_for): Cleanup the
23082	logic here.  Basically since we are not trying to cache the result
23083	of type hashing anymore, this can be simpler.
23084
230852015-03-18  Dodji Seketeli <dodji@redhat.com>
23086
23087	Fix redundancy propagation on node with filtered local changes
23088	*NOT* take in account the categories inherited from its children
23089	nodes.  That way, it's possible to know if the *local changes* of a
23090	given node have been filtered out.
23091	* include/abg-comparison.h (diff::{get_local_category,
23092	add_to_local_category, add_to_local_and_inherited_categories,
23093	remove_from_local_category, set_local_category,
23094	is_filtered_out_wrt_non_inherited_categories,
23095	has_local_changes_to_be_reported}): Declare new member functions.
23096	* src/abg-comp-filter.cc ({harmless, harmful}_filter::{visit,
23097	visit_end}): Update local category too.
23098	* src/abg-comparison.cc (diff::priv::local_category_): Add new
23099	data member.
23100	(diff::priv::priv): Initialize it.
23101	(diff::priv::is_filtered_out): Add new member function.  This is
23102	factorized out of diff::is_filtered_out().
23103	(diff::is_filtered_out): Re-write in terms of
23104	diff::priv::is_filtered_out().
23105	(diff::{get_local_category, add_to_local_category,
23106	add_to_local_and_inherited_categories, remove_from_local_category,
23107	set_local_category, is_filtered_out_wrt_non_inherited_categories,
23108	has_local_changes_to_be_reported}): Define new member functions.
23109	(suppression_categorization_visitor::visit_begin): Update local
23110	categories too.
23111	(redundancy_marking_visitor::visit_end): If all of the children
23112	nodes of the a diff node N are redundant and if N has filtered-out
23113	local changes, then N is redundant too.
23114	* tests/data/test-diff-filter/libtest28-redundant-and-filtered-children-nodes-v{1,2}.so:
23115	New binary test inputs.
23116	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-v{0,1}.cc:
23117	Source code for the binary test inputs above.
23118	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-{0,1}.txt:
23119	New test output references.
23120	* tests/test-diff-filter.cc (in_out_specs): Add the test inputs
23121	above to the set of inputs this test harness has to run over.
23122	* tests/data/Makefile.am: Add the test materials above to the
23123	source distribution.
23124
231252015-03-17  Dodji Seketeli <dodji@redhat.com>
23126
23127	Various style cleanups
23128	* src/abg-hash.cc (class_decl::hash::operator()(const class_decl&
23129	t) const): Fix comment.
23130	* src/abg-ir.cc (lookup_node_in_scope): Likewise.
23131	(class_decl::add_base_specifier): Use base_spec_sptr rather than
23132	shared_ptr<base_spec>.
23133	(class non_canonicalized_subtype_detector): Fix comment.
23134
231352015-03-17  Dodji Seketeli <dodji@redhat.com>
23136
23137	Make is_global_scope() return a pointer to the global scope
23138	* include/abg-fwd.h (is_global_scope): Return a global_scope*.
23139	* src/abg-ir.cc (is_global_scope): Likewise.
23140
231412015-03-17  Dodji Seketeli <dodji@redhat.com>
23142
23143	Add a useful assert in the comparison engine
23144	* src/abg-comparison.cc (qualified_type_diff::report): Assert that
23145	if the qualified type diff node has changes to be reported and no
23146	local change, then its child node must have changes to be
23147	reported.
23148
231492015-03-17  Dodji Seketeli <dodji@redhat.com>
23150
23151	Fix diff report about non-static data members.
23152	* src/abg-comparison.cc
23153	(class_diff::priv::{get_deleted_non_static_data_members_number,
23154	get_inserted_non_static_data_members_number}): Define new member
23155	functions.
23156	(class_diff::reports): Use the new functions above.  Also, add
23157	forgotten new lines where they belong.
23158
231592015-03-17  Dodji Seketeli <dodji@redhat.com>
23160
23161	Do not cache hash values in decl_base::get_hash
23162	* src/abg-ir.cc (decl_base::get_hash): Do not cache the hash
23163	value.
23164
231652015-03-17  Dodji Seketeli <dodji@redhat.com>
23166
23167	Do not miss early non-complete type resolution when it's possible
23168	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): A type
23169	that has its size defined is not non-complete.  Same if it has a
23170	method or a member type.
23171
231722015-03-17  Dodji Seketeli <dodji@redhat.com>
23173
23174	Delay non-complete class type resolution up to end of corpus reading
23175	* include/abg-fwd.h (lookup_type_in_corpus): Declare new function.
23176	* src/abg-corpus.cc (lookup_type_in_corpus): Define new function
23177	here.
23178	* include/abg-ir.h (function_types_type): Declare new typedef.
23179	(translation_unit::get_canonical_function_type): Remove member function.
23180	(translation_unit::bind_function_type_life_time): Declare new
23181	member function.
23182	(classes_type): New typedef.
23183	* src/abg-ir.cc
23184	(translation_unit::priv::canonical_function_types_): Remove data
23185	member.
23186	(translation_unit::priv::function_types): New data member.
23187	(translation_unit::get_canonical_function_type): Remove this
23188	function definition.
23189	(translation_unit::bind_function_type_life_time): New function
23190	definition.
23191	(lookup_node_in_scope): Ensure that the type returned is
23192	complete.
23193	* src/abg-dwarf-reader.cc (string_classes_map): New typedef.
23194	(read_context::decl_only_classes_map_): New data member.
23195	(read_context::declaration_only_classes): New accessor.
23196	(read_context::{maybe_schedule_declaration_only_class_for_resolution,
23197	is_decl_only_class_scheduled_for_resolution,
23198	resolve_declaration_only_classes, current_elf_file_is_executable,
23199	current_elf_file_is_dso}): Define new member functions.
23200	(read_context::clear_per_translation_unit_data): Do not clear the
23201	data structures that associate DIEs to decls/types or that contain
23202	the types to canonicalize here.  Rather, clear them ...
23203	(read_context::clear_per_corpus_data): ... here instead.
23204	(read_context::build_translation_unit_and_add_to_ir): Do not
23205	perform late type canonicalizing here.  Rather, do it ...
23206	(read_debug_info_into_corpus): ... here instead.  And before that,
23207	call read_context::clear_per_corpus_data() and the new
23208	read_context::resolve_declaration_only_classes() here.
23209	(build_class_type_and_add_to_ir): Schedule the non-complete types
23210	for resolution to complete types.  Assert that base classes that
23211	are non-complete are scheduled to be completed.
23212	(build_function_decl): Do not try to canonicalize function types
23213	this early, systematically.  Now, all the non-complete types needs
23214	to be completed before starting canonicalizing.  So let function
23215	types go through the normal processes of deciding when to
23216	canonicalize them.  But then, bind the life time of the function
23217	type to the life time of the current translation unit.
23218	(maybe_canonicalize_type): If a class type is non-complete,
23219	schedule it for late canonicalizing.
23220	* src/abg-hash.cc (class_decl::hash::operator()(const class_decl&)
23221	const): During hashing, a base class should be complete.
23222	* src/abg-reader.cc
23223	(read_context::clear_per_translation_unit_data): Do not clear
23224	id/xml node, and type maps here.  Rather, clear it ...
23225	(read_context::clear_per_corpus_data): ... here instead.
23226	(read_translation_unit_from_input): Do not perform late
23227	canonicalizing here.  Rather, do it ...
23228	(read_corpus_from_input): ... here.  Also, call the new
23229	read_context::clear_per_corpus_data() here.
23230	(build_function_decl): Do not canonicalize function types here so
23231	early.  Rather, bind the life time of the function type to the
23232	life time of the translation unit.
23233	* src/abg-writer.cc (write_translation_unit): Do not clear the
23234	type/ID map here.
23235	* tests/data/test-read-dwarf/test2.so.abi: Adjust test input.
23236
232372015-03-17  Dodji Seketeli <dodji@redhat.com>
23238
23239	Add --no-architecture option to abidw
23240	* tools/abidw.cc (options::write_architecture): New flag.
23241	(options::options): Initialize it.
23242	(display_usage): Add usage string for the new --no-architecture
23243	option.
23244	(parse_command): Parse the new --no-architecture command line
23245	option.
23246	(main): Ignore the architecture name if required by the user.
23247
232482015-03-13  Dodji Seketeli <dodji@redhat.com>
23249
23250	We shouldn't build qualified types with empty underlying type
23251	* src/abg-ir.cc (qualified_type_def::qualified_type_def): Assert
23252	that we shouldn't build qualified types with empty underlying
23253	type.
23254
232552015-03-13  Dodji Seketeli <dodji@redhat.com>
23256
23257	Add an overload for is_type() that takes naked pointers
23258	* include/abg-fwd.h (is_type): Declare new overload that takes a
23259	naked pointer.
23260	* src/abg-ir.cc (is_type): Define new overload that takes a naked
23261	pointer.
23262
232632015-03-13  Dodji Seketeli <dodji@redhat.com>
23264
23265	Declaration-only classes shouldn't have canonical types
23266	* include/abg-fwd.h (keep_type_alive): Declare new function.
23267	* src/abg-ir.cc (strip_typedef): Simplify logic.  Support types
23268	that are not canonicalized.
23269	(type_base::get_canonical_type_for): For declaration-only classes,
23270	return an empty canonical class, forcing the class to be compared
23271	structurally.
23272	(keep_type_alive): Define new function.
23273	* src/abg-hash.cc ({decl_base, type_decl, scope_type_decl,
23274	qualified_type_def, pointer_type_def, reference_type_def,
23275	array_type_def, enum_type_decl, typedef_decl,
23276	class_decl::member_class_template, class_decl, type_tparameter,
23277	template_tparameter, }::hash::operator()): Do not cache the
23278	computed hash.
23279
232802015-03-13  Dodji Seketeli <dodji@redhat.com>
23281
23282	Fix redundancy categorization propagation
23283	* src/abg-comparison.cc (redundancy_marking_visitor::visit_end):
23284	Consider the cases of changes that are a filtered out.
23285	* tests/data/test-diff-filter/libtest27-redundant-and-filtered-children-nodes-v{0,1}.so:
23286	New test binaries to use as test input.
23287	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-{0,1,2}.txt:
23288	New test result baselines.
23289	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-v{0,1}.cc:
23290	Source code for the test input binaries above.
23291	* tests/test-diff-filter.cc (in_out_spec): Add the binaries to the
23292	test inputs used for this test harness.
23293	* tests/data/Makefile.am: Add the new test material above to the
23294	distribution.
23295
232962015-03-13  Dodji Seketeli <dodji@redhat.com>
23297
23298	Fix thinko in has_virtual_mem_fn_change().
23299	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): Fix thinko.
23300
233012015-03-13  Dodji Seketeli <dodji@redhat.com>
23302
23303	From inside the comparison engine re-use IR's equality operators
23304	* include/abg-ir.h (operator==(scope_decl_sptr, scope_decl_sptr)):
23305	Declare.
23306	(operator==(type_decl_sptr, type_decl_sptr)): Likewise.
23307	(operator==(enum_type_decl_sptr, enum_type_decl_sptr)): Likewise.
23308	* src/abg-comparison.cc (diff_length_of_decl_bases)
23309	(diff_length_of_type_bases): Remove these static functions.
23310	(class_diff::has_changes): Re-use the comparison operator for
23311	class_decl_sptr.
23312	(type_decl_diff::has_changes): Re-use the comparison operator for
23313	type_decl_sptr.
23314	* src/abg-ir.cc (operator==(scope_decl_sptr, scope_decl_sptr)):
23315	Define.
23316	(operator==(type_decl_sptr, type_decl_sptr)): Likewise.
23317	(operator==(enum_type_decl_sptr, enum_type_decl_sptr)): Likewise.
23318
233192015-03-11  Dodji Seketeli <dodji@redhat.com>
23320
23321	Remove unnecessary vertical white space from diff report
23322	* src/abg-comparison.cc (class_diff::report): When reporting
23323	virtual member functions make sure to emit the newline only if one
23324	report for member function has already been emitted.
23325
233262015-03-10  Dodji Seketeli <dodji@redhat.com>
23327
23328	Cleanup array_type_def::is_infinite
23329	* src/abg-ir.cc (array_type_def::is_infinite): Style cleanup.
23330
233312015-03-10  Dodji Seketeli <dodji@redhat.com>
23332
23333	Make a function static as it oughts to be
23334	* src/abg-ir.cc (get_type_representation): Make this static.
23335
233362015-03-10  Dodji Seketeli <dodji@redhat.com>
23337
23338	Canonicalize function types
23339	* src/abg-dwarf-reader.cc (build_function_decl): Call
23340	maybe_canonicalize_type to canonicalize the function type.
23341
233422015-03-10  Dodji Seketeli <dodji@redhat.com>
23343
23344	Use more naked pointers when comparing function types
23345	* src/abg-ir.cc (equals): In the overload for function types, use
23346	more naked pointers, less smart pointers.
23347
233482015-03-10  Dodji Seketeli <dodji@redhat.com>
23349
23350	Pass a bunch of smart pointers by reference
23351	* include/abg-fwd.h (get_member_is_static, is_member_function)
23352	(get_member_function_is_ctor, set_member_function_is_ctor)
23353	(get_member_function_is_dtor, set_member_function_is_dtor)
23354	(get_member_function_is_const, set_member_function_is_const)
23355	(get_member_function_vtable_offset)
23356	(set_member_function_vtable_offset)
23357	(get_member_function_is_virtual): Declare the smart pointer
23358	parameter of these as being passed by reference.
23359	* include/abg-ir.h (get_member_access_specifier)
23360	(get_member_is_static, get_member_access_specifier)
23361	(set_member_function_is_ctor, set_member_function_is_const)
23362	(set_member_function_vtable_offset): Likewise, for these friend
23363	declarations to the decl_base type.
23364	* src/abg-ir.cc (get_member_access_specifier)
23365	(get_member_is_static, is_member_function)
23366	(get_member_function_is_ctor, set_member_function_is_ctor)
23367	(get_member_function_is_dtor, set_member_function_is_dtor)
23368	(get_member_function_is_const, set_member_function_is_const)
23369	(get_member_function_vtable_offset)
23370	(set_member_function_vtable_offset)
23371	(get_member_function_is_virtual): In these definitions, the smart
23372	pointer parameter is passed by reference.
23373
233742015-03-10  Dodji Seketeli <dodji@redhat.com>
23375
23376	Make decl_base::get_context_rel() return a naked pointer
23377	* include/abg-fwd.h (set_member_is_static): Add an overload that
23378	takes the member as a reference to a smart pointer.
23379	(set_member_function_{is_dtor, is_ctor, is_const, vtable_offset,
23380	is_virtual}): Pass the member function as a reference.
23381	(set_member_function_is_const, set_member_function_is_virtual):
23382	Pass the member function as a non-const reference.
23383	* include/abg-ir.h (decl_base::get_context_rel): Return a naked
23384	pointer.
23385	(set_member_is_static, set_member_function_is_virtual): Adjust
23386	this friend declaration.
23387	(set_member_access_specifier): Add an overload that takes a
23388	reference to the member.  Pass a reference to smart pointer to the
23389	other overload.
23390	(set_member_function_is_{is_ctor,is_dtor,is_const,is_virtual,vtable_offset}):
23391	Take a non-const reference to function_decl.
23392	* src/abg-ir.cc (decl_base::get_context_rel): Likewise.
23393	(equals(const decl_base&, const decl_base&, change_kind*)):
23394	Adjust.
23395	(equals(const var_decl&, const var_decl&, change_kind*)):
23396	Likewise.
23397	(get_member_access_specifier, get_member_is_static)
23398	(set_data_member_offset, get_data_member_offset)
23399	(set_data_member_is_laid_out, get_data_member_is_laid_out)
23400	(get_member_function_is_ctor, set_member_function_is_ctor)
23401	(get_member_function_is_dtor, set_member_function_is_dtor)
23402	(get_member_function_is_const, set_member_function_is_const)
23403	(get_member_function_vtable_offset)
23404	(set_member_function_vtable_offset)
23405	(get_member_function_is_virtual, set_member_function_is_virtual):
23406	Likewise.
23407	(set_member_access_specifier): Add an overload that takes a
23408	reference to decl_base.
23409	(set_member_is_static, set_member_function_{is_dtor, is_ctor,
23410	is_const, vtable_offset, is_virtual}): Pass the member function as
23411	a reference.): Add an overload that takes the member as a
23412	reference, and write the older overload in terms of the new one.
23413
234142015-03-09  Dodji Seketeli <dodji@redhat.com>
23415
23416	Make overloads of decl_base::get_qualified_name() return a reference
23417	* incude/abg-ir.h (decl::get_{qualified_name,
23418	qualified_parent_name}): Return a reference to a string rather
23419	than a copy of a string.
23420	(qualified_type_def::get_qualified_name): Likewise.
23421	(reference_type_def::get_qualified_name): Likewise.
23422	(array_type_def::get_qualified_name): Likewise.
23423	(class enum_type_decl::enumerator): Make this is an out-of-line
23424	pimpled class implementation.
23425	(enum_type_decl::enumerator::{get, set}_enum_type): Declare new
23426	method.
23427	(enum_type_decl::enumerator::get_qualified_name): Change this so
23428	that it doesn't take the name of the enum type anymore.
23429	* src/abg-comparison.cc (enum_diff::report): Adjust for
23430	enum_type_decl::enumerator::get_qualified_name() not taking the
23431	name of the enum type anymore.
23432	* src/abg-ir.cc (decl_base::get_qualified_parent_name): Return a
23433	reference to string.
23434	(decl_base::get_qualified_name): Likewise.
23435	(decl_base::get_qualified_name(string&)): Use the new verson of
23436	decl_base::get_qualified_name() that returns a reference.
23437	({qualified_type_def, pointer_type_def, reference_type_def,
23438	array_type_def}::get_qualified_name()): Return a string reference.
23439	({qualified_type_def, pointer_type_def, reference_type_def,
23440	array_type_def}::get_qualified_name(string& qualified_name)
23441	const): Use the new qualified_type_def::get_qualified_name() that
23442	returns a string reference.
23443	(class enum_type_decl::priv): New type.
23444	(enum_type_decl::{get_underlying_type, get_enumerators}): Adjust.
23445	(enum_type_decl::{enumerator::enumerator, enumerator::operator==,
23446	enumerator::get_name, enumerator::get_qualified_name,
23447	enumerator::set_name, enumerator::get_value,
23448	enumerator::set_value, enumerator::get_enum_type,
23449	enumerator::set_enum_type}): Define methodes out-of-line here.
23450
234512015-02-24  Dodji Seketeli <dodji@redhat.com>
23452
23453	Harden strip_typedef
23454	* src/abg-ir.cc (strip_typedef): Consider that the underlying type
23455	can be void.
23456
234572015-02-24  Dodji Seketeli <dodji@redhat.com>
23458
23459	When reading DWARF set member type access where the type is built
23460	* include/abg-fwd.h (is_class(decl_base*)): Return a class_decl*
23461	rather than just a bool.
23462	* abg-ir.cc (is_class(decl_base*)): Return a class_decl* rather
23463	than just a bool.  Simplify the implementation.
23464	* src/abg-dwarf-reader.cc
23465	(maybe_set_member_type_access_specifier): Define new static
23466	function.
23467	(build_ir_node_from_die): Remove the is_member_type flag.  When
23468	building member types set their access specifier.  Simplify the
23469	logic of detecting that a type is a member type; basically
23470	delegate taht to the new maybe_set_member_type_access_specifier().
23471	(build_class_type_and_add_to_ir): Do not try to set the member
23472	type access specifiers anymore.
23473	(build_qualified_type, build_pointer_type, build_reference_type)
23474	(build_typedef_type, build_var_decl, build_function_decl): Adjust.
23475
234762015-02-24  Dodji Seketeli <dodji@redhat.com>
23477
23478	Fix enum_diff::has_changes()
23479	* src/abg-comparison.cc (enum_diff::has_changes): Just use the
23480	normal comparison operator to compare the two enums here.  It's
23481	fast now.
23482
234832015-02-23  Dodji Seketeli <dodji@redhat.com>
23484
23485	Build the set of exported decls directly during DWARF loading
23486	* include/abg-ir.h ({var,function}_decl::get_id): Return a
23487	reference.
23488	* src/abg-ir.cc ({var,function}_decl::get_id): Return a reference
23489	to the string rather than copying it over.
23490	* include/abg-corpus.h (class corpus::exported_decls_builder):
23491	Declare new type.
23492	(corpus::{sort_functions, sort_variables,
23493	maybe_drop_some_exported_decls, get_exported_decls_builder}):
23494	Declare new methods.
23495	* src/abg-corpus.h (corpus::exported_decls_builder::priv): Define
23496	new type.
23497	(class symtab_build_visitor_type): Remove this type that is
23498	useless now.
23499	(corpus::exported_decls_builder::{exported_decls_builder,
23500	exported_functions, exported_variables,
23501	maybe_add_fn_to_exported_fns, maybe_add_var_to_exported_vars}):
23502	Define new functions.
23503	(corpus::priv::is_public_decl_table_built): Remove this data
23504	member.  It's now useless.
23505	(corpus::priv::priv): Adjust.
23506	(corpus::priv::build_public_decl_table): Remove this member
23507	function.  It's now useless.
23508	(corpus::{priv::build_unreferenced_symbols_tables, get_functions,
23509	get_variables}): No need to build the public decls table here.
23510	It's already built by the time the corpus is read from DWARF now.
23511	(corpus::{sort_functions, sort_variables,
23512	maybe_drop_some_exported_decls, get_exported_decls_builder}):
23513	Define new member functions.
23514	* src/abg-dwarf-reader.cc (read_context::exported_decls_builder):
23515	New data member.
23516	(read_context::read_context): Initialize it.
23517	(read_context::{exported_decls_builder,
23518	maybe_add_fn_to_exported_fns, maybe_add_var_to_exported_vars}):
23519	Define new member functions.
23520	(read_debug_info_into_corpus): Get the the new
23521	'exported_decls_builder' object from the corpus and stick it into
23522	the read context so the DWARF reading code can use it to build the
23523	exported decls set.  When the DWARF reading is done, sort the set
23524	of exported functions and variables that was built.
23525	(build_ir_node_from_die): When a function or variable is built,
23526	consider putting it into the set of exported decls.
23527	* tools/abicompat.cc (main): Now that the exported decls is built
23528	*before* we had a chance to stick the list of symbol IDs to keep,
23529	call corpus::maybe_drop_some_exported_decls() to update the set of
23530	exported decls we should consider for the corpus.
23531	was applied to that list and the final
23532
235332015-02-22  Dodji Seketeli <dodji@redhat.com>
23534
23535	Fix canonicalizing of member types ... *AGAIN*
23536	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For typedefs,
23537	we don't need to test that the current scope is a class to know
23538	that we are looking at a member type.  Just looking at the
23539	is_member flag is enough.
23540	So the issue arises when for instance, we are reading a class that
23541	defines a member typedef (or enum) and uses that enum as the type of a
23542	data member.  When reading that data member (before reading the
23543	definition of the typedef), we read the type of the data member; so we
23544	hit the typedef.  But build_ir_node_from_die() cannot fully construct
23545	the scope of the typedef before handing off the typedef because we are
23546	currently building it!  So it hands out a non-complete version of the
23547	class that is being built;  'is_member' is not set to 'true' because
23548	we are getting the type of the data member; it's not *necessarily* a
23549	member type.  So we need to check !is_class_type(scope) to know if we
23550	are given a member type.  I am now thinking that the "is_member" flag
23551	is actually useless.  I think I'll remove it in a later patch.
23552	Anyway, this fixes 'abidiff libabigail.so libabigail.so' again.  I
23553	have some stashed patches that brings it's time down to ~ 45 seconds.
23554	So we are getting close to being able to include that *ultimate* test in
23555	regression test suite.  Oh well.
23556	* src/abg-dwarf-reader.cc (build_ir_node_from_die): When building
23557	typedefs, enum and memeber classes, check that the scope is a
23558	member class to detect if we are building a member type.  In which
23559	case the caller is going to handle the canonicalizing of the
23560	member type *after* it's access specification has been adjusted.
23561	Otherwise, that adjustments happens after the type has been
23562	canonicalized and bad things happen at comparison type.
23563
235642015-02-21  Dodji Seketeli <dodji@redhat.com>
23565
23566	Bug 17649 Avoid endless looping on diff graph with cycles
23567	* include/abg-comp-filter.h (harm{less,ful}_filter::visit_end):
23568	Declare new methods.
23569	* include/abg-comparison.h (diff_context::maybe_apply_filters):
23570	Remove the traverse_nodes_once flag.
23571	* src/abg-comp-filter.cc (apply_filter): Force the traversing to
23572	operate in cycle avoidance mode.
23573	(harm{less,ful}_filter::visit): Update the category of the
23574	canonical node too.
23575	(harm{less,ful}_filter::visit_end): Define new method.
23576	* src/abg-comparison.cc (diff_context::maybe_apply_filters):
23577	Remove the traverse_nodes_once flag.  Adjust.  Simplify logic.
23578	(diff::traverse): Always call diff_node_visitor::{begin,end}.  If
23579	the node has already been visited previously then do not call
23580	diff_node_visitor::visit() and do not visit the children nodes.
23581	(category_propagation_visitor::visit_end):  If the node has
23582	already been visited, then propagate the category from the
23583	canonical nodes of the children nodes.
23584	(propagate_categories):  Force the traversing to operate in cycle
23585	avoidance mode.
23586
235872015-02-20  Dodji Seketeli <dodji@redhat.com>
23588
23589	Add missing new line after reporting alignment changes
23590	* src/abg-comparison.cc (distinct_diff::report): After calling
23591	report_size_and_alignment_changes, one needs to add a new line if
23592	some stuff got emitted out the output stream.
23593
235942015-02-20  Dodji Seketeli <dodji@redhat.com>
23595
23596	Add type checking overloads that ease their calling from GDB
23597	* include/abg-fwd.h (is_class_type, is_pointer, is_reference_type)
23598	(is_qualified_type): Declare overloads that take naked (non-smart)
23599	pointers.
23600	* src/abg-ir.cc (is_class_type, is_pointer, is_reference_type)
23601	(is_qualified_type): Define overloads that take naked (non-smart)
23602	pointers.
23603
236042015-02-20  Dodji Seketeli <dodji@redhat.com>
23605
23606	Remove overly eager assert in distinct_diff::report
23607	* src/abg-comparison.cc (distinct_diff::report): Remove over-eager
23608	assert.
23609
236102015-02-20  Dodji Seketeli <dodji@redhat.com>
23611
23612	Factorize late canonicalizing code in the dwarf reader
23613	* src/abg-dwarf-reader.cc
23614	(read_context::{canonicalize_types_scheduled,
23615	perform_late_type_canonicalizing}):  Factorize these from ...
23616	(build_translation_unit_and_add_to_ir): ... here.
23617
236182015-02-20  Dodji Seketeli <dodji@redhat.com>
23619
23620	Rename schedule_type_for_canonicalization -> schedule_type_for_late_canonicalization
23621	* src/abg-dwarf-reader.cc
23622	(read_context::schedule_type_for_late_canonicalization): Renamed
23623	read_context::schedule_type_for_canonicalization into this.  Also,
23624	add some sanity checking code in there.
23625	(build_class_type_and_add_to_ir, maybe_canonicalize_type): Adjust.
23626
236272015-02-20  Dodji Seketeli <dodji@redhat.com>
23628
23629	Adjust semantics of the 'is_member' flag of build_ir_node_from_die()
23630	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Rename
23631	is_member into is_member_type.  Adjust.
23632	(get_scope_for_die, build_translation_unit_and_add_to_ir)
23633	(build_namespace_decl_and_add_to_ir): Adjust.
23634	(build_class_type_and_add_to_ir): Adjust.  Adjust set to false
23635	when calling build_ir_node_from_die() to build a function_decl.
23636
236372015-02-20  Dodji Seketeli <dodji@redhat.com>
23638
23639	Simplify canonicalizing handling for typedefs
23640	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For typedefs,
23641	we don't need to test that the current scope is a class to know
23642	that we are looking at a member type.  Just looking at the
23643	is_member flag is enough.
23644
236452015-02-20  Dodji Seketeli <dodji@redhat.com>
23646
23647	Do not miss canonicalizing opportunities on non-member class types
23648	* src/abg-dwarf-reader.cc (build_ir_node_from_die): When a class
23649	is not a member type, then it at least ought to be scheduled for
23650	late canonicalizing.
23651
236522015-02-20  Dodji Seketeli <dodji@redhat.com>
23653
23654	Fix handling of canonicalizing of member enum types
23655	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Once we've
23656	built the enum type by calling build_enum_type(), do not try to
23657	canonicalize it here if it's a member type.  The calling
23658	build_class_type_and_add_to_ir() must deal with it already.
23659
236602015-02-20  Dodji Seketeli <dodji@redhat.com>
23661
23662	Stick qualified, pointer, reference and array types into the global scope
23663	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
23664	consider qualified, pointer, reference and array types as member
23665	types.  Only typedef, class and enum types are.
23666	(build_ir_node_from_die): Stick base, pointer, reference,
23667	qualified and array types into the global scope.
23668
236692015-02-20  Dodji Seketeli <dodji@redhat.com>
23670
23671	Avoid creating multiple versions of certain composite types
23672	* src/abg-dwarf-reader.cc (build_qualified_type)
23673	(build_pointer_type_def, build_reference_type, build_array_type)
23674	(build_typedef_type): If the composite type we are about to create
23675	was already created, just return the one that exists already.
23676
236772015-02-20  Dodji Seketeli <dodji@redhat.com>
23678
23679	Do not forget to canonicalize enum underlying type and void type
23680	* src/abg-dwarf-reader.cc (build_enum_type): Canoncialize the
23681	underlying type of the enum type.
23682	(build_ir_node_for_void_type): Canonicalize the void type.
23683
236842015-02-20  Dodji Seketeli <dodji@redhat.com>
23685
23686	Do not forget to associate DIE to the types they represent
23687	* src/abg-dwarf-reader.cc (build_type_decl, build_enum_type)
23688	(build_qualified_type, build_pointer_type_def)
23689	(build_reference_type, build_typedef_type)
23690	(build_class_type_and_add_to_ir): Take a new flag that says if the
23691	DIE is from the alternate debug info section or not.  Perform the
23692	DIE->type association in these functions.  Note that in
23693	build_class_type_and_add_to_ir we are now doing the DIE->type
23694	association even for declaration-only classes.  And for member
23695	types, do not bother doing the association because it's already
23696	been done by build_ir_node_from_die().
23697	(build_ir_node_from_die): Do not do the DIE->type association here
23698	anymore.  Adjust to the new signature of the build_* functions
23699	above that actually build the types.
23700
237012015-02-20  Dodji Seketeli <dodji@redhat.com>
23702
23703	Clear per-TU data before reading debub info for a TU
23704	* src/abg-dwarf-reader.cc
23705	(read_context::die_type_map): New accessor for the two DIE->Type
23706	maps we have; the one of the main debug info section and the one
23707	of the alternate debug info section.
23708	(read_context::{associate_die_to_type,
23709	lookup_type_from_die_offset}): use the new die_type_map()
23710	accessor.
23711	(read_context::clear_per_translation_unit_data): Factorize this
23712	from build_translation_unit_and_add_to_ir().  Also, add code to
23713	clear the DIE->type map as well as the vectors of offsets of the
23714	types of the DIEs to canonicalize after the translation unit has
23715	been read.
23716
237172015-02-19  Dodji Seketeli <dodji@redhat.com>
23718
23719	Fix the new regression test for type canonicalizing
23720	* tests/runtestcanonicalizetypes.sh.in (binaries): Refer to
23721	abg-tools-utils, not abg-tools-utils.o; the extension is computed
23722	automatically, depending on the underlying platform.
23723
237242015-02-19  Dodji Seketeli <dodji@redhat.com>
23725
23726	Make strip_typedef() act on canonical types only
23727	* include/abg-fwd.h (is_compatible_with_class_type): Declare new
23728	function.
23729	(canonicalize): Move the declaration here, from ...
23730	* include/abg-ir.h (canonicalize): ... here.
23731	* src/abg-ir.cc (strip_typedef): Assert that the input type is
23732	canonicalized.  Make sure that weak references are on
23733	canonicalized types.  Make sure that the returned type is a
23734	canonical one.
23735	(canonicalize): Make this return the canonical type that it has
23736	computed.
23737	* src/abg-comp-filter.cc (type_size_changed): Use the new
23738	is_compatible_with_class_type() function, instead of
23739	is_class_type().
23740
237412015-02-18  Dodji Seketeli <dodji@redhat.com>
23742
23743	Speed up function_decl::get_id() and var_decl::get_id()
23744	* src/abg-ir.cc (var_decl::priv::id_): New data member.
23745	(var_decl::get_id): Cache the result on the first invocation and
23746	and returns it on subsequent invocations.
23747	(function_dec::priv::id_): New data member.
23748	(function_decl::get_id): Cache the result on the first invocation
23749	and and returns it on subsequent invocations.
23750
237512015-02-18  Dodji Seketeli <dodji@redhat.com>
23752
23753	Speed up symbol version reading
23754	* src/abg-dwarf-reader.cc (find_symbol_table_section)
23755	(get_symbol_versionning_sections): Forward declare these existing
23756	static functions.
23757	(read_context::{symtab_section_,
23758	symbol_versionning_sections_loaded_,
23759	symbol_versionning_sections_found_, versym_section_
23760	verdef_section, verneed_section}): New data members.
23761	(read_context::read_context): Initialize them.
23762	(read_context::{find_symbol_table_section,
23763	get_symbol_versionning_sections, get_version_for_symbol}):
23764	Implement a caching version of their exisiting non-caching
23765	counterpart.
23766	(read_context::lookup_elf_symbol_from_index): Use the new caching
23767	functions read_context::find_symbol_table_section and
23768	read_context::get_version_for_symbol.
23769	(read_context::load_symbol_maps): Likewise, use the new caching
23770	function read_context::find_symbol_table_section.
23771
237722015-02-17  Dodji Seketeli <dodji@redhat.com>
23773
23774	Stop traversing function/variable node when added to symbol table
23775	* src/abg-corpus.cc (symtab_build_visitor_type::visit_begin):
23776	Replace symtab_build_visitor_type::visit_end with this and return
23777	false.
23778
237792015-02-13  Dodji Seketeli <dodji@redhat.com>
23780
23781	Do not apply diff filters sub-tree not carrying changes
23782	* src/abg-comp-filter.cc ({harmless, harmful}_filter::visit): Do
23783	not try to do the categorizing on a diff sub-tree that does
23784	not carry any change.
23785	* src/abg-comparison.cc (diff_context::maybe_apply_filters): Do
23786	not bother trying to apply the filters on a diff sub-tree that
23787	does not carry any change.
23788
237892015-02-13  Dodji Seketeli <dodji@redhat.com>
23790
23791	Canonicalize types either early or late after TU reading
23792	* include/abg-fwd.h (is_class_type)
23793	(type_has_non_canonicalized_subtype): Declare new functions.
23794	(is_member_type): Remove the overload that takes a decl_base_sptr.
23795	It's superfluous.  We just need the one that takes a
23796	type_base_sptr.
23797	* include/abg-ir.h (translation_unit::{is_constructed,
23798	set_is_constructed}): Add new methods.
23799	(class_decl::has_virtual_member_functions): Likewise.
23800	(class decl_base): Makes it virtually inherit ir_traversable_base.
23801	(class type_base): Make this virtually inherit traversable_base
23802	too.
23803	(type_base::canonicalize): Renamed enable_canonical_equality
23804	into this.
23805	(type_base::traverse): Declare new virtual method.
23806	(canonicalize): Renamed enable_canonical_equality into this.
23807	(scope_type_decl::traverse): Declare new virtual method.
23808	(namespace_decl::get_pretty_representation): Declare new virtual
23809	method.
23810	(function_type::traverse): Likewise.
23811	(class_decl::base_spec::traverse): Likewise.
23812	(ir_node_visitor::visit): Remove the overloads and replace each of
23813	them with a pair of ...
23814	(ir_node_visitor::{visit_begin, visit_end}): ... of these.
23815	* include/abg-traverse.h (traversable_base::visiting): New
23816	method.
23817	(traversable_base::visiting_): New data member.
23818	(traversable_base::traversable_base): New constructor.
23819	* src/abg-ir.cc ({scope_decl, type_decl, namespace_decl,
23820	qualified_type_def, pointer_type_def, reference_type_def,
23821	array_type_def, enum_type_decl, typedef_decl, var_decl,
23822	function_decl, function_decl::parameter, class_decl,
23823	class_decl::member_function_template,
23824	class_decl::member_class_template, function_tdecl,
23825	class_tdecl}::traverse): Fix this to properly set the
23826	traversable_base::visiting_ flag and to reflect the new signatures
23827	of the ir_node_visitor methods.
23828	({type_base, scope_type_decl, function_type,
23829	class_decl::base_spec}::traverse): New method.
23830	(type_base::get_canonical_type_for): Handle the case of the type
23831	already having a canonical type.  Properly hash the type using the
23832	dynamic type hasher.  Look through declaration-only classes to
23833	consider the definition of the class instead.  Fix logic to have a
23834	single pointer of return, to ease debugging.
23835	(canonicalize): Renamed enable_canonical_equality into this.
23836	(namespace_decl::get_pretty_representation): Define new method.
23837	(ir_node_visitor::visit): Replace each of these overloads with a
23838	pair of visit_begin/visit_end ones.
23839	(translation_unit::priv::is_constructed_): New data member.
23840	(translation_unit::priv::priv): Initialize it.
23841	(translation_unit::{is_constructed, set_is_constructed}): Define
23842	new methods.
23843	(is_member_type(const decl_base_sptr)): Remove.
23844	(is_class_type(decl_base *d)): Define new function.
23845	(class_decl::has_virtual_member_functions): Define new method.
23846	(equals(const class_decl&, const class_decl&, change_kind*)): If
23847	the containing translation unit is not constructed yet, do not
23848	take virtual member functions in account when comparing the
23849	classes.  This is because when reading from DWARF, there can be
23850	DIEs that change the number of virtual member functions after the
23851	DIE of the class.  So one needs to start taking virtual members
23852	into account only after the translation unit has been constructed.
23853	(class non_canonicalized_subtype_detector): Define new type.
23854	(type_has_non_canonicalized_subtype): Define new function.
23855	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Renamed
23856	this into symtab_build_visitor_type::visit_end.
23857	* src/abg-dwarf-reader.cc (die_type_map_type): New typedef.
23858	(die_class_map_type): This is now a typedef on a map of
23859	Dwarf_Off/class_decl_sptr.
23860	(read_context::{die_type_map_, alternate_die_type_map_,
23861	types_to_canonicalize_, alt_types_to_canonicalize_}): New data
23862	members.
23863	(read_context::{associate_die_to_decl,
23864	associate_die_to_decl_primary}): Make these methods public.
23865	(read_context::{associate_die_to_type,
23866	lookup_type_from_die_offset, is_wip_class_die_offset,
23867	types_to_canonicalize, schedule_type_for_canonicalization}):
23868	Define new methods.
23869	(build_type_decl, build_enum_type)
23870	(build_class_type_and_add_to_ir, build_qualified_type)
23871	(build_pointer_type_def, build_reference_type, build_array_type)
23872	(build_typedef_type, build_function_decl): Do not canonicalize
23873	types here.
23874	(maybe_canonicalize_type): Define new function.
23875	(build_ir_node_from_die): Take a new flag that says if the ir node
23876	is a member type/function or not. Early-canonicalize base types.
23877	Canonicalize composite types that have only canonicalized
23878	sub-types.  Schedule the other types for late canonicalizing.  For
23879	class types, early canonicalize those that are non-member types,
23880	that are fully constructed and that have only canonicalized
23881	sub-types.  Adjust to the new signature of build_ir_node_from_die.
23882	(get_scope_for_die, build_namespace_decl_and_add_to_ir)
23883	(build_qualified_type, build_pointer_type_def)
23884	(build_reference_type, build_array_type, build_typedef_type)
23885	(build_var_decl, build_function_decl): Adjust for the new
23886	signature of build_ir_node_from_die.
23887	(build_translation_unit_and_add_to_ir): Likewise.  Perform the
23888	late canonicalizing of the types that have been scheduled for
23889	that.
23890	(build_class_type_and_add_to_ir): Return a class_decl_sptr, not a
23891	decl_base_sptr.  Adjust for the new signature of
23892	build_ir_node_from_die.  Early canonicalize member types that are
23893	created and added to a given class, or schedule them for late
23894	canonicalizing.
23895	* src/abg-reader.cc (class read_context::{m_wip_classes_map,
23896	m_types_to_canonicalize}): New data members.
23897	(read_context::{clear_types_to_canonicalize,
23898	clear_wip_classes_map, mark_class_as_wip, unmark_class_as_wip,
23899	is_wip_class, maybe_canonicalize_type,
23900	schedule_type_for_late_canonicalizing,
23901	perform_late_type_canonicalizing}): Add new method definitions.
23902	(read_context::clear_per_translation_unit_data): Call
23903	read_context::clear_types_to_canonicalize().
23904	(read_translation_unit_from_input): Call
23905	read_context::perform_late_type_canonicalizing() at the end of the
23906	function.
23907	(build_function_decl): Fix the function type canonicalizing (per
23908	translation) that was already in place.  Do the canonicalizing of
23909	these only when the type is fully built.  Oops.  This was really
23910	brokend.  Also, when the function type is constructed, consider it
23911	for type canonicalizing.
23912	(build_type_decl): Early canonicalize basic types.
23913	(build_qualified_type_decl, build_pointer_type_def)
23914	(build_pointer_type_def, build_reference_type_def)
23915	(build_array_type_def, build_enum_type_decl, build_typedef_decl):
23916	Handle the canonicalizing for these composite types: either early
23917	or late.
23918	(build_class_decl): Likewise.  Also, mark this class a 'being
23919	built' until it's fully built.  This helps the canonicalizing code
23920	to know that it should leave a class alone until it's fully built.
23921	* tests/test-ir-walker.cc (struct name_printing_visitor): Adjust
23922	to the visitor methods naming change.
23923	* configure.ac: Generate the tests/runtestcanonicalizetypes.sh
23924	testing script from tests/runtestcanonicalizetypes.sh.in.
23925	* tests/runtestcanonicalizetypes.sh.in: Add the template for the
23926	new runtestcanonicalizetypes.sh script that test for type
23927	canonicalizing.
23928	* tests/Makefile.am: Add the new runtestcanonicalizetypes.sh
23929	regression testing script to the build system.
23930
239312015-02-18  Dodji Seketeli <dodji@redhat.com>
23932
23933	Factorize per TU data clearing in the xml-abi reader
23934	* src/abg-reader.cc
23935	(read_context::clear_per_translation_unit_data): Factorize this
23936	function out of ...
23937	(read_context::read_translation_unit_from_input): ... this one.
23938
239392015-02-13  Dodji Seketeli <dodji@redhat.com>
23940
23941	Use the deep type sptr equality operator when possible
23942	* src/abg-ir.cc (equals):  On function_decl overload, use the deep
23943	sptr type equality operator when comparing types.
23944	(non_type_tparameter::operator==): Likewise.
23945
239462015-02-18  Dodji Seketeli <dodji@redhat.com>
23947
23948	Properly compare virtualness of member functions
23949	* src/abg-ir.cc (equals(const function_decl&, const
23950	function_decl&, change_kind*)): Compare virtualness of member
23951	function before comparing their vtable offsets.
23952
239532015-02-13  Dodji Seketeli <dodji@redhat.com>
23954
23955	Misc style fixes
23956	* include/abg-ir.h (reference_type_def::get_pointed_to_type): use
23957	type_base_sptr, rather than shared_ptr<type_base>
23958	(typdef_decl::get_underlying_type): Likewise.
23959	(function_decl::get_return_type): Likewise.
23960	(function_decl::set_type): Likewise.
23961	(class_decl::member_class_template::as_class_tdecl): Likewise.
23962	* src/abg-comparison.cc (compute_diff): Remove useless vertical
23963	space.
23964	(corpus_diff::traverse): Add a vertical space after this.
23965	* src/abg-dwarf-reader.cc (type_ptr_map): Remove this unused
23966	typedef.
23967	(get_version_for_symbol)
23968	(finish_member_function_reading): Fix the comments of these
23969	functions.
23970	* src/abg-reader.cc (build_function_decl): Return a
23971	function_decl_sptr rather than a shared_ptr<function_decl>.
23972	(build_qualified_type_decl)
23973	(build_pointer_type_def, build_reference_type_def)
23974	(build_array_type_def, build_typedef_decl, build_class_decl): Use
23975	the is_<someking_of_type> functions here, rather than using the
23976	dynamic cast.  This increases maintainability.
23977
239782015-02-11  Dodji Seketeli <dodji@redhat.com>
23979
23980	Optimize compressed debug info reading for speed
23981	* src/abg-dwarf-reader.cc
23982	(find_last_import_unit_point_before_die): Look for the inclusion
23983	point of the partial unit in reverse topological order.
23984
239852015-02-10  Dodji Seketeli <dodji@redhat.com>
23986
23987	Share private data of class_diff nodes
23988	* src/abg-comparison.cc (class_diff::class_diff): Do not
23989	initialize the private data of class_diff here.
23990	(compute_diff): In the overload for class_diff, initialize the
23991	private data of the new instance of class_diff to the private data
23992	of its canonical instance.
23993	(redundancy_marking_visitor::visit_begin): If a node is marked
23994	redundant, do not dare visit its children.  In cases of classes
23995	that have members that reference themselves, this prevents us from
23996	wrongly marking some of the data member changes as being
23997	redundant.
23998
239992015-02-10  Dodji Seketeli <dodji@redhat.com>
24000
24001	Do not crash when applying filters to a NULL diff
24002	* src/abg-comparison.cc (diff_context::maybe_apply_filters): Do
24003	not crash when called with a NULL diff.
24004
240052015-02-09  Dodji Seketeli <dodji@redhat.com>
24006
24007	Initial implementation of canonical type comparison in the IR
24008	* include/abg-ir.h (class type_base): Pimplify this class.
24009	(type_base::canonical_types_map_type): New typedef.
24010	(type_base::{get_canonical_types_map, get_canonical_type_for,
24011	get_canonical_type}): Declare new member functions.
24012	(enable_canonical_equality): Declare new function.
24013	(struct type_base::hash): Declare this functor here.
24014	* src/abg-ir.cc ():
24015	* src/abg-dwarf-reader.cc (build_type_decl, build_enum_type)
24016	(build_class_type_and_add_to_ir, build_qualified_type)
24017	(build_pointer_type_def, build_reference_type, build_array_type)
24018	(build_typedef_type, build_function_decl): Enable canonical
24019	equality for the resulting type returned by these functions.
24020	* src/abg-hash.cc (type_base::hash::operator()(const type_base&)):
24021	Adjust as this is now out-of-line.  Also, add two overloads for
24022	type_base* and type_base_sptr.
24023	(struct type_base::priv): Define new type for private data of
24024	type_base.
24025	(type_base::{get_canonical_types_map, get_canonical_type_for,
24026	get_canonical_type}): Define new member functions.
24027	(enable_canonical_equality): Define new function
24028	(type_base::{type_base, set_size_in_bits, get_size_in_bits,
24029	set_alignment_in_bits, get_alignment_in_bits}): Adjust.
24030	({type_decl, scope_type_decl, qualified_type_def,
24031	pointer_type_def, reference_type_def, array_type_def,
24032	enum_type_decl, typedef_decl, function_type,
24033	class_decl}::operator==): If the types being compared have
24034	canonical type then use them for comparison.
24035
240362015-02-07  Dodji Seketeli <dodji@redhat.com>
24037
24038	Don't walk the diff tree when there are no suppressions
24039	* src/abg-comparison.cc (apply_suppressions): Do not walk the diff
24040	tree to apply suppressions when there are no suppressions to
24041	apply.
24042
240432015-02-07  Dodji Seketeli <dodji@redhat.com>
24044
24045	Speedup some diff::has_changes() implementations
24046	* src/abg-comparison.cc ({distinct_diff, var_diff,
24047	class_diff}::has_changes): Use the hash value of the diff subjects
24048	to detect quickly if they differ.  If they don't, then go the slow
24049	path of comparing the types.
24050
240512015-02-05  Dodji Seketeli <dodji@redhat.com>
24052
24053	Get out as early as possible when comparing different ABI artefacts
24054	* include/abg-ir.h (equal): Turn the last parameter of type
24055	change_kind& into a change_kind*.  Do this on all the overloads'
24056	declarations.
24057	* src/abg-ir.cc (equal): Do the same for the definitions of the
24058	overloads and adapt them to report about the kind of changes makes
24059	the two ABI artifact different -- only if the change_kind pointer
24060	is non-null.  That way, callers have a way to choose if they want
24061	to go the expensive route of knowing what kind of changes there
24062	are.
24063	({decl_base, scope_decl, type_base, scope_type_decl,
24064	qualified_type_def, pointer_type_def, pointer_type_def,
24065	reference_type_def, array_type_def, enum_type_decl, typedef_decl,
24066	var_decl, function_type, function_decl, function_decl::parameter,
24067	class_decl::base_spec, class_decl}::operator==): Adjust to the new
24068	signature of equals; call it with the change_kind* parameter set
24069	to NULL.
24070	* src/abg-comparison.cc ({var_diff, pointer_diff, array_diff,
24071	reference_diff, qualified_type_diff, enum_diff, class_diff,
24072	base_diff, scope_diff, fn_parm_diff, function_decl_diff,
24073	type_decl_diff, typedef_diff}::has_local_changes): Adjust.
24074
240752015-02-05  Dodji Seketeli <dodji@redhat.com>
24076
24077	Rename diff::length() into diff::has_changes()
24078	* include/abg-comparison.h (*::has_changes): Rename the ::length()
24079	method of all the diff types that inherit the diff class into
24080	this, in the class declarations.
24081	* src/abg-comparison.cc (*::has_changes): Do the same as in the
24082	declarations, in the definitions.
24083	(diff::to_be_reported, distinct_diff::has_local_changes)
24084	(distinct_diff::report, distinct_diff::, array_diff::has_changes)
24085	(reference_diff::has_changes, qualified_type_diff::has_changes)
24086	(enum_diff::has_changes, translation_unit_diff::has_changes)
24087	(suppression_categorization_visitor::visit_end)
24088	(redundancy_marking_visitor::visit_begin): Adjust.
24089	* tests/test-diff-dwarf.cc (main): Adjust.
24090	* tools/abidiff.cc (main): Likewise.
24091
240922015-01-27  Dodji Seketeli <dodji@redhat.com>
24093
24094	Add a method to diff_context to dump a diff tree to error output
24095	* include/abg-comparison.h (diff_context::error_output_stream):
24096	Make this function const.
24097	(diff_context::{do_dump_diff_tree}): Declare new methods.
24098	* src/abg-comparison.cc (diff_context::error_output_stream): Make
24099	this function const.
24100	(diff_context::do_dump_diff_tree): Define new methods.
24101
241022015-01-27  Dodji Seketeli <dodji@redhat.com>
24103
24104	Keep children nodes of class_diff and scope_diff sorted
24105	* include/abg-comparison.h (decl_diff_base, type_diff_base):
24106	Forward declare these types.
24107	(diff_sptrs_type, decl_diff_base_sptr, decl_diff_base_sptrs_type)
24108	(type_diff_base_sptr, type_diff_base_sptrs_type)
24109	(base_diff_sptrs_type, string_type_diff_base_sptr_map)
24110	(string_decl_diff_base_sptr_map, string_diff_sptr_map): New
24111	typedefs.
24112	(changed_type_or_decl, changed_parm, changed_parms_type)
24113	(string_changed_type_or_decl_map)
24114	(unsigned_changed_type_or_decl_map, changed_type_or_decl_vector):
24115	Remove typedefs.
24116	(class_diff::changed_base): Make this return a
24117	base_diff_sptrs_type now.  No more a string_base_diff_sptr_map.
24118	(class_diff::changed_member_fns): Make this return a
24119	function_decl_diff_sptrs_type, no more a
24120	string_changed_member_function_sptr_map.
24121	(class_diff::changed_types): Make this return a diff_sptrs_type,
24122	not a string_changed_type_or_decl_map anymore.
24123	(class_diff::changed_decls): Make this return a diff_sptrs_type,
24124	not a string_changed_type_or_decl_map anymore.
24125	* src/abg-comp-filter.cc (has_virtual_mem_fn_change)
24126	(has_non_virtual_mem_fn_change): Adjust.
24127	* src/abg-comparison.cc (compute_diff): For the decl_base_sptr and
24128	type_base_sptr overloads, assert that the resulting diff is
24129	non-null.
24130	(class_diff::priv::{sorted_changed_base_,
24131	sorted_changed_member_types_, sorted_subtype_changed_dm_,
24132	sorted_changed_dm_, sorted_changed_member_functions_,
24133	sorted_changed_member_class_tmpls_}): New data members.
24134	(class_diff::priv::changed_member_types_): Changed the type of
24135	this from string_changed_type_or_decl_map to string_diff_sptr_map.
24136	(class_diff::priv::changed_member_functions_): Changed the type of
24137	this from string_changed_member_function_sptr_map to
24138	string_function_decl_diff_sptr_map.
24139	(class_diff::priv::changed_member_class_tmpls_): Changed the type
24140	of this from string_changed_type_or_decl_map to
24141	string_diff_sptr_map.
24142	(class_diff::ensure_lookup_tables_populated): Adjust.  Initialize
24143	the new sorted members class_diff::priv::{sorted_changed_bases_,
24144	sorted_subtype_changed_dm_, sorted_changed_dm_,
24145	sorted_changed_member_functions_, sorted_changed_member_types_}.
24146	(class_diff::priv::{member_type_has_changed,
24147	member_class_tmpl_has_changed, count_filtered_bases,
24148	count_filtered_subtype_changed_dm, count_filtered_changed_mem_fns,
24149	}): Adjust.
24150	(class_diff::chain_into_hierarchy): Adjust:  The children nodes of
24151	class_diff are now laid out in a sorted way.
24152	(class_diff::{changed_bases, changed_member_fns}): Adjust.
24153	(base_diff_comp, virtual_member_function_diff_comp): New types.
24154	(sort_string_base_diff_sptr_map)
24155	(sort_string_virtual_member_function_diff_sptr_map): New static
24156	functions.
24157	(data_member_diff_comp): Renamed var_diff_comp into this.
24158	(sort_unsigned_data_member_diff_sptr_map): Renamed sort_var_diffs
24159	into this and adjust.
24160	(class_diff::report): Do not sort the nodes we are about to emit
24161	here.  Just use the natural order of the nodes in their parent
24162	tree as they should now be sorted.
24163	(scope_diff::priv::{changed_types_, changed_decls_}): Change the
24164	type of these from string_changed_type_or_decl_map to
24165	string_diff_sptr_map.
24166	(scope_diff::priv::{sorted_changed_types_,
24167	sorted_changed_decls_}): New data members.
24168	(scope_diff::ensure_lookup_tables_populated): Adjust.  Initialize
24169	the new scope_diff::priv::sorted_changed_{types_, decls_}.
24170	(scope_diff::chain_into_hierarchy): Adjust.  The children of
24171	scope_diff are now sorted.
24172	(scope_diff::changed_{types, decls}): Return the sorted vectors of
24173	children nodes.
24174	(struct changed_type_or_decl_comp): Remove.
24175	(struct diff_comp): New type.
24176	(sort_changed_type_or_decl): Remove.
24177	(sort_string_diff_sptr_map): New static function.
24178	(scope_diff::report): Adjust.  Do not sort children nodes here
24179	ourselves before reporting about them.  Rather, use the natural
24180	topological order of the children as they are now sorted.
24181	(corpus_diff::priv::sorted_changed_vars_): Renamed
24182	corpus_diff::priv::changed_vars_ into this to make it more
24183	explicit that the things it holds are sorted.
24184	(corpus_diff::changed_variables_sorted): Adjust.
24185	(corpus_diff::priv::ensure_lookup_tables_populated): Likewise.
24186	(corpus_diff::priv::apply_filters_and_compute_diff_stats):
24187	Likewise.
24188	(corpus_diff::priv::categorize_redundant_changed_sub_nodes):
24189	Likewise.
24190	(corpus_diff::priv::clear_redundancy_categorization): Likewise.
24191	(corpus_diff::priv::maybe_dump_diff_tree): Likewise.
24192	(corpus_diff::report): Likewise.
24193
241942015-01-26  Dodji Seketeli <dodji@redhat.com>
24195
24196	Hand-code the string representation of GElf_Ehdr::e_machine
24197	* configure.ac: Do not check for elfutils/libebl.h and libebl.a
24198	anymore.
24199	* src/abg-dwarf-reader.cc: Do not include elfutils/libebl.h
24200	anymore.
24201	(e_machine_to_string): Define new static
24202	function.
24203	(read_context::::load_elf_architecture): Use the new
24204	e_machine_to_string() function rather than ebl_backend_name() and
24205	ebl_openbackend().
24206	* tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: Adjust.
24207
242082015-01-26  Dodji Seketeli <dodji@redhat.com>
24209
24210	Fix chaining of descendant node of qualified type diff node
24211	* include/abg-comparison.h
24212	(qualified_type_diff::leaf_underlying_type_diff): Declare new
24213	accessor.
24214	* src/abg-comparison.cc (get_leaf_type): Forward declare this
24215	static function.
24216	(qualified_type_diff::priv::leaf_underlying_type_diff): Define new
24217	data member.
24218	(qualified_type_diff::leaf_underlying_type_diff): Define this new
24219	accessor.
24220	(qualified_type_diff::chain_into_hierarchy): Call
24221	leaf_underlying_type_diff() here rather than
24222	underlying_type_diff().
24223	(qualified_type_diff::report): Use leaf_underlying_type_diff()
24224	rather than re-computing the diff between the two leaf underlying
24225	type diff nodes.
24226	* libtest26-qualified-redundant-node-v{0,1}.so: New binary test
24227	input files.
24228	* tests/data/test-diff-filter/test26-qualified-redundant-node-v{0,1}.cc:
24229	Source code for the binary test inputs above.
24230	* tests/test-diff-filter.cc (int_out_spec): Add the new test input
24231	to the vector of test input data over which to run this test
24232	harness.
24233	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-{0,1.txt:
24234	New test input file.
24235	* tests/data/Makefile.am: Add the new test input data to the
24236	source distribution.
24237
242382015-01-24  Dodji Seketeli <dodji@redhat.com>
24239
24240	Recognize cyclic diff tree nodes as being redundant
24241	* include/abg-comparison.h (enum visiting_kind): Rename
24242	enumerator DO_NOT_MARK_VISITED_NODES_AS_TRAVERSED into
24243	DO_NOT_MARK_VISITED_NODES_AS_VISITED.
24244	(diff_context::diff_has_been_visited): Rename
24245	diff_context::diff_has_been_traversed into this.
24246	(diff_context::mark_diff_as_visited): Rename
24247	diff_context::mark_diff_as_traversed into this.
24248	(diff_context::forget_visited_diffs): Rename
24249	diff_context::forget_traversed_diffs into this.
24250	(diff_context::forbid_visiting_a_node_twice): Rename
24251	diff_context::forbid_traversing_a_node_twice into this.
24252	(diff_context::visiting_a_node_twice_is_forbidden): Rename
24253	diff_context::traversing_a_node_twice_is_forbidden into this.
24254	(diff::is_traversing): Move this from protected to public.
24255	* src/abg-comparison.cc (diff_context::priv::visited_diff_nodes_):
24256	Rename diff_context::priv::traversed_diff_nodes_ into this.
24257	(diff_context::priv::forbid_visiting_a_node_twice_): Rename
24258	diff_context::priv::forbid_traversing_a_node_twice_ into this.
24259	(diff_context::priv::priv): Adjust.
24260	(diff_context::diff_has_been_visited): Rename
24261	diff_context::diff_has_been_traversed into this.  Adjust.
24262	(diff_context::mark_diff_as_visited): Rename
24263	diff_context::mark_diff_as_traversed into this.  Adjust.
24264	(diff_context::forget_visited_diffs): Rename
24265	diff_context::forget_traversed_diffs into this.  Adjust.
24266	(diff_context::forbid_visiting_a_node_twice): Rename
24267	diff_context::forbid_traversing_a_node_twice into this.
24268	(diff_context::visiting_a_node_twice_is_forbidden): Rename
24269	diff_context::traversing_a_node_twice_is_forbidden into this.
24270	(diff_context::maybe_apply_filters): Adjust.
24271	(diff::end_traversing): Remove the 'mark_as_traversed' parameter
24272	of this.  Remove the visited-marking code.
24273	(diff::traverse): This is the crux of the changes of this patch.
24274	Avoid traversing a node that is being traversed, but one can visit
24275	a node being visited.  Also, traversing a node means visiting it
24276	and visiting its children nodes.
24277	(diff::is_filtered_out):  Simplify logic for filtering redundant
24278	code.  Basically all nodes that are redundant are filtered.  All
24279	the complicated logic that was due when diff nodes were shared is
24280	not relevant anymore.
24281	(corpus_diff::priv::categorize_redundant_changed_sub_nodes)
24282	(propagate_categories, apply_suppressions)
24283	(diff_node_printer::diff_node_printer, print_diff_tree)
24284	(categorize_redundant_changed_sub_nodes)
24285	(clear_redundancy_categorization)
24286	(clear_redundancy_categorization): Adjust.
24287	(redundancy_marking_visitor::visit_begin): Adjust.  Also, if the
24288	current diff node is already being traversed (that's a clyclic
24289	node) then mark it as redundant.
24290	* src/abg-comp-filter.cc (apply_filter): Adjust.
24291	* tests/data/test-diff-filter/test16-report-2.txt: New test input data.
24292	* tests/data/test-diff-filter/libtest25-cyclic-type-v{0,1}.so: New
24293	test input binaries.
24294	* tests/data/test-diff-filter/test25-cyclic-type-v{0,1}.cc: Source
24295	code for the test input binaries.
24296	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: New
24297	test input data.
24298	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt:
24299	Likewise.
24300	* tests/test-diff-filter.cc (in_out_specs): Add the new test
24301	inputs above to the list of test input data over which to run this
24302	test harness.
24303	* tests/data/Makefile.am: Add the new test files above to source
24304	distribution.
24305	* tests/data/test-diff-filter/test16-report.txt: Adjust.
24306	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
24307
243082015-01-20  Dodji Seketeli <dodji@redhat.com>
24309
24310	Tighten the condition for creating a cloned function from DWARF
24311	* src/abg-dwarf-reader.cc (build_ir_node): Re-indent.  Also,
24312	consider that when a DIE C refers to a DIE A via the
24313	DW_abstract_origin attribute, C represents a clone of A, only if C
24314	and A have *different* linkage names.
24315
243162015-01-19  Dodji Seketeli <dodji@redhat.com>
24317
24318	Fix the output of the array diff report
24319	* src/abg-comparison.cc (array_diff::report): Refer to the pretty
24320	representation of the array when talking about changes of the
24321	array element type.
24322	* src/abg-ir.cc (equals): In the overload for array_type, use the
24323	equality operator that knows how to handle null pointers to
24324	element type.  This avoids crashes when the pointer to element
24325	type is null.
24326	* tests/data/test-diff-dwarf/test10-report.txt: Adjust.
24327	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
24328	Likewise.
24329
243302015-01-14  Dodji Seketeli <dodji@redhat.com>
24331
24332	Do not install the generated documentation by default
24333	* doc/manuals/Makefile.am: Do not install the generated
24334	documentation by default
24335
243362015-01-14  Dodji Seketeli <dodji@redhat.com>
24337
24338	Make sure to install html docs & gziped info on make install
24339	* doc/manuals/Makefile.am: Make sure Make sure to install html
24340	docs & gziped info on make install
24341
243422015-01-14  Dodji Seketeli <dodji@redhat.com>
24343
24344	Do not install the abinilint program
24345	* tools/Makefile.am: Add abinilint to the noinst_PROGRAMS primary.
24346
243472015-01-13  Dodji Seketeli <dodji@redhat.com>
24348
24349	Small grammar fix in a manpage title
24350	* doc/manuals/conf.py: Fix the grammar of the title of the abidiff
24351	man page.
24352
243532015-01-13  Dodji Seketeli <dodji@redhat.com>
24354
24355	Generate texinfo documentation properly
24356	* doc/manuals/Makefile.am: Generate texinfo doc, install it and
24357	uninstall it.
24358	* doc/manuals/libabigail-tools.rst: Do not use the :doc: syntax to
24359	refer to documents because it doesn't seem to work with sphinx
24360	right now.  Rather, use a table of content.
24361
243622015-01-13  Dodji Seketeli <dodji@redhat.com>
24363
24364	Fix man pages installation
24365	* doc/manuals/Makefile.am: Install the man pages only if they are
24366	generated.
24367
243682015-01-13  Dodji Seketeli <dodji@redhat.com>
24369
24370	Bump the candidate version of the library to 1.0
24371	* configure.ac: Bump version to 1.0.0
24372
243732015-01-13  Dodji Seketeli <dodji@redhat.com>
24374
24375	Do not forget to install the Manpages
24376	* doc/manuals/Makefile.am: Add the man pages to the man7_MANS
24377	automake primary.
24378
243792015-01-13  Dodji Seketeli <dodji@redhat.com>
24380
24381	Adjust archive-related code for the recent addition of tools_utils::*
24382	* tests/Makefile.am: tools/libtoolsutils.la is no more.
24383	* tests/test-write-read-archive.cc (main): Adjust.
24384	* tools/abiar.cc (extract_tus_from_archive): Likewise.
24385
243862015-01-13  Dodji Seketeli <dodji@redhat.com>
24387
24388	Generate Manpages for abidiff, abidw, abilint
24389	* doc/manuals/conf.py: Define man pages for abidiff, abidw,
24390	abilint and an introductory one for libabigail.
24391
243922015-01-09  Dodji Seketeli <dodji@redhat.com>
24393
24394	Sort functions & variables diff nodes in the diff tree
24395	* include/abg-comparison.h (function_decl_diff_sptrs_type)
24396	(var_diff_sptrs_type): New typedefs.
24397	(corpus_diff::{changed_functions, changed_variables}): Declare new
24398	methods.
24399	* src/abg-comparison.cc (sort_string_function_decl_diff_sptr_map)
24400	(sort_string_var_diff_sptr_map): Forward declare these static
24401	functions there were already defined later.
24402	(struct diff_less_than_functor): Define new comparison functor.
24403	(diff::append_child_node): Sort the children diff nodes of a given
24404	diff node.
24405	(corpus_diff::priv::changed_fns_map_): Renamed the data member
24406	corpus_diff::priv::changed_fns_ into this.
24407	(corpus_diff::priv::changed_fns_): New data member that is a
24408	sorted vector of changed functions.
24409	(corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables}):
24410	Adjust changed_fns_ -> changed_fns_map_ and changed_vars_ ->
24411	changed_vars_map_.
24412	(corpus_diff::priv::ensure_lookup_tables_populated): Likewise.
24413	Sort the changed functions and changed variables.
24414	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Adjust
24415	changed_fns_ -> changed_fns_map_ and changed_vars_ ->
24416	changed_vars_map_.  Also, walk the changed functions and variables
24417	diff nodes in their sorted order.
24418	(corpus_diff::priv::{categorize_redundant_changed_sub_nodes,
24419	clear_redundancy_categorization, maybe_dump_diff_tree}): Walk the
24420	changed functions and variables diff nodes in their sorted order.
24421	* include/abg-ir.h
24422	(function_decl::get_pretty_representation_of_declarator):
24423	Declarenew method.
24424	* src/abg-ir.cc
24425	(function_decl::get_pretty_representation_of_declarator): Define
24426	new function.  Its content got split out of ...
24427	(function_decl::get_pretty_representation): ... this one.
24428	* src/abg-comparison.cc (corpus_diff::chain_into_hierarchy):
24429	Consider the sorted the children nodes of a diff tree node.
24430	(corpus_diff::append_child_node): Keep the children nodes of a
24431	diff tree node sorted.
24432	(corpus_diff::{changed_functions, changed_variables, length,
24433	report}): Adjust.
24434	(corpus_diff::{changed_functions_sorted,
24435	changed_variables_sorted}): Define new functions.
24436	(function_comp::operator()): First compare the qualified function
24437	names along with the parameter declarations, then the rest.
24438	(sort_string_function_decl_diff_sptr_map)
24439	(sort_string_var_diff_sptr_map): Adjust.
24440	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
24441	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
24442	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt:
24443	Adjust.
24444
244452015-01-09  Dodji Seketeli <dodji@redhat.com>
24446
24447	Fix logic of function parmeters diff redundancy detection
24448	* src/abg-comparison.cc (redundancy_marking_visitor::visit_begin):
24449	For a given function parameter diff node N, we were comparing it
24450	against the other parmeter diff nodes of the function.  This
24451	change ensures that we do not compare N against itself.
24452
244532015-01-09  Dodji Seketeli <dodji@redhat.com>
24454
24455	Update copyright year for tests/test-abicompat.cc
24456	* tests/test-abicompat.cc: Update copyright year.
24457
244582015-01-09  Dodji Seketeli <dodji@redhat.com>
24459
24460	Enhance the format of the diff tree dumping report
24461	* src/abg-comparison.cc (diff_node_printer::do_indent): New
24462	method.
24463	(diff_node_printer::visit): Use diff_node_printer::do_indent().
24464	Print the addresses of the diff tree node and its canonical node.
24465	Add some vertical spaces and some indenting to make the report
24466	more readable.
24467
244682015-01-08  Dodji Seketeli <dodji@redhat.com>
24469
24470	Expose a new libabigail::tools_utils namespace
24471	* include/abg-tools-utils.h: Moved tools/abg-tools-utils.h in
24472	here.  Renamed the namespace tools into tools_utils.  Inject
24473	std::ostream, std::istream, std::ifstream, and std::string types
24474	into the tools_utils namespace.  Adjust the function declarations
24475	accordingly.  Remove the useless dirname() function declaration.
24476	* include/Makefile.am: Add abg-tools-utils.h to the list of
24477	exported headers.
24478	* src/abg-tools-utils.cc: Moved tools/abg-tools-utils.cc in here.
24479	Renamed the namespace tools into tools_utils.
24480	(get_stat): Add apidoc.
24481	(is_dir): Cleanup apidoc.
24482	(dir_name); Cleanup parameter name.
24483	(guess_file_type): Cleanup parameter type.
24484	* src/Makefile.am: Add abg-tools-utils.cc to the list of exported
24485	headers.
24486	* tools/Makefile.am: Do not build the temporary library
24487	libtoolsutils.la anymore as abg-tools-utils.{h,cc} have moved out
24488	of this directory.
24489	* tools/abicompat.cc (parse_command_line, main): Adjust for tools
24490	-> tools_utils namespace change.
24491	* tools/abidiff.cc (parse_command_line, main): Likewise.
24492	* tools/abidw.cc (parse_command_line, main): Likewise.
24493	* tools/abilint.cc (parse_command_line, main): Likewise.
24494	* tests/test-abicompat.cc (main): Adjust for tools -> tools_utils
24495	namespace change.
24496	* tests/test-abidiff.cc (main): Likewise.
24497	* tests/test-alt-dwarf-file.cc (main): Likewise.
24498	* tests/test-core-diff.cc (main): Likewise.
24499	* tests/test-diff-dwarf.cc (main): Likewise.
24500	* tests/test-diff-filter.cc (main): Likewise.
24501	* tests/test-diff-suppr.cc (main): Likewise.
24502	* tests/test-lookup-syms.cc (main): Likewise.
24503	* tests/test-read-dwarf.cc (main): Likewise.
24504	* tests/test-read-write.cc (main): Likewise.
24505	* tests/Makefile.am: Do not reference the libtoolsutils.la private
24506	library anymore.
24507
245082015-01-07  Dodji Seketeli <dodji@redhat.com>
24509
24510	Update copyright years
24511	* include/abg-comp-filter.h: Update copyright years.
24512	* include/abg-comparison.h: Likewise.
24513	* include/abg-config.h: Likewise.
24514	* include/abg-corpus.h: Likewise.
24515	* include/abg-diff-utils.h: Likewise.
24516	* include/abg-dwarf-reader.h: Likewise.
24517	* include/abg-fwd.h: Likewise.
24518	* include/abg-hash.h: Likewise.
24519	* include/abg-ini.h: Likewise.
24520	* include/abg-ir.h: Likewise.
24521	* include/abg-libxml-utils.h: Likewise.
24522	* include/abg-libzip-utils.h: Likewise.
24523	* include/abg-reader.h: Likewise.
24524	* include/abg-sptr-utils.h: Likewise.
24525	* include/abg-traverse.h: Likewise.
24526	* include/abg-viz-common.h: Likewise.
24527	* include/abg-viz-dot.h: Likewise.
24528	* include/abg-viz-svg.h: Likewise.
24529	* include/abg-writer.h: Likewise.
24530	* src/abg-comp-filter.cc: Likewise.
24531	* src/abg-comparison.cc: Likewise.
24532	* src/abg-config.cc: Likewise.
24533	* src/abg-corpus.cc: Likewise.
24534	* src/abg-diff-utils.cc: Likewise.
24535	* src/abg-dwarf-reader.cc: Likewise.
24536	* src/abg-hash.cc: Likewise.
24537	* src/abg-ini.cc: Likewise.
24538	* src/abg-ir.cc: Likewise.
24539	* src/abg-libxml-utils.cc: Likewise.
24540	* src/abg-libzip-utils.cc: Likewise.
24541	* src/abg-reader.cc: Likewise.
24542	* src/abg-traverse.cc: Likewise.
24543	* src/abg-viz-common.cc: Likewise.
24544	* src/abg-viz-dot.cc: Likewise.
24545	* src/abg-viz-svg.cc: Likewise.
24546	* src/abg-writer.cc: Likewise.
24547	* tests/print-diff-tree.cc: Likewise.
24548	* tests/test-abidiff.cc: Likewise.
24549	* tests/test-alt-dwarf-file.cc: Likewise.
24550	* tests/test-core-diff.cc: Likewise.
24551	* tests/test-diff-dwarf.cc: Likewise.
24552	* tests/test-diff-filter.cc: Likewise.
24553	* tests/test-diff-suppr.cc: Likewise.
24554	* tests/test-diff2.cc: Likewise.
24555	* tests/test-ir-walker.cc: Likewise.
24556	* tests/test-lookup-syms.cc: Likewise.
24557	* tests/test-read-dwarf.cc: Likewise.
24558	* tests/test-read-write.cc: Likewise.
24559	* tests/test-utils.cc: Likewise.
24560	* tests/test-utils.h: Likewise.
24561	* tests/test-write-read-archive.cc: Likewise.
24562	* tools/abg-tools-utils.cc: Likewise.
24563	* tools/abg-tools-utils.h: Likewise.
24564	* tools/abiar.cc: Likewise.
24565	* tools/abidiff.cc: Likewise.
24566	* tools/abidw.cc: Likewise.
24567	* tools/abilint.cc: Likewise.
24568	* tools/abisym.cc: Likewise.
24569	* tools/binilint.cc: Likewise.
24570
245712015-01-07  Dodji Seketeli <dodji@redhat.com>
24572
24573	Detect and report changes in ELF architecture
24574	* configure.ac: Detect the presence of libebl.a and add it to the
24575	list of library we depend on to build libabigail.  Report when
24576	libelf.so is not found.
24577	* include/abg-comparison.h:
24578	(diff_context::show_architecture_change): Declare new accessors.
24579	(corpus_diff::architecture_changed): Declare new method.
24580	* include/abg-corpus.h (corpus::{get,set}_architecture_name):
24581	Declare new accessors.
24582	* src/abg-comparison.cc
24583	(diff_context::priv::show_architecture_change_): New data member.
24584	(diff_context::priv::priv): Initialize it.
24585	(diff_context::show_architecture_change): Define new accessors.
24586	(function_decl_diff::report): Report when the size/alignment of
24587	the function address changes.
24588	(corpus_diff::priv::architectures_equal_): New data member.
24589	(corpus_diff::priv::priv): Initialize it.
24590	(corpus_diff::priv::emit_diff_stats): Take in account changes of
24591	architecture.
24592	(corpus_diff::architecture_changed): Define new method.
24593	(corpus_diff::length): Take in account changes of architecture.
24594	(corpus_diff::report): Report about changes of architecture.
24595	(compute_diff): In the overload for corpus_diff_sptr, detect
24596	changes fo architecture.
24597	* src/abg-corpus.cc (corpus_priv::architecture_name): Define new
24598	data member.
24599	(corpus::{get,set}_architecture_name): Define new method.
24600	* src/abg-dwarf-reader.cc: Include elfutils/libebl.h to use
24601	ebl_openbackend() and ebl_backend_name()
24602	(read_context::elf_architecture_): Define new data member.
24603	(read_context::elf_architecture): Define new accessor.
24604	(read_context::{load_elf_architecture, load_remaining_elf_data}):
24605	Define new methods.
24606	(read_corpus_from_elf): Use ctxt.load_remaining_elf_data() in lieu
24607	of ctxt.load_dt_soname_and_needed.  Stick the architecture into
24608	the corpus.
24609	* src/abg-reader.cc (read_corpus_from_input): Read the
24610	'architecture' XML property.
24611	* src/abg-writer.cc (write_corpus_to_native_xml): Write the
24612	'architecture' XML property.
24613	* tests/data/test-diff-dwarf/libtest-23-diff-arch-v0-32.so: New
24614	test input file.
24615	* tests/data/test-diff-dwarf/libtest-23-diff-arch-v0-64.so:
24616	Likewise.
24617	* tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt:
24618	Likewise.
24619	* tests/data/test-diff-dwarf/test-23-diff-arch-v0.cc: Source code
24620	for the binary test input files above.
24621	* tests/data/Makefile.am: Add the new test input files to the
24622	source distribution.
24623	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test input
24624	data to the set of input data to run this test harness over.
24625	* tests/test-read-dwarf.cc (main): Do not take the architecture in
24626	account during comparisons.
24627
246282015-01-05  Sinny Kumari <skumari@redhat.com>
24629
24630	Include libabigail-website.doxy file in EXTRA_DIST
24631	* doc/Makefile.am: Include website/libabigail-website.doxy
24632	file in EXTRA_DIST
24633
246342015-01-06  Dodji Seketeli <dodji@redhat.com>
24635
24636	Delete ltsugar.m4 and pkg.m4 files from m4/
24637	* m4/ltsugar.m4: Removed.
24638	* m4/pkg.m4: Likewise.
24639
246402014-12-27  Dodji Seketeli <dodji@redhat.com>
24641
24642	Enable parallel tests
24643	* configure.ac (AM_INIT_AUTOMAKE): Enable parallel tests by
24644	switching on the parallel-tests option.
24645
246462014-12-27  Dodji Seketeli <dodji@redhat.com>
24647
24648	Add a --dump-diff-tree to abidiff for debugging purposes
24649	* include/abg-comparison.h (enum visiting_kind): Add new
24650	DO_NOT_MARK_VISITED_NODES_AS_TRAVERSED enumerator.
24651	(diff_context::{default_output_stream, error_output_stream,
24652	dump_diff_tree}): Declare new accessors.
24653	(diff::end_traversing): Take a new boolean flag.
24654	(print_diff_tree): Add new overload for diff_sptr.
24655	* src/abg-comparison.cc
24656	(diff_context::priv::{default_output_stream_,
24657	error_output_stream_, dump_diff_tree_}): New data members.
24658	(priv::priv): Initialize them.
24659	(diff_context::{default_output_stream_, error_output_stream_,
24660	dump_diff_tree, dump_diff_tree}): Define new accessors.
24661	(diff::end_traversing): Take a new flag that control whether or
24662	not to mark the current diff node as having been traversed.
24663	(diff::traverse): Take in account the visiting kind carried by the
24664	visitor to determine if the visited node should be marked as being
24665	traversed.
24666	(corpus_diff::priv::maybe_dump_diff_tree): Define new member
24667	function.
24668	(corpus_diff::report): Call it.
24669	(diff_node_printer::visit): Pretty print the diff node just once.
24670	(print_diff_tree): Define a new overload for diff_sptr.
24671	* tools/abidiff.cc (options::dump_diff_tree): New data member.
24672	(options::options): Initialize it.
24673	(display_usage): Add a help string for the new --dump-diff-tree
24674	command line switch.
24675	(parse_command_line): Parse the new --dump-diff-tree command line
24676	switch.
24677	(set_diff_context_from_opts): Set the diff context according to
24678	the --dump-diff-tree presence.
24679	* doc/manuals/abidiff.rst: Add a bullet point for the new
24680	--dump-diff-tree command line switch.
24681
246822014-12-27  Dodji Seketeli <dodji@redhat.com>
24683
24684	Fix typos in the abicompat manual
24685	* doc/manuals/abicompat.rst: Fix typos.
24686
246872014-12-27  Dodji Seketeli <dodji@redhat.com>
24688
24689	Fix a typo in the abidiff manual
24690	* doc/manuals/abidiff.rst: Fix a typo.
24691
246922014-12-27  Dodji Seketeli <dodji@redhat.com>
24693
24694	Fix redundancy in abidiff manual
24695	* doc/manuals/abidiff.rst: Remove the redundant bullet point about
24696	the --drop-fn command line switch.
24697
246982014-12-26  Dodji Seketeli <dodji@redhat.com>
24699
24700	Fix the doc string of the CanonicalDiff section of the apidoc
24701	* src/abg-comparison.cc: The summary of the CanonicalDiff should
24702	not be a @par directive, otherwise it won't show up in the summary
24703	field on the html-genereated page.
24704
247052014-12-26  Dodji Seketeli <dodji@redhat.com>
24706
24707	Update doc string for new --no-redundant option of abidiff
24708	* doc/manuals/abidiff.rst: Update the documentation string for the
24709	--no-redundant option of abidiff.
24710
247112014-12-26  Dodji Seketeli <dodji@redhat.com>
24712
24713	Make abidiff *NOT* show redundant changes by default
24714	* tools/abidiff.cc (options::options): Initialize
24715	options::show_redundant_changes to false.
24716
247172014-12-26  Dodji Seketeli <dodji@redhat.com>
24718
24719	Try harder to handle pointer/reference to void
24720	* include/abg-fwd.h (type_or_void): Declare new function.
24721	* src/abg-ir.cc (type_or_void): Define it.
24722	(pointer_type_def::pointer_type_def)
24723	(reference_type_def::reference_type_def)
24724	(reference_type_def::get_qualified_name, strip_typedef): Use it to
24725	ensure that empty pointed-to-type is considered as a void type.
24726
247272014-12-26  Dodji Seketeli <dodji@redhat.com>
24728
24729	Do not mark sibling structurally identical nodes as redundant
24730	* include/abg-comparison.h (diff::parent_node): Declare new
24731	accessor.
24732	* src/abg-comparison.cc (diff::priv::parent_): New data member.
24733	(diff::priv::priv): Initialize it.
24734	(diff::parent_node): Define new accessor.
24735	(diff::append_child_node): Set the diff::priv::parent_ data member
24736	of the added child node.
24737	(redundancy_marking_visitor::visit_begin): If two (logical)
24738	sibbling nodes are structurally equivalent, do not mark them as
24739	being redundant.
24740	* tests/data/test-diff-suppr/libtest10-changed-parm-c-v0.so: New
24741	test input binary.
24742	* tests/data/test-diff-suppr/libtest10-changed-parm-c-v1.so:
24743	Likewise.
24744	* tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt:
24745	New test input data.
24746	* tests/data/test-diff-suppr/test10-changed-parm-c-v0.c: Source
24747	code for the binary input above.
24748	* tests/data/test-diff-suppr/test10-changed-parm-c-v1.c: Likewise.
24749	* tests/data/Makefile.am: Add the new test files to source
24750	distribution.
24751	* tests/test-diff-suppr.cc (in_out_specs): Add the new test input
24752	to the vector of test inputs to run this harness over.
24753
247542014-12-26  Dodji Seketeli <dodji@redhat.com>
24755
24756	Un-share diff nodes in the comparison IR
24757	* include/abg-ir.h: Prefix the doc string with "///", rather than
24758	writing it inside a /**/ comment.
24759	* include/abg-comparison.h (function_decl_diff)
24760	(function_decl_diff_sptr, fn_parm_diff, fn_parm_diff_sptr)
24761	(var_diff_sptr, base_diff, class_diff, class_diff_sptr): Move
24762	these class & typedef decls to the top of the file.
24763	(string_changed_base_map, string_changed_parm_map)
24764	(unsigned_changed_parm_map, changed_function_ptr)
24765	(string_changed_function_ptr_map): Remove these typedefs.
24766	(string_base_diff_sptr_map, string_fn_parm_diff_sptr_map)
24767	(unsigned_fn_parm_diff_sptr_map, string_var_diff_sptr_map)
24768	(unsigned_var_diff_sptr_map, string_function_decl_diff_sptr_map)
24769	(string_var_diff_ptr_map): New typedefs.
24770	(diff_context::{has_diff_for,add_diff}): Make these member
24771	functions private.
24772	(diff_context::{set_canonical_diff_for,
24773	set_or_get_canonical_diff_for}): Declare new private member
24774	functions.
24775	(diff_context::{get_canonical_diff_for,
24776	initialize_canonical_diff}): New public member functions.
24777	(diff_context::maybe_apply_filters): Set the default value of the
24778	'traverse_nodes_once' parameter to false.
24779	(compute_diff): Make the overload for class_decl_sptr friend of
24780	the diff_context class.
24781	(class diff): Make the diff_context class a friend of this one.
24782	(diff::set_canonical_diff): Declare new private member function.
24783	(diff::get_canonical_diff): Declare new public member function.
24784	(diff::children_nodes): Make this return a vector<diff_sptr>, rather
24785	than a vector<diff*>.
24786	(diff::append_child_node): Make this take a diff_sptr rather than
24787	a diff*.
24788	(class fn_parm_diff): Declare new type.
24789	(compute_diff): Declare new overload for the new
24790	function_decl::parameter_sptr.
24791	(function_decl_diff::subtype_changed_parms): Return a
24792	string_fn_parm_diff_sptr_map rather than a string_changed_parm.
24793	(function_decl_diff::children_nodes): Return a vector<diff_sptr>.
24794	(function_decl_diff::append_child_node): Take a diff_sptr.
24795	(function_decl_diff::changed_functions): Return a
24796	string_function_decl_diff_sptr_map.
24797	(function_decl_diff::changed_variables): Return a
24798	string_var_diff_sptr.
24799	(class function_decl::parameter): Make this a pimpled class.
24800	Also, make it inherit decl_base.
24801	(equals): New overload for function_decl::parameter.
24802	(struct function_decl::parameter::hash): Declare this.
24803	(ir_node_visitor::visit): Declare new overload for
24804	function_decl::parameter.
24805	* src/abg-comparison.cc: Add doc-string about the internal
24806	representation of the comparison engine and also about the concept
24807	of canonical diff of the comparison engine.
24808	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER)
24809	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER2)
24810	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER3): Consider the
24811	canonical diff when trying to know if the current node was
24812	reported earlier.
24813	(diff_context::priv::canonical_diffs): New data member.
24814	(diff_context::{get_canonical_diff_for, set_canonical_diff_for,
24815	set_or_get_canonical_diff_for, initialize_canonical_diff}): Define
24816	new member functions.
24817	(diff_context::{diff_has_been_traversed, mark_diff_as_traversed):
24818	Consider canonical diff for these tests and actions.
24819	(diff::priv::children_): Change the type of this to
24820	vector<diff_sptr>.
24821	(diff::canonical_diff_): New data member.
24822	(diff::diff): Initialize the diff::canonical_diff_ data member.
24823	(diff::begin_traversing): Mark the canonical diff node too.
24824	(diff::is_traversing): Consider the canonical diff node in this
24825	test.
24826	(diff::end_traversing): Make the canonical diff node too.  Also
24827	mark the current node as having been traversed.
24828	(diff::children_nodes): Return a vector<diff_sptr> type.
24829	(diff::{get_canonical_diff, set_canonical_diff}): Define new
24830	member functions.
24831	(diff::append_child_node): Take a diff_sptr type parameter.
24832	(diff::{reported_once, currently_reporting}): Flag the canonical
24833	diff node too.  And consider the canonical diff node when checking
24834	the flag.
24835	(diff::traverse): No need to mark the node as being traversed
24836	because the diff::end_traversing() function does it now.  Adjust
24837	the code because diff::children_nodes() now returns
24838	vector<diff_sptr>.
24839	({distinct_diff, var_diff, pointer_diff, array_diff,
24840	reference_diff, qualified_type_diff, enum_diff, class_diff,
24841	base_diff, scope_diff, function_decl_diff, typedef_diff,
24842	corpus_diff}::chain_into_hierarchy): Adjust to the new type that
24843	diff::append_child_node() takes.  Also, take into account that the
24844	diff nodes are now un-shared.
24845	(compute_diff_for_distinct_kinds, compute_diff_for_types)
24846	(compute_diff): Do not share diff nodes anymore.  Initialize the
24847	canonical diff node for the new created node.
24848	(represent): Take a var_diff_sptr rather than two var_decl_sptr.
24849	Adjust.  Also take in account the fact that diff nodes are not
24850	shared anymore, and that they do have canonical diffs.
24851	(var_diff::type_diff): Make the computation of the type_diff of
24852	the var_diff be lazy.  This avoids infinite (recursive) creation
24853	of diff nodes when a class diff node has a sub-type of data member
24854	that is a class diff node too.
24855	(var_diff::report): Detect redundant reporting of this kind of
24856	diff node.
24857	(class_diff::priv::changed_bases_): Change the type of this to
24858	string_base_diff_sptr_map.
24859	(class_diff::priv::subtype_changed_dm_): Change the type of this
24860	to string_var_diff_sptr_map.
24861	(class_diff::priv::changed_dm_): Change the type of this to
24862	unsigned_var_diff_sptr_map.
24863	(class_diff::priv::{count_filtered_subtype_changed_dm,
24864	count_filtered_bases}): Do not take a diff_context_sptr anymore.
24865	(class_diff::ensure_lookup_tables_populated): changed_bases_
24866	subtype_changed_dm_ and changed_dm_ are now *NOT* shared diff
24867	nodes anymore.
24868	(class_diff::priv::base_has_changed): Adjust.
24869	(class_diff::priv::subtype_changed_dm): Adjust.
24870	(class_diff::priv::count_filtered_bases): Adjust as changed_bases_
24871	is now a map of un-shared diff nodes.
24872	(class_diff::priv::count_filtered_subtype_changed_dm): Adjust as
24873	subtype_changed_dm_ is now a map of un-shared diff nodes.
24874	(class_diff::priv::{count_filtered_changed_mem_fns,
24875	count_filtered_inserted_mem_fns, count_filtered_deleted_mem_fns,
24876	}): Adjust for change of the default parameter value of
24877	diff_context::maybe_apply_filters().
24878	(class_diff::~class_diff): New destructor.
24879	(class_diff::changed_bases): Return a string_base_diff_sptr_map&
24880	type.
24881	(class_diff::{inserted_data_members, deleted_data_members,
24882	changed_member_fns}): Add doc strings.
24883	(struct changed_data_member_comp): Remove.
24884	(struct var_diff_comp): New comparison functor.
24885	(sort_changed_data_members): Remove.
24886	(sort_var_diffs): Define new sorting function.
24887	(class_diff::report): Adjust.
24888	(fn_parm_diff::*): Define member types and functions of the new
24889	fn_parm_diff type.
24890	(function_decl_diff::priv::{subtype_changed_parms_,
24891	changed_parms_by_id_}): Make these take a map of fn_parm_diff_sptr
24892	nodes.
24893	(function_decl_diff::ensure_lookup_tables_populated): Adjust to
24894	the fact that priv_->subtype_changed_parms_ and
24895	priv_->priv_->changed_parms_by_id_ now are maps of un-shared
24896	fn_parm_diff_sptr nodes.
24897	(function_decl_diff::subtype_changed_parms): Adjust.
24898	(struct changed_parm_comp): Remove.
24899	(struct fn_parm_diff_comp): New comparison functor.
24900	(sort_changed_parm_map): Remove.
24901	(sort_string_fn_parm_diff_sptr_map): New sorting function.
24902	(function_decl_diff::report): Adjust.
24903	(corpus_diff::priv::children_): Change the type of this to
24904	vector<diff_sptr>.
24905	(corpus_diff::priv::changed_fns_): Changed the type of this to
24906	string_function_decl_diff_sptr_map.
24907	(corpus_diff::priv::changed_vars_): Changed the type of this to
24908	string_var_diff_sptr_map.
24909	(corpus_diff::priv::ensure_lookup_tables_populated): Adjust.
24910	(corpus_diff::priv::apply_filters_and_compute_diff_stats}):
24911	Adjust.  Do not need to clear redundancy categorization anymore
24912	because the diff nodes are not shared anymore.
24913	(corpus_diff::priv::categorize_redundant_changed_sub_nodes):
24914	Adjust.
24915	(corpus_diff::priv::clear_redundancy_categorization): Adjust.
24916	(corpus_diff::changed_variables): Adjust.
24917	(struct changed_function_ptr_comp): Remove.
24918	(struct function_decl_diff_comp): New comparison functor.
24919	(sort_string_changed_function_ptr_map): Remove.
24920	(sort_string_function_decl_diff_sptr_map): Define new sorting
24921	function.
24922	(struct changed_vars_comp): Remove.
24923	(struct var_diff_sptr_comp): New comparison functor.
24924	(sort_changed_vars): Remove.
24925	(sort_string_var_diff_sptr_map): Define new sorting function.
24926	(corpus_diff::report): Adjust.
24927	(corpus_diff::traverse): Adjust.
24928	({category_propagation_visitor,
24929	suppression_categorization_visitor}::visit_end): Adjust.
24930	(clear_redundancy_categorization): Adjust.
24931	* src/abg-hash.cc (function_decl::parameter::hash::operator):
24932	Adjust.
24933	* src/abg-ir.cc (struct function_decl::parameter::priv): Define
24934	here as part of pimpl-ifying the function_decl::parameter type.
24935	(function_decl::parameter::*): Define here the member functions as
24936	part of pimpl-ifying the function_decl::parameter type.
24937	(equals): Define the overload for function_decl::parameter here
24938	too.
24939	(ir_node_visitor::visit(function_decl::parameter*)): Define this.
24940	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
24941	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
24942	* tests/data/test-diff-dwarf/libtest21-redundant-fn-v0.so: New
24943	test input data.
24944	* tests/data/test-diff-dwarf/libtest21-redundant-fn-v1.so:
24945	Likewise.
24946	* tests/data/test-diff-dwarf/test21-redundant-fn-v0.cc: Source
24947	code for test input binary above.
24948	* tests/data/test-diff-dwarf/test21-redundant-fn-v1.cc: Likewise.
24949	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: New
24950	test input data.
24951	* tests/data/test-diff-dwarf/libtest22-changed-parm-c-v0.so: New
24952	test input data.
24953	* tests/data/test-diff-dwarf/libtest22-changed-parm-c-v1.so:
24954	Likewise.
24955	* tests/data/test-diff-dwarf/test22-changed-parm-c-v0.c: Source
24956	code for test input binary above.
24957	* tests/data/test-diff-dwarf/test22-changed-parm-c-v1.c: Likewise.
24958	* tests/test-diff-dwarf.cc (in_out_spec): Add the new test input
24959	data to the vector the test inputs to run this harness over.
24960	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: New
24961	test input data.
24962	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt:
24963	Likewise.
24964	* tests/data/test-diff-suppr/libtest8-redundant-fn-v0.so: New test
24965	input binary.
24966	* tests/data/test-diff-suppr/libtest8-redundant-fn-v1.so: Likewise.
24967	* tests/data/test-diff-suppr/test8-redundant-fn-v0.cc: Source code
24968	code for binary test input above.
24969	* tests/data/test-diff-suppr/test8-redundant-fn-v1.cc: Likewise.
24970	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt:
24971	New test input data.
24972	* tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt:
24973	Likewise.
24974	* tests/data/test-diff-suppr/libtest9-changed-parm-c-v0.so: New
24975	test input binary.
24976	* tests/data/test-diff-suppr/libtest9-changed-parm-c-v1.so: New
24977	test input binary.
24978	* tests/data/test-diff-suppr/test9-changed-parm-c-v0.c: Source
24979	code for binary test input above.
24980	* tests/data/test-diff-suppr/test9-changed-parm-c-v1.c: Likewise.
24981	* tests/test-diff-suppr.cc (in_out_specs): Add the new test input
24982	data to the vector the test inputs to run this harness over.
24983	* tests/data/Makefile.am: Add the new files to the source
24984	distribution.
24985
249862014-12-26  Dodji Seketeli <dodji@redhat.com>
24987
24988	Style fix
24989	* src/abg-ir.cc (reference_type_def::get_pointed_to_type): Return
24990	a type_base_sptr.
24991	* src/abg-comparison.cc (diff::is_filtered_out): Fix a comment.
24992
249932014-12-25  Dodji Seketeli <dodji@redhat.com>
24994
24995	Fix pretty printing of pointer_diff node
24996	* src/abg-comparison.cc (pointer_diff::get_pretty_representation):
24997	Add the missing opening square bracket.
24998
249992014-12-17  Sinny Kumari <skumari@redhat.com>
25000
25001	Add new methods in corpus_diff class
25002	* include/abg-comparison.h
25003	(corpus_diff::added_unrefed_function_symbols):
25004	Declare new member function
25005	(corpus_diff::added_unrefed_variable_symbols):
25006	Declare new member function
25007	* src/abg-comparison.cc
25008	(corpus_diff::added_unrefed_function_symbols):
25009	Define new member function
25010	(corpus_diff::added_unrefed_variable_symbols):
25011	Define new member function
25012
250132014-12-15  Sinny Kumari <sinny@redhat.com>
25014
25015	Add new corpus_diff::added_variables() method
25016	* include/abg-comparison.h (corpus_diff::added_variables):
25017	Declare new member function
25018	* src/abg-comparison.cc (corpus_diff::added_variables):
25019	Define new member function
25020
250212014-12-12  Dodji Seketeli <dodji@redhat.com>
25022
25023	Extend detection of compatible types to arrays
25024	* include/abg-fwd.h (is_array_type): Renamed is_array_type_def()
25025	into this for consistency.
25026	* src/abg-comparison.cc (type_suppression::suppresses_diff):
25027	Adjust.
25028	* src/abg-dwarf-reader.cc (build_array_type): Remove useless code
25029	that was trying to read a DW_AT_byte_size attribute from the DIE
25030	of the array, but then wasn't doing anything with the value.  But
25031	then if the attribute was not present, the array type wouldn't be
25032	built.
25033	* src/abg-ir.cc (strip_typedef): Strip typedefs from sub-types of
25034	array types too.
25035	(is_array_type): Rename is_array_def() to this, for consistency.
25036	(var_decl::get_pretty_representation): Adjust.
25037	* tests/data/test-diff-filter/libtest24-compatible-vars-v0.so: New
25038	test input data.
25039	* tests/data/test-diff-filter/libtest24-compatible-vars-v1.so: Likewise.
25040	* tests/data/test-diff-filter/test24-compatible-vars-report-0.txt:
25041	Likewise.
25042	* tests/data/test-diff-filter/test24-compatible-vars-v0.c: Source
25043	code for the first binary above.
25044	* tests/data/test-diff-filter/test24-compatible-vars-v1.c: Source
25045	code for the second binary above.
25046	* tests/data/Makefile.am: Add the new test input data to source
25047	distribution.
25048	* tests/test-diff-filter.cc (in_out_specs): Add the new test input
25049	data to the list of input to run this test harness over.
25050
250512014-12-12  Dodji Seketeli <dodji@redhat.com>
25052
25053	Improve the doc string for the elf_symbol::get_id_string() method
25054	* src/abg-ir.cc (elf_symbol::get_id_string): Improve doc string.
25055	Talk about the content of the id string of an elf symbol.
25056
250572014-12-11  Dodji Seketeli <dodji@redhat.com>
25058
25059	Better handle pointer-to-void in various places of the pipeline
25060	* src/abg-comparison.cc (pointer_diff::report): Handle the case of
25061	pointer to void.
25062	* src/abg-dwarf-reader.cc (build_pointer_type_def): Assert that
25063	the underlying pointer is non-null.
25064	* src/abg-ir.cc (pointer_type_def::pointer_type_def): Handle the
25065	case of pointer to void.
25066	(equals): Likewise in the overload for const pointer_type_def.
25067	(pointer_type_def::get_qualified_name): Likewise.
25068
250692014-12-11  Dodji Seketeli <dodji@redhat.com>
25070
25071	Try harder to detect a DWARF attribute pointing into alternate DWARF section
25072	* src/abg-dwarf-reader.cc
25073	(is_die_attribute_resolved_through_gnu_ref_alt): Support the case
25074	of the origin function itself having a specification function
25075	link.
25076
250772014-12-11  Dodji Seketeli <dodji@redhat.com>
25078
25079	Fix accidentally removing the scope of variables when fixing them up
25080	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
25081	During var decl fixup, remove the scope of a variable only when we
25082	are sure that we want to re-scope it.
25083
250842014-12-11  Dodji Seketeli <dodji@redhat.com>
25085
25086	Fix several aborts while diffing libdw.so
25087	* src/abg-corpus.cc
25088	(corpus::priv::build_unreferenced_symbols_tables): Fix wrong
25089	guestimation of the size of the map of unreferenced symbol table.
25090	* src/abg-dwarf-reader.cc (get_version_needed_for_versym): Honour
25091	the conditions of breaking out from walking the verneed table.
25092
250932014-12-10  Dodji Seketeli <dodji@redhat.com>
25094
25095	Temporarily disable redundant diff report elimination
25096	* src/abg-comparison.cc
25097	(diff_context::priv::priv): Show redundant changes by default.
25098	(categorize_redundancy): Do not categorize redundancy if the
25099	diff_context says that we shouldn't.
25100	* tools/abicompat.cc (options::show_redundant): New data member.
25101	(options::options): Initialize to true.
25102	(display_usage): Add new help string for new --no-redundant and
25103	--redundant options.
25104	(parse_command_line): Parse new --no-redundant and --redundant
25105	command line options.
25106	(main): Initialize the diff context with respect to the
25107	options::show_redundant property.
25108	* tools/abidiff.cc (options::options): Initialize the
25109	show_redundant_changes data member to true.
25110	(display_usage): Show new help string for the new --no-redundant
25111	command line option.
25112	(parse_command_line): Parse the new --no-redundant command line
25113	option.
25114	* tests/data/test-diff-filter/libtest23-redundant-fn-parm-change-v0.so:
25115	New test data input.
25116	* tests/data/test-diff-filter/libtest23-redundant-fn-parm-change-v1.so:
25117	Likewise.
25118	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt:
25119	Likewise.
25120	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-v0.c:
25121	Source code for the first binary above.
25122	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-v1.c:
25123	Source code for the second binary above.
25124	* tests/data/Makefile.am: Add the new test data input to source
25125	distribution.
25126	* tests/test-abicompat.cc (in_out_specs): Add --no-redundant to
25127	abicompat when we don't want it to show redundant diff reports.
25128	* test-diff-filter.cc (in_out_specs): Likewise for abidiff.
25129	* test-diff-suppr.cc (in_out_specs): Likewise.
25130
251312014-12-10  Jan Engelhardt <jengelh@inai.de>
25132
25133	Fix conditional build wrt zip archives and cx11
25134	* configure.ac: remove (broken) assignment to the
25135	ENABLE_ZIP_ARCHIVE_AND_CXX11 variable
25136	* Makefile.am: replace variable assignments to
25137	ZIP_ARCHIVE_TESTS_FIRST_PART, ZIP_ARCHIVE_TESTS_SECOND_PART
25138	by ZIP_ARCHIVE_TESTS using the "+=" automake operator.
25139	Likewise for CXX11_TESTS.
25140
251412014-12-10  Dodji Seketeli <dodji@redhat.com>
25142
25143	Make determining of compatible types complete
25144	* include/abg-fwd.h (is_reference_type, is_function_type)
25145	(is_method_type): Declare new predicates.
25146	* include/abg-ir.h (class qualified_type_def): Pimpl this class.
25147	(qualified_type_def::qualified_type_def): Use the convenience
25148	type_base_sptr typedef.
25149	(qualified_type_def::{get_cv_quals, set_cv_quals}): Use the
25150	qualified_type_def::CV type rather than char.
25151	(qualified_type_def::get_underlying_type): Use the convenience
25152	type_base_sptr typedef.
25153	(pointer_type_def::pointer_type_def): Likewise.
25154	(function_decl::parameter::parameter): Add a new constructor.
25155	* src/abg-ir.cc (is_reference_type, is_function_type)
25156	(is_method_type): Define new predicates.
25157	(class qualified_type_def::priv): Define this new private type,
25158	for the purpose of Pimpl-ifying the qualified_type_def class.
25159	(qualified_type_def::{qualified_type_def, build_name,
25160	get_cv_quals_string_prefix, get_underlying_type}): Adjust for the
25161	purpose of Pimpl-ifying the qualified_type_def class.
25162	(equals): In the qualified_type_def, reference_type_def overloads,
25163	trust the fact that we have operator== overload for the
25164	type_base_sptr.  This avoids crashes for when the (possible)
25165	underlying type is null.
25166	(pointer_type_def::operator==): Likewise.
25167	(strip_typedef): Make this recursively strip
25168	typedefs from sub-types.
25169	(types_are_compatible): Handle null types.
25170	(qualified_type_def::{get_cv_quals, set_cv_quals}): Handle
25171	qualified_type_def::CV rather than char.
25172	(pointer_type_def::pointer_type_def): Use the convenience
25173	type_base_sptr typedef.
25174	* include/abg-comparison.h (distinct_diff::compatible_child_diff):
25175	Declare new member function.
25176	* src/abg-comparison.cc (distinct_diff::compatible_child_diff):
25177	Define new member function.
25178	(distinct_diff::chain_into_hierarchy):
25179	Chain the compatible child diff node that might be present.
25180	(distinct_diff::report): Now when a distinct diff carries a
25181	compatible change, mention it in the report.
25182	* src/abg-comp-filter.cc (is_compatible_change): A compatible
25183	change can now involve types that are not typedefs.  Only their
25184	sub-types need to be involved with typedef-ness.
25185	* tests/data/test-diff-dwarf/test{2,4,5}-report.txt: Adjust.
25186	* tests/data/test-diff-filter/libtest21-compatible-vars-v0.so: New
25187	test data input.
25188	* tests/data/test-diff-filter/libtest21-compatible-vars-v1.so: Likewise.
25189	* tests/data/test-diff-filter/test21-compatible-vars-report-0.txt Likewise.
25190	* tests/data/test-diff-filter/test21-compatible-vars-report-1.txt Likewise.
25191	* tests/data/test-diff-filter/test21-compatible-vars-v0.cc: Source
25192	code for the first data input binary above.
25193	* tests/data/test-diff-filter/test21-compatible-vars-v1.cc: Source
25194	code for the second data input binary above.
25195	* tests/data/test-diff-filter/libtest22-compatible-fns-v0.so: New
25196	test data input.
25197	* tests/data/test-diff-filter/libtest22-compatible-fns-v1.so Likewise.
25198	* tests/data/test-diff-filter/test22-compatible-fns-report-0.txt:
25199	New test data input.
25200	* tests/data/test-diff-filter/test22-compatible-fns-report-1.txt: Likewise.
25201	* tests/data/test-diff-filter/test22-compatible-fns-v0.c: Source
25202	code for the first test data input binary above.
25203	* tests/data/test-diff-filter/test22-compatible-fns-v1.c: Source
25204	code for the second test data input binary above.
25205	* tests/data/Makefile.am: Add the new test input data to source
25206	distribution.
25207	* tests/test-diff-filter.cc (in_out_specs): Add the new test data
25208	input above to the list of test data this harness has to be run
25209	over.
25210
252112014-12-09  Dodji Seketeli <dodji@redhat.com>
25212
25213	Fix classification of parameter addition in C
25214	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
25215	Compare the fully qualified name of the functions; not their
25216	pretty representation.
25217	* tests/data/test-diff-dwarf/libtest20-add-fn-parm-v0.so: New test
25218	data intput.
25219	* tests/data/test-diff-dwarf/libtest20-add-fn-parm-v1.so:
25220	Likewise.
25221	* tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt:
25222	Likewise.
25223	* tests/data/test-diff-dwarf/test20-add-fn-parm-v0.c: Source code
25224	for the first shared library above.
25225	* tests/data/test-diff-dwarf/test20-add-fn-parm-v1.c: Source code
25226	for the second shared library above.
25227	* tests/test-diff-dwarf.cc (in_out_specs): Add the test input data
25228	above to the list of test input the harness must run over.
25229	* Makefile.am: Add the new files above to source distribution.
25230
252312014-12-08  Dodji Seketeli <dodji@redhat.com>
25232
25233	Wire the soname check into abicompat
25234	* include/abg-comparison.h (corpus_diff::soname_changed): Declare
25235	new member function.
25236	* src/abg-comparison.cc (corpus_diff::soname_changed): Define new
25237	member function.
25238	(corpus_diff::length): Use the new corpus_diff::soname_changed()
25239	method.
25240	* tests/data/test-abicompat/libtest4-soname-changed-v0.so: New
25241	test input data.
25242	* tests/data/test-abicompat/libtest4-soname-changed-v1.so:
25243	Likewise.
25244	* tests/data/test-abicompat/test4-soname-changed-app: Likewise.
25245	* tests/data/test-abicompat/test4-soname-changed-report-0.txt:
25246	Likewise.
25247	* tests/data/test-abicompat/test4-soname-changed-app.cc: Source
25248	code for one of the binaries above.
25249	* tests/data/test-abicompat/test4-soname-changed-v0.cc: Likewise.
25250	* tests/data/test-abicompat/test4-soname-changed-v1.cc: Likewise.
25251	* tests/test-abicompat.cc (in_out_specs): Add the new test input
25252	data to the list of input data to run this harness over.
25253	(main): Take the soname change in account to determine if the
25254	change is ABI incompatible.
25255	* tests/data/Makefile.am: Add the new test input data above to source
25256	distribution.
25257
252582014-12-07  Dodji Seketeli <dodji@redhat.com>
25259
25260	Fixup messed up old runtestdiffdwarf input tests
25261	* tests/data/test-diff-dwarf/test17-non-refed-syms-report-0.txt:
25262	Add this missing reference test output.
25263	* tests/data/Makefile.am: Add the new reference test output to
25264	source distribution.
25265	* tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: Fix
25266	this output to avoid emitting symbol alias information in it.
25267	* tests/test-diff-dwarf.cc (in_out_specs): Add two missing test
25268	input data to the list of input data this harness is supposed to
25269	run over.
25270
252712014-12-07  Dodji Seketeli <dodji@redhat.com>
25272
25273	Support reading and comparing soname from ELF files
25274	* include/abg-corpus.h (corpus::{get_needed, set_needed,
25275	get_soname, set_soname}): Declare new accessors.
25276	* src/abg-corpus.cc (corpus::priv::{needed, soname}): New data
25277	members.
25278	(corpus::{get_needed, set_needed, get_soname, set_soname}): Define
25279	new accessors.
25280	(corpus::is_empty): Take dt_needed and dt_soname in account in
25281	computing empty-ness.
25282	* src/abg-dwarf-reader.cc (read_context::{dt_needed_,
25283	dt_soname_}): New data members.
25284	(read_context::{dt_needed, dt_soname}): New accessors.
25285	(read_context::load_dt_soname_and_needed): New member function.
25286	(read_corpus_from_elf): Call the new
25287	read_context::load_dt_soname_and_needed() to read the dt_soname
25288	and dt_needed tags.  Set them to the corpus.
25289	* include/abg-comparison.h (diff_context::show_soname_change):
25290	Declare new accessors.
25291	* src/abg-comparison.cc (diff_context::priv::show_soname_change_):
25292	New data member.
25293	(diff_context::priv::priv): Initialize the new data member
25294	diff_context::priv::show_soname_change_.
25295	(diff_context::show_soname_change): Define new accessors.
25296	(corpus_diff::priv::sonames_equal_): New data member.
25297	(corpus_diff::priv::priv): Initialize the new data member
25298	corpus_diff::priv::sonames_equal_.
25299	(corpus_diff::length): Take the new priv_->sonames_equals_ data
25300	member in account.
25301	(corpus_diff::{report, priv::emit_diff_stats}): If the sonames
25302	changed and we are allowed to report it, then report it.
25303	(compute_diff): In the variant for corpus_diff, do not forget to
25304	compare the sonames.
25305	* src/abg-reader.cc (build_needed, read_elf_needed_from_input):
25306	Define new static functions.
25307	(read_corpus_from_input): Read the 'soname' attribute from the
25308	'abi-corpus' xml element node.
25309	* src/abg-writer.cc (write_elf_needed): Define new static
25310	function.
25311	(write_corpus_to_native_xml): Write a new 'elf-needed' xml element
25312	node that contains one xml 'dependency' element node per
25313	dependency to emit.  This uses the new write_elf_needed() function
25314	above.
25315	* tests/data/test-diff-dwarf/libtest19-soname-v0.so: New test
25316	input data.
25317	* tests/data/test-diff-dwarf/libtest19-soname-v1.so: Likewise.
25318	* tests/data/test-diff-dwarf/test19-soname-report-0.txt: Likewise.
25319	* tests/data/test-diff-dwarf/test19-soname-v0.c: Source code of
25320	the first binary above.
25321	* tests/data/test-diff-dwarf/test19-soname-v1.c: Source code of
25322	the second binary above.
25323	* tests/test-diff-dwarf.cc (in_out_specs): Add the test input
25324	above to the list of test input to run this harness on.
25325	* tests/data/Makefile.am: Add the new test input data above.
25326	* tests/data/test-read-dwarf/test{0,1}.abi: Adjust.
25327	* tests/data/test-read-dwarf/test{2,3,4,6,}.so.abi: Adjust.
25328
253292014-12-07  Dodji Seketeli <dodji@redhat.com>
25330
25331	Fix some style nits in the native reader and writer
25332	* src/abg-reader.cc (read_symbol_db_from_input): Align parameter
25333	names.  Fix indentation of the first line of the function.
25334	* src/abg-writer.cc (write_elf_symbols_table): Align parameter names.
25335
253362014-12-07  Dodji Seketeli <dodji@redhat.com>
25337
25338	Fix a crash while writing symbol information
25339	* src/abg-corpus.cc (corpus::{get_fun_symbol_map_sptr,
25340	get_var_symbol_map_sptr}): Make sure the symbol map is always
25341	constructed, even if it's empty.
25342	* tests/data/test-read-write/test26.xml: New test input data.
25343	* tests/test-read-write.cc (in_out_spec): Add this new test input
25344	data to the list of input data to run the harness on.
25345	(main): Support reading and writing corpus files alongside
25346	translation unit files that we were handling already.
25347	* tests/data/Makefile.am: Add the new test input data to source
25348	distribution.
25349
253502014-12-05  Dodji Seketeli <dodji@redhat.com>
25351
25352	Avoid showing ugly version info in the libabigail online manual
25353	* doc/manuals/conf.py: Update copyright mention.  Do not show ugly
25354	version information.
25355
253562014-11-30  Dodji Seketeli <dodji@redhat.com>
25357
25358	Initial implementation of the abicompat tool
25359	* include/abg-comparison.h
25360	(diff_context::show_added_symbols_unreferenced_by_debug_info):
25361	Declare new accessors.
25362	(corpus_diff::{deleted_variables,
25363	deleted_unrefed_function_symbols,
25364	deleted_unrefed_variable_symbols,
25365	apply_filters_and_suppressions_before_reporting}): Declare new
25366	methods.
25367	(corpus_diff::diff_stats): Declare this new type.  Actually this
25368	was previously corpus_diff::priv::diff_stats, which was a hidden
25369	internal type..  We are moving it here, in the external API so
25370	that client code can have more information about changes
25371	statistics.  Change all the previously publicly accessible data
25372	members into accessor functions.
25373	* src/abg-comparison.cc (class corpus_diff::diff_stats::priv): New
25374	type.
25375	(diff_context::priv::show_added_syms_unreferenced_by_di_): New
25376	data member.
25377	(diff_context::priv::priv): Adjust.
25378	(diff_context::show_added_symbols_unreferenced_by_debug_info):
25379	Define this new method.
25380	(corpus_diff::priv::emit_diff_stats):  Do not show the diff stat
25381	if the only changes is added function or variables symbols and if
25382	we were instructed to not show added symbols.
25383	(corpus_diff::priv::{diff_stats_, filters_and_suppr_applied_}):
25384	New data members.
25385	(corpus_diff::priv::priv): Initialize the
25386	filters_and_suppr_applied_ data member.
25387	(corpus_diff::priv::diff_stats): Move this type to
25388	corpus_diff::diff_stats.
25389	(corpus_diff::priv::{apply_filters_and_compute_diff_stats,
25390	emit_diff_stats}): Adjust.
25391	(corpus_diff::apply_filters_and_suppressions_before_reporting):
25392	Define new member function.
25393	(corpus_diff::report): Use the new
25394	apply_filters_and_suppressions_before_reporting() function, rather
25395	than applying the filters and suppressions by ourselves.  Also
25396	adjust to the use the accessors of the new corpus_diff::diff_stats
25397	type.
25398	(corpus_diff::{deleted_variables,
25399	deleted_unrefed_function_symbols,
25400	deleted_unrefed_variable_symbols}): Define new accessors.
25401	(corpus_diff::diff_stats::{diff_stats, num_func_removed,
25402	num_func_added, num_func_changed, num_func_filtered_out,
25403	net_num_func_changed, num_vars_removed, num_vars_added,
25404	num_vars_changed, num_vars_filtered_out, net_num_vars_changed,
25405	num_func_sym_removed, num_func_syms_added, num_var_syms_removed,
25406	num_var_syms_added}): Define new member functions.
25407	* include/abg-corpus.h (corpus::{get_sym_ids_of_fns_to_keep,
25408	get_sym_ids_of_vars_to_keep}): Declare new methods.
25409	* src/abg-corpus.cc (corpus::priv::{sym_id_fns_to_keep,
25410	sym_id_vars_to_keep}): Added data members.
25411	(symtab_build_visitor_type::{unrefed_fun_symbols,
25412	unrefed_var_symbols, sym_id_fns_to_keep, sym_id_vars_to_keep}):
25413	Added new data members.
25414	(symtab_build_visitor_type::symtab_build_visitor_type): Take two
25415	additional parameters for the function and variable symbol ids to
25416	keep.
25417	(symtab_build_visitor_type::add_fn_to_wip_fns): Take the function
25418	symbols to keep in account when building the exported symbol
25419	table.
25420	(symtab_build_visitor_type::add_var_to_wip_vars): Likewise, take
25421	the variable symbols to keep in account when building the exported
25422	symbol table.
25423	(corpus::priv::build_public_decl_table): Adjust the initialization
25424	of the visitor that walks the ABI artifacts to build the exported
25425	symbol table to know take a list of function/variable symbols to
25426	keep.
25427	(corpus::priv::build_unreferenced_symbols_tables): Ensure that the
25428	public table of functions/variables is built before doing the work
25429	of this function.  Also, if a list of variable/function symbols to
25430	keep is given, drop all symbols that are not in that list on the
25431	floor.
25432	(corpus::{get_sym_ids_of_fns_to_keep,
25433	get_sym_ids_of_vars_to_keep}): Define new accessors.
25434	* tools/abicompat.cc: New abicompat tool.
25435	* doc/manuals/abicompat.rst: New documentation source for
25436	abicompat.
25437	* doc/manuals/libabigail-tools.rst: Add an entry for the abicompat
25438	doc.
25439	* tests/test-abicompat.cc: New test harness for the 'abicompat'
25440	tool.
25441	* tests/Makefile.am: Build the runtestabicompat test harness and
25442	add it to the list of tests harnesses that are run by make check.
25443	* tests/data/test-abicompat/libtest0-fn-changed-libapp-v0.so: New
25444	test input.
25445	* tests/data/test-abicompat/libtest0-fn-changed-libapp-v1.so: Likewise.
25446	* tests/data/test-abicompat/test0-fn-changed-app: Likewise.
25447	* tests/data/test-abicompat/test0-fn-changed-0.suppr: Likewise
25448	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Likewise.
25449	* tests/data/test-abicompat/test0-fn-changed-report-1.txt: Likewise.
25450	* tests/data/test-abicompat/test0-fn-changed-app.cc: Likewise.
25451	* tests/data/test-abicompat/test0-fn-changed-libapp.h: Likewise.
25452	* tests/data/test-abicompat/test0-fn-changed-libapp-v0.cc: Likewise.
25453	* tests/data/test-abicompat/test0-fn-changed-libapp-v1.cc: Likewise.
25454	* tests/data/test-abicompat/libtest1-fn-removed-v0.so: Likewise.
25455	* tests/data/test-abicompat/libtest1-fn-removed-v1.so: Likewise.
25456	* tests/data/test-abicompat/test1-fn-removed-app: Likewise.
25457	* tests/data/test-abicompat/test1-fn-removed-app.cc: Likewise.
25458	* tests/data/test-abicompat/test1-fn-removed-report-0.txt: Likewise.
25459	* tests/data/test-abicompat/test1-fn-removed-v0.cc: Likewise.
25460	* tests/data/test-abicompat/test1-fn-removed-v1.cc: Likewise.
25461	* tests/data/test-abicompat/libtest2-var-removed-v0.so: Likewise.
25462	* tests/data/test-abicompat/libtest2-var-removed-v1.so: Likewise.
25463	* tests/data/test-abicompat/test2-var-removed-app: Likewise.
25464	* tests/data/test-abicompat/test2-var-removed-app.cc: Likewise.
25465	* tests/data/test-abicompat/test2-var-removed-report-0.txt: Likewise.
25466	* tests/data/test-abicompat/test2-var-removed-v0.cc: Likewise.
25467	* tests/data/test-abicompat/test2-var-removed-v1.cc: Likewise.
25468	* tests/data/test-abicompat/libtest3-fn-removed-v0.so: Likewise.
25469	* tests/data/test-abicompat/libtest3-fn-removed-v1.so: Likewise.
25470	* tests/data/test-abicompat/test3-fn-removed-app: Likewise.
25471	* tests/data/test-abicompat/test3-fn-removed-app.cc: Likewise.
25472	* tests/data/test-abicompat/test3-fn-removed-report-0.txt: Likewise.
25473	* tests/data/test-abicompat/test3-fn-removed-v0.cc: Likewise.
25474	* tests/data/test-abicompat/test3-fn-removed-v1.cc: Likewise.
25475	* tests/data/test-abicompat/test3-fn-removed-version-script-0 Likewise.:
25476	* tests/data/test-abicompat/test3-fn-removed-version-script-1: Likewise.
25477	* tests/data/Makefile.am: Add the new test inputs above to the
25478	source distribution.
25479
254802014-11-30  Dodji Seketeli <dodji@redhat.com>
25481
25482	Support reading undefined symbols from an ELF file
25483	* include/abg-corpus.h (corpus::{set_undefined_fun_symbol_map,
25484	set_undefined_var_symbol_map, get_undefined_fun_symbol_map_sptr,
25485	get_undefined_fun_symbol_map, get_sorted_undefined_fun_symbols,
25486	get_undefined_var_symbol_map_sptr, get_undefined_var_symbol_map,
25487	get_sorted_undefined_var_symbols}): Declare new methods ...
25488	* src/abg-corpus.cc (corpus::{set_undefined_fun_symbol_map,
25489	set_undefined_var_symbol_map, get_undefined_fun_symbol_map_sptr,
25490	get_undefined_fun_symbol_map, get_sorted_undefined_fun_symbols,
25491	get_undefined_var_symbol_map_sptr, get_undefined_var_symbol_map,
25492	get_sorted_undefined_var_symbols}): ... and define them.
25493	(struct corpus::priv::{undefined_var_symbol_map,
25494	sorted_undefined_var_symbols, undefined_fun_symbol_map,
25495	sorted_undefined_fun_symbols}): New data members.
25496	* src/abg-dwarf-reader.cc (get_symbol_versionning_sections): Also
25497	return the SHT_GNU_verneed section.
25498	(get_version_needed_for_versym): New static function.
25499	(get_version_definition_for_versym): Factorize this function out
25500	of ..
25501	(get_version_for_symbol): ... this one.  Take a flag that says if
25502	we want the definition version or the needed version of a symbol.
25503	Extend the implementation using the two new function
25504	get_version_needed_for_versym() and
25505	get_version_definition_for_versym() above.  This function now
25506	returns the version either for a defined & exported symbol, or for
25507	an undefined symbol.
25508	(lookup_symbol_from_sysv_hash_tab)
25509	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab):
25510	Adjust for the change of signature of get_version_for_symbol().
25511	(read_context::{undefined_fun_syms_, undefined_var_syms_}): New
25512	data members.
25513	(read_context::lookup_elf_symbol_from_index): Adjust for
25514	invocation of the new signature of get_version_for_symbol().
25515	(read_context::{undefined_fun_syms_sptr, undefined_fun_syms,
25516	undefined_var_syms_sptr, undefined_var_syms}): Define new methods.
25517	(read_context::load_symbol_maps): Add support for loading
25518	undefined symbols and their versions.
25519	(read_context::maybe_load_symbol_maps):  Take in account the need
25520	to load undefined symbols as well.
25521	(read_corpus_from_elf): Once the undefined symbols have been read
25522	from the ELF file, stuff them into the resulting ABI corpus that
25523	has been built.
25524
255252014-11-30  Dodji Seketeli <dodji@redhat.com>
25526
25527	Show the pretty representation of deleted variables in the diff output
25528	* src/abg-comparison.cc (corpus_diff::report): Show the pretty
25529	representation of deleted variables in all cases.
25530
255312014-11-30  Dodji Seketeli <dodji@redhat.com>
25532
25533	Fix status checking in abidw
25534	* tools/abidw.cc (main): Fix successful status checking.
25535
255362014-11-30  Dodji Seketeli <dodji@redhat.com>
25537
25538	Rename elf_symbol::get_is_defined() to elf_symbol::is_defined()
25539	* include/abg-ir.h (elf_symbol::get_is_defined): Rename into
25540	elf_symbol::is_defined.
25541	(elf_symbol::set_is_defined): Rename into elf_symbol::is_defined.
25542	* src/abg-ir.cc (elf_symbol::get_is_defined): Likewise, rename
25543	this into elf_symbol::is_defined.
25544	(elf_symbol::set_is_defined): Likewise, rename this into
25545	elf_symbol::is_defined.
25546	(elf_symbol::{elf_symbol, is_public}): Adjust.
25547	* src/abg-writer.cc (write_elf_symbol): Adjust.
25548
255492014-11-30  Dodji Seketeli <dodji@redhat.com>
25550
25551	Update the copyright years of include/abg-corpus.h
25552	* include/abg-corpus.h: Update the copyright years of this file.
25553
255542014-11-20  Dodji Seketeli <dodji@redhat.com>
25555
25556	Make tests/data directory have its own Makefile
25557	* configure.ac(AC_CONFIG_FILE): Generate a new tests/data/Makefile
25558	file.
25559	* tests/Makefile.am: Link the data/ sub-directory from here.  Move
25560	the EXTRA_DIST definition to ...
25561	* tests/data/Makefile.am: ... this new file here.
25562
255632014-11-20  Dodji Seketeli <dodji@redhat.com>
25564
25565	Hmh, finally EXTRA_DIST was just fine
25566	* tests/Makefile.am: Put EXTRA_DIST back.
25567
255682014-11-19  Dodji Seketeli <dodji@redhat.com>
25569
25570	Make sure we don't try to build test data
25571	* tests/Makefile.am: Replace EXTRA_DIST with noinst_DATA.
25572
255732014-11-19  Dodji Seketeli <dodji@redhat.com>
25574
25575	Fix manual documentation generation
25576	* doc/manuals/Makefile.am: Trigger the manual generation from the
25577	html-doc target.  Add the source files to the distribution.  Fix
25578	the clean target.
25579
255802014-11-19  Dodji Seketeli <dodji@redhat.com>
25581
25582	Fix apidoc building
25583	* doc/Makefile.am: Trigger the building frm the html-doc target.
25584
255852014-11-19  Dodji Seketeli <dodji@redhat.com>
25586
25587	Cleanup of configure.ac
25588	* configure.ac: Remove useless variables and fix a typo.
25589
255902014-11-19  Dodji Seketeli <dodji@redhat.com>
25591
25592	Add loads of forgotten test data files to source distribution
25593	* tests/Makefile.am: Add lots of test data file that were
25594	forgotten and then revealed by running make distcheck.  Also fix
25595	some wrong paths to test data files.
25596
255972014-11-19  Dodji Seketeli <dodji@redhat.com>
25598
25599	Use DESTDIR in doc/manuals/Makefile.am when creating the manuals
25600	* doc/manuals/Makefile.am: Use the DESTDIR variable when
25601	addressing the destination directory of the created manuals.
25602
256032014-11-19  Dodji Seketeli <dodji@redhat.com>
25604
25605	Fix a thinko in doc/Makefile.am
25606	* apidoc-install-html-doxygen: Make sure that the directory
25607	$(DESTDIR)$(docdir) does not exist, before trying to create it.
25608
256092014-11-19  Dodji Seketeli <dodji@redhat.com>
25610
25611	Add doc/api/libabigail.doxy to source distribution
25612	* doc/Makefile.am: Add the file api/libabigail.doxy to source
25613	distribution.
25614
256152014-11-19  Dodji Seketeli <dodji@redhat.com>
25616
25617	Make the install-html target of apidoc/manual be conditional
25618	* configure.ac: add --enable-apidoc and --enable-manual.  Add the
25619	two ENABLE_APIDOC and ENABLE_MANUAL automake conditional
25620	variables.  Add the activation of the apidoc and manual into the
25621	final package configuration report.
25622	* doc/Makefile.am: Make the install-html, install-data-local and
25623	uninstall-local targets conditional on the ENABLE_APIDOC
25624	conditional variable.
25625	* doc/manuals/Makefile.am: Likewise, make the install-html,
25626	install-data-local and uninstall-data-local conditional on the
25627	ENABLE_MANUAL conditional variable.
25628
256292014-11-19  Dodji Seketeli <dodji@redhat.com>
25630
25631	Make the alt dwarf debug file *not* be a symlink
25632	* tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
25633	Make this be a real file, no more a symlink to
25634	../../../test0-common-dwz.debug.
25635	* tests/data/test-alt-dwarf-file/test0-report.txt: Now that the
25636	file above is no more a symlink the message emitted by the test
25637	changes.  It now says that the file found is the base name of the
25638	real file.  So change the reference report accordingly.
25639
256402014-11-19  Dodji Seketeli <dodji@redhat.com>
25641
25642	Use the POSIX 1003.1-1988 tar format for dist tar
25643	* configure.ac: For the tar invocation made by make dist, make
25644	sure to use the POSIX 1003.1-1988 tar format that can support file
25645	names of more than 99 characters.  This is useful for the
25646	test-alt-dwarf-file test that has data made of a file which patch
25647	has more than 99 characters.
25648
256492014-11-19  Dodji Seketeli <dodji@redhat.com>
25650
25651	Nested automake conditionals don't work
25652	* configure.ac (ENABLE_ZIP_ARCHIVE_AND_CXX11): Define this
25653	automake condition variable that is true if both the zip archive
25654	and c++11 features are enabled.  This is important to know if the
25655	test runtestdot is going to be compiled.  That test needs both
25656	c++11 and the zip archive features.
25657	* tests/Makefile.am: Do not nest automake conditional statements.
25658	It does not work.  Rather, use the new
25659	ENABLE_ZIP_ARCHIVE_AND_CXX11 condition variable.
25660
256612014-11-19  Dodji Seketeli <dodji@redhat.com>
25662
25663	INSTALL file is not yet in the distribution
25664	* Makefile.am: Do not say that INSTALL file is in the distribution
25665	while it is not.
25666
256672014-11-19  Dodji Seketeli <dodji@redhat.com>
25668
25669	If c++11 is disable do not execute the runtestdot test
25670	* tests/Makefile.am: runtestdot should not be executed if c++11 is
25671	disabled.
25672
256732014-11-18  Dodji Seketeli <dodji@redhat.com>
25674
25675	make html now generates the apidoc, manual and web site
25676	* doc/Makefile.am (html-local): Make the html file generation be
25677	triggered by the html-local target, not the html target.  The html
25678	target is a recursive target that calls the the html-local targets
25679	under each directory.
25680	(apidoc-html-doxygen): Rename the doc-html-doxygen target into
25681	(apidoc-install-html-doxygen): Rename doc-install-html-doxygen
25682	into this.  this.
25683	(DO_HTML, DO_INSTALL_HTML): Adjust.
25684	(install-data-local): New target.
25685	* doc/manuals/Makefile.am (install-html, install-data-local): New
25686	targets.
25687
256882014-11-18  Dodji Seketeli <dodji@redhat.com>
25689
25690	Generate the manual html documentation in the proper build directory
25691	* doc/manuals/Makefile.am: Renamed doc/manuals/Makefile into this.
25692	(BUILDDIR): Make this variable point to $(builddir)/_build as
25693	opposed to just _build previously.
25694	(SOURCEDIR): New variable that points to the source dir as known
25695	by the autotools magic.
25696	(ALLSPHINXOPTS): Make the source dir refer to the new
25697	$(SOURCEDIR), rather than just '.' as previously.
25698	* configure.ac (doc/manuals/Makefile): Generate this now.
25699	* doc/Makefile.am: Link the sub-directory doc/manuals.
25700
257012014-11-18  Dodji Seketeli <dodji@redhat.com>
25702
25703	Update Makefile.am after the additions related to gen-changelog.py
25704	* Makefile.am: Add ChangeLog and COPYING-LGPLV2 to the source
25705	distribution.
25706	(update-changelog, tag-release-only tag-release): New Makefile
25707	targets.
25708
257092014-11-18  Dodji Seketeli <dodji@redhat.com>
25710
25711	Added a ChangeLog that is auto-generated by gen-changelog.py
25712	* ChangeLog: Add this auto-generated file.
25713
257142014-11-18  Dodji Seketeli <dodji@redhat.com>
25715
25716	[gen-changelog] Make subject line always come first
25717	* gen-changelog.py (process_commit): In changelog entries with an
25718	empty body, make sure the subject line comes first.
25719
257202014-11-18  Dodji Seketeli <dodji@redhat.com>
25721
25722	Try harder to remove timezone info from the date
25723	* gen-changelog.py (process_commit): The timezone shit can start
25724	either with a '+' or a '-'.
25725
257262014-11-18  Dodji Seketeli <dodji@redhat.com>
25727
25728	Not all ChangeLog file lines end up with a ':'
25729	* gen-changelog.py (process_commit): When trying to recognize the
25730	beginning of a ChangeLog entry body, do not expect a line that
25731	starts with a '*' to end with a ':' because there can be long file
25732	names that end on the next line.
25733
257342014-11-18  Dodji Seketeli <dodji@redhat.com>
25735
25736	Allow introductory text in commit log and ignore it when generating ChangeLog
25737	* gen-changelog.py (process_commit): Everything that comes between
25738	the subject line of the commit and the first \t* sequence is
25739	considered to be introductory text.  Ignore it when generating the
25740	ChangeLog entry.
25741	* COMMIT-LOG-GUIDELINES: Update the commit log guidelines to
25742	reflect the fact that we can now have introductory text in the
25743	commit log.
25744
257452014-11-18  Dodji Seketeli <dodji@redhat.com>
25746
25747	Initial import of gen-changelog.py
25748	* gen-changelog.py: Copy from
25749	https://github.com/GNOME/gnet/blob/master/gen-changelog.py.
25750	License it under LGPLV v2+ after asking Edward Hervey's kind
25751	permission.  Ain't Free Software really great?
25752
257532014-11-18  Dodji Seketeli <dodji@redhat.com>
25754
25755	Fix the reference to the IRC channel on the web page
25756	* doc/website/mainpage.txt: The IRC server address is
25757	irc.oftc.net, not just oftc.net.
25758	* include/abg-fwd.h: Likewise.
25759
257602014-11-10  Dodji Seketeli <dodji@redhat.com>
25761
25762	Consider enclosing template when comparing template parameters
25763	* src/abg-ir.cc (template_parameter::priv::comparison_started_):
25764	New data member.
25765	(template_parameter::priv::priv): Initialize it.
25766	(template_parameter::operator==): Compare the enclosing template
25767	too.  And avoid infinite recursion.
25768
257692014-11-10  Dodji Seketeli <dodji@redhat.com>
25770
25771	Remove mention of libzip from the web page
25772	* doc/website/mainpage.txt: Remove mention of libzip from the list
25773	of dependencies.
25774
257752014-11-10  Dodji Seketeli <dodji@redhat.com>
25776
25777	Cleanup of the web page
25778	* doc/website/libabigail-website.doxy: Remove the redundant
25779	information that was appearing on the web page.
25780	* doc/website/mainpage.txt: Clean-up the text of the web page, add
25781	information for the new IRC channel #libabigail on oftc.net,
25782	re-organize the content by putting sections where we had
25783	paragraphs.  Add a table of content.  Also add a web form to
25784	subscribe/unsubscribe to the mailing list.
25785
257862014-11-08  Dodji Seketeli <dodji@redhat.com>
25787
25788	Sort functions by the their qualified name
25789	* src/abg-comparison.cc (function_comp::operator()): Sort the
25790	functions by only looking at their qualified name, as opposed to
25791	their return type name.
25792
257932014-11-08  Dodji Seketeli <dodji@redhat.com>
25794
25795	Remove too tight assert from de-mangling code
25796	* src/abg-ir.cc (demangle_cplus_mangled_name):  The return length
25797	can be zero.  That means, no de-mangling was done.
25798
257992014-11-08  Dodji Seketeli <dodji@redhat.com>
25800
25801	Sort reported changed declarations & types in a given scope
25802	* src/abg-comparison.cc (struct changed_type_or_decl_comp, struct
25803	changed_vars_comp): New comparison functors.
25804	(sort_changed_type_or_decl, sort_changed_vars): New static
25805	functions.
25806	(scope_diff::report): Use the above to sort changed declarations,
25807	and types in a given scope.
25808	(corpus_diff::report): Likewise for the changed variables.
25809	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.
25810	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt:
25811	Likewise.
25812	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt:
25813	Likewise.
25814
258152014-11-08  Dodji Seketeli <dodji@redhat.com>
25816
25817	Sort elf symbols before serializing them
25818	* include/abg-corpus.h (corpus::{get_sorted_fun_symbols,
25819	get_sorted_var_symbols}): Declare new member functions.
25820	* src/abg-corpus.cc (corpus_priv::{sorted_var_symbols,
25821	sorted_fun_symbols}): New data members.
25822	(struct elf_symbol_comp_functor): Define new comparison functor.
25823	(corpus::{get_sorted_fun_symbols, get_sorted_var_symbols}): Define
25824	new member functions.
25825	* src/abg-writer.cc (write_elf_symbols_table): Take a sorted
25826	vector of symbols in parameters, rather than an unsorted map.
25827	(write_corpus_to_native_xml): Write a sorted vector of symbols,
25828	rather than an unsorted map of symbols.
25829	* tests/data/test-read-dwarf/test0.abi: Adjust.
25830	* tests/data/test-read-dwarf/test1.abi: Likewise.
25831	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
25832	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
25833	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
25834
258352014-11-07  Dodji Seketeli <dodji@redhat.com>
25836
25837	Fix template parameter hashing: make it know about enclosing template
25838	* include/abg-ir.h (template_parameter_sptr, template_decl_sptr)
25839	(template_decl_wptr): Declare new typedefs.
25840	(class template_decl): Make this virtually inherit decl_base and
25841	pimpl-ify it.
25842	(class template_parameter): Pimpl-ify this.  Make the constructor
25843	take the enclosing template parameter.
25844	(struct template_decl::hash): Declare this here, rather than in
25845	src/abg-hash.cc
25846	(class type_tparameter, non_type_tparameter, template_tparameter)
25847	(class type_composition, function_tdecl, class_tdecl): Pimpl-ify
25848	this.
25849	* src/abg-hash.cc (template_parameter::hash::operator()): Hash the
25850	enclosing template parameter.  Avoid infinite recursion due to the
25851	loop hash parameter -> hash template -> hash parameter.
25852	(template_decl::hash::operator()) Define this here, now that it's
25853	declared in abg-ir.h.  Also, avoid infinite recursion here; this
25854	is complementary to what is done in the hashing for
25855	template_parameter.
25856	({type_tparameter, template_tparameter, }::hash::operator()):
25857	Cache the calculated hash just as what is done for other types
25858	hashed.
25859	(template_decl::priv): Define this new type.
25860	(template_decl::{add_template_parameter, get_template_parameters,
25861	~template_decl}): Define these here to pimpl-ify template_decl.
25862	(template_parameter::priv): Define this new type.
25863	(template_parameter::template_parameter): Define this here to
25864	pimpl-ify template_parameter.  Note also that this now takes the
25865	enclosing template decl.
25866	(template_parameter::{get_index, get_enclosing_template_decl,
25867	get_hashing_has_started, set_hashing_has_started, operator::==}):
25868	Define these here to pimpl-ify template_parameter.
25869	(type_tparameter::priv): Define this new type.
25870	(type_tparameter::type_tparameter): Define this here to pimpl-ify
25871	type_tparameter.   Also, not that this constructor now takes the
25872	enclosing template decl.
25873	(class non_type_tparameter::priv): Define new type.
25874	(non_type_tparameter::{non_type_tparameter, get_type}): Define
25875	these here to pimpl-ify non_type_tparameter.  The constructor now
25876	takes the enclosing template.
25877	(template_tparameter::priv): Define new type.
25878	(template_tparameter::template_tparameter): Define this here to
25879	pimpl-ify template_tparameter.  This constructor now takes the
25880	enclosing template.
25881	(class type_composition::priv): New type.
25882	(type_composition::{type_composition, get_composed_type,
25883	set_composed_type}): Define these here to pimpl-ify
25884	type_composition.  The constructor now takes the enclosing
25885	template decl.
25886	(class function_tdecl::priv): Define new type.
25887	(function_tdecl::{function_tdecl, set_pattern, get_pattern,
25888	get_binding}): Define this here to pimpl-ify function_tdecl.
25889	(class class_tdecl::priv): Define this new type.
25890	(class_tdecl::class_tdecl): Define this here to pimpl-ify
25891	class_tdecl.
25892	(class_tdecl::set_pattern): Adjust to pimpl-ify.
25893	(class_tdecl::get_pattern): Define new pimpl-ified getter.
25894	* src/abg-reader.cc (build_function_tdecl, build_class_tdecl):
25895	Cleanup.  Pass the enclosing template to the template parameters
25896	that are built.
25897	(build_type_tparameter, build_type_composition)
25898	(build_non_type_tparameter, build_template_tparameter)
25899	(build_template_parameter): Take the enclosing template
25900	declaration and pass it to the template parameter being created.
25901	* tests/data/test-read-write/test12.xml: Fix and Adjust.
25902	* tests/data/test-read-write/test13.xml: Likewise.
25903
259042014-11-06  Dodji Seketeli <dodji@redhat.com>
25905
25906	Style fix
25907	* include/abg-ir.h (class location): Remove useless white space.
25908	* src/abg-writer.cc (type_has_existing_id): Use type_base_sptr
25909	rather than shared_ptr<type_base>.
25910	(write_template_tparameter): Use template_tparameter_sptr rather
25911	than shared_ptr<template_tparameter>.
25912
259132014-11-05  Dodji Seketeli <dodji@redhat.com>
25914
25915	Pass -std=gnu++11 to the compiler when --enable-cxx11 for tests
25916	* tests/Makefile.am: Pass -std=gnu++11 to the compiler when
25917	--enable-cxx11 has been used.
25918
259192014-11-05  Dodji Seketeli <dodji@redhat.com>
25920
25921	Make the use of a C++-11 compiler optional
25922	* configure.ac: Define a new --enable-cxx11 switch to control the
25923	use of the C++-11 compiler.  Define a WITH_CXX11 C macro and an
25924	automake ENABLE_CXX11 variable.
25925	* config.h.in: Initialize the new WITH_CXX11 C macro.
25926	* src/Makefile.am: Include the files coded in C++-11 only if the
25927	ENABLE_CXX11 automake variable is defined.
25928	* tests/Makefile.am: Likewise, build the runtestsvg test program
25929	only if C++-11 usage is enabled.
25930	* include/abg-diff-utils.h (class d_path_vec): Remove useless
25931	usage of the 'typename' keyword.
25932	* include/abg-fwd.h (is_enum_type): Renamed is_enum into this,
25933	because of a name clash with a tr1 function when not using C++-11.
25934	(is_pointer_type): Likewise, renamed is_pointer into this because
25935	of a name clash with a tr1 function when not using C++-11.
25936	* src/abg-comp-filter.cc (has_harmless_name_change): Adjust for
25937	the is_enum -> is_enum_type change.
25938	* src/abg-comparison.cc (type_suppression::suppresses_diff):
25939	Likewise.
25940	(class function_suppression::priv): Add a missing "class" keyword
25941	in friend declaration.
25942	(diff_context::diff_has_been_traversed)
25943	(diff_context::mark_diff_as_traversed): Do not use the C++-11
25944	specific type uintptr_t.
25945	* src/abg-dwarf-reader.cc (create_default_dwfl): Do not use
25946	designated initializers.  Sigh.  This is handy though.
25947	(expr_result::abs): Cast the argument of std::abs to avoid
25948	ambiguous call.
25949	(finish_member_function_reading): Adjust for the is_pointer ->
25950	is_pointer_type renaming.
25951	* src/abg-hash.cc (scope_decl::hash::operator)
25952	(class_decl::base_spec::hash::operator)
25953	(type_composition::hash::operator): Use std::tr1::hash string,
25954	rather than the C++-11 specific std::hash function.
25955	* src/abg-ini.cc (read_sections, write_sections): Make
25956	std::ifstream constructor take a const char* rather than a string.
25957	* src/abg-ir.cc (is_enum_type, is_pointer_type): Renamed is_enum
25958	into is_enum_type and is_pointer into is_pointer_type.
25959	* src/abg-writer.cc (write_translation_unit): Remove useless
25960	typename keyword.  Make ofstream take a const char* rather than a
25961	string.
25962	(write_namespace_decl): Remove useless typename keyword.
25963	(write_corpus_to_native_xml_file): Make ofstream take a const
25964	char* rather than a string.
25965	* tests/test-abidiff.cc (main): Make ofstream take a const char*
25966	rather than a string.
25967	* tests/test-diff-dwarf.cc (main): Likewise.
25968
259692014-11-05  Dodji Seketeli <dodji@seketeli.org>
25970
25971	Remove some m4 auto-generated files from version control
25972	* m4/ltoptions.m4: Remove from version control.
25973	* m4/ltversion.m4: Remove from version control.
25974	* m4/lt~obsolete.m4: Remove from version control.
25975
259762014-11-03  Dodji Seketeli <dodji@redhat.com>
25977
25978	Add usage examples to the abidiff manual
25979	* doc/manuals/abidiff.rst: Add a usage example section along with
25980	some small and clean examples.
25981
259822014-11-01  Dodji Seketeli <dodji@redhat.com>
25983
25984	Fix the API doc string of the abigail::xml_writer namespace
25985	* src/abg-writer.cc: Fix the API doc of the xml_writer namespace.
25986
259872014-11-01  Dodji Seketeli <dodji@redhat.com>
25988
25989	Fix an apidoc typo
25990	* include/abg-comparison.h (class variable_suppression): Fix a
25991	typo in the doc string.
25992
259932014-11-01  Dodji Seketeli <dodji@redhat.com>
25994
25995	Update the manual for variable suppression concepts
25996	* doc/manuals/libabigail-concepts.rst: Add a section for variable
25997	suppression specification in the concepts part of the manual.
25998
259992014-11-01  Dodji Seketeli <dodji@redhat.com>
26000
26001	Fix some restructured text doc glitches in the fn suppression manual
26002	* doc/manuals/libabigail-concepts.rst: Fix quoting of the syntax
26003	of parameter specification string, for the function suppression
26004	concepts.
26005
260062014-11-01  Dodji Seketeli <dodji@redhat.com>
26007
26008	Cleanup the mainpage of the API doc
26009	* include/abg-fwd.h: Cleanup text of the API doc mainpage.
26010
260112014-11-01  Dodji Seketeli <dodji@redhat.com>
26012
26013	Make get_binary_load_address static
26014	* src/abg-dwarf-reader.cc (get_binary_load_address): Make this
26015	function static.
26016
260172014-11-01  Dodji Seketeli <dodji@redhat.com>
26018
26019	Initial support for variable suppressions
26020	* include/abg-comparison.h (variable_suppression_sptr)
26021	(variable_suppressions_type): New convenience typedefs.
26022	(class variable_suppression): Declare new type.
26023	* src/abg-comparison.cc (is_var_diff): New predicate.
26024	(read_variable_suppression): Define new static function.
26025	(class variable_suppression::priv): Define type for the private
26026	data of the variable_suppression type.
26027	(variable_suppression::{variable_suppression,
26028	~variable_suppression, get_name, set_name, get_name_regex_str,
26029	set_name_regex_str, get_symbol_name, set_symbol_name,
26030	get_symbol_name_regex_str, set_symbol_name_regex_str,
26031	get_symbol_version, set_symbol_version,
26032	get_symbol_version_regex_str, set_symbol_version_regex_str,
26033	get_type_name, set_type_name, get_type_name_regex_str,
26034	set_type_name_regex_str, suppresses_diff}): Define new member
26035	functions for the variable_suppression type.
26036	* tests/data/test-diff-suppr/libtest7-var-suppr-v0.so: Add new
26037	test input.
26038	* tests/data/test-diff-suppr/libtest7-var-suppr-v1.so: Likewise.
26039	* tests/data/test-diff-suppr/test7-var-suppr-1.suppr: Likewise.
26040	* tests/data/test-diff-suppr/test7-var-suppr-2.suppr: Likewise.
26041	* tests/data/test-diff-suppr/test7-var-suppr-3.suppr: Likewise.
26042	* tests/data/test-diff-suppr/test7-var-suppr-4.suppr: Likewise.
26043	* tests/data/test-diff-suppr/test7-var-suppr-5.suppr: Likewise.
26044	* tests/data/test-diff-suppr/test7-var-suppr-6.suppr: Likewise.
26045	* tests/data/test-diff-suppr/test7-var-suppr-7.suppr: Likewise.
26046	* tests/data/test-diff-suppr/test7-var-suppr-8.suppr: Likewise.
26047	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
26048	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
26049	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
26050	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
26051	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
26052	* tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise.
26053	* tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise.
26054	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
26055	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt:
26056	Likewise.
26057	* tests/data/test-diff-suppr/test7-var-suppr-version-script: Likewise.
26058	* tests/data/test-diff-suppr/test7-var-suppr-v0.cc: Source code
26059	for the librairie above.
26060	* tests/data/test-diff-suppr/test7-var-suppr-v1.cc: Source code
26061	for the librairie above.
26062	* tests/Makefile.am: Add the new test input data to the source
26063	distribution.
26064	* tests/test-diff-suppr.cc: Update to make this harness to run
26065	over the new test input above.
26066
260672014-11-01  Dodji Seketeli <dodji@redhat.com>
26068
26069	Update the suppr-doc.txt file for variable suppressions
26070	* doc/suppr-doc.txt: Add the suppress_variable section example.
26071
260722014-11-01  Dodji Seketeli <dodji@redhat.com>
26073
26074	Make var_diff and function_decl_diff extend decl_diff_base
26075	* include/abg-comparison.h (class var_diff, class
26076	function_decl_diff): Make these types inherit the decl_diff_base
26077	class.  This is like the fact that all kinds of diff inherit the
26078	type_diff_base class.
26079	* src/abg-comparison.cc (var_diff::var_diff)
26080	(function_decl_diff::function_decl_diff): Adjust to initialize the
26081	sub-object of decl_diff_base;
26082	(is_decl_diff): New predicate to know if a diff is about decls.
26083	(is_function_decl): New predicate to know if a diff is about
26084	function decls.
26085	(function_suppression::suppresses_diff): Adjust to use the new
26086	is_function_decl.
26087
260882014-11-01  Dodji Seketeli <dodji@redhat.com>
26089
26090	Fix logic of type suppression evaluation
26091	* include/abg-comparison.cc (type_suppression::suppresses_diff):
26092	Try to evaluate the "type_name_regexp" property only if the
26093	"type_name" is empty.
26094
260952014-11-01  Dodji Seketeli <dodji@redhat.com>
26096
26097	Remove useless functions from the comparison engine
26098	* include/abg-comparison.h (read_type_suppression): Remove this
26099	function declaration.
26100	* src/abg-comparison.cc (read_type_suppressions): Remove this
26101	static function definition.
26102	(read_function_suppressions): Remove this static function
26103	declaration.
26104
261052014-11-01  Dodji Seketeli <dodji@redhat.com>
26106
26107	Spit and polish variables presentation in diff report
26108	* src/abg-comparison.cc (corpus_diff::report): Show the full
26109	representation of the variable, rather than just its name.  Also,
26110	show the new representation of the variable only if it has
26111	changed.
26112	* tests/data/test-diff-dwarf/test9-report.txt: Adjust test.
26113	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
26114	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.
26115
261162014-11-01  Dodji Seketeli <dodji@redhat.com>
26117
26118	Fix various apidoc typos
26119	* include/abg-comparison.h (class function_suppression): Fix typo
26120	in the doc string.
26121	* src/abg-comparison.cc (is_type_diff, read_suppressions)
26122	(diff::reported_once, typedef_diff::report): Fix the doc string.
26123
261242014-11-01  Dodji Seketeli <dodji@redhat.com>
26125
26126	Fix regexp escaping section of manual
26127	* doc/manuals/libabigail-concepts.rst: Re-indent and fix some
26128	typos in the regexp escaping section of the manual.
26129
261302014-11-01  Dodji Seketeli <dodji@redhat.com>
26131
26132	Doxygen shouldn't extract doc for static functions or private types
26133	* doc/api/libabigail.doxy: Do not extract doc for static
26134	functions, local classes.
26135
261362014-11-01  Dodji Seketeli <dodji@redhat.com>
26137
26138	Update .gitignore
26139	* .gitignore: Ignore *~ emacs files.
26140
261412014-10-29  Dodji Seketeli <dodji@redhat.com>
26142
26143	Separate alias targets with a comma
26144	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Separate
26145	alias targets by a comma.
26146	* tests/data/test-diff-dwarf/test18-alias-sym-v1.cc: Update test
26147	to add more than one alias to a given symbol.
26148
261492014-10-28  Dodji Seketeli <dodji@redhat.com>
26150
26151	Fix a typo in the manual about function suppressions
26152	* doc/manuals/libabigail-concepts.rst: Fix a typo.
26153
261542014-10-28  Dodji Seketeli <dodji@redhat.com>
26155
26156	Initial support for function suppressions
26157	* include/abg-comparison.h (enum visiting_kind): Change the
26158	meaning of this.  It was to determine if traversal was to be done
26159	in a pre or post manner.  But with the recent addition of
26160	diff_node_visitor::visit_{begin,end}() notifiers, the pre/post
26161	handling is taken care of in a different way.  So now the meaning
26162	of this enum is changed to handle whether diff node children
26163	should be visited or not.  So the enumerators are now
26164	DEFAULT_VISITING_KIND, and SKIP_CHILDREN_VISITING_KIND.  And it's
26165	a bit-field.
26166	(operator{&,~}): Declare more bit manipulation operators for the
26167	enum visiting_kind.
26168	(function_suppression_sptr, function_suppressions_type): New
26169	typedefs.
26170	(function_suppression, function_suppression::parameter_spec):
26171	Declare new types.
26172	(read_function_suppressions): Declare new function.
26173	(diff_node_visitor::diff_node_visitor): Adjust for the enum
26174	visiting_kind change.  Value-initialize the visiting_kind_ data
26175	member.
26176	* src/abg-comparison.cc (operator{&,~}): Define these operators
26177	for enum visiting_kind.
26178	(read_type_suppressions): Forward declare this static function.
26179	(read_function_suppression, read_parameter_spec_from_string):
26180	Define new static functions.
26181	(read_suppressions): Update to read function suppressions too,
26182	using the new read_function_suppression function above.
26183	(class function_suppression::parameter_spec::priv): Define new
26184	type.
26185	(function_suppression::parameter_spec::*): Define the member
26186	functions of the new function_suppression::parameter_spec type.
26187	(class function_suppression::priv): Define new type.
26188	(function_suppression::*): Define the member functions of the new
26189	function_suppression type.
26190	(diff::traverse): There is no more {PRE,POST}_VISITING_KIND
26191	enumerator.  So nuke the code that was dealing with it.
26192	(redundancy_marking_visitor::skip_children_nodes_): New data
26193	member flag.
26194	(redundancy_marking_visitor::visit_begin): If the current diff
26195	node is not be reported (is filtered out), do not bother visit its
26196	children nodes for the purpose of marking redundant nodes.  So use
26197	the new skip_children_nodes_ flag above to know we are in that case.
26198	(redundancy_marking_visitor::visit_end): Unset the new
26199	skip_children_nodes_ flag above when appropriate.
26200	* include/abg-fwd.h (is_function_decl): Declare new function.
26201	* include/abg-ir.h
26202	(function_type::get_parm_at_index_from_first_non_implicit_parm):
26203	Declare new member function.
26204	* src/abg-ir.cc (is_function_decl): Define new function.
26205	(function_type::get_parm_at_index_from_first_non_implicit_parm):
26206	Define new member function.
26207	* src/abg-comp-filter.cc (apply_filter): Adjust for the enum
26208	visiting_kind change.  No need to set it for filters anymore
26209	* doc/suppr-doc.txt: Update examples of function suppression.
26210	* doc/manuals/libabigail-concepts.rst: Update the manual for the
26211	function suppression addition.
26212	* tests/data/test-diff-suppr/libtest5-fn-suppr-v0.so: New test input.
26213	* tests/data/test-diff-suppr/libtest5-fn-suppr-v1.so: New test input.
26214	* tests/data/test-diff-suppr/libtest6-fn-suppr-v0.so: New test input.
26215	* tests/data/test-diff-suppr/libtest6-fn-suppr-v1.so: New test input.
26216	* tests/data/test-diff-suppr/test5-fn-suppr-0.suppr: New test input.
26217	* tests/data/test-diff-suppr/test5-fn-suppr-1.suppr: New test input.
26218	* tests/data/test-diff-suppr/test5-fn-suppr-2.suppr: New test input.
26219	* tests/data/test-diff-suppr/test5-fn-suppr-3.suppr: New test input.
26220	* tests/data/test-diff-suppr/test5-fn-suppr-4.suppr: New test input.
26221	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: New test input.
26222	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: New test input.
26223	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: New test input.
26224	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: New test input.
26225	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: New test input.
26226	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: New test input.
26227	* tests/data/test-diff-suppr/test5-fn-suppr-v0.cc: Source code for
26228	new test input.
26229	* tests/data/test-diff-suppr/test5-fn-suppr-v1.cc: Source code for
26230	new test input.
26231	* tests/data/test-diff-suppr/test6-fn-suppr-0.suppr: New test input.
26232	* tests/data/test-diff-suppr/test6-fn-suppr-1.suppr: New test input.
26233	* tests/data/test-diff-suppr/test6-fn-suppr-2.suppr: New test input.
26234	* tests/data/test-diff-suppr/test6-fn-suppr-3.suppr: New test input.
26235	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: New test input.
26236	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: New test input.
26237	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: New test input.
26238	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: New test input.
26239	* tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt: New test input.
26240	* tests/data/test-diff-suppr/test6-fn-suppr-v0.cc: Source code for
26241	new test input.
26242	* tests/data/test-diff-suppr/test6-fn-suppr-v1.cc: Source code for
26243	new test input.
26244	* tests/data/test-diff-suppr/test6-fn-suppr-version-script: New
26245	test input.
26246	* tests/Makefile.am: Add the new files above to source
26247	the distribution.
26248	* tests/test-diff-suppr.cc (in_out_specs): Add the test inputs
26249	above to the list of tests to be run by this harness.
26250
262512014-10-28  Dodji Seketeli <dodji@redhat.com>
26252
26253	Add missing virtual destructor in comparison engine code
26254	* include/abg-comparison.h (type_suppression::~type_suppression):
26255	Declare missing virtual destructor.
26256	* src/abg-comparison.cc (type_suppression::~type_suppression):
26257	Define missing virtual destructor.
26258
262592014-10-27  Dodji Seketeli <dodji@redhat.com>
26260
26261	Pimplify abigail::ir::function_type
26262	* include/abg-ir.h (function_type::priv_): Declare new data
26263	member.
26264	(function_type::<all the methods>): Move the inline methods out of
26265	line in src/abg-ir.cc.
26266	(function_type::{return_type_, parms_}): Move these ...
26267	* src/abg-ir.cc (function_type::priv::{return_type_, parms_}):
26268	... Here.
26269	(struct function_type::priv): New type for the private data of
26270	function_type.
26271	(function_type::<all the methods>): Move the previously inline
26272	methods of function_type here.  Adjust them to tap into priv_->*
26273	to get the private data members.
26274
262752014-10-27  Dodji Seketeli <dodji@redhat.com>
26276
26277	Light style fix
26278	* include/abg-ir.h (function_decl::get_type): Change the return
26279	type from shared_ptr<function_type> to function_type_sptr.
26280
262812014-10-27  Dodji Seketeli <dodji@redhat.com>
26282
26283	Allow white spaces in ini file property values
26284	* src/abg-ini.cc (read_context::char_is_property_value_char): New
26285	member function.
26286	(read_context::read_next_char): Fix typos.  Allow escaping of '['
26287	and ']'.
26288	(read_context::read_property_value): Use the new
26289	read_context::char_is_property_value_char above.
26290
262912014-10-27  Dodji Seketeli <dodji@redhat.com>
26292
26293	Fix typo in suppression specification manual
26294	* doc/manuals/libabigail-concepts.rst: Fix name -> name_regexp.
26295
262962014-10-22  Dodji Seketeli <dodji@redhat.com>
26297
26298	Support comparing symbols not referenced by debug info
26299	* doc/manuals/abidiff.rst: Adjust intro to mention that w/o debug
26300	info, abidiff now works but just report about added/removed
26301	symbols.  Add documentation about the new
26302	--no-unreferenced-symbols option.
26303	* include/abg-comparison.h (string_elf_symbol_map): New typedef.
26304	(diff_context::show_symbols_unreferenced_by_debug_info): Declare
26305	new accessors.
26306	* src/abg-comparison.cc
26307	(diff_context::priv::show_syms_unreferenced_by_di_): New data
26308	member.
26309	(diff_context::priv::priv): Adjust.
26310	(diff_context::show_symbols_unreferenced_by_debug_info): Implement
26311	these accessors.
26312	(corpus_diff::priv::{unrefed_fn_syms_edit_script_,
26313	unrefed_var_syms_edit_script_, added_unrefed_fn_syms_,
26314	deleted_unrefed_fn_syms_, added_unrefed_var_syms_,
26315	deleted_unrefed_var_syms_}): New data members.
26316	(corpus_diff::priv::diff_stats::{num_func_syms_removed,
26317	num_func_syms_added, num_var_syms_removed, num_var_syms_added}):
26318	New data members.
26319	(corpus_diff::priv::diff_stats::diff_stats): Adjust.
26320	(corpus_diff::ensure_lookup_tables_populated): Populate lookup
26321	tables for added/removed symbols that are not referenced by any
26322	debug info.
26323	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Compute
26324	stats for the added/removed symbols not referenced by any debug
26325	info.
26326	(corpus_diff::priv::emit_diff_stats): Emit stats about
26327	added/removed symbols that are not referenced by any debug info.
26328	(corpus_diff::length): Adjust to take in account added/removed
26329	symbols not referenced by any debug info.
26330	(show_linkage_name_and_aliases): New static function.
26331	(corpus_diff::report): When emitting a symbol name, emit its
26332	version too, and tell if it aliases other symbols.  Avoid emitted
26333	extra new lines.  Report added/removed symbols not referenced by
26334	any debug info.
26335	(compute_diff): In the overload for corpus_sptr, compute the diffs
26336	for symbols not referenced by debug info.
26337	* include/abg-corpus.h
26338	(corpus::get_unreferenced_{function,variable}_symbols): Declare
26339	new member functions.
26340	* src/abg-corpus.cc (corpus_priv::{unrefed_fun_symbols,
26341	unrefed_var_symbols}): New data members.
26342	(corpus_priv::build_unreferenced_symbols_tables): Define new
26343	member function.
26344	(struct comp_elf_symbols_functor): New functor.
26345	(corpus::is_empty): Adjust to take in account added/removed
26346	symbols not referenced by debug info.
26347	(corpus::{get_unreferenced_function_symbols,
26348	corpus::get_unreferenced_variable_symbols}): Define these
26349	accessors.
26350	* include/abg-dwarf-reader.h (enum status): Transform this into
26351	bitfields.  Add a STATUS_UNKNOWN value that has the value 0.
26352	(operator|(status, status), operator&(status, status))
26353	(operator|=(status&, status), operator&=(status, status)): New
26354	bit-wise operators to manipulate instances of the status bit-field.
26355	* src/abg-dwarf-reader.cc (get_version_for_symbol): Fix this to
26356	avoid returning garbage version sometimes.
26357	(read_debug_info_into_corpus): Fix this to return a non-null but
26358	empty corpus_sptr when there is no debug info available.
26359	(operator|(status, status), operator&(status, status))
26360	(operator|=(status&, status), operator&=(status, status)): Define
26361	these new bitwise operators to manipulate instances of the status
26362	bit-field.
26363	(read_corpus_from_elf): Now that the abigail::dwarf_reader::status
26364	is a bit-field, set it to reflect if debug info and/or symbol
26365	tables have been found.  Do not bail out if debug info hasn't been
26366	found.  Rather, keep going, and go look for symbols-only; this is
26367	a kind of operating in degraded mode.
26368	* include/abg-ir.h (elf_symbol::get_aliases_id_string): Add a flag
26369	that says if the current instance of elf_symbol should be included
26370	in the list of aliases or not.
26371	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Define it.
26372	* tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.o: New test
26373	input.
26374	* tools/abidiff.cc
26375	(options::show_symbols_not_referenced_by_debug_info): New data
26376	member.
26377	(options:options): Adjust.
26378	(display_usage): Add an info string for the new
26379	--no-unreferenced-symbols command line option.
26380	(parse_command_line): Parse the new --no-unreferenced-symbols
26381	command line.
26382	(set_diff_context_from_opts): Set the diff_context according to
26383	the presence of --no-unreferenced-symbols.
26384	(main): Adjust for the fact that abigail::dwarf_reader::status is
26385	now a bit-field.
26386	* tools/abilint.cc (main): Adjust for the fact that
26387	abigail::dwarf_reader::status is now a bit-field..
26388	():
26389	* tests/data/test-diff-dwarf/test16-syms-only-report.txt: New test
26390	reference output.
26391	* tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.cc: Source code
26392	for new test input.
26393	* tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.o: New
26394	test input.
26395	* tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.cc: New
26396	source code for test input.
26397	* tests/data/test-diff-dwarf/libtest18-alias-sym-v{0,1}.so: New
26398	test input.
26399	* tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt:
26400	Reference output for new test input.
26401	* tests/data/test-diff-dwarf/test18-alias-sym-v{0,1}.cc: Source
26402	code for new test input.
26403	* tests/data/test-diff-dwarf/test18-alias-sym-version-script:
26404	Source code for new test input.
26405	* tests/Makefile.am: Add the new test materials to the source
26406	distribution.
26407	* tests/test-diff-dwarf.cc(in_out_specs): Add the new input tests
26408	above to the array of tests to run by this harness.
26409	(main): Emit empty reports for empty resulting diffs.
26410	* tests/data/test-diff-dwarf/test{0,8,9,12,14-inline-report,}-report.txt:
26411	Adjust.
26412	* tests/data/test-diff-filter/test{0,01,2,4,5,7,8,9,10,12,13,15-0,15-1}-report.txt:
26413	Likewise.
26414	* tests/data/test-diff-filter/test{19-enum,20-inline,}-report-0.txt:
26415	Likewise.
26416	* tests/data/test-diff-suppr/test0-type-suppr-report-{1,2}.txt:
26417	Likewise.
26418	* tests/data/test-diff-suppr/test{1,2}-typedef-suppr-report-1.txt:
26419	Likewise.
26420
264212014-10-22  Dodji Seketeli <dodji@redhat.com>
26422
26423	Allow comparison of shared_ptr of things
26424	* include/abg-diff-utils.h: Adjust copyright years.
26425	(deep_ptr_eq_functor::operator()(const shared_ptr<T>, const
26426	shared_ptr<T>)): New comparison operator.
26427
264282014-10-17  Dodji Seketeli <dodji@redhat.com>
26429
26430	Use the "standard" equality operator when comparing variables
26431	* src/abg-comparison.cc (compute_diff): In the overload for
26432	corpus_sptr, use the diff_utils::deep_ptr_eq_functor that is used
26433	to compare functions too, rather than the ad-hoc early struct
26434	var_eq_type we were using until now.
26435
264362014-10-16  Dodji Seketeli <dodji@redhat.com>
26437
26438	Yet another fix to the DWARF method "static-ness" detection heuristic
26439	* include/abg-fwd.h (is_pointer, is_qualified_type): Declare new
26440	functions.
26441	* src/abg-ir.cc (is_pointer, is_qualified_type): Implement these
26442	new functions.
26443	* src/abg-dwarf-reader.cc (finish_member_function_reading):
26444	Sometimes, the this pointer of a non-static method can point to a
26445	*qualified* version of its containing type.  I am seeing that when
26446	comparing libstdc++.so from RHEL 6.5 and RHEL 7.  Take that in
26447	account when trying to detect that the first parameter of a member
26448	function is the this pointer, and thus detect that the function is
26449	a non static member function.
26450	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
26451	New test input.
26452	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so: New
26453	test input.
26454	* tests/data/test-read-dwarf/test8-qualified-this-pointer.cc:
26455	Source code of new test input.
26456	* tests/test-read-dwarf.cc: Update copyright year.
26457	(in_out_spec): Add the new test inputs to this array, so that this
26458	test harness runs on them.
26459	* tests/Makefile.am: Add the new test inputs to the source
26460	distribution.
26461
264622014-10-16  Dodji Seketeli <dodji@redhat.com>
26463
26464	Avoid infinite loops in the comparison code for classes
26465	* src/abg-ir.cc (equals): In the overload for classes, make sure
26466	to store the name of the lhs of the class and the rhs into the
26467	lhs.  Also, when we bail out because we detect that there is a
26468	comparison underway, do *not* unmark the current class as not being
26469	involved in the comparison.  Also, break at the first lhs virtual
26470	member function that is different from the rhs counter part.
26471
264722014-10-15  Dodji Seketeli <dodji@redhat.com>
26473
26474	Update the manual for the suppression specification initial work
26475	* doc/manuals/abidiff.rst: Add documentation for the new
26476	--suppressions command line switch.
26477	(--harmless, --harmful): Refer to the new "concepts" section
26478	below, where harmful/harmless concepts are now explained.
26479	(Notes): Move the content of the notes section where
26480	harmful/harmless concepts were explained, to the newly created
26481	'Concepts' section.
26482	* doc/manuals/index.rst: Limit the depth of the table of content
26483	to 2.  Add the new libabigail-concepts.rst stuff in here.  Adjust
26484	for the renaming of tools.rst to libabigail-tools.rst.
26485	* doc/manuals/libabigail-concepts.rst: New file.
26486
264872014-10-13  Dodji Seketeli <dodji@redhat.com>
26488
26489	Properly propagate {REDUNDANT, SUPPRESSED}_CATEGORY wrt local changes
26490	* src/abg-comparison.cc
26491	(suppression_categorization_visitor::visit_end): If a diff node
26492	carries local changes, then, even if all of its children node have
26493	been suppressed, this diff node shall not be categorized as
26494	suppressed by way of propagation.
26495	(redundancy_marking_visitor::visit_end): If a diff node carries
26496	local changes, then, even if all of its children nodes are
26497	redundant, this diff node shall not be categorized as being
26498	redundant by way of propagation.
26499	* tests/data/test-diff-suppr/libtest4-local-suppr-v{0,1}.so: New test
26500	inputs.
26501	* tests/data/test-diff-suppr/test4-local-suppr-0.suppr: Likewise.
26502	* tests/data/test-diff-suppr/test4-local-suppr-report-{0,1}.txt:
26503	Likewise.
26504	* tests/data/test-diff-suppr/test4-local-suppr-v{0,1}.{c,h}:
26505	Source code of the new tests inputs.
26506	* tests/Makefile.am: Add the new test material to the source
26507	distribution.
26508	* tests/test-diff-suppr.cc (in_out_spec): Run this test harness
26509	over the new test input above.
26510
265112014-10-13  Dodji Seketeli <dodji@redhat.com>
26512
26513	Gain ability know if a diff node has local changes
26514	* include/abg-comparison.h (diff::has_local_changes): Add new pure
26515	interface.
26516	({decl_diff_base, type_diff_base, distinct_type_diff, var_diff,
26517	pointer_diff, reference_diff, array_diff, qualified_type_diff,
26518	enum_diff, class_diff, base_diff, scope_diff, function_decl_diff,
26519	type_decl_diff, typedef_diff,
26520	translation_unit_diff}::has_local_changes): Declare the
26521	implementation of the pure interface above.
26522	* src/abg-comparison.cc ({decl_diff_base, type_diff_base,
26523	distinct_type_diff, var_diff, pointer_diff, reference_diff,
26524	array_diff, qualified_type_diff, enum_diff, class_diff, base_diff,
26525	scope_diff, function_decl_diff, type_decl_diff, typedef_diff,
26526	translation_unit_diff}::has_local_changes): Define the
26527	implementation of the pure interface above.
26528
265292014-10-13  Dodji Seketeli <dodji@redhat.com>
26530
26531	Write comparison functions that hint at the kind of changes they see
26532	* include/abg-ir.h (enum change_kind): Declare new enum.
26533	(operator|(change_kind, change_kind), operator&(change_kind,
26534	change_kind), operator|=(change_kind&, change_kind)): Declare new bit-wise
26535	operators for the new enum change_kind.
26536	(equals): Declare this new comparison function for decl_base,
26537	scope_decl, type_base, type_decl, scope_type_decl,
26538	qualified_type_def, pointer_type_def, reference_type_def,
26539	array_type_def, enum_type_decl, typedef_decl, var_decl,
26540	function_decl, function_type, class_decl, and
26541	class_decl::base_spec.
26542	(class_decl::base_spec::operator(const decl_base&)): Declare new
26543	equality operator.
26544	* src/abg-ir.cc (operator|(change_kind l, change_kind r))
26545	(operator&(change_kind l, change_kind r), operator|=(change_kind&
26546	l, change_kind r), operator&=(change_kind& l, change_kind r)):
26547	Define these new operators.
26548	(equals): Define this new comparison function for decl_base,
26549	scope_decl, type_base, type_decl, scope_type_decl,
26550	qualified_type_def, pointer_type_def, reference_type_def,
26551	array_type_def, enum_type_decl, typedef_decl, var_decl,
26552	function_decl, function_type, class_decl, and
26553	class_decl::base_spec.
26554	({decl_base, scope_decl, type_base, type_decl, scope_type_decl,
26555	qualified_type_def, pointer_type_def, reference_type_def,
26556	array_type_def, enum_type_decl, typedef_decl, var_decl,
26557	function_decl, function_type, class_decl,
26558	class_decl::base_spec}::operator==): Re-write these comparison
26559	operators in terms of their relevant equal() functions.
26560
265612014-09-22  Dodji Seketeli <dodji@redhat.com>
26562
26563	Fix struct type kind suppression support
26564	* src/abg-comparison.cc (type_suppression::suppresses_diff): Do
26565	not crash on diff nodes that are not about struct/classes, when
26566	"type_kind = struct" has been specified.
26567	* tests/data/test-diff-suppr/test2-struct-suppr-{0,1}.suppr: New test input.
26568	* tests/data/test-diff-suppr/test2-struct-suppr-report-{0,1}.txt:
26569	Likewise.
26570	* tests/data/test-diff-suppr/test2-struct-suppr-v{0,1}.o: Likewise
26571	* tests/data/test-diff-suppr/test2-struct-suppr-v{1,0}.cc: Source code
26572	for binary test input.
26573	* tests/test-diff-suppr.cc (in_out_spec): Run this harness on the
26574	new test input above.
26575	* tests/Makefile.am: Add the new test input files to source
26576	distribution.
26577
265782014-09-22  Dodji Seketeli <dodji@redhat.com>
26579
26580	Replace is_typedef by type_kind property in type suppressions
26581	* doc/suppr-doc.txt: Add type_kind property "documentation" in the
26582	type suppression.
26583	* include/abg-comparison.h (type_suppression::type_kind): New
26584	enum.
26585	(type_suppression::{get_consider_typedefness,
26586	set_consider_typedefness, get_is_typedef, set_is_typedef}):
26587	Remove.
26588	(type_suppression::{get_consider_type_kind,
26589	set_consider_type_kind, get_type_kind, set_type_kind}): Declare
26590	new methods.
26591	* Include/abg-fwd.h (is_type_decl): Declare new function.
26592	(is_enum): Declare new overload that takes a type_base_sptr.
26593	* src/abg-comparison.cc
26594	(type_suppression::priv::{consider_typedefness_, is_typedef_}):
26595	Remove these data members.
26596	(type_suppression::priv::{consider_type_kind_, type_kind_}): New
26597	data members.
26598	(type_suppression::priv::priv): Adjust.
26599	(type_suppression::{get_consider_typedefness,
26600	set_consider_typedefness, get_is_typedef, set_is_typedef}): Remove
26601	these member functions.
26602	(type_suppression::{get_consider_type_kind,
26603	set_consider_type_kind, get_type_kind, set_type_kind}): Define
26604	these new member functions.
26605	(type_suppression::suppresses_diff): Adjust to consider the kind
26606	of types more generally than just considering typedef-ness.
26607	(read_type_kind_string): New static function.
26608	(read_type_suppression): Use the above to parse the value of the
26609	new type_kind property.  Adjust the creation of the resulting
26610	type_suppression object.
26611	* src/abg-ir.cc (is_type_decl): Define new function.
26612	* tests/data/test-diff-suppr/test1-typedef-suppr-0.suppr: Adjust.
26613	* tests/data/test-diff-suppr/test1-typedef-suppr-1.suppr: Adjust.
26614
266152014-09-19  Dodji Seketeli <dodji@redhat.com>
26616
26617	Initial support for type suppressions
26618	* include/abg-comparison.h (diff_category::SUPPRESSED_CATEGORY):
26619	New enumerator.
26620	(diff_category::{SIZE_OR_OFFSET_CHANGE_CATEGORY,
26621	VIRTUAL_MEMBER_CHANGE_CATEGORY): Update the enumerator values for
26622	these.
26623	(diff::EVERYTHING_CATEGORY): Adjust.
26624	(suppression_base, type_suppression): Declare new types.
26625	(suppression_ptr, suppressions_type, type_suppression_sptr)
26626	(type_suppressions_type): New typedefs.
26627	(read_type_suppressions, read_suppressions): Declare new
26628	functions.
26629	(diff_context::{suppressions, add_suppression, add_suppressions}):
26630	Declare new methods.
26631	(diff::is_suppressed): Declare new member function.
26632	(apply_suppressions): Declare new function & overloads.
26633	* src/abg-comparison.cc (is_type_diff): Define new static
26634	function.
26635	({suppression_base, type_suppression}::priv): Define new types.
26636	({suppression_base, type_suppression}::*): Define the methods of the new
26637	suppression_base, type_suppressions types.
26638	(read_type_suppression, read_type_suppressions, read_suppressions)
26639	(read_type_suppressions): Define new static functions.
26640	(diff_context::priv::supprssions_): New data member.
26641	(diff_context::{suppressions, add_suppression, add_suppressions}):
26642	New methods.
26643	(diff::is_filtered_out): Consider that a diff node that is in the
26644	SUPPRESSED_CATEGORY is filtered out.
26645	(diff::is_suppressed): Define new member function.
26646	(operator<<(ostream& o, diff_category c)): Support the
26647	SUPPRESSED_CATEGORY category.
26648	(corpus_diff::report): Apply suppressions before reporting
26649	anything.
26650	(category_propagation_visitor::visit_end): Do not propagate
26651	SUPPRESSED_CATEGORY.  This is just like what we do for
26652	REDUNDANT_CATEGORY.
26653	(struct suppression_categorization_visitor): New visitor.
26654	(apply_suppressions): Define function & overloads.
26655	* include/abg-ini.h (config::section::find_property): New method.
26656	(config::section): Fix end of class comment.
26657	* src/abg-ini.cc (config::section::find_property): Define new
26658	method.
26659	* tests/data/test-diff-suppr/test0-type-suppr-{0,1,2}.suppr: New
26660	test input files.
26661	* tests/data/test-diff-suppr/test0-type-suppr-report-{0,1,2,3}.txt:
26662	Likewise.
26663	* tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.o: Likewise.
26664	* tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.cc: Source code
26665	for new test input.
26666	* tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.o: New test
26667	input files.
26668	* tests/data/test-diff-suppr/test1-typedef-suppr.h: Source code
26669	for new test input files.
26670	* tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.c: Likewise
26671	* tests/data/test-diff-suppr/test1-typedef-suppr-{0,1}.suppr: New
26672	test input files.
26673	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
26674	* tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise.
26675	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
26676	* tests/test-diff-suppr.cc: New test harness to run type suppression tests
26677	using the input files above.
26678	* tests/data/test-diff-suppr/test3-struct-suppr-0.suppr: New test input.
26679	* tests/data/test-diff-suppr/test3-struct-suppr-1.suppr: Likewise.
26680	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
26681	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
26682	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
26683	* tests/data/test-diff-suppr/test3-struct-suppr-v0.cc: Likewise.
26684	* tests/data/test-diff-suppr/test3-struct-suppr-v0.o: Likewise.
26685	* tests/data/test-diff-suppr/test3-struct-suppr-v1.cc: Likewise.
26686	* tests/data/test-diff-suppr/test3-struct-suppr-v1.o: Likewise.
26687	* tests/Makefile.am: Build the new runtestdiffsuppr test harness
26688	from the test-diff-filter.cc file.  Add the new test files to the
26689	build system and source distribution.
26690	* tools/bidiff.cc (options::suppressions): New data member.
26691	(display_usage): Add a help string for the new
26692	--suppressions command line switch.
26693	(parse_command_line): Parse the --suppressions command line
26694	switch.
26695	(set_diff_context_from_opts): Read the suppressions provided by
26696	the --suppression command line switch and stuff them into the diff
26697	context.
26698
266992014-09-19  Dodji Seketeli <dodji@redhat.com>
26700
26701	Make all type diff types extend new type_diff_base type
26702	* include/abg-comparison.h (type_diff_base, decl_diff_base): New
26703	types.
26704	(type_diff_base_sptr): New typedef.
26705	(pointer_diff, reference_diff, array_diff, qualified_type_diff)
26706	(enum_diff, class_diff, type_decl_diff, typedef_diff): Make this
26707	extend the new type_diff_base.
26708	* src/abg-comparison.cc (type_diff_base::priv, type_diff_base):
26709	Define these new types and their methods.
26710	(pointer_diff::pointer_diff, array_diff::array_diff)
26711	(reference_diff::reference_diff)
26712	(qualified_type_diff::qualified_type_diff, enum_diff::enum_diff)
26713	(class_diff::class_diff, type_decl_diff::type_decl_diff)
26714	(typedef_diff::typedef_diff): Adjust.
26715
267162014-09-18  Dodji Seketeli <dodji@redhat.com>
26717
26718	Rename abigail::ini::config::section_vector to sections_type
26719	* include/abg-ini.h (abigail::ini::config::sections_type): Renamed
26720	section_vector into this.
26721	(config::{get_sections, set_sections, read_sections,
26722	write_sections}): Adjust.
26723	* src/abg-ini.cc (config::priv::sections_): Adjust.
26724	(config::priv::priv): Likewise.
26725	(config::{config, get_sections}): Likewise.
26726	(read_sections, read_config, write_sections): Likewise.
26727
267282014-09-08  Dodji Seketeli <dodji@redhat.com>
26729
26730	Implement the abigail::ini::config abstraction
26731	* include/abg-ini.h (config::config): Add an overload that take a
26732	path and sections.
26733	(config::{get,set}_sections): New accessors.
26734	(read_sections): Rename the previous read_config() functions into
26735	these.
26736	(read_config): Add these function declarations to really act on
26737	instances of abigail::ini::config.
26738	(write_section): Rename the previous write_config functions into
26739	these.
26740	(write_config): Add these function declarations to really act on
26741	instances of abigail::ini::config.
26742	* src/abg-ini.cc (class config::priv): Implement this.
26743	(config::{config, ~config, get_path, set_path, get_sections,
26744	set_sections}): Define these new methods.
26745	(read_sections): Rename the former read_config into this.
26746	(read_config): Add this function definitions to really act on
26747	instances of abigail::ini::config.
26748	(write_sections): Rename the former write_config into this.
26749	(write_config):: Add this function definitions to really act on
26750	instances of abigail::ini::config.
26751	* tools/binilint.cc (main): Adjust.
26752
267532014-09-05  Dodji Seketeli <dodji@redhat.com>
26754
26755	Initial support of ini-style file parsing
26756	* include/abg-ini.h: New file.
26757	* include/Makefile.am: Add include/abg-ini.h to the source
26758	distribution.
26759	* src/abg-ini.cc: New file.
26760	* src/Makefile.am: Add src/abg-ini.cc to the source distribution.
26761	* tools/binilint.cc: New testing tool.
26762	* tools/Makefile.am: Add tools/binilint.cc to the source distribution.
26763
267642014-09-03  Dodji Seketeli <dodji@redhat.com>
26765
26766	Initial examples of suppression list specifications
26767	* doc/suppr-doc.txt: New file.
26768
267692014-10-11  Dodji Seketeli <dodji@redhat.com>
26770
26771	Put IR artifacts in the abigail::ir namespace
26772	* include/abg-fwd.h: Wrap IR artifacts into abigail::ir namespace.
26773	Inject that new abigail::ir namespace into the abigail namespace.
26774	* include/abg-ir.h: Wrap IR artifacts into abigail::ir namespace.
26775	(function_decl::parameter::get_type_name): Adjust the call to
26776	abigail::get_type_name.  It's now a call to
26777	abigail::ir::get_type_name.
26778	* src/abg-ir.cc: Wrap IR artifacts into abigail::ir namespace.
26779	* include/abg-traverse.h: Wrap the ir traversing artifact into the
26780	abigail::ir namespace too.
26781	* src/abg-traverse.cc: Adjust.
26782	* include/abg-corpus.h: Wrap corpus type stuff into abigail::ir.
26783	* include/abg-dwarf-reader.h: Inject namespace abigail::ir stuff
26784	into the abigail::dwarf_reader namespace.
26785	* include/abg-reader.h: Inject namespace abigail::ir stuff into
26786	the abigail::xml_reader namespace.
26787	* src/abg-reader.cc: Adjust.
26788	* include/abg-writer.h: Inject namespace abigail::ir stuff into
26789	the abigail::xml_writer namespace.
26790	* src/abg-writer.cc: Inject namespace abigail::ir stuff into
26791	abigail namespace here too.
26792	* src/abg-hash.cc: Inject the abigail::ir namespace into the
26793	abigail namespace.
26794	* tools/abg-tools-utils.cc: Adjust for the injection of
26795	abigail::function_decl. It's now abigail::ir::function_decl.
26796
267972014-10-13  Dodji Seketeli <dodji@redhat.com>
26798
26799	Misc style cleanups
26800	* src/abg-comparison.cc: ({pointer_diff, reference_diff}::length):
26801	Add some vertical spaces here.
26802
268032014-10-13  Dodji Seketeli <dodji@redhat.com>
26804
26805	constify dm_context_rel::operator==
26806	* include/abg-ir.h (dm_context_rel::operator==): Make this const.
26807
268082014-10-13  Dodji Seketeli <dodji@redhat.com>
26809
26810	A distinct_diff node has no children node
26811	* src/abg-comparison.cc (distinct_diff::chain_into_hierarchy): Do
26812	not append any children node here.
26813
268142014-10-13  Dodji Seketeli <dodji@redhat.com>
26815
26816	Remove useless redundant_filter
26817	* include/abg-comp-filter.h (class redundant_filter): Remove this
26818	now useless type declaration
26819	* src/abg-comparison.cc (filtering::redundant_filter::visit):
26820	Remove this useless member function definition.
26821
268222014-10-10  Dodji Seketeli <dodji@redhat.com>
26823
26824	Sort diff reports about function parameters by their indexes
26825	* include/abg-comparison.h (changed_parms_type): New convenience
26826	typedef.
26827	* src/abg-comparison.cc (struct changed_parm_comp): New comparison
26828	functor.
26829	(sort_changed_parm_map): New sorting function.
26830	(function_decl_diff::report): Use the new sort_changed_parm_map to
26831	sort the diffs for function parameters by their indexes.
26832
268332014-10-10  Dodji Seketeli <dodji@redhat.com>
26834
26835	Don't be too eager to use distinct_diff
26836	* src/abg-comparison.cc (try_to_diff):  For this to actually
26837	select a diff kind, the two diff subject must be of type
26838	'DiffType'.
26839	(compute_diff_for_types, compute_diff_for_decls): Use
26840	distinct_diff in last resort.
26841
268422014-10-10  Dodji Seketeli <dodji@redhat.com>
26843
26844	Implement generic diff tree walking and port categorization over it
26845	* include/abg-comp-filter.h (apply_filter): Declare new overload
26846	that takes a corpus_diff_sptr ...
26847	* src/abg-comp-filter.cc (apply_filter): ... and define it.  On
26848	the existing overload for diff_sptr, make sure to traverse all
26849	diff nodes, even those that have already been traversed.
26850	* include/abg-comparison.h (enum diff_category): Remove
26851	NOT_REDUNDANT_CATEGORY, add REDUNDANT_CATEGORY.
26852	(operator&=, +operator<<): Declare new operators for enum diff_category.
26853	(diff_context::{forbid_traversing_a_node_twice,
26854	traversing_a_node_twice_is_forbidden):
26855	(diff_context::categorizing_redundancy): Remove this declaration.
26856	(diff_context::maybe_apply_filters): Declare a new overload that
26857	takes a corpus_diff_sptr.  And a take a new flag that says if it
26858	should visit all nodes including those that have already been
26859	visited.
26860	(diff::priv_): Make this data member protected.
26861	(diff::{begin_traversing, is_traversing, end_traversing,
26862	finish_diff_type, children_nodes, append_child_node,
26863	get_pretty_representation, chain_into_hierarchy, traverse}):
26864	Declare new member functions.
26865	(distinct_diff::{finish_diff_type, get_pretty_representation,
26866	chain_into_hierarchy}): Likewise.
26867	(distinct_diff::traverse): Remove.
26868	(pointer_diff::pointer_diff): Take the underlying type diff in
26869	parameter.
26870	(pointer_diff::{finish_diff_type, get_pretty_representation,
26871	chain_into_hierarchy}): Declare new member functions.
26872	(pointer_diff::traverse): Remove.
26873	(reference_type_def::reference_type_def): Take the underlying type
26874	diff in parameter.
26875	({array_type_def, reference_type_def}::{finish_diff_type,
26876	get_pretty_representation, chain_into_hierarchy}): Declare new
26877	member functions.
26878	({array_type_diff, reference_type_def}::traverse): Remove.
26879	(qualified_type_diff::qualified_type_diff): Take the underlying
26880	type diff in parameter.
26881	({enum_diff, qualified_type_diff, class_diff}::{finish_diff_type,
26882	get_pretty_representation, chain_into_hierarchy}): Declare new
26883	member functions.
26884	({enum_diff, qualified_type_diff, class_diff}::traverse): Remove.
26885	(is_class_diff): Declare new function.
26886	(base_diff::base_diff): Take the underlying type diff in
26887	parameter.
26888	({scope_diff, base_diff}::{finish_diff_type, get_pretty_representation,
26889	chain_into_hierarchy}): Declare new member functions.
26890	({scope_diff, base_diff}::traverse): Remove.
26891	(function_decl_diff::function_decl_diff): Take the return type
26892	diff as parameter.
26893	({function_decl_diff, type_decl_diff}::{finish_diff_type,
26894	get_pretty_representation, chain_into_hierarchy}): Declare new
26895	member functions.
26896	({function_decl_diff, type_decl_diff}::traverse): Remove.
26897	(typedef_diff::typedef_diff): Take the underlying type diff as
26898	parameter.
26899	(typedef::{finish_diff_type, get_pretty_representation,
26900	chain_into_hierarchy}): Declare new member functions.
26901	({typedef, translation_unit_diff}::traverse): Remove member
26902	function.
26903	(corpus_diff::{finish_diff_type, children_nodes,
26904	append_child_node, changed_variables, get_pretty_representation,
26905	chain_into_hierarchy}): Declare new member functions.
26906	(class diff_node_visitor::{visit_begin, visit_end}): Declare new
26907	member functions.
26908	(propagate_categories, print_diff_tree, categorizing_redundancy)
26909	(clear_redundancy_categorization, apply_filters): New functions
26910	and function overloads.
26911	* src/abg-comparison.cc (TRY_PRE_VISIT, TRY_PRE_VISIT_CLASS_DIFF)
26912	(TRY_POST_VISIT, TRY_POST_VISIT_CLASS_DIFF)
26913	(CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE)
26914	(UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE)
26915	(TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
26916	(TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY)
26917	(TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY)
26918	(ENSURE_DIFF_NODE_TRAVERSED_ONCE)
26919	(ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Remove these macros.
26920	Hurrah.
26921	(diff_context::priv::categorizing_redundancy_): Remove.
26922	(diff_context::priv::forbid_traversing_a_node_twice_): Add new
26923	data member.
26924	(diff_context::priv::priv): Adjust.
26925	(diff_context::{forbid_traversing_a_node_twice,
26926	traversing_a_node_twice_is_forbidden}): Define new member
26927	functions.
26928	(diff_context::maybe_apply_filters): Once filters are applied (and
26929	categories are set to the relevant diff tree nodes, run a pass
26930	over the diff tree to propagate the categories to the relevant
26931	diff tree parent nodes.  Add an overload for corpus_diff_sptr.
26932	(diff_context::categorizing_redundancy): Remove member function.
26933	(diff_context::maybe_apply_filters): Define a new overload for
26934	corpus_diff_sptr
26935	(struct diff::priv::{finished_, traversing_, children_,
26936	pretty_representation_}):  New data members.
26937	(diff::priv::priv): Adjust.
26938	(diff::{begin_traversing, is_traversing, end_traversing,
26939	finish_diff_type, children_nodes, append_child_node, traverse,
26940	set_category, get_pretty_representation, chain_into_hierarchy}):
26941	Define new member functions.
26942	(diff::is_filtered_out): Do not refer to NOT_REDUNDANT_CATEGORY
26943	anymore.  Rather, use the new REDUNDANT_CATEGORY.
26944	({distinct_diff, var_diff, pointer_diff, array_diff,
26945	reference_diff, qualified_type_diff, enum_diff, class_diff,
26946	base_diff, scope_diff, function_decl_diff, type_decl_diff,
26947	typedef_diff}::{get_pretty_representation, chain_into_hierarchy,
26948	finish_diff_type}): Define new member functions.
26949	({distinct_diff, var_diff, pointer_diff, array_diff,
26950	reference_diff, qualified_type_diff, enum_diff, class_diff,
26951	base_diff, scope_diff, function_decl_diff, type_decl_diff,
26952	typedef_diff, translation_unit_diff}::traverse): Remove member
26953	functions.
26954	(operator&=, operator<<): Define new operators for diff_category.
26955	({function_decl_diff, typedef_diff}::priv::priv): Add a new
26956	constructor.
26957	(pointer_diff::{priv::priv, pointer_diff})
26958	(reference_diff::{priv::priv, reference_diff})
26959	(qualified_type_diff::{priv::priv, qualified_type_diff})
26960	(enum_diff::{priv::priv, enum_diff}, base_diff::{priv::priv,
26961	base_diff}, function_decl_diff::function_decl_diff): Take the
26962	underlying type diff in parameter.
26963	(compute_diff): Adjust the pointer_diff, reference_diff,
26964	qualified_type_diff, base_diff, function_decl_diff overloads.
26965	(class_diff::priv::{count_filtered_bases,
26966	count_filtered_subtype_changed_dm, count_filtered_changed_dm,
26967	count_filtered_changed_mem_fns, count_filtered_inserted_mem_fns,
26968	count_filtered_deleted_mem_fns}): Adjust for the call to
26969	diff_context::maybe_apply_filters.
26970	(corpus_diff::priv::{finished_, pretty_representation_}): New data
26971	member.
26972	(corpus_diff::priv::priv): New constructor.
26973	(corpus_diff::priv::clear_redundancy_categorization): Define new
26974	member function.
26975	(corpus_diff::priv::apply_filters_and_compute_diff_stats):
26976	Adjust for call to diff_context::maybe_apply_filters.  Also, call
26977	clear_redundancy_categorization at the end.
26978	(corpus_diff::priv::categorize_redundant_changed_sub_nodes):
26979	Revisit logic.
26980	(corpus_diff::{chain_into_hierarchy, finish_diff_type,
26981	children_nodes, append_child_node, changed_variables,
26982	get_pretty_representation}): Define new member functions.
26983	(corpus_diff::report): Categorize redundancy for every top level
26984	function/variable diff.
26985	(corpus_diff::traverse): Adjust to the new traversing interface.
26986	(diff_node_visitor::{visit_begin, visit_end}): Define new member
26987	functions.
26988	(struct category_propagation_visitor, struct diff_node_printer)
26989	(struct redundancy_marking_visitor, struct
26990	redundancy_clearing_visitor): New diff tree node visitors.
26991	(propagate_categories, print_diff_tree, categorize_redundancy)
26992	(clear_redundancy_categorization, apply_filters): Define new
26993	functions.
26994	* tests/Makefile.am: Add the new tests/print-diff-tree.cc to the
26995	source distribution.  Build it into a tests/printdifftree binary.
26996	* tools/abidiff.cc (print_diff_tree): Add debugging functions to
26997	call from within the debugger.  By default, this function and its
26998	overloads are not compiled.
26999
270002014-10-10  Dodji Seketeli <dodji@redhat.com>
27001
27002	Update copyright notice for tests/test-diff2.cc
27003	* tests/test-diff2.cc: Update copyright year.
27004
270052014-10-09  Dodji Seketeli <dodji@redhat.com>
27006
27007	Do not crash on function_decl_diff for fns that have no symbol
27008	* src/abg-comparison.cc (function_decl_diff::report): If a
27009	function decl has no associated elf symbol, do not crash while
27010	trying to report about its elf symbol aliases.
27011
270122014-10-09  Dodji Seketeli <dodji@redhat.com>
27013
27014	Avoid broken output for virtual member fns w/o symbols
27015	* src/abg-comparison.cc (represent): When a virtual member
27016	function has no associated elf symbol, do not emit garbage in lieu
27017	of the linkage name.  Just emit no linkage name;
27018	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.
27019
270202014-10-02  Dodji Seketeli <dodji@redhat.com>
27021
27022	Sort added/removed/changed functions reported by the comparison engine
27023	* src/abg-comparison.cc (struct function_comp, struct
27024	changed_function_ptr_comp): New comparison functors.
27025	(sort_string_function_ptr_map)
27026	(sort_string_changed_function_ptr_map): Define new static
27027	functions.
27028	(corpus_diff::report): Sort the added/removed/changed functions
27029	that are reported.
27030	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
27031	* tests/data/test-diff-filter/test01-report.txt: Adjust.
27032	* tests/data/test-diff-filter/test2-report.txt: Adjust.
27033	* tests/data/test-diff-filter/test9-report.txt: Adjust.
27034
270352014-10-02  Dodji Seketeli <dodji@redhat.com>
27036
27037	Mention virtual-ness of member function in their pretty representation
27038	* include/abg-fwd.h (get_member_function_is_virtual): Declare new
27039	overload for pointers.
27040	* src/abg-ir.cc (get_member_function_is_virtual): Define it.
27041	(function_decl::get_pretty_representation): Print virtual-ness of
27042	the function_decl being pretty printed.
27043
270442014-10-02  Dodji Seketeli <dodji@redhat.com>
27045
27046	Do not crash when reporting diffs about virtual member fns that have no symbol
27047	* src/abg-comparison.cc (represent): If a virtual member function
27048	has no symbol do not crash.
27049
270502014-10-02  Dodji Seketeli <dodji@redhat.com>
27051
27052	Fixup member functions which virtual-ness has just been set
27053	* include/abg-ir.h (fixup_virtual_member_function): Declare new
27054	function.
27055	(class_decl): Declare fixup_virtual_member_function() as a member.
27056	* src/abg-ir.cc (set_member_function_is_virtual): Ensure that the
27057	member function that has seen its virtualness set is also put
27058	correctly put in the vector of virtual member functions of its
27059	class.
27060
270612014-10-02  Dodji Seketeli <dodji@redhat.com>
27062
27063	Assert that only decls with elf symbols are part of comparison
27064	* src/abg-corpus.cc (corpus::priv::build_public_decl_table): Assert
27065	that when read from DWARF, only decls with elf symbols are part of
27066	the public decls table.
27067
270682014-10-02  Dodji Seketeli <dodji@redhat.com>
27069
27070	Emit all virtual member functions in group
27071	* src/abg-writer.cc (write_class_decl): Emit virtual member
27072	functions contiguously.
27073
270742014-10-02  Dodji Seketeli <dodji@redhat.com>
27075
27076	Always emit vtable offset for virtual member function
27077	* src/abg-writer.cc (write_voffset): Emit the vtable offset of
27078	virtual function even when the offset is zero.
27079
270802014-10-02  Dodji Seketeli <dodji@redhat.com>
27081
27082	Do not forget priv_->in_pub_sym_tab_ when copying decl_base
27083	* src/abg-ir.cc (decl_base::decl_base(const decl_base& d)): Do
27084	not forget to copy priv_->in_pub_sym_tab_.
27085
270862014-10-01  Dodji Seketeli <dodji@redhat.com>
27087
27088	Fix reading several clones of the same member function from DWARF
27089	* include/abg-fwd.h (set_member_function_is_ctor)
27090	(set_member_function_is_dtor, set_member_function_is_const)
27091	(set_member_function_vtable_offset): Declare new functions.
27092	* include/abg-ir.h (class_decl::sort_virtual_mem_fns): Declare new
27093	member function.
27094	(mem_fn_context_rel::{vtable_offset, is_constructor is_destructor,
27095	is_const}): Add these setters.
27096	(set_member_function_is_ctor, set_member_function_is_dtor)
27097	(set_member_function_is_static, set_member_function_is_const)
27098	(set_member_function_vtable_offset)
27099	(set_member_function_is_virtual): Declare these new friend
27100	function to class class_decl::method_decl.
27101	* src/abg-dwarf-reader.cc (finish_member_function_reading): Split
27102	this out from build_class_type_and_add_to_ir.  Use the new setters
27103	for member functions properties introduced above.
27104	(build_class_type_and_add_to_ir): Factorize the creation of member
27105	function by using build_ir_node_from_die.  Once that function has
27106	created the member function in a rather generic way, use the new
27107	finish_member_function_reading to set the remaining specific
27108	properties for member functions.
27109	(build_function_decl): When called to read additional properties
27110	of a function_decl, allow this to read and update the elf symbol
27111	properties too.  This is useful for building a clone of a function
27112	that already has an elf symbol.
27113	(build_ir_node_from_die):  When building a function decl, consider
27114	the case of a DIE that has both DW_AT_specification and
27115	DW_AT_abstract_origin set.  That is, DW_AT_abstract_origin is set,
27116	and the origin has DW_AT_specification set.  This is basically a
27117	clone of a function that implements an interface (this happens for
27118	destructors, for instance).  In this case, really do the cloning
27119	of the interface implementation.  If the cloned function happens
27120	to be member function, use finish_member_function_reading to read
27121	the properties relevant to its method-ness.
27122	* src/abg-ir.cc (set_member_function_is_ctor)
27123	(set_member_function_is_dtor, set_member_function_is_const)
27124	(set_member_function_vtable_offset)
27125	(class_decl::sort_virtual_mem_fns): Define new functions.
27126	(sort_virtual_member_functions): Define new static function.
27127	(struct virtual_member_function_less_than): New functor.
27128	(class_decl::add_member_function): Keep virtual member functions
27129	vector sorted.
27130	* data/test-read-dwarf/test1.abi: Adjust.  Now, both the
27131	cdtor specification and all the clones that implements the
27132	different are emitted.
27133	* data/test-read-dwarf/test2.so.abi: Likewise.
27134
271352014-10-01  Dodji Seketeli <dodji@redhat.com>
27136
27137	Do not crash when comparing functions that have no symbol
27138	* src/abg-comparison.cc
27139	(class_diff::ensure_lookup_tables_populated): Just skip functions
27140	that have no ELF symbol.
27141
271422014-09-30  Dodji Seketeli <dodji@redhat.com>
27143
27144	Rename member_function_is_virtual to get_member_function_is_virtual
27145	* include/abg-fwd.h (get_member_function_is_virtual): Renamed the
27146	declaration of member_function_is_virtual into this.
27147	* src/abg-ir.cc (get_member_function_is_virtual): Likewise for its
27148	definition.
27149	* include/abg-ir.h (class decl_base): Adjust the friend function
27150	member_function_is_virtual references.
27151	* src/abg-comp-filter.cc (has_virtual_mem_fn_change)
27152	(has_non_virtual_mem_fn_change): Adjust.
27153	* src/abg-comparison.cc (represent)
27154	(SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED, class_diff::report):
27155	Likewise.
27156	* src/abg-hash.cc (class_decl::hash::operator()): Likewise.
27157	(function_decl::clone, class_decl::add_member_function): Adjust.
27158
271592014-09-30  Dodji Seketeli <dodji@redhat.com>
27160
27161	Factorize a no-op deleter for shared pointer
27162	* include/abg-sptr-utils.h (struct noop_deleter): Move this here
27163	from ...
27164	* src/abg-comparison.cc (struct noop_deleter): ... here.
27165
271662014-09-30  Dodji Seketeli <dodji@redhat.com>
27167
27168	Link manuals from the main web page
27169	* doc/website/mainpage.txt: Add a link to the manuals.
27170
271712014-09-26  Dodji Seketeli <dodji@redhat.com>
27172
27173	Initial documentation for libabigail
27174	* doc/manuals/Makefile: New file, generated by sphinx-quickstart.
27175	* doc/manuals/abidiff.rst: New manual for abidiff.
27176	* doc/manuals/abidw.rst: New manual for abidw.
27177	* doc/manuals/abilint.rst: New manual for abilint.
27178	* doc/manuals/conf.py: New configuration file generated by sphinx-quickstart.
27179	* doc/manuals/index.rst: The root of the this documentation.
27180	* doc/manuals/libabigail-overview.rst: The overview of libabigail.
27181	* doc/manuals/tools.rst: The root of the tools manuals.
27182
271832014-09-26  Dodji Seketeli <dodji@redhat.com>
27184
27185	Do not install the abisym program
27186	* tools/Makefile.am: Do not install abisym.  It's really there
27187	just for testing purposes and is of almost no use for generic
27188	users.
27189
271902014-09-26  Dodji Seketeli <dodji@redhat.com>
27191
27192	Rename bi* tools to abi* tools
27193	* tests/data/test-bidiff: Rename this directory to
27194	tests/data/test-abidiff.
27195	* tests/test-bidiff.cc: Renamed this to tests/test-abidiff.cc.
27196	* tools/biar.cc: Renamed to tools/abiar.cc
27197	* tools/bidiff.cc: Renamed to tools/abidiff.cc
27198	* tools/bidw.cc: Renamed to tools/abidw.cc
27199	* tools/bilint.cc: Renamed to tools/abilint.cc
27200	* tools/bisym.cc: Renamed to tools/abisym.cc
27201	* tests/test-alt-dwarf-file.cc: Renamed references to bidw* to abidw*.
27202	* tests/test-diff-filter.cc: Renamed references to bidiff to abidiff.
27203	* tests/test-lookup-syms.cc: Renamed references to bisym to abisym.
27204	* tools/Makefile.am: Adjust.
27205	* tests/Makefile.am: Likewise.
27206
272072014-09-19  Dodji Seketeli <dodji@redhat.com>
27208
27209	Light cleanup in abg-corpus.cc
27210	* src/abg-corpus.cc
27211	(symtab_build_visitor_type::regex_fns_suppress): use
27212	sptr_utils::build_sptr, rather than building the shared_ptr of
27213	regex_t by hand.
27214
272152014-09-18  Dodji Seketeli <dodji@redhat.com>
27216
27217	Pimplify abigail::comparison::diff type
27218	* include/abg-comparison.h (diff::{priv, sptr}): New types.
27219	(diff::priv_): New member.
27220	(diff::*): Remove all the other previous data members and
27221	transform the inline member function definition into declarations
27222	only.
27223	* src/abg-comparison.cc (class diff::priv): New private data type.
27224	(diff::*): Define the previous inline member functions as
27225	out-of-line here.
27226
272272014-09-18  Dodji Seketeli <dodji@redhat.com>
27228
27229	Rename shared_ptr<regex_t> into regex_t_sptr
27230	* include/abg-sptr-utils.h (build_sptr()): Rename the return type
27231	from shared_ptr<regex_t> to regex_t_sptr.
27232
272332014-09-19  Dodji Seketeli <dodji@redhat.com>
27234
27235	Fix a comment in abg-comparison.h
27236	* include/abg-comparison.h (class base_diff): Fix comment.
27237
272382014-09-05  Dodji Seketeli <dodji@redhat.com>
27239
27240	Light style cleanup in tools/bidiff.cc
27241	* tools/bidiff.cc (display_usage): Remove useless space before '&'.
27242
272432014-09-05  Dodji Seketeli <dodji@redhat.com>
27244
27245	src/Makefile.am cleanup
27246	* src/Makefile.am: Remove the unused 'headers' variable.
27247
272482014-09-16  Dodji Seketeli <dodji@redhat.com>
27249
27250	Emit reports about not-yet categorized diff nodes
27251	* include/abg-comparison.h (NO_CHANGE_CATEGORY): Better comment
27252	this enumerator.
27253	* src/abg-comparison.cc (diff::is_filtered_out): Not-yet
27254	categorized changes are not filtered out anymore.
27255	(distinct_diff::report): Avoid extraneous new line here.
27256
272572014-09-16  Dodji Seketeli <dodji@redhat.com>
27258
27259	Better support for inline related diffs
27260	* include/abg-comparison.h
27261	(diff_category::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY): New
27262	enumerator.
27263	(diff_category::EVERYTHING_CATEGORY): Adjust.
27264	* include/abg-ir.h (elf_symbol::get_aliases_id_string)
27265	(elf_symbol::does_alias, elf_symbols_alias)
27266	(compute_aliases_for_elf_symbol): Declare new functions ...
27267	* src/abg-ir.cc (elf_symbol::get_aliases_id_string)
27268	(elf_symbol::does_alias, elf_symbols_alias)
27269	(compute_aliases_for_elf_symbol): ... and define them.
27270	(function_decl::operator==): Take in account elf symbol aliases.
27271	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
27272	Define new static functions.
27273	(harmless_filter::visit): Categorize function name changes that
27274	n	doesn't impact underlying elf symbols (or the fact that two
27275	symbols were aliases and are not anymore) as harmless.
27276	* src/abg-comparison.cc (function_decl_diff::report): Properly
27277	report function name changes, or symbol aliases changes for that
27278	matter.  Also report inline-ness declaration changes.
27279	* src/abg-dwarf-reader.cc (die_is_declared_inline): New static
27280	function.
27281	(build_function_decl): Use the above.
27282	* tools/bidiff.cc (set_diff_context_from_opts): Add
27283	abigail::comparison::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY into the
27284	harmless change camp.
27285	* tests/data/test-diff-dwarf/test14-inline-report.txt: New test
27286	input.
27287	* tests/data/test-diff-dwarf/test14-inline-v0.o: Likewise.
27288	* tests/data/test-diff-dwarf/test14-inline-v1.o: Likewise.
27289	* tests/data/test-diff-dwarf/test14-inline-v0.cc: Source code for
27290	test input.
27291	* tests/data/test-diff-dwarf/test14-inline-v1.cc: Source code for
27292	test input.
27293	* tests/test-diff-dwarf.cc: Run this test harness over the new
27294	input above.
27295	* tests/data/test-diff-filter/test20-inline-report-0.txt: Likewise.
27296	* tests/data/test-diff-filter/test20-inline-report-1.txt:
27297	Likewise.
27298	* tests/data/test-diff-filter/test20-inline-v0.o: New test input.
27299	* tests/data/test-diff-filter/test20-inline-v1.o: New test input.
27300	* tests/data/test-diff-filter/test20-inline-v0.cc: Source code for
27301	test input.
27302	* tests/data/test-diff-filter/test20-inline-v1.cc: Likewise.
27303	* tests/test-diff-filter.cc: Run this test harness over the new
27304	input above.
27305
273062014-09-16  Dodji Seketeli <dodji@redhat.com>
27307
27308	Better support for enum diffs
27309	* include/abg-comparison.h (changed_enumerator_type): New typedef.
27310	(diff_category::{HARMLESS_ENUM_CHANGE_CATEGORY}): New enumerator.
27311	* src/abg-comp-filter.cc (has_type_size_change)
27312	(has_enumerator_insertion, has_enumerator_removal_or_change)
27313	(has_harmful_enum_change): New functions.
27314	(harmless_filter::visit): Categorize enumerator insertions that
27315	don't change the size of the type into HARMLESS_ENUM_CHANGE_CATEGORY.
27316	(harmful_filter::visit): Categorize enumerator removal or any enum
27317	change that changes the size of the type into
27318	SIZE_OR_OFFSET_CHANGE_CATEGORY.
27319	* src/abg-comparison.cc (enumerator_value_comp)
27320	(changed_enumerator_comp): New types.
27321	(sort_enumerators, sort_changed_enumerators): New static
27322	functions.
27323	(enum_diff::report): Sort enum related reports by the value of the
27324	enumerators.
27325	* src/abg-dwarf-reader.cc (build_enum_type): Name anonymous enums
27326	as __anonymous_enum__.
27327	* tools/bidiff.cc (set_diff_context_from_opts): Add
27328	abigail::comparison::HARMLESS_ENUM_CHANGE_CATEGORY into the harmless
27329	stuff camp.
27330	* tests/data/test-diff-dwarf/test15-enum-report.txt: New test
27331	input.
27332	* tests/data/test-diff-dwarf/test15-enum-v1.o: Likewise.
27333	* tests/data/test-diff-dwarf/test15-enum-v0.o: Likewise.
27334	* tests/data/test-diff-dwarf/test15-enum-v0.cc: Source code for
27335	test input.
27336	* tests/data/test-diff-dwarf/test15-enum-v1.cc: Likewise.
27337	* tests/data/test-diff-filter/test19-enum-report-0.txt: New test input.
27338	* tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
27339	* tests/data/test-diff-filter/test19-enum-v0.o: Likewise.
27340	* tests/data/test-diff-filter/test19-enum-v1.o: Likewise.
27341	* tests/data/test-diff-filter/test19-enum-v0.cc: Source code for
27342	test input.
27343	* tests/data/test-diff-filter/test19-enum-v1.cc: Likewise.
27344	* tests/test-diff-dwarf.cc: Run this test harness on the new test
27345	inputs above.
27346	* tests/test-diff-filter.cc: Likewise.
27347	* tests/Makefile.am: Add the new files above to the source distribution.
27348
273492014-09-16  Dodji Seketeli <dodji@redhat.com>
27350
27351	Add constness to elf_symbol::operator==
27352	* include/abg-ir.h (elf_symbol::operator==): Add a const to the
27353	declaration ...
27354	* src/abg-ir.cc (elf_symbol::operator==): ... and to the definition.
27355
273562014-09-15  Dodji Seketeli <dodji@redhat.com>
27357
27358	Misc style cleanups
27359	* src/abg-comparison.cc (ChangedDataMemberComp): Rename this to
27360	changed_data_member_comp
27361	(sort_changed_data_members): Adjust.
27362	(DataMemberComp): Rename this to data_member_comp.
27363	(sort_data_members): Adjust.
27364
273652014-09-15  Dodji Seketeli <dodji@redhat.com>
27366
27367	Constify some function parameters in abg-comp-filter.cc
27368	* src/abg-comp-filter.cc (type_size_changed): Now take const
27369	parameters.
27370
273712014-09-09  Jan Engelhardt <jengelh@inai.de>
27372
27373	Add .gitignore files.
27374	* .gitignore: Add new file.
27375	* m4/.gitignore: Likewise.
27376	* tools/.gitignore: Likewise.
27377
273782014-09-09  Jan Engelhardt <jengelh@inai.de>
27379
27380	Place -L/-l flags into *_LIBADD/*_LDADD
27381	* src/Makefile.am: -L and -l ought to be in LIBADD/LDADD because
27382	that is the only place guaranteed to be in the right spot.  So add
27383	Them to libabigail_la_LIBADD.
27384	* tools/Makefile.am: Likewise.
27385
273862014-09-09  Jan Engelhardt <jengelh@inai.de>
27387
27388	Add libelf to libabigail.la's linker line
27389	* configure.ac: Check for the existence of libelf at configure
27390	time by looking at the presence of the elf_end symbol.  Add the
27391	libelf to the link command line.
27392
273932014-09-09  Jan Engelhardt <jengelh@inai.de>
27394
27395	Drop hardcoded substitutions
27396	* doc/Makefile.am: Do not use @docdir@.  It's indeed replaced at
27397	configure time. But there is no need for this limitation with
27398	automake, as $(docdir) is available and replaceable anytime.
27399	* src/Makefile.am: Likewise for @DEPS_LIBS@ and @DEPS_CFLAGS@.
27400
274012014-09-09  Jan Engelhardt <jengelh@inai.de>
27402
27403	Replace indirect variable assignments
27404	* configure.ac(DEVEL_CFLAGS, DEVEL_CXXFLAGS):  Remove these
27405	useless variables.
27406	(CFLAGS, CXXFLAGS): Set these variables directly.
27407	* include/Makefile.am (pkginclude_HEADERS): Use this predefined
27408	variable.
27409	(publicheaders_DATA, publicheadersdir): Remove these.
27410
274112014-09-09  Jan Engelhardt <jengelh@inai.de>
27412
27413	Remove empty and autogenerated files from git repository
27414	* ChangeLog: Remove this empty file for now.  It'll be added back
27415	right before the first release by automatic generation from the
27416	commit logs.
27417	* INSTALL: Remove this empty file for now.
27418	* NEWS: Remove this empty file for now.  It'll be added back right
27419	before the first release.
27420	* configure.ac (AM_INIT_AUTOMAKE): As the mandatory but empty
27421	files above are being removed for now, let's put in the 'foreign'
27422	mode of automake for the moment.  We'll likely remove it at
27423	release time.
27424
274252014-09-09  Jan Engelhardt <jengelh@inai.de>
27426
27427	Set automake options globally
27428	* configure.ac(AM_INIT_AUTOMAKE): Set the subdir-object option
27429	here ..
27430	* src/Makefile.am: ... not here.
27431	* tests/Makefile.am: Likewise.
27432	* tools/Makefile.am: Likewise.
27433
274342014-09-09  Jan Engelhardt <jengelh@inai.de>
27435
27436	Stash some autogenerated tools in build-aux/
27437	* configure.ac: Reduce the pollution in the top-level directory a
27438	bit.
27439
274402014-09-10  Dodji Seketeli <dodji@redhat.com>
27441
27442	Fix memory leaks due to cycles in types ownership
27443	* include/abg-fwd.h (std::tr1::weak_ptr): Inject this type in the
27444	abigail namespace.
27445	* include/abg-ir.h: Write a memory management guideline for the IR
27446	artifacts.
27447	(Type_base_wptr, function_type_wptr)
27448	(class_decl_wptr): New typedefs.
27449	(translation_unit::get_canonical_function_type): Declare new
27450	member function.
27451	(qualified_type_def::underlying_type_)
27452	(reference_type_def::pointed_to_type_)
27453	(typedef_decl::underlying_type_, function_decl::parameter::type_)
27454	(function_type::return_type_, method_type::class_type_)
27455	(non_type_tparameter::type_, type_composition::type_): Make this a
27456	weak pointer.
27457	(qualified_type_def::get_pointed_to_type)
27458	(reference_type_def::get_pointed_to_type)
27459	(array_type::get_element_type, typedef_decl::get_underlying_type)
27460	(var_decl::get_type, function_decl::parameter::get_type)
27461	(function_type::get_return_type, method_type::get_class_type)
27462	(non_type_tparameter::get_type)
27463	(type_composition::get_composed_type): Adjust to make this return
27464	a shared pointer initialized with the content of the weak pointer.
27465	(function_decl::function_decl, method_decl::method_decl): Remove
27466	the overload that doesn't take a type.  This is because now,
27467	function types need to be registered to their containing
27468	translation unit.
27469	(struct function_type::hash): Declare here.
27470	* src/abg-hash.cc (struct function_type::hash): Declare this in
27471	abg-ir.h and just define the methods here.
27472	* src/abg-ir.cc (fn_type_ptr_map): New typedef.
27473	(translation_unit::priv::canonical_types_): Remove this unused
27474	member.
27475	(translation_unit::priv::canonical_function_types_): New member.
27476	(translation_unit::get_canonical_function_type): Define this
27477	function.
27478	(array_type_def::priv::element_type_, var_decl::priv::type_)
27479	(function_decl::priv::type_): Make this a weak pointer.
27480	(qualified_type_def::get_underlying_type)
27481	(pointer_type_def::get_pointed_to_type)
27482	(reference_type_def::get_pointed_to_type)
27483	(array_type_def::get_element_type)
27484	(typedef_decl::get_underlying_type, var_decl::get_type)
27485	(function_decl::get_type): Adjust to make this return a shared
27486	pointer initialized with the content of the weak pointer.
27487	(qualified_type_def::build_name)
27488	(pointer_type_def::get_qualified_name)
27489	(reference_type_def::get_qualified_name): Adjust.
27490	(method_type::set_class_type): Cleanup the logic.
27491	(function_decl::priv::priv): Remove the overload that takes a bare
27492	pointer to a type.  This should not be used now that we need the
27493	function type to registered with the translation unit.
27494	(function_decl::function_decl): Remove the overload that doesn't
27495	take a type.  This is because now, function types need to be
27496	registered to their containing translation unit.
27497	* src/abg-dwarf-reader.cc (build_function_decl): Register the
27498	function type within its translation type and use its canonical
27499	version.  This complies with the new memory management rules.
27500	* src/abg-reader.cc (build_function_decl): Likewise.
27501
275022014-09-10  Dodji Seketeli <dodji@redhat.com>
27503
27504	Compare class names when comparing methods
27505	* src/abg-ir.cc:
27506
275072014-09-10  Dodji Seketeli <dodji@redhat.com>
27508
27509	Slight white space fix
27510	* src/abg-hash.cc (method_type::hash::operator()(const
27511	method_type&)): White space fix.
27512
275132014-09-10  Dodji Seketeli <dodji@redhat.com>
27514
27515	Update copyright notice
27516	* include/abg-ir.h: Update year of copyright notice.
27517
275182014-07-05  Ondrej Oprala <ooprala@redhat.com>
27519
27520	Unite help output for tools
27521	* tools/biar.cc (std::ostream): Add a using directive.
27522	(display_usage): Make it take a string reference and an ostream
27523	as parameters. Use the ostream argument as an output stream
27524	instead of a hard-coded cout.
27525	Prettify output.
27526	(main): Call display_usage with new parameters.
27527	* tools/bidiff.cc (display_usage): Declare it static.
27528	Prettify output.
27529	* tools/bidw.cc (display_usage): Prettify output.
27530	* tools/bilint.cc (display_usage): Declare it static.
27531	Prettify output.
27532	* tools/bisym.cc (std::cerr): Add a using directive.
27533	(prog_name): Rename progname into this.
27534	(display_usage): Rename show_help into this.
27535	Add an ostream as a parameter. Use the ostream argument
27536	as output stream insted of a hard-coded cout.
27537
275382014-09-03  Dodji Seketeli <dodji@redhat.com>
27539
27540	Adjust copyright year
27541	* tests/test-diff-dwarf.cc: Adjust year in copyright notice.
27542
275432014-09-03  Dodji Seketeli <dodji@redhat.com>
27544
27545	Sort reported changed data members by increasing offset
27546	* include/abg-comparison.h (changed_type_or_decl_vector): New
27547	typedef.
27548	* include/abg-fwd.h (is_data_member): Change the overload that
27549	takes a decl_base_sptr to make it return the real var_decl_sptr
27550	rather than just a bool.
27551	* src/abg-comparison.cc (ChangedDataMemberComp, DataMemberComp):
27552	New comparison functors.
27553	(sort_changed_data_members, sort_data_members): Sorting functions
27554	for changed data members and data members.
27555	(class_diff::report): Sort reports for deleted, inserted and
27556	change data members by the increasing value of the offsets of said
27557	data members.
27558	* src/abg-ir.cc (is_data_member): Change the overload that takes a
27559	decl_base_sptr to make it return the real var_decl_sptr rather
27560	than just a bool.
27561	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
27562	* tests/data/test-diff-dwarf/test13-report.txt: New test input.
27563	* tests/data/test-diff-dwarf/test13-v0.cc: Source code for new
27564	test input.
27565	* tests/data/test-diff-dwarf/test13-v0.o: New test input.
27566	* tests/data/test-diff-dwarf/test13-v1.cc: Source code for new
27567	test input.
27568	* tests/data/test-diff-dwarf/test13-v1.o: New test input.
27569	* tests/Makefile.am: Add the new test inputs above to the source
27570	distribution.
27571	* tests/test-diff-dwarf.cc: Run this test harness on the new test
27572	input.
27573
275742014-09-03  Dodji Seketeli <dodji@redhat.com>
27575
27576	Do not filter out diff nodes that are only in NOT_REDUNDANT_CATEGORY
27577	* src/abg-comparison.cc (diff::is_filtered_out): If a diff not is
27578	only in the NOT_REDUNDANT_CATEGORY category consider it as not
27579	being filtered.
27580	* tests/data/test-diff-filter/test18-report.txt: New test input.
27581	* tests/data/test-diff-filter/test18-v0.cc: Source code for new
27582	test input.
27583	* tests/data/test-diff-filter/test18-v0.o: New test input.
27584	* tests/data/test-diff-filter/test18-v1.cc: Source code for new
27585	test input.
27586	* tests/data/test-diff-filter/test18-v1.o: New test input.
27587	* tests/Makefile.am: Add the new test inputs to the source distribution.
27588	* tests/test-diff-filter.cc: Run this test harness on the new test
27589	input above.
27590
275912014-09-03  Dodji Seketeli <dodji@redhat.com>
27592
27593	White space cleanup
27594	* src/abg-ir.cc (get_data_member_offset): Remove useless
27595	horizontal white space.
27596
275972014-09-03  Dodji Seketeli <dodji@redhat.com>
27598
27599	Add some comments in the comparison engine
27600	* src/abg-comparison.cc: Add a comment for the file.
27601	(struct class_diff::priv::{subtype_changed_dm_,changed_dm_}): Add
27602	comment for these data members.
27603
276042014-09-02  Dodji Seketeli <dodji@redhat.com>
27605
27606	Remove useless new line from comparison engine's report
27607	* src/abg-comparison.cc (class_diff::report):  Do not emit new
27608	lines after reporting about inserted data members.
27609	* tests/data/test-bidiff/test-qual-type0-report.txt: Adjust.
27610	* tests/data/test-bidiff/test-struct0-report.txt: Adjust.
27611	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
27612	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
27613	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
27614	* tests/data/test-diff-dwarf/test3-report.txt: Adjust.
27615	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
27616	* tests/data/test-diff-filter/test0-report.txt: Adjust.
27617	* tests/data/test-diff-filter/test01-report.txt: Adjust.
27618	* tests/data/test-diff-filter/test1-report.txt: Adjust.
27619	* tests/data/test-diff-filter/test11-report.txt: Adjust.
27620	* tests/data/test-diff-filter/test14-0-report.txt: Adjust.
27621	* tests/data/test-diff-filter/test14-1-report.txt: Adjust.
27622	* tests/data/test-diff-filter/test15-0-report.txt: Adjust.
27623	* tests/data/test-diff-filter/test15-1-report.txt: Adjust.
27624	* tests/data/test-diff-filter/test16-report.txt: Adjust.
27625	* tests/data/test-diff-filter/test17-0-report.txt: Adjust.
27626	* tests/data/test-diff-filter/test17-1-report.txt: Adjust.
27627	* tests/data/test-diff-filter/test2-report.txt: Adjust.
27628	* tests/data/test-diff-filter/test3-report.txt: Adjust.
27629	* tests/data/test-diff-filter/test9-report.txt: Adjust.
27630
276312014-09-01  Dodji Seketeli <dodji@redhat.com>
27632
27633	Adjust copyright years
27634	* src/abg-corpus.cc: Adjust copyright years.
27635	* src/abg-libzip-utils.cc: Likewise.
27636	* src/abg-writer.cc: Likewise.
27637
276382014-09-01  Dodji Seketeli <dodji@redhat.com>
27639
27640	Factorize basic redundancy detection in diff report
27641	* src/abg-comparison.cc
27642	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER)
27643	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER{2,3}): New
27644	macros.
27645	({pointer_diff, array_diff, reference_diff, qualified_type_diff,
27646	class_diff, typedef_diff}::report): Use the new macros above.
27647	* tests/data/test-bidiff/test-qual-type0-report.txt: Adjust
27648	because type pretty representation are now always quoted.
27649	* tests/data/test-bidiff/test-struct1-report.txt: Adjust likewise.
27650
276512014-08-31  Dodji Seketeli <dodji@redhat.com>
27652
27653	Display package configuration at the end of configure
27654	* configure.ac: Display the configure of the package at the end of
27655	the configure script.
27656
276572014-08-31  Dodji Seketeli <dodji@redhat.com>
27658
27659	Make zip archive support optional
27660	* configure.ac: Support a new --enable-zip-archive option.  By
27661	default its value is set to the 'auto', meaning that if libzip is
27662	installed, that turns the option on -- just like if
27663	--enable-zip-archive was called with the value 'yes'; if libzip is
27664	not installed, that turns the option off -- just like if
27665	--enable-zip-archive was called with the value 'no'.  If libzip is
27666	detected, the pre-processor macro HAVE_LIBZIP is set to 1.  If
27667	--enable-zip-archive is turned on, the pre-processor macro
27668	WITH_ZIP_ARCHIVE is set to 1.
27669	* config.h.in (HAVE_LIBZIP, WITH_ZIP): New define.
27670	* src/abg-corpus.cc: Include config.h.  Guard the inclusion of
27671	abg-libzip-utils.h with the WITH_ZIP_ARCHIVE macro.  Likewise for
27672	the use of declarations coming from abg-libzip-utils.h.
27673	* src/abg-libzip-utils.cc: Include config.h.  Guard the file's
27674	content with the WITH_ZIP_ARCHIVE macro.
27675	* src/abg-reader.cc: Include config.h.  Guard the inclusion of
27676	abg-libzip-utils.h with the WITH_ZIP_ARCHIVE.  Likewise for the
27677	use of declarations coming from abg-libzip-utils.h.
27678	* src/abg-writer.cc: Likewise.
27679	* tests/Makefile.am: Build runtestwritereadarchive and runtestdot
27680	only if zip archives are supported.
27681	* tools/Makefile.am: The biar program is built only if
27682	zip archives are supported.
27683	* tools/bidiff.cc: Handle zip archives only if the
27684	WITH_ZIP_ARCHIVE macros is defined.
27685	* tools/bilint.cc: Likewise.
27686
276872014-08-28  Dodji Seketeli <dodji@redhat.com>
27688
27689	Tell bidiff --help, wrong options and missing argument apart
27690	* tools/bidiff.cc (options::{display_usage,missing_operand}): New
27691	data members.
27692	(options::options): Initialize them.
27693	(parse_command_line):  Flag missing operands.  Return false only
27694	when an option could not be parsed.  Flag when the user wants us
27695	to display help.
27696	(main): Tell --help, wrong options and missing argument apart and
27697	give an appropriate message on stderr.  The help string goes to
27698	stdout though.  Just like what GNU diff does.
27699
277002014-08-28  Dodji Seketeli <dodji@redhat.com>
27701
27702	In bidiff, don't emit a report when the binaries have the same ABI
27703	* tools/bidiff.cc (main): For differences of zero length, do not
27704	emit any report.
27705
277062014-08-29  Dodji Seketeli <dodji@redhat.com>
27707
27708	Take variables in account in corpus changes detection
27709	* src/abg-comparison.cc (corpus_diff::length): Take changes about
27710	variables into account.
27711
277122014-08-28  Dodji Seketeli <dodji@redhat.com>
27713
27714	During redundancy marking start with the current node as non redundant
27715	* src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE):  If the
27716	diff node is being traversed for the first time, mark it as being
27717	in the NOT_REDUNDANT_CATEGORY.  I don't know why I was doing this
27718	only for classes and basic types.  Update comments.
27719	* tests/data/test-diff-filter/test16-report.txt: New test input.
27720	* tests/data/test-diff-filter/test16-v0.cc: Source code of new
27721	test input.
27722	* tests/data/test-diff-filter/test16-v0.o: New test input.
27723	* tests/data/test-diff-filter/test16-v1.cc: Source code of new
27724	test input.
27725	* tests/data/test-diff-filter/test16-v1.o: New test input.
27726	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
27727	* tests/data/test-diff-filter/test17-1-report.txt: Likewise.
27728	* tests/data/test-diff-filter/test17-v0.cc: Source code of new
27729	test input.
27730	* tests/data/test-diff-filter/test17-v0.o: Likewise.
27731	* tests/data/test-diff-filter/test17-v1.cc: Source code of new
27732	test input.
27733	* tests/data/test-diff-filter/test17-v1.o: Likewise.
27734	* tests/Makefile.am: Add the new files to the source distribution.
27735	* tests/test-diff-filter.cc (in_out_spec): Run this test harness
27736	over the new test inputs.
27737
277382014-08-28  Dodji Seketeli <dodji@redhat.com>
27739
27740	Give anonymous struct the name "__anonymous_struct__"
27741	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Set
27742	the name of anonymous structs to '__anonymous_struct_'.
27743
277442014-08-28  Dodji Seketeli <dodji@redhat.com>
27745
27746	Style fix in the comparison engine
27747	* src/abg-comparison.cc (represent): Remove useless white space.
27748
277492014-08-27  Dodji Seketeli <dodji@redhat.com>
27750
27751	In bidiff, change --no-linkage-names to --no-linkage-name
27752	* tools/bidiff.cc (display_usage): Change--no-linkage-names -o
27753	--no-linkage-name in the help string.
27754	(parse_command_line): Adjust the command line parsing accordingly.
27755	* tests/test-diff-filter.cc (in_out_specs): Adjust.
27756
277572014-08-27  Dodji Seketeli <dodji@redhat.com>
27758
27759	In diff reports, show symbol version info in linkage names
27760	* src/abg-comparison.cc (represent, corpus_diff::report): show
27761	symbol version info in linkage name info.
27762
277632014-08-27  Dodji Seketeli <dodji@redhat.com>
27764
27765	In diff reports, fns & members add/remove at the top, changes later.
27766	* src/abg-comparison.cc (class_diff::report): Put virtual member
27767	function adding/removal/change first, then data members
27768	add/removal, then the rest (including data members changes).
27769	(corpus_diff::report): Put function adding/removal first, then
27770	function changes.  Likewise for variables.
27771	* tests/data/test-bidiff/test-struct0-report.txt: Adjust.
27772	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
27773	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
27774	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
27775	* tests/data/test-diff-dwarf/test12-report.txt: Adjust.
27776	* tests/data/test-diff-dwarf/test8-report.txt: Adjust.
27777	* tests/data/test-diff-dwarf/test9-report.txt: Adjust.
27778	* tests/data/test-diff-filter/test0-report.txt: Adjust.
27779	* tests/data/test-diff-filter/test01-report.txt: Adjust.
27780	* tests/data/test-diff-filter/test1-report.txt: Adjust.
27781	* tests/data/test-diff-filter/test13-report.txt: Adjust.
27782	* tests/data/test-diff-filter/test2-report.txt: Adjust.
27783	* tests/data/test-diff-filter/test3-report.txt: Adjust.
27784	* tests/data/test-diff-filter/test9-report.txt: Adjust.
27785
277862014-08-27  Dodji Seketeli <dodji@redhat.com>
27787
27788	Consider symbol versions' public-ness during comparison
27789	* src/abg-ir.cc (elf_symbol::operator==): Rather than comparing
27790	bindings, compare public-ness here.  That is, if two symbol
27791	versions' differ because one is GLOBAL and the other one is WEAK,
27792	they should still be considered equal, from an ABI standpoint.
27793
277942014-08-27  Dodji Seketeli <dodji@redhat.com>
27795
27796	Lookup proper names of symbol during determination of deleted/added decls
27797	* src/abg-comparison.cc
27798	({class,corpus}_diff::ensure_lookup_tables_populated):  Now that in the
27799	intermediate maps we store symbol *ids* rather than symbol names,
27800	make sure to really refer to symbol names for symbol lookups,
27801	rather than (wrongly) referring to symbol ids.
27802
278032014-08-26  Dodji Seketeli <dodji@redhat.com>
27804
27805	Cleanup bidiff help string some more
27806	* tools/bidiff.cc (display_usage): Add help strings for --harmless
27807	and --no-harmful.
27808	(main): Emit the help string to stdout, not stderr.
27809
278102014-08-26  Dodji Seketeli <dodji@redhat.com>
27811
27812	bidiff --no-harmless is no more
27813	* tools/bidiff.cc (display_usage): Remove the help string for the
27814	--no-harmless option that doesn't exist anymore, as it's on by
27815	default.
27816
278172014-08-26  Dodji Seketeli <dodji@redhat.com>
27818
27819	During comparison use symbol name + version as decl ID
27820	* include/abg-ir.h ({var,function}_decl::get_id): New member
27821	function declarations.
27822	* src/abg-ir.cc ({var,function}_decl::get_id): New member function
27823	definitions.
27824	* src/abg-comparison.cc
27825	(corpus_diff::priv::ensure_lookup_tables_populated): Use the
27826	::get_id() function to get an identifier for the function or
27827	variable.
27828	* src/abg-corpus.cc (symtab_build_visitor_type::build_id): Use the
27829	get_id of the function/variable.
27830
278312014-08-26  Dodji Seketeli <dodji@redhat.com>
27832
27833	Fix access to alternate die -> decl map
27834	* src/abg-dwarf-reader.cc (read_context::alternate_die_decl_map):
27835	Return the real alternate die decl map, rather than what we was
27836	doing previously b/c of a stupid copy/paste.  Oh well.
27837
278382014-08-25  Dodji Seketeli <dodji@redhat.com>
27839
27840	Take symbol versions in account when computing added/removed decls
27841	* include/abg-corpus.h
27842	(corpus::lookup_{function,variable}_symbol): Add an overload
27843	declaration that takes the version of the symbol to lookup.
27844	* src/abg-comparison.cc
27845	(corpus_diff::priv::ensure_lookup_tables_populated): So when looking
27846	up the corpora for symbols, take their versions in account.
27847	* src/abg-corpus.cc (corpus::lookup_{function,variable}_symbol):
27848	Add an overload definition that takes the version of the symbol to
27849	lookup.
27850	(symtab_build_visitor_type::build_id): New
27851	member functions.
27852	(corpus::priv::build_public_decl_table): Use the new member
27853	functions above.
27854	* src/abg-ir.cc (elf_symbol::version::operator==): Do not take the
27855	is_default flag in account when comparing two symbol versions.
27856	* libtest12-v{0,1}.so: New test input files.
27857	* libtest12-v{0,1}.c: Source code for the test input files.
27858	* test12-version-script: Version script to build the files above.
27859	* test12-report.txt: Test input file.
27860	* tests/Makefile.am: Add the new test input files above to the
27861	source distribution.
27862	* tests/test-diff-dwarf.cc (in_out_specs[]): Add an entry to this
27863	table for the new test input files.
27864
278652014-08-25  Dodji Seketeli <dodji@redhat.com>
27866
27867	Misc style cleanups
27868	* include/abg-corpus.h (corpus::lookup_function_symbol)
27869	(corpus::lookup_variable_symbol): Add the name of the function
27870	parameter in the declaration.
27871	* include/abg-ir.h (elf_symbol::version::version): Properly indent
27872	this constructor declaration.
27873	* src/abg-corpus.cc
27874	(symtab_build_visitor_type::symtab_build_visitor_type): Properly
27875	indent constructor parameters.
27876	* src/abg-ir.cc (function_decl::operator==): Fix typo in
27877	comments.
27878
278792014-08-25  Dodji Seketeli <dodji@redhat.com>
27880
27881	bidiff --harmful is not supported anymore
27882	* tools/bidiff.cc (display_usage): remove the '--harmful' line
27883	from the help string as this option is now activated by default.
27884	It's --harmless that exists now.
27885
278862014-08-22  Dodji Seketeli <dodji@redhat.com>
27887
27888	A builtin type name change is not harmless - fix that
27889	* include/abg-comp-filter.h (has_harmless_name_change): New
27890	function declaration.
27891	* include/abg-comparison.h
27892	(diff_category::DECL_NAME_CHANGE_CATEGORY): Renamed this into
27893	HARMLESS_DECL_NAME_CHANGE_CATEGORY.
27894	(diff_category::EVERYTHING_CATEGORY): Update.
27895	* include/abg-fwd.h (is_enum): New function declaration.
27896	(is_var_decl): Return the shared_ptr<var_decl> rather than a bool.
27897	(is_data_member): New overload that takes a shared_ptr<decl_base>.
27898	* src/abg-comp-filter.cc (decl_name_changed): Consider the
27899	qualified name here.
27900	(has_harmless_name_change): Define new function declaration.
27901	(harmless_filter::visit): Use the new has_harmless_name_change
27902	function.
27903	* src/abg-comparison.cc (represent)
27904	(report_name_size_and_alignment_changes, enum_diff::report)
27905	(typedef_diff::report, is_data_member): Use the new
27906	filtering::has_harmless_name_change function to simplify logic of
27907	emitting the name change related diff
27908	* tools/bidiff.cc (set_diff_context_from_opts): Adjust
27909	DECL_NAME_CHANGE_CATEGORY -> HARMLESS_DECL_NAME_CHANGE_CATEGORY.
27910	* src/abg-ir.cc (is_data_member, is_enum): New function definitions.
27911	(is_var_decl): Return the var_decl_sptr rather than just a bool.
27912	* tests/data/test-diff-filter/test13-report.txt: Adjust.
27913	* tests/data/test-diff-filter/test6-report.txt: Adjust.
27914
279152014-08-18  Ondrej Oprala <ooprala@redhat.com>
27916
27917	Support C and C++ array type.
27918	* include/abg-comparison.h (array_diff): Declare new class.
27919	(array_diff_sptr): Shared pointer to type array_diff.
27920	(compute_diff): Overload the function to take type
27921	array_diff_sptr as the first two arguments.
27922	* include/abg-fwd.h (array_type_def): Declare new class.
27923	(subrange_type): Likewise.
27924	(is_array_def): Declare new function.
27925	* include/abg-ir.h (array_type_def_sptr): Shared pointer
27926	to type array_type_def.
27927	(array_type_def): Declare new class.
27928	(ir_node_visitor::visit): Declare a new virtual function
27929	taking a pointer to type array_type_def as an argument.
27930	* src/abg-comparison.cc (compute_diff_for_types): Add
27931	try_to_diff for two instances of type array_type_def.
27932	(array_diff::priv): declare struct for holding private members
27933	of type array_diff.
27934	(array_diff::array_diff): Define constructor.
27935	(array_diff::{first,second}_array):Define new
27936	member functions.
27937	(array_diff::element_type_diff): Likewise.
27938	(array_diff::{length,report,traverse}): Likewise.
27939	(compute_diff): Define function overloaded in
27940	include/abg-comparison.h.
27941	* src/abg-dwarf-reader.cc (build_array_type): Define new
27942	function. Handle DW_TAG_array_type and DW_TAG_subrange type.
27943	(build_ir_node_from_die): Amend case DW_TAG_array_type with
27944	a call to build_array_type.
27945	* src/abg-hash.cc (array_type_def::hash): Declare new struct.
27946	(type_base::dynamic_hash::operator()): Attempt to dynamic_cast
27947	the argument to type array_type_def as well.
27948	(array_type_def::hash): Declare new struct.
27949	* src/abg-ir.cc (array_type_def::array_type_def): Define
27950	constructors.
27951	(array_type_def::priv): declare struct for holding private members
27952	of type array_type_def.
27953	(array_type_def::operator==(const decl_base&):
27954	Define new operator.
27955	(array_type_def::operator==(const type_base&):
27956	Likewise.
27957	(array_type_def::append_subrange{,s}): Define
27958	new functions.
27959	(array_type_def::{set,get}_size_in_bits): Likewise.
27960	(array_type_def::get_dimension_count): Likewise.
27961	(array_type_def::get_qualified_name): Likewise.
27962	(array_type_def::get_pretty_representation): Likewise.
27963	(array_type_def::get_subrange_representation): Likewise.
27964	(array_type_def::traverse): Likewise.
27965	(array_type_def::get_{element_type,location,subranges}): Likewise.
27966	(array_type_def::is_infinite): Likewise.
27967	(array_type_def::~array_type_def): Define destructor.
27968	(ir_node_visitor::visit): Define function, taking
27969	pointer to array_type_def as an argument.
27970	* src/abg-reader.cc (map_id_and_node): Check if node
27971	is an array.
27972	(is_array_def): Check if object is an array.
27973	(handle_element_node): Handle array_type_def as well.
27974	(build_subrange_type): Define new function.
27975	(build_array_type_def): Likewise.
27976	(build_type): Build type array_type_def as well.
27977	(build_type_composition): Likewise.
27978	(handle_array_type_def): Define new function.
27979	* src/abg-writer.cc: (write_decl): Output arrays
27980	as well.
27981	(write_member_type): Likewise.
27982	(write_type_composition): Likewise.
27983	(write_array_type_def): Define new function.
27984	* tests/data/test-diff-dwarf/test{10,11}-v{0,1}.{cc,o}: New test source
27985	files
27986	* tests/data/test-diff-dwarf/test{10,11}-report.txt: Likewise.
27987	* tests/data/test-diff-dwarf/test10-report.txt: New test input.
27988	* tests/data/test-read-dwarf/test7.cc: New test source
27989	file.
27990	* tests/data/test-read-dwarf/test7.so: New input binary
27991	to read.
27992	* tests/data/test-read-dwarf/test7.so.abi: New reference
27993	test to compare against.
27994	* tests/data/test-read-write/test25.xml: New test source
27995	file.
27996	* tests/test-diff-dwarf.cc: Adjust to launch the new test.
27997	* tests/test-read-dwarf.cc: Likewise.
27998	* tests/test-read-write.cc: Likewise.
27999	* test/Makefile.am: Add the new test inputs to the source
28000	distribution.
28001
280022014-08-19  Dodji Seketeli <dodji@redhat.com>
28003
28004	Ignore variables which type couldn't be read from DWARF
28005	* src/abg-dwarf-reader.cc (build_var_decl): Drop the var on the
28006	floor if its type couldn't be built.
28007
280082014-08-19  Dodji Seketeli <dodji@redhat.com>
28009
28010	Support TLS variables
28011	* src/abg-ir.cc (elf_symbol::is_variable): Accept TLS objects as
28012	variables too.
28013	* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr)
28014	(die_location_address): Add an output parameter to say if the
28015	resulting constant value is a tls address or not.
28016	(lookup_public_variable_symbol_from_elf): Use the proper
28017	elf_symbol::is_variable() method, rather than trying to figure out
28018	the low levels of what a variable is here.  Also, cleanup the
28019	condition.
28020	(read_context::load_symbol_maps): Consider symbols of type
28021	STT_TLS, when loading symbols for variables.  Also, to avoir
28022	symbols that are for versions, filter out symbols of type
28023	STT_OBJECT and with a SHN_ABS section index.
28024	(read_context::get_variable_address): If the address is for a tls
28025	variable, do no try to adjust the address to arrange for things
28026	like prelink.  As that doesn't seem to affect TLS variables.
28027	(dwarf_expr_eval_context::set_tls_addr): New data member.
28028	(dwarf_expr_eval_context::dwarf_expr_eval_context): Initialize it.
28029	(dwarf_expr_eval_context::set_tls_address): New accessors.
28030	(dwarf_expr_eval_context::op_manipulates_stack): Handle
28031	DW_OP_GNU_push_tls_address, a bit like DW_OP_form_tls_address, but
28032	then, its result is a constant.  Set the
28033	dwarf_expr_eval_context::set_tls_addr flag when these two OPs are
28034	run.
28035	(die_member_offset): Adjust to the new signature of
28036	eval_last_constant_dwarf_sub_expr.
28037	* tests/data/test-diff-dwarf/libtest9-v0.so: New test input.
28038	* tests/data/test-diff-dwarf/libtest9-v1.so: Likewise.
28039	* tests/data/test-diff-dwarf/test9-report.txt: Likewise
28040	* tests/data/test-diff-dwarf/test9-v0.cc: Source code for the
28041	first input.
28042	* tests/data/test-diff-dwarf/test9-v1.cc: Source code for the
28043	second input.
28044	* tests/test-diff-dwarf.cc: Run this harness on the two new inputs
28045	above.
28046	* tests/Makefile.am: Add the new inputs to the source distribution.
28047
280482014-08-18  Dodji Seketeli <dodji@redhat.com>
28049
28050	Update copyright for abg-dwarf-reader.cc
28051	* src/abg-dwarf-reader.cc: Update copyright year.
28052
280532014-08-18  Dodji Seketeli <dodji@redhat.com>
28054
28055	Make the link to the alt debug info file relative
28056	* tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
28057	Make this link be relative.
28058
280592014-08-15  Dodji Seketeli <dodji@redhat.com>
28060
28061	White space fix
28062	* tests/test-lookup-syms.cc: Remove useless white space.
28063
280642014-08-15  Dodji Seketeli <dodji@redhat.com>
28065
28066	Update copyright notice
28067	* tests/test-lookup-syms.cc: Update year in copyright notice.
28068	* tools/bidw.cc: Likewise.
28069
280702014-08-15  Dodji Seketeli <dodji@redhat.com>
28071
28072	Support alternate debug info sections
28073	* include/abg-dwarf-reader.h (class read_context)
28074	(typedef read_context_sptr, create_read_context)
28075	(has_alt_debug_info): Declare these.
28076	(read_corpus_from_elf): Declare new overload.
28077	* src/abg-dwarf-reader.cc (find_alt_debug_info)
28078	(is_die_attribute_resolved_through_gnu_ref_alt)
28079	(build_primary_die_parent_relations_under)
28080	(build_alternate_die_parent_relations_under):
28081	Define new static functions.
28082	(read_context::{alt_dwarf_,
28083	alt_debug_info_path_, alternate_die_decl_map_,
28084	alternate_die_parent_map_}): New data members.
28085	(read_context::{alt_dwarf, alt_debug_info_path,
28086	alternate_die_decl_map, associate_die_to_decl_primary,
28087	associate_die_to_decl_alternate, associate_die_to_decl,
28088	lookup_decl_from_die_offset_primary,
28089	lookup_decl_from_die_offset_alternate,
28090	lookup_decl_from_die_offset, alternate_die_parent_map}): New
28091	member functions.
28092	(read_context::load_debug_info): Painfully Get a handle on the
28093	alternate debug info section too.  We shouldn't have to do all
28094	this work; we could use the new dwarf_getalt() function from
28095	libdw, but we cannot as we want to support supports that predate
28096	that api.  When a version of elfutils gets released with that api
28097	though, we should conditionally use that instead.
28098	(build_ir_node_from_die, get_parent_die, get_scope_for_die)
28099	(build_namespace_decl_and_add_to_ir)
28100	(build_class_type_and_add_to_ir, build_qualified_type)
28101	(build_pointer_type_def, build_reference_type, build_typedef_type)
28102	(build_var_decl, build_function_decl): Take a new parameter that
28103	tells if the input DIE is from alternate debug info.  Adjust their
28104	code accordingly.
28105	(die_die_attribute): Take a new output parameter that tells if the
28106	resolved DIE is from alternate debug info.  Also take a new
28107	parameter that tells if the input DIE is from alternate debug info
28108	sections.
28109	(build_die_parent_relations_under): Take the DIE -> parent map to
28110	act upon.  Also, add a new overload that takes a flag saying if
28111	the DIE is from alternate debug info or not, and act upon that.
28112	(build_die_parent_maps): Renamed build_die_parent_map into this
28113	and make it build DIE -> parent DIE relationship for the alternate
28114	debug info file as well.
28115	(find_last_import_unit_point_before_die, ): Adjust to use the
28116	information about if the relevant DIEs are in alternate debug info
28117	or not.
28118	(build_translation_unit_and_add_to_ir): Clear the alternate DIE ->
28119	decl map, that is per TU just as the primary DIE -> decl map.
28120	Adjust to use the information about if the relevant DIEs are in
28121	alternate debug info or not.
28122	(read_debug_info_into_corpus): Build the two DIE -> DIE parent
28123	maps (one for the primary debug info and one for the alternate
28124	debug info).
28125	(create_read_context, has_alt_debug_info): Define new public entry
28126	points.
28127	(read_corpus_from_elf): New entry point overload that takes a
28128	read_context.
28129	* tools/bidw.cc (options::{check_alt_debug_info_path,
28130	show_base_name_alt_debug_info_path}): New data members.
28131	(display_usage): Update for the two new options
28132	--check-alternate-debug-info and
28133	check-alternate-debug-info-base-name.
28134	(parse_command_line): Parse the two options above.
28135	(main) Handle the two new options above.
28136	* tests/Makefile.am: Build the new runtestaltdwarf test.  Add the
28137	new data/test-alt-dwarf-file/* files to the build system.
28138	* tests/test-alt-dwarf-file.cc: New test driver.
28139	* tests/data/test-alt-dwarf-file/test0-common.cc: New test input
28140	files.
28141	* tests/data/test-alt-dwarf-file/libtest0-common.so: Likewise.
28142	* tests/data/test-alt-dwarf-file/test0.cc: Likewise.
28143	* tests/data/test-alt-dwarf-file/libtest0.so: Likewise.
28144	* tests/data/test-alt-dwarf-file/test0.h: Likewise.
28145	* tests/data/test-alt-dwarf-file/test0-common-dwz.debug: Likewise.
28146	* tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
28147	Likewise.
28148	* tests/data/test-alt-dwarf-file/test0-debug-dir/test0-common-dwz.debug:
28149	Likewise.
28150	* tests/data/test-read-dwarf/test1.abi: Adjust. bidw doesn't emit
28151	an abstract constructor/destructor anymore. It emits just the
28152	functions matching the cdtor symbols found in the binary.
28153	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
28154
281552014-07-26  Dodji Seketeli <dodji@redhat.com>
28156
28157	Better handle corner cases of void* DWARF parsing
28158	* src/abg-dwarf-reader.cc (build_pointer_type_def):  Better
28159	support cases where the underlying type of the pointer is not
28160	know.  In that case, the pointer should not be created.
28161
281622014-07-20  Dodji Seketeli <dodji@redhat.com>
28163
28164	Support finding symbols with bias wrt DWARF references
28165	* src/abg-dwarf-reader.cc (get_binary_load_address): New function
28166	definition.
28167	(read_context::elf_handle): Add comment.
28168	(read_context::{dwarf_elf_handle, dwarf_is_splitted,
28169	maybe_adjust_address_for_exec_or_dyn}): New method definitions.
28170	(maybe_adjust_fn_sym_address)
28171	(maybe_adjust_var_sym_address): Move these so they become members
28172	of read_context.  Also, For shared libraries and executable (that
28173	could have been e.g prelinked), consider their loading address
28174	when trying to find which symbol resides at a given place in
28175	memory.
28176	(read_context::{get_function_address, get_variable_address):
28177	Adjust.
28178	(build_translation_unit_and_add_to_ir): Fix comment.
28179
281802014-07-20  Dodji Seketeli <dodji@redhat.com>
28181
28182	Reset the scope of void_type_decl for each new translation unit
28183	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
28184	Clear the void_type_decl on new translation units.
28185
281862014-07-18  Dodji Seketeli <dodji@redhat.com>
28187
28188	Update INSTALL file
28189	* INSTALL: Adjust the copyright year information because autotools
28190	2.69 did.
28191
281922014-07-18  Dodji Seketeli <dodji@redhat.com>
28193
28194	Correctly write the name of a const reference type
28195	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Define new
28196	function.
28197	(build_ir_node_from_die): Use the maybe_strip_qualification when
28198	building a qualified type.
28199	* src/abg-ir.cc (qualified_type_def::build_name): Fix the
28200	representation of the name of a reference that is const.
28201	* tests/data/test-read-dwarf/test1.abi: Adjust.
28202	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
28203	* tests/data/test-diff-dwarf/test1-report.txt: Likewise.
28204	* tests/data/test-diff-dwarf/test6-report.txt: Likewise.
28205	* tests/data/test-diff-dwarf/test7-report.txt: Likewise.
28206	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
28207	* tests/data/test-diff-filter/test0-report.txt: Likewise.
28208	* tests/data/test-diff-filter/test01-report.txt: Likewise.
28209	* tests/data/test-diff-filter/test2-report.txt: Likewise.
28210	* tests/data/test-diff-filter/test3-report.txt: Likewise.
28211	* tests/data/test-diff-filter/test9-report.txt: Likewise.
28212	* tests/data/test-diff-filter/test10-report.txt: Likewise.
28213	* tests/data/test-diff-filter/test13-report.txt: Likewise.
28214	* tests/data/test-diff-filter/test14-0-report.txt: Likewise.
28215	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.
28216
282172014-07-01  Sinny Kumari <skumari@redhat.com>
28218
28219	Consider symbols with STB_GNU_UNIQUE binding as public
28220	* src/abg-ir.cc (is_public): Change in function to consider
28221	symbols with STB_GNU_UNIQUE binding as public
28222	* tests/data/test-read-dwarf/test6.cc: Test file to generate
28223	STB_GNU_UNIQUE binding symbols
28224	* tests/data/test-read-dwarf/test6.so: Test shared library having
28225	STB_GNU_UNIQUE binding symbols
28226	* tests/data/test-read-dwarf/test6.so.abi: XML file containing
28227	dwarf information from test6.so
28228	* tests/test-read-dwarf.cc (in_out_specs): Add the new test above
28229	* tests/Makefile.am: Add tests/data/test-read-dwarf/test6.cc,
28230	tests/data/test-read-dwarf/test6.so and
28231	tests/data/test-read-dwarf/test6.so.abi to the distribution
28232
282332014-07-01  Dodji Seketeli <dodji@redhat.com>
28234
28235	Add comment to test-read-write.cc
28236	* tests/test-read-write.cc: Update copyright notice and add a
28237	meaningful comment for the file.
28238
282392014-06-23  Dodji Seketeli <dodji@redhat.com>
28240
28241	Support reading void* type from DWARF
28242	* include/abg-ir.h (type_decl::get_void_type_decl): Declare new
28243	static method.
28244	* src/abg-ir.cc (type_decl::get_void_type_decl): Define it.
28245	* src/abg-dwarf-reader.cc (build_ir_node_for_void_type): Define
28246	new static function.
28247	(build_pointer_type_def): Support void* type nodes here.
28248	* tests/data/test-read-dwarf/test5.cc: Source code for new test
28249	input.
28250	* tests/data/test-read-dwarf/test5.o: New test input.
28251	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
28252	* tests/Makefile.am: Add the above to the source distribution.
28253
282542014-06-23  Dodji Seketeli <dodji@redhat.com>
28255
28256	Update a comment in abg-dwarf-reader.cc
28257	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Update a
28258	comment here.
28259
282602014-06-23  Mark Wielaard <mjw@redhat.com>
28261
28262	Handle C99 restrict qualifier and DWARFv3 DW_TAG_restrict_type.
28263	* src/abg-dwarf-reader.cc (build_qualified_type): Handle
28264	DW_TAG_restrict_type by adding CV_RESTRICT.
28265	(build_ir_node_from_die): Call build_qualified_type for
28266	DW_TAG_restrict_type.
28267	* src/abg-reader.cc (build_qualified_type_decl): Handle
28268	"restrict" attribute by adding CV_RESTRICT.
28269	* src/abg-writer.cc (write_qualified_type_def): Output
28270	"restrict" attribute for CV_RESTRICT.
28271	* tests/data/test-read-dwarf/test4.c: New test file.
28272	* tests/data/test-read-dwarf/test4.so: Likewise.
28273	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
28274	* tests/data/test-read-write/test24.xml: Likewise.
28275	* tests/test-read-dwarf.cc (in_out_specs): Add test4.
28276	* tests/test-read-write.cc (in_out_specs): Add test24.xml.
28277
282782014-06-23  Dodji Seketeli <dodji@seketeli.org>
28279
28280	Add subdir-objects automake option where it is needed
28281	* src/Makefile.am: Add the subdir-object automake option here.
28282	Do not specify absolute paths for the input files as Automake now
28283	takes care of that just fine.
28284	* tests/Makefile.am: Likewise.
28285	* tools/Makefile.am: Likewise.
28286
282872014-06-23  Dodji Seketeli <dodji@seketeli.org>
28288
28289	Remove autotools artifacts from the repository
28290	* config.guess: Remove from revision control system.
28291	* config.sub: Likewise.
28292	* depcomp: Likewise.
28293	* m4/libtool.m4: Likewise.
28294	* missing: Likewise.
28295
282962014-06-23  Dodji Seketeli <dodji@redhat.com>
28297
28298	Avoid reporting diff nodes that have already been reported
28299	* include/abg-comp-filter.h (class harmful_filter): Update
28300	comment.
28301	(class redundant_filter): Declare new filter.
28302	* include/abg-comparison.h (enum
28303	diff_category::NOT_REDUNDANT_CATEGORY): New category.  Update the
28304	values of the other enumerators.
28305	(diff_context::{add_diff, diff_has_been_traversed}): New overloads.
28306	(diff_context::{categorizing_redundancy, show_redundant_changes}):
28307	Declare new methods.
28308	(diff_context::remove_from_category): Define new inline method.
28309	* src/abg-comparison.cc (noop_deleter::operator()): Constify the
28310	parameter.
28311	(CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE)
28312	(UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE): New macros.
28313	(TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
28314	(TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY)
28315	(TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): Use the new
28316	CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE and
28317	UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE macros above.
28318	(ENSURE_DIFF_NODE_TRAVERSED_ONCE)
28319	(ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): If the (type_decl or class)
28320	node hasn't been yet traversed, mark it as non-redundant.
28321	(diff_context::priv::categorizing_redundancy): New member.
28322	(diff_context::priv::priv): Initialize it.
28323	(diff_context::{add_diff, diff_has_been_traversed): Define new
28324	overloads.
28325	(diff_context::mark_diff_as_traversed): Intern a diff node that is
28326	marked as being traversed.
28327	(diff_context::{categorizing_redundancy, show_redundant_changes}):
28328	Define new methods.
28329	(diff::is_filtered_out): A redundant function or top-level
28330	variable is considered filtered-out.  Otherwise, the new
28331	NOT_REDUNDANT_CATEGORY doesn't play any role when comparing
28332	allowed categories with the set of categories a diff node belongs
28333	to.
28334	(corpus::priv::categorize_redundant_changed_sub_nodes): Define
28335	new member function.
28336	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Change
28337	this to first walk the changed functions and variables to apply
28338	filters, then categorize redundant changed functions, and then
28339	walk the changed functions and variables again to count
28340	filtered-out diff nodes.
28341	(filtering::redundant_filter::visit): Define new member function.
28342	* tools/bidiff.cc (options::show_redundant_changes): New data
28343	member.
28344	(options::options): Initialize it.
28345	(display_usage): Add help string for the --redundant command line
28346	option.
28347	(parse_command_line): Add support for the --redundant command line
28348	option.
28349	(set_diff_context_from_opts): Take the --redundant command line
28350	option in account.
28351	* tests/test-diff-filter.cc: Update this to add new test inputs.
28352	* tests/data/test-diff-filter/test14-0-report.txt: New test input.
28353	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.
28354	* tests/data/test-diff-filter/test14-v0.cc: Likewise.
28355	* tests/data/test-diff-filter/test14-v0.o: Likewise.
28356	* tests/data/test-diff-filter/test14-v1.cc: Likewise.
28357	* tests/data/test-diff-filter/test14-v1.o: Likewise.
28358	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
28359	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.
28360	* tests/data/test-diff-filter/test15-v0.cc: Likewise.
28361	* tests/data/test-diff-filter/test15-v0.o: Likewise.
28362	* tests/data/test-diff-filter/test15-v1.cc: Likewise.
28363	* tests/data/test-diff-filter/test15-v1.o: Likewise.
28364	* tests/Makefile.am: Add the above to the build system.
28365
283662014-06-23  Dodji Seketeli <dodji@redhat.com>
28367
28368	A name that couldn't be demangled remains the same
28369	* src/abg-ir.cc (demangle_cplus_mangled_name): When the demangler
28370	fails to demangle a name, just return the input name as-is.
28371
283722014-06-23  Dodji Seketeli <dodji@redhat.com>
28373
28374	Update copyright notice for a bunch of files
28375	* include/abg-comp-filter.h: Update copyright notice.
28376	* include/abg-comparison.h: Likewise.
28377	* src/abg-comparison.cc: Likewise.
28378	* src/abg-ir.cc: Likewise.
28379	* tools/bidiff.cc: Likewise.
28380	* tests/test-diff-filter.cc: Likewise.
28381
283822014-06-19  Sinny Kumari <skumari@redhat.com>
28383
28384	Keep symbol's multiple aliases within single attribute separated by comma
28385	* src/abg-writer.cc (write_elf_symbol_aliases): Changing function
28386	to keep multiple symbol aliases within one alias attribute
28387	* src/abg-reader.cc (build_elf_symbol_db): Changing function to read
28388	symbol's alias attribute and split if multiple alias exist with comma(,)
28389	asi a delimiter and add all aliases to main symbol
28390	* tests/data/test-read-dwarf/test3.c: Test file to generate multiple aliases
28391	* tests/data/test-read-dwarf/test3.so: Test shared library having multiple
28392	aliases of a symbol
28393	* tests/data/test-read-dwarf/test3.so.abi: XML file containing dwarf
28394	information from test3.so
28395	* tests/test-read-dwarf.cc (in_out_specs): Add the new test above
28396	* tests/Makefile.am: Add tests/data/test-read-dwarf/test3.c,
28397	tests/data/test-read-dwarf/test3.so and tests/data/test-read-dwarf/test3.so.abi
28398	to the distribution
28399
284002014-06-18  Mark Wielaard <mjw@redhat.com>
28401
28402	DW_TAG_mutable_type doesn't exist.
28403	* src/abg-dwarf-reader.cc (is_type_tag): Remove DW_TAG_mutable_type.
28404	(build_ir_node_from_die): Likewise.
28405
284062014-06-05  Dodji Seketeli <dodji@redhat.com>
28407
28408	Look at first parm type and artificial-ness to detect static-ness
28409	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): To
28410	tell if a member function is static, look if the first parm is a
28411	pointer to the type of the enclosing class, and if it's
28412	artificial.  Don't bother trying to be smart by looking at the
28413	non-presence of DW_AT_object_pointer b/c that attribute wasn't
28414	emitted by GCC 4_4.
28415
284162014-06-04  Dodji Seketeli <dodji@redhat.com>
28417
28418	Harden debug info path management & better error reporting
28419	* include/abg-dwarf-reader.h (enum status): New enum.
28420	(read_corpus_from_elf): Return an instance of status above, and
28421	return the corpus by parameter.
28422	* src/abg-dwarf-reader.cc (create_default_dwfl): Add a comment
28423	about elfutils wanting the Dwfl_Callbacks::debuginfo_path to be an
28424	absolute path.
28425	(read_corpus_from_elf): Return an instance of status above, and
28426	return the corpus by parameter.
28427	* tools/abg-tools-utils.h (make_path_absolute): Declare new function.
28428	* tools/abg-tools-utils.cc (make_path_absolute): New
28429	implementation.
28430	* tools/bidiff.cc (options::di_root_path[12]): Make these be
28431	shared pointers.
28432	(parse_command_line): ensure the debug info root paths are
28433	absolute.
28434	(main): Adjust.  Give meaningful errors when the debug info or
28435	symbol files couldn't be read.
28436	* tools/bidw.cc (options::di_root_path): Make this be a shared
28437	pointer.
28438	(parse_command_line): Ensure the debug info root path is absolute.
28439	(main): Adjust.  Give meaningful errors when the debug info or
28440	symbol files couldn't be read.
28441	* tools/bilint.cc (options::di_root_path): Make this be a shared
28442	pointer.
28443	(parse_command_line): Ensure the debug info root path is absolute.
28444	(main): Adjust.  Give meaningful errors when the debug info or
28445	symbol file couldn't be read.
28446	* tests/test-diff-dwarf.cc (main): Adjust.
28447	* tests/test-read-dwarf.cc (main): Likewise.
28448
284492014-06-02  Dodji Seketeli <dodji@redhat.com>
28450
28451	Do not choke on AR archives
28452	* tools/abg-tools-utils.h (file_type::FILE_TYPE_AR): New enumerator.
28453	* tools/abg-tools-utils.cc (guess_file_type): Recognize AR archive
28454	files.
28455	* tools/bidiff.cc (main): Support AR archives.
28456	* tools/bidw.cc (main): Likewise.
28457	* tools/bilint.cc (main): Likewise.
28458
284592014-05-30  Dodji Seketeli <dodji@redhat.com>
28460
28461	Honor linkage name showing when displaying added/removed member functions
28462	* src/abg-comparison.cc (represent): Take a diff_context.  If
28463	instructed to show linkage names, show the linkage name of the
28464	member function.
28465	(class_diff::report): Adjust for the new signature of represent().
28466
284672014-05-30  Dodji Seketeli <dodji@redhat.com>
28468
28469	Make bidiff filter output and display symbol names by default
28470	* tools/bidiff.cc (options::options): Initialize
28471	options::show_linkage_names to true and
28472	options::show_harmful_changes to false.
28473	(parse_command_line): Change --linkage-names into
28474	--no-linkage-names as the linkage names are now displayed by
28475	default.  Change --no-harmless into --harmless as harmless changes
28476	are now filtered by default.
28477	(display_usage): Update help string for the --linkage-names ->
28478	--no-linkage-names and --no-harmful -> --harmful change.
28479	* tests/test-diff-filter.cc: Adjust.
28480
284812014-05-29  Dodji Seketeli <dodji@redhat.com>
28482
28483	Ensure added/removed member functions have their symbols added/removed
28484	* include/abg-comparison.h (diff_context::{set_corpora,
28485	get_first_corpus, get_second_corpus}): Declare new member
28486	functions.
28487	* src/abg-comparison.cc (diff_context::{set_corpora,
28488	get_first_corpus, get_second_corpus}): Define them.
28489	(compute_diff): In the overload for corpus_sptr stick the corpora
28490	being compared, into the diff context.
28491	(class_diff::ensure_lookup_tables_populated): If a member function
28492	is allegedly removed, check that its underlying symbol is removed
28493	from the corpus as well.  Otherwise, consider that the member
28494	function hasn't been removed.  Likewise, if a member function is
28495	allegedly added, check that its underlying symbol has been added
28496	to the corpus as well.  Otherwise, consider that the member
28497	function hasn't been added.  The symbols can now be accessed
28498	through the two corpora that are now present in the diff context.
28499
285002014-05-29  Dodji Seketeli <dodji@redhat.com>
28501
28502	Fix scope for DIEs with specification or abstract_origin attributes
28503	* src/abg-dwarf-reader.cc (get_scope_for_die): If the DIE has a
28504	DW_AT_specification or DW_AT_abstract_origin attribute, get the
28505	scope of the referred-to DIE.
28506	(build_ir_node_from_die): For a variable DIE that has a
28507	DW_AT_{specification,abstract_origin} attribute, do not add the
28508	built variable IR node to its scope because it is already in a
28509	scope.  It's in a scope because that built variable is for the DIE
28510	that is referred-to by the DW_AT_{specification,abstract_origin}
28511	attribute.  Likewise for member functions.  Also, now,
28512	get_scope_for_die can return a class for a function DIE because
28513	get_scope_for_die now returns the *logical* scope of the DIE; that
28514	is, it follows DW_AT_{specification,abstract_origin} attributes.
28515	* tests/data/test-read-dwarf/test1.abi: Adjust.
28516
285172014-05-28  Dodji Seketeli <dodji@redhat.com>
28518
28519	Add a symbol database to the ABI Corpus & support symbol aliases
28520	* include/abg-corpus.h (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}):
28521	Declare new accessors.
28522	(corpus::lookup_{variable,function}_symbol): Declare new member
28523	functions.
28524	* src/abg-corpus.cc (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}):
28525	Define new accessors.
28526	(corpus::lookup_{variable,function}_symbol): Define new member
28527	functions.
28528	* include/abg-ir.h (string_elf_symbol_sptr_map_type)
28529	(string_elf_symbol_sptr_map_sptr, elf_symbols)
28530	(string_elf_symbols_map_type, string_elf_symbols_map_sptr): New
28531	convenience typedefs.
28532	(elf_symbol::{get_main_symbol, is_main_symbol, get_next_alias,
28533	has_aliases, add_alias, get_id_string,
28534	get_name_and_version_from_id, operator=}): Declare new member
28535	functions.
28536	* src/abg-ir.cc (elf_symbol::{get_main_symbol, is_main_symbol,
28537	get_next_alias, has_aliases, add_alias, get_id_string,
28538	get_name_and_version_from_id, operator=}): Define new member
28539	functions.
28540	* include/abg-reader.h (read_corpus_from_file): Take a shared
28541	pointer to corpus.
28542	* src/abg-reader.cc (read_context::{g,s}et_corpus): Define these.
28543	(build_elf_symbol_db, build_elf_symbol_from_reference)
28544	(read_symbol_db_from_input): Define new functions.
28545	(read_corpus_from_input): Adjust.  Make it read symbol databases.
28546	(build_elf_symbol): Harden this.
28547	(build_{var,function}_decl): Read the symbol reference.  Do not
28548	read the local symbol serialization anymore.
28549	(read_corpus_from_archive): Adjust.
28550	(read_corpus_from_file): Take a reference to a shared pointer to
28551	corpus, rather than a reference to the corpus.
28552	(read_corpus_from_native_xml): Only keep the overload that returns
28553	a corpus.  Set the current context with the corpus.
28554	* src/abg-dwarf-reader.cc (addr_elf_symbol_sptr_map_type)
28555	(addr_elf_symbol_sptr_map_sptr): New convenience typedefs.
28556	(read_context::{fun_sym_addr_sym_index_map_,
28557	var_sym_addr_sym_index_map_): Remove.
28558	(read_context::{fun,var}_addr_sym_map_): New.  Replace the above
28559	that got removed.
28560	(read_context::{var,fun}_syms_): New.
28561	(read_context::lookup_elf_{fn,var}_symbol_from_address): Adjust.
28562	(read_context::{fun,var}_addr_sym_map{_sptr}): New.
28563	(read_context::{fun,var}_syms{_sptr}): New.
28564	(read_context::load_symbol_maps): Replace
28565	read_context::load_symbol_addr_to_index_maps.  Adjust to load all
28566	the new maps.
28567	(read_context::maybe_load_symbol_maps): New.
28568	(read_debug_info_into_corpus): Renamed build_corpus into this.
28569	Update to load symbol maps and set it to the corpus.
28570	* src/abg-writer.cc (write_context::get_fun_symbol_map): New
28571	accessor.
28572	(write_elf_symbol_aliases, write_elf_symbol_reference)
28573	(write_elf_symbols_table): Define new static functions.
28574	(write_var_decl): Write the reference to the underlying symbol of
28575	the variable.  Do not write the full symbol here anymore.
28576	(write_function_decl):  Likewise, write the reference to the
28577	underlying symbol of the function.  Do not write the full symbol
28578	here anymore.
28579	(write_corpus_to_native_xml): Write the symbol databases at the
28580	beginning of the corpus document.
28581	* src/abg-comparison.cc
28582	(corpus_diff::priv::ensure_lookup_tables_populated): Now that the
28583	corpus has symbols, check if a the symbol of an allegedly deleted
28584	function (resp. variable) is deleted; if not, then do not report
28585	the function (resp. variable) as deleted.  Similarly, check if the
28586	symbol of an allegedly added function (resp. variable) is added.
28587	if not, the do not report the function (resp. variable) as added.
28588	* tests/test-write-read-archive.cc (main): Adjust.
28589	* tools/biar.cc (extract_tus_from_archive): Likewise.
28590	* tests/data/test-diff-filter/test9-report.txt: Adjust.
28591	* tests/data/test-read-dwarf/test0.abi: Likewise.
28592	* tests/data/test-read-dwarf/test1.abi: Likewise.
28593	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
28594
285952014-05-21  Dodji Seketeli <dodji@redhat.com>
28596
28597	Rename 'symbol' in fn names to 'public decl' in abg-corpus.{cc,h}
28598	* src/abg-corpus.cc (lots of places): Rename references to
28599	'symbol' in function & variable names to 'public_decl'.
28600
286012014-05-22  Dodji Seketeli <dodji@redhat.com>
28602
28603	Support debug info files being outside the expected system directories
28604	* include/abg-dwarf-reader.h (read_corpus_from_elf): Take a
28605	debug_info_root_path parameter.
28606	src/abg-dwarf-reader.cc (create_default_dwfl): Take a
28607	debug_info_root_path.  Use that to initialize the Dwfl_Callbacks
28608	structure used by dwfl_begin.
28609	(create_default_dwfl_sptr, read_corpus_from_elf): Likewise, Take a
28610	debug_info_root_path parameter.
28611	* tests/test-diff-dwarf.cc (main): Adjust.
28612	* tests/test-read-dwarf.cc (main): Likewise.
28613	* tools/bidiff.cc (options::dir_root_path[12]): New member.
28614	(options::options): Initialize it.
28615	(display_usage): Add help string for the --debug-info-dir[12]
28616	options.
28617	(parse_command_line): Handle the new --debug-info-dir[12] options.
28618	(main): Pass the debug info directories to read_corpus_from_elf.
28619	* bidw.cc (options::::di_root_path): New member.
28620	(options::options): Initialize it.
28621	(display_usage): Add help string for the new --debug-info-dir
28622	option.
28623	(parse_command_line): Handle the new --debug-info-dir.
28624	(main): Pass the debug info root path to read_corpus_from_elf.
28625	* tools/bilint.cc (options::di_root_path): New member.
28626	(options::options): Initialize it.
28627	(display_usage): Add help string for the new --debug-info-dir.
28628	(parse_command_line): Handle --debug-info-dir command line option.
28629	(main): Pass the debug info root path to read_corpus_from_elf.
28630
286312014-05-21  Dodji Seketeli <dodji@redhat.com>
28632
28633	Fix detection of destructors
28634	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Simply
28635	detect that the destructor starts with a '~'.
28636
286372014-05-21  Dodji Seketeli <dodji@redhat.com>
28638
28639	Add clone in the scope of the cloned decl they logically belong to
28640	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Do not try to
28641	add the cloned function/variable to the current scope because
28642	cloning should have added the decl into the scope of the cloned
28643	target.
28644	* src/abg-ir.cc ({var,function}_decl::clone): Insert the clone
28645	decl into the scope of the cloned decl.  My understanding is that
28646	it's where they belong.
28647	* tests/data/test-read-dwarf/test1.abi: Update this to incorporate
28648	all the abstract constructors/destructors *and* their clones into
28649	the classes where they belong.
28650	* tests/data/test-read-dwarf/test1.abi: Adjust for the abstract
28651	cdtor being added to the class, as well as their cloned concrete
28652	instances.
28653	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
28654
286552014-05-20  Dodji Seketeli <dodji@redhat.com>
28656
28657	Support decl cloning when seeing DW_AT_abstract_origin
28658	* include/abg-ir.h ({var,function}_decl::clone): New method.
28659	* src/abg-dwarf-reader.cc (die_die_attribute): Add a flag to avoid
28660	looking through DW_AT_abstract_origin attribute here.
28661	(build_function_decl): Set the linkage name from
28662	DW_AT_linkage_name if it's not set yet.
28663	(build_ir_node_from_die): For DW_TAG_{variable,subprogram}, when
28664	we see DW_AT_abstract_origin, clone the decl they refer to.
28665	Also, avoid dropping the DIE on the floor just because it doesn't
28666	have die_is_artificial here.
28667	* src/abg-ir.cc ({var,function}_decl::clone): Implement this.
28668
286692014-05-19  Dodji Seketeli <dodji@redhat.com>
28670
28671	Don't share types across TUs when DW_TAG_partial_unit are involved
28672	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
28673	Clear the part of the context that needs to be per TU.
28674	(build_ir_node_from_die): Assert that this should not be called
28675	for partial and imported unit because for now our practical
28676	assumption is that DIEs under partial unit are lazily read only
28677	when referenced by DIEs that are under DW_TAG_compile_unit.
28678	* tests/Makefile.am: Add the new test files to the build system.
28679	* tests/data/test-read-dwarf/test2.so.abi: Fix the reference
28680	output here to avoid sharing types across TUs, making the output
28681	valid for bilint.
28682
286832014-05-19  Dodji Seketeli <dodji@redhat.com>
28684
28685	Initial support for DW_TAG_partial_unit
28686	* src/abg-dwarf-reader.cc (read_context::cur_tu_die_): New member.
28687	(read_context::read_context): Initialize the new member.
28688	(read_context::cur_tu_die): New accessors.
28689	(find_last_import_unit_point_before_die): New static function.
28690	(get_parent_die): Take a logical current die offset parameter.  If
28691	the die we want the parent for is a partial unit, then find the
28692	last DW_TAG_imported_unit that imports that partial unit before
28693	the logical current die and return the parent of that
28694	DW_TAG_imported_unit die.
28695	(get_scope_for_die): Take a logical current die offset parameter.
28696	Adjust.
28697	(build_translation_unit_and_add_to_ir): Set/unset the current
28698	translation unit DIE in the context.  Adjust.
28699	(build_namespace_decl_and_add_to_ir)
28700	(build_class_type_and_add_to_ir, build_qualified_type)
28701	(build_pointer_type_def, build_reference_type, build_typedef_type)
28702	(build_var_decl, build_function_decl, build_ir_node_from_die):
28703	Take a logical current die offset parameter.  Adjust.
28704	(build_corpus): Accept that we can have DIE that are not
28705	DW_TAG_compile_unit at the top level, because, well, we can now
28706	have DW_TAG_partial_unit too.
28707	* tests/data/test-read-dwarf/test2-{0,1}.cc: New test source
28708	files.
28709	* tests/data/test-read-dwarf/test2.h: Likewise.
28710	* tests/data/test-read-dwarf/test2.so: New input binary to read.
28711	* tests/data/test-read-dwarf/test2.so.abi: New reference test to
28712	compare against.
28713	* tests/test-read-dwarf.cc: Adjust to launch the new test.
28714
287152014-05-14  Dodji Seketeli <dodji@redhat.com>
28716
28717	Re-build a test input file with debug info
28718	* tests/data/test-lookup-syms/test1.so: Rebuild this with debug
28719	info.
28720
287212014-05-14  Dodji Seketeli <dodji@redhat.com>
28722
28723	Serialize and de-serialize elf symbols for var & function decls
28724	* abg-ir.h (string_to_elf_symbol_type, string_to_elf_symbol_binding):
28725	Declare new entry points.
28726	* src/abg-ir.cc (string_to_elf_symbol_type)
28727	(string_to_elf_symbol_binding): Define new entry points.
28728	* include/abg-libxml-utils.h (xml_char_sptr_to_string): Declare
28729	new entry points.
28730	* src/abg-libxml-utils.cc (xml_char_sptr_to_string): Define new
28731	entry points.
28732	* src/abg-reader.cc (read_elf_symbol_type)
28733	(read_elf_symbol_binding, build_elf_symbol): Define new static
28734	functions.
28735	(build_function_decl, build_var_decl): Use the new
28736	build_elf_symbol and set the symbol to the function.  Flag the
28737	function as having a public symbol in the symbol table if the
28738	symbol is public.
28739	* src/abg-writer.cc (write_elf_symbol_type)
28740	(write_elf_symbol_binding, write_elf_symbol): Define new static
28741	functions.
28742	(write_var_decl, write_function_decl): Use the new
28743	write_elf_symbol to serialize the symbol for the decl.
28744	* tests/data/test-read-dwarf/test[01].abi: Adjust.
28745
287462014-05-14  Dodji Seketeli <dodji@redhat.com>
28747
28748	Don't crash when de-serializing an empty function parm xml node
28749	* src/abg-reader.cc (build_function_parameter): Do not crash if
28750	the xml node is NULL.
28751
287522014-05-14  Dodji Seketeli <dodji@redhat.com>
28753
28754	Fix a typo in serializing a decl_base::binding
28755	* src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)):
28756	Fix a typo here.
28757
287582014-05-14  Dodji Seketeli <dodji@redhat.com>
28759
28760	Add a help string for the --no-absolute-path option of bisym
28761	* tools/bisym.cc (show_help): Add a missing help string.
28762
287632014-05-13  Dodji Seketeli <dodji@redhat.com>
28764
28765	Do not try to use ELF hash tables in demangling lookup mode
28766	* src/abg-dwarf-reader.cc (lookup_symbol_from_elf): If in
28767	demangling mode, do not use ELF hash tables.
28768
287692014-05-13  Dodji Seketeli <dodji@redhat.com>
28770
28771	Use the proper symbol table for  and set linkage_name to symbol name
28772	* src/abg-dwarf-reader.cc (find_symbol_table_section): Return the
28773	.symtab if we are looking at an executable or relocatable file and
28774	.dynsym if we are looking at a DSO.
28775	(find_symbol_table_section_index): Likewise.  Implement this in
28776	terms of find_symbol_table_section.
28777	(build_{function,var}_decl): Set the linkage_name to the symbol
28778	name, if the symbol name is not empty.
28779	* tests/data/test-diff-filter/test9-report.txt: Adjust.
28780
287812014-05-13  Dodji Seketeli <dodji@redhat.com>
28782
28783	Remove redundant "'" around linkage names in diff reports
28784	* src/abg-comparison.cc (corpus_diff::report): Remove the
28785	redundant "'" from the linkage names in the diff.
28786
287872014-05-08  Dodji Seketeli <dodji@redhat.com>
28788
28789	Initial support for elf symbol (versionning) during decl comparison
28790	* include/abg-fwd.h (get_linkage_name): Remove.
28791	* include/abg-dwarf-reader.h (enum symbol_type)
28792	(enum symbol_binding): Move these into abg-ir.h.
28793	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
28794	Adjust.
28795	* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
28796	Declare this before using it.
28797	(die_address_attribute, die_location_address)
28798	(stt_to_elf_symbol_type, stb_to_elf_symbol_binding)
28799	(find_hash_table_section_index, find_symbol_table_section)
28800	(find_symbol_table_section_index, find_text_section)
28801	(find_bss_section, compare_symbol_name)
28802	(get_symbol_versionning_sections get_version_for_symbol)
28803	(lookup_symbol_from_sysv_hash_tab)
28804	(lookup_symbol_from_gnu_hash_tab, get_elf_class_size_in_bytes)
28805	(bloom_word_at, setup_gnu_ht, lookup_symbol_from_elf_hash_tab)
28806	(lookup_symbol_from_symtab, maybe_adjust_fn_sym_address)
28807	(maybe_adjust_var_sym_address): New static functions.
28808	(enum hash_table_kind): New enum.
28809	(struct gnu_ht): New struct.
28810	(read_context::var_decls_to_add_): Renamed var_decls_to_add into
28811	this.
28812	(read_context::{fun, var}_sym_addr_sym_index_map_): New member.
28813	(read_context::{lookup_symbol_from_elf,
28814	lookup_elf_symbol_from_index, lookup_elf_fn_symbol_from_address,
28815	lookup_elf_var_symbol_from_address, fun_sym_addr_sym_index_map,
28816	var_sym_addr_sym_index_map, load_symbol_addr_to_index_maps,
28817	get_function_address, get_variable_address}): New member
28818	functions.
28819	(read_context::lookup_public_{variable,
28820	function}_symbol_from_elf): Adjust.
28821	(op_pushes_constant_value): Fix a bug here.
28822	(lookup_symbol_from_elf): Adjust.  Support cases where there is no
28823	elf hash table, e.g, for relocatable files.
28824	(lookup_public_function_symbol_from_elf)
28825	(lookup_public_variable_symbol_from_elf): Adjust.
28826	(build_var_decl): Allow updating the var_decl to associate it with
28827	its underlying symbol.  In that case, if the linkage name is not
28828	set, set it to the symbol name.
28829	(build_function_decl): Likewise for function_decl.
28830	(operator<<(std::ostream&, symbol_type)):
28831	(operator<<(std::ostream&, symbol_binding)): Move these do
28832	abg-ir.cc.
28833	* include/abg-ir.h (class elf_symbol): Declare new class.  Move
28834	enum symbol_binding and enum symbol_type (from abg-dwarf-reader.h) to
28835	elf_symbol::binding and elf_symbol::type here.
28836	(operator<<(std::ostream&, elf_symbol::type))
28837	(operator<<(std::ostream&, elf_symbol::binding))
28838	(operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New
28839	operators.
28840	(class elf_symbol::version): Declare new class.
28841	(class var_decl): Make this pimpl, and add ...
28842	(var_decl::{g,s}et_symbol): ... new member functions.
28843	(class function_decl): Likewise, make this pimpl and add ...
28844	(function_decl::{g,s}et_symbol): ... new member functions.
28845	* src/abg-ir.cc (struct elf_symbol, elf_symbol::priv): New
28846	types.
28847	(elf_symbol::*): Lots of new members and member functions.
28848	(operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New.
28849	(operator<<(std::ostream&, elf_symbol::type)): New.
28850	(operator<<(std::ostream&, elf_symbol::binding)): New.
28851	(elf_symbol::version::priv): New type.
28852	(elf_symbol::version::*): Lots of member functions.
28853	(get_linkage_name): Removed.
28854	(var_decl::priv): New type.  Pimplify the thing.
28855	(var_decl::{s,g}et_symbol): New.
28856	(var_decl::operator==): Take symbols in account in the comparison.
28857	(function_decl::priv): New type.
28858	(function_decl::*): Pimplify.
28859	(function_decl::{s,g}et_symbol): New.
28860	(function_decl::operator==): Take symbols in account in the
28861	comparison.
28862	* include/abg-comparison.h (diff_context::show_linkage_name): New
28863	member function.
28864	* src/abg-comparison.cc (diff_context::priv::show_linkage_name_):
28865	New member.
28866	(diff_context::priv::priv): Initialize it.
28867	(diff_context::show_linkage_names): New member function.
28868	(corpus_diff::report): If the user used --show-linkage-names,
28869	display the linkage name after the name of the functions.  Add
28870	missing "'" in the some spots.
28871	* tools/bidiff.cc (options.show_linkage_names): New member.
28872	(display_usage, parse_command_line): Support --linkage-names.
28873	* tools/bisym.cc (show_help): Add '\n' at the end of help string
28874	for --demangle.  Add --no-absolute-path option.
28875	(parse_command_line): Support --no-absolute-path.
28876	(main): Adjust for symbol (versionning) support.  Consider that
28877	the program successfully completed even when the symbol wasn't
28878	found.  Support --no-absolute-path.
28879	* tests/data/test-lookup-syms/test0-report.txt: New.
28880	* tests/data/test-lookup-syms/test01-report.txt: New.
28881	* tests/data/test-lookup-syms/test02-report.txt: New.
28882	* tests/data/test-read-dwarf/test0.abi: Adjust.
28883	* tests/data/test-read-dwarf/test1.abi: Adjust.
28884	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
28885	* tests/data/test-diff-filter/test10-report.txt: Adjust.
28886	* tests/data/test-diff-filter/test12-report.txt: Adjust.
28887	* tests/data/test-lookup-syms/test1-[123]-report.txt: New.
28888	* tests/data/test-lookup-syms/test1.c: New.
28889	* tests/data/test-lookup-syms/test1.version-script: New.
28890	* tests/test-lookup-syms.cc: Adjust for new tests.
28891	* test/Makefile.am: Adjust makefile.
28892
288932014-05-07  Dodji Seketeli <dodji@redhat.com>
28894
28895	Rename decl_base::get_mangled_name into decl_base::get_linkage_name
28896	* include/abg-ir.h (decl_base::get_linkage_name): Renamed
28897	decl_base::get_mangled_name into this.
28898	* src/abg-comparison.cc
28899	(class_diff::ensure_lookup_tables_populated)
28900	(function_decl_diff::report, type_decl_diff::report)
28901	(corpus_diff::priv::ensure_lookup_tables_populated)
28902	(corpus_diff::report, compute_diff): Adjust.
28903	* src/abg-corpus.cc ({var_comp, func_comp}::operator()): Likewise.
28904	(corpus::priv::build_symbol_table): Likewise.
28905	* src/abg-dwarf-reader.cc (die_linkage_name): Renamed
28906	die_mangled_name into this.
28907	(die_loc_and_name, build_translation_unit_and_add_to_ir)
28908	(build_namespace_decl_and_add_to_ir, build_type_decl)
28909	(build_enum_type, build_class_type_and_add_to_ir)
28910	(build_typedef_type, build_var_decl, build_function_decl, ): Adjust.
28911	* src/abg-hash.cc (decl_base::hash::operator()): Likewise.
28912	* src/abg-ir.cc (decl_base::priv::linkage_name_): Renamed
28913	decl_base::priv::mangled_name_ into this.
28914	(decl_base::priv::priv, decl_base::{decl_base, operator==})
28915	(get_linkage_name, typedef_decl::typedef_decl, var_decl::var_decl)
28916	(function_decl::function_decl, class_decl::base_spec::base_spec)
28917	(class_decl::method_decl::method_decl): Adjust.
28918	(decl_base::{g,s}et_linkage_name): Renamed
28919	decl_base::{g,s}et_mangled_name into this.
28920	* src/abg-writer.cc (write_decl, write_typedef_decl)
28921	(write_var_decl, write_function_decl, dump): Adjust.
28922
289232014-04-21  Dodji Seketeli <dodji@redhat.com>
28924
28925	Drop symbols not global in a symtab from corpus symtab
28926	* src/abg-corpus.cc (corpus_priv::build_symbol_table): If a
28927	function or variable symbol is not public (global or weak) and
28928	present in an elf symbol table, drop it from the corpus symbol
28929	table.  As a result functions are variables (not present in the
28930	elf symbol tables) that we were previously taking in account are
28931	not dropped on the floor, leading to much less noise.
28932	* tests/data/test-diff-dwarf/test0-v0.cc: Update to avoid
28933	generating inline functions.
28934	* tests/data/test-diff-dwarf/test0-v0.o: Likewise.
28935	* tests/data/test-diff-dwarf/test0-v1.cc: Likewise.
28936	* tests/data/test-diff-dwarf/test0-v1.o: Likewise.
28937	* tests/data/test-diff-dwarf/test7-v0.o: Likewise.
28938	* tests/data/test-diff-dwarf/test7-v1.cc: Likewise.
28939	* tests/data/test-diff-dwarf/test7-v1.o: Likewise.
28940	* tests/data/test-diff-dwarf/test8-v0.cc: Likewise.
28941	* tests/data/test-diff-dwarf/test8-v0.o: Likewise.
28942	* tests/data/test-diff-dwarf/test8-v1.cc: Likewise.
28943	* tests/data/test-diff-dwarf/test8-v1.o: Likewise.
28944	* tests/data/test-diff-filter/test0-v0.cc: Likewise.
28945	* tests/data/test-diff-filter/test0-v0.o: Likewise.
28946	* tests/data/test-diff-filter/test0-v1.cc: Likewise.
28947	* tests/data/test-diff-filter/test0-v1.o: Likewise.
28948	* tests/data/test-diff-filter/test10-v0.cc: Likewise.
28949	* tests/data/test-diff-filter/test10-v0.o: Likewise.
28950	* tests/data/test-diff-filter/test10-report.txt: Likewise.
28951	* tests/data/test-diff-filter/test10-v1.o: Likewise.
28952	* tests/data/test-diff-filter/test13-v0.cc: Likewise.
28953	* tests/data/test-diff-filter/test13-v0.o: Likewise.
28954	* tests/data/test-diff-filter/test13-v1.cc: Likewise.
28955	* tests/data/test-diff-filter/test13-v1.o: Likewise.
28956	* tests/data/test-diff-filter/test2-v0.cc: Likewise.
28957	* tests/data/test-diff-filter/test2-v0.o: Likewise.
28958	* tests/data/test-diff-filter/test2-v1.cc: Likewise.
28959	* tests/data/test-diff-filter/test2-v1.o: Likewise.
28960	* tests/data/test-diff-filter/test4-v0.cc: Likewise.
28961	* tests/data/test-diff-filter/test4-v0.o: Likewise.
28962	* tests/data/test-diff-filter/test4-v1.cc: Likewise.
28963	* tests/data/test-diff-filter/test4-v1.o: Likewise.
28964	* tests/data/test-diff-filter/test9-v0.o: Likewise.
28965	* tests/data/test-diff-filter/test9-v1.cc: Likewise.
28966	* tests/data/test-diff-filter/test9-v1.o: Likewise.
28967
289682014-04-21  Dodji Seketeli <dodji@redhat.com>
28969
28970	Fix mangled name setting for static data members from DWARF
28971	* src/abg-dwarf-reader.cc (build_var_decl): Support adding
28972	properties to an existing var_decl.  For now just add mangled
28973	name.
28974	(build_ir_node_from_die): Accept DW_TAG_member too.  This helps
28975	for when this function is used to add additional properties to an
28976	existing DW_TAG_member representing a static data member.  Then,
28977	use build_var_decl to really add the value of the additional
28978	mangled name property.
28979
289802014-04-21  Dodji Seketeli <dodji@redhat.com>
28981
28982	Always show pretty representation of variables in report
28983	* src/abg-comparison.cc (corpus_diff::report): Display the pretty
28984	representation of the variable, no matter what.
28985
289862014-04-21  Dodji Seketeli <dodji@redhat.com>
28987
28988	Set "is_in_public_symbol_table" property for vars & fns
28989	* src/abg-dwarf-reader.cc (build_var_decl, build_function_decl):
28990	Set the "is_in_public_symbol_table" property for the variable or
28991	function decl.
28992
289932014-04-21  Dodji Seketeli <dodji@redhat.com>
28994
28995	Support symbol lookups from ELF
28996	* include/abg-dwarf-reader.h (symbol_type, symbol_binding): New
28997	enums.
28998	(operator<<): Declare new overloads for the new enums above.
28999	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
29000	Declare new entry points.
29001	* src/abg-dwarf-reader.cc (lookup_symbol_from_elf)
29002	(lookup_public_function_symbol_from_elf)
29003	(lookup_public_variable_symbol_from_elf): Define new static
29004	functions.
29005	(read_context::elf_{module_, handle}_): New data members.
29006	(read_context::{elf_module, elf_handle}): New accessors.
29007	(read_context::load_debug_info): Store the elf module into
29008	read_context::_elf_module_.  Adjust.
29009	(read_context::{lookup_symbol_from_elf,
29010	lookup_public_function_symbol_from_elf,
29011	lookup_public_variable_symbol_from_elf}): New member functions.
29012	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf)
29013	(operator<<): Define public entry points.
29014	* tools/bisym.cc: New tool to lookup a symbol in an elf file.
29015	* tools/Makefile.am: Add the bisym.cc source file to the
29016	distribution and arrange to compile it into a 'bisym' executable.
29017	* tests/test-lookup-syms.cc: New test harness.
29018	* tests/data/test-lookup-syms/test0-report.txt: New test input
29019	for the harness above.
29020	* tests/data/test-lookup-syms/test0.cc: Likewise.
29021	* tests/data/test-lookup-syms/test0.o: Likewise
29022	* tests/data/test-lookup-syms/test01-report.txt: Likewise.
29023	* tests/data/test-lookup-syms/test02-report.txt: Likewise.
29024	* tests/Makefile.am: Build the new runtestlookupsyms test and add
29025	the new files to the distribution.
29026
290272014-04-21  Dodji Seketeli <dodji@redhat.com>
29028
29029	Add corpus::{s,g}et_origin accessors
29030	* include/abg-corpus.h (enum corpus::origin): New enum.
29031	(corpus::{g,s}et_origin): New accessors.
29032	* src/abg-corpus.cc (corpus::priv::origin): New data member.
29033	(corpus::priv::is_symbol_table_built): Move this up.
29034	(corpus::priv::priv): Adjust.
29035	(corpus::{g,s}et_origin): Define accessors.
29036	* src/abg-dwarf-reader.cc (read_corpus_from_elf): Set the corpus
29037	origin.  Also set the path.  Oops.
29038	* src/abg-reader.cc (read_corpus_from_input)
29039	(read_corpus_from_archive): Set the corpus origin.
29040
290412014-04-21  Dodji Seketeli <dodji@redhat.com>
29042
29043	Add a get_linkage_name function.
29044	* include/abg-fwd.h (is_at_global_scope): Declare a new overload.
29045	(get_linkage_name): Declare ...
29046	* src/abg-ir.cc (get_linkage_name): ... these new entry points.
29047	(is_at_global_scope): Define these new overloads useful for the
29048	new get_linkage_name.
29049
290502014-04-21  Dodji Seketeli <dodji@redhat.com>
29051
29052	Pimplify decl_base and add decl_base::{s,g}et_is_in_public_symbol_table
29053	* include/abg-ir.h (struct decl_base::priv): New pimpl type.
29054	(decl_base::priv_): New pimpl.
29055	(decl_base::{hashing_started, peek_hash_value,
29056	peek_qualified_name, set_qualified_name}): Declare new protected
29057	methods.
29058	(decl_base::{get_context_rel, set_qualified_name, get_location,
29059	set_location, set_name, set_mangled_name, get_visibility,
29060	set_visibility}): Move these out-of-line.
29061	(decl_base::{g,s}et_is_public_symbol_table):
29062	(class_decl::hashing_started): Remove this as we now have
29063	decl_base::hashing_started.
29064	(decl_base::{hash_, hashing_started, location_, context_, name_,
29065	qualified_parent_name_, qualified_name_, mangled_name_,
29066	visibility_}): Move all these members into the new ...
29067	* src/abg-ir.cc (struct decl_base::priv): ... pimpl type.
29068	(decl_base::decl_base): Move these out-of-line here.  Adjust the
29069	other overloads.
29070	(decl_base::{hashing_started, peek_hash_value,
29071	peek_qualified_name, set_qualified_name}): Define these new
29072	protected methods.
29073	(decl_base::{get_context_rel, set_context_rel, get_location,
29074	set_location, set_name, get_mangled_name, set_mangled_name,
29075	get_visibility, set_visibility}): Define these out-of-line here.
29076	(decl_base::{get_hash, set_hash, get_scope,
29077	get_qualified_parent_name, get_qualified_name, operator==,
29078	set_scope}): Adjust.
29079	(qualified_type_def::get_qualified_name): Likewise.
29080	(pointer_type_def::get_qualified_name): Likewise.
29081	(reference_type_def::get_qualified_name): Likewise.
29082	(var_decl::set_scope): Likewise.
29083	(class_decl::base_spec): Likewise.
29084	(class_decl::method_decl::set_scope): Likewise.
29085	(decl_base::{g,s}et_is_in_public_symbol_table): Define new accessors.
29086	* src/abg-hash.cc ({decl_base, type_decl, scope_decl,
29087	scope_type_decl, qualified_type_def, pointer_type_def,
29088	reference_type_def, enum_type_decl, typedef_decl, var_decl,
29089	class_decl}::hash::operator): Adjust.
29090
290912014-04-17  Dodji Seketeli <dodji@redhat.com>
29092
29093	Categorize base class changes as SIZE_OR_OFFSET_CHANGE_CATEGORY
29094	* include/abg-comparison.h (class_diff::{deleted, inserted,
29095	changed}_bases): Declare new member functions ...
29096	* src/abg-comparison.cc ((class_diff::{deleted, inserted,
29097	changed}_bases)): ... and define them.
29098	* src/abg-comp-filter.cc (base_classes_added_or_removed): Define
29099	new static functions.
29100	(harmless_filter): Categorize base classes added or removed.
29101	* tests/data/test-diff-dwarf/test8-report.txt: New test input.
29102	* tests/data/test-diff-dwarf/test8-v0.cc: Likewise.
29103	* tests/data/test-diff-dwarf/test8-v0.o: Likewise.
29104	* tests/data/test-diff-dwarf/test8-v1.cc: Likewise.
29105	* tests/data/test-diff-dwarf/test8-v1.o: Likewise.
29106	* tests/data/test-diff-filter/test13-report.txt: New test input.
29107	* tests/data/test-diff-filter/test13-v0.cc: Likewise.
29108	* tests/data/test-diff-filter/test13-v0.o: Likewise.
29109	* tests/data/test-diff-filter/test13-v1.cc: Likewise.
29110	* tests/data/test-diff-filter/test13-v1.o: Likewise.
29111	* tests/Makefile.am: Add the new files above to the source distribution.
29112	* tests/test-diff-dwarf.cc: Use the new relevant input above to
29113	run more tests.
29114	* tests/test-diff-filter.cc: Likewise.
29115
291162014-04-17  Dodji Seketeli <dodji@redhat.com>
29117
29118	Fix class diff reporting issues for base classes
29119	* src/abg-comparison.cc (class_diff::report): For base classes,
29120	report their pretty representation.  Do not try to report a the
29121	diff of a changed base class that got filtered out.  Avoid
29122	emitting too many vertical white spaces.
29123
291242014-04-17  Dodji Seketeli <dodji@redhat.com>
29125
29126	Simplify SIZE_OR_OFFSET_CHANGE_CATEGORY categorizing
29127	* src/abg-comp-filter.cc (harmful_filter::visit): Now that
29128	type_size_changed is correctly geared to not be fulled by
29129	decl-only classes, there is no need for its caller to handle that
29130	case.  And data_member_offset_changed ain't affected by decl-only
29131	classes anyway.  So the code is now much simpler.
29132
291332014-04-17  Dodji Seketeli <dodji@redhat.com>
29134
29135	Fix API doc for static_data_member_type_size_changed
29136	* src/abg-comp-filter.cc (static_data_member_type_size_changed):
29137	Fix API doc comment.
29138
291392014-04-17  Dodji Seketeli <dodji@redhat.com>
29140
29141	Don't blindly drop DIEs defined in the scope of a function
29142	* src/abg-dwarf-reader.cc (get_scope_for_die): Do not drop a DIE
29143	on the floor just because it is in the scope of a function.  We
29144	were dropping a function parameter because its type is a typedef
29145	defined right before the parameter, in the scope of the function.
29146	Urgh.  So with this change, that function parameter is not dropped
29147	anymore.  I have seen that happening in a DWARF generated by GCC
29148	4.7.1 on libstdc++.so.  Hard to come up with a regression test
29149	case for this one.
29150
291512014-04-17  Dodji Seketeli <dodji@redhat.com>
29152
29153	Useless code killing
29154	* src/abg-comparison.cc (decls_equal::operator()(const decls_type,
29155	const decls_type)): Kill dead code.  Note that there is a proper
29156	equality operator for decl_base_sptr already.
29157
291582014-04-17  Dodji Seketeli <dodji@redhat.com>
29159
29160	File static data member changes in STATIC_DATA_MEMBER_CHANGE_CATEGORY
29161	* include/abg-comparison.h
29162	(diff_category::STATIC_DATA_MEMBER_CHANGE_CATEGORY): New category.
29163	(diff_category::EVERYTHING_CATEGORY): Update
29164	* src/abg-comp-filter.cc (static_data_member_type_size_changed)
29165	(static_data_member_added_or_removed): Define new static
29166	functions.
29167	(harmless_filter::visit): Categorize changes to static data
29168	members as STATIC_DATA_MEMBER_CHANGE_CATEGORY.
29169	* tools/bidiff.cc (set_diff_context_from_opts):
29170	STATIC_DATA_MEMBER_CHANGE_CATEGORY is falls into the harmless
29171	group.
29172	* tests/data/test-diff-filter/test12-report.txt: New test input.
29173	* tests/data/test-diff-filter/test12-v0.cc: Likewise.
29174	* tests/data/test-diff-filter/test12-v0.o: Likewise.
29175	* tests/data/test-diff-filter/test12-v1.cc: Likewise.
29176	* tests/data/test-diff-filter/test12-v1.o: Likewise.
29177	* tools/bidiff.cc: Run this test with the additional input data
29178	above.
29179	* tests/Makefile.am: Adjust.
29180
291812014-04-17  Dodji Seketeli <dodji@redhat.com>
29182
29183	Fix typo in comments
29184	* include/abg-comparison.h
29185	(diff_category::NON_VIRT_MEM_FUN_CHANGE_CATEGORY): Fix typo in
29186	comments.
29187
291882014-04-17  Dodji Seketeli <dodji@redhat.com>
29189
29190	Only non-static data member changes are SIZE_OR_OFFSET_CHANGE_CATEGORY
29191	* src/abg-comp-filter.cc
29192	(non_static_data_member_type_size_changed): Renamed
29193	data_member_offset_changed into this.  Make sure the test detects
29194	changes on *non-static* data members only.
29195	(non_static_data_member_added_or_removed): Likewise for
29196	data_member_offset_changed that got renamed into this.
29197	(harmful_filter::visit): Adjust.
29198
291992014-04-17  Dodji Seketeli <dodji@redhat.com>
29200
29201	Fix comments in categorization code
29202	* src/abg-comp-filter.cc (data_member_added_or_removed): Fix
29203	comments.
29204
292052014-04-16  Dodji Seketeli <dodji@redhat.com>
29206
29207	Really detect static-ness of data members.  Oops.
29208	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Let's
29209	consider that a data member being not laid out (i.e, not having a
29210	data_member_location) is is a static data member.  Otherwise, we
29211	were not detecting static data members at all.  Well we were only
29212	inferring their presence from seeing the static variable
29213	definition later on.  That means we were missing most of the
29214	static variables.  Woops.
29215	* src/abg-comparison.cc
29216	(corpus_diff::priv::ensure_lookup_tables_populated): Now that we
29217	are really seeing static data members, let's be prepare to the
29218	fact that we can the same static data member being declared
29219	several times in a corpus.
29220	* tests/data/test-diff-dwarf/test7-report.txt: New test input file.
29221	* tests/data/test-diff-dwarf/test7-v0.cc: Likewise.
29222	* tests/data/test-diff-dwarf/test7-v0.o: Likewise.
29223	* tests/data/test-diff-dwarf/test7-v1.cc: Likewise.
29224	* tests/data/test-diff-dwarf/test7-v1.o: Likewise.
29225	* tests/test-diff-dwarf.cc: Update this to consume the new test
29226	input files.
29227	* tests/Makefile.am: Update this to add the missing test files to
29228	the source distribution.
29229
292302014-04-16  Dodji Seketeli <dodji@redhat.com>
29231
29232	Add dumping routines for declaration location
29233	* include/abg-fwd.h (get_global_scope()): New overload for const
29234	decl_base&.  Move the other overloads up in the file.
29235	(get_translation_unit): Add an overload for decl_base&.  Constify
29236	the others.
29237	(dump_decl_location): Declare new functions.
29238	* src/abg-ir.cc (get_global_scope): Define the overload for const
29239	decl_base&.  Write the other overloads in terms of this one.
29240	(get_translation_unit): Likewise, define the overload for const
29241	decl_base&.  Write the other overloads in terms of this one.
29242	(dump_decl_location): Define these new overloads.
29243
292442014-04-16  Dodji Seketeli <dodji@redhat.com>
29245
29246	Fix dumping function to make them use generic ostream
29247	* src/abg-writer.cc (dump(const decl_base_sptr, std::ostream&)):
29248	Do not dump the content to cerr here.  Rather dump to the output
29249	stream given in parameter.  Oops.
29250	(dump(const translation_unit&, std::ostream&)): Likewise.
29251
292522014-04-16  Dodji Seketeli <dodji@redhat.com>
29253
29254	Misc style fixes
29255	* src/abg-ir.cc (get_translation_unit): Remove useless vertical
29256	white space.
29257	(is_global_scope): Add missing API doc.
29258
292592014-04-16  Dodji Seketeli <dodji@redhat.com>
29260
29261	A virt mem fn deleted and added to the same offset is not harmful
29262	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): A virtual
29263	member that gets deleted and added back again to the same vtable
29264	offset is not considered as being a virtual member function change
29265	suitable for VIRTUAL_MEMBER_CHANGE_CATEGORY.  Likewise for a
29266	function sub-type change not involving a change in the vtable
29267	offset.
29268
292692014-04-16  Dodji Seketeli <dodji@redhat.com>
29270
29271	Do not categorize size/offset changes when a decl-only class is involved
29272	* src/abg-comp-filter.cc (there_is_a_decl_only_class)
29273	(diff_involves_decl_only_class): New static functions.
29274	(type_size_changed, data_member_added_or_removed)
29275	(has_virtual_mem_fn_change, has_non_virtual_mem_fn_change): Bail
29276	out if one of the types involved is a decl-only class.
29277
292782014-04-16  Dodji Seketeli <dodji@redhat.com>
29279
29280	Work around "mangled name vanishing from one version of mem fn decl" bug
29281	* src/abg-comparison.cc
29282	(class_diff::ensure_lookup_tables_populated): If the first version
29283	of the member function decl doesn't have a mangled name while the
29284	second has it, try the lookups using the pretty representation of
29285	the function.
29286
292872014-04-16  Dodji Seketeli <dodji@redhat.com>
29288
29289	Do not try to represent the offset for a static data member
29290	* src/abg-comparison.cc (represent_data_member(var_decl_sptr,
29291	ostream&)): If the data member is static, do not try to represent
29292	its offset.
29293
292942014-04-16  Dodji Seketeli <dodji@redhat.com>
29295
29296	A static data member shouldn't be checked for having been laid out
29297	* src/abg-comparison.cc (represent_data_member(var_decl_sptr,
29298	ostream&)): If the data member is static do not check for it
29299	having been laid out.
29300
293012014-04-16  Dodji Seketeli <dodji@redhat.com>
29302
29303	Prefix pretty representation of static data members with 'static'
29304	* src/abg-ir.cc (var_decl::get_pretty_representation): Prefix
29305	pretty representation of static data members with 'static'.
29306
293072014-04-16  Dodji Seketeli <dodji@redhat.com>
29308
29309	Provide a robust way of getting the size of a qualified type
29310	* include/abg-ir.h (qualified_type_def::get_size_in_bits): Declare
29311	new member function ...
29312	* src/abg-ir.cc (qualified_type_def::get_size_in_bits): ... and
29313	define it.  Keep in mind that some times the size of the
29314	underlying type can change between the moment the qualified type
29315	is created and the end of its life time.  That is because a
29316	subsequent DIE (from DWARF) can alter the size of the underlying
29317	type.  This overload allows the user to always query the size of
29318	the underlying type and keep the size of the qualified type in
29319	sync with it.
29320
293212014-04-16  Dodji Seketeli <dodji@redhat.com>
29322
29323	Add an assert to the pointer diff reporting code
29324	* src/abg-comparison.cc (pointer_diff::report): If the pointer
29325	diff node is deemed to be reported then the underlying diff node
29326	should be reported as well.
29327
293282014-04-16  Dodji Seketeli <dodji@redhat.com>
29329
29330	Little style adjustment in diff node categorization code
29331	* src/abg-comp-filter.cc (harmful_filter::visit): Factorize the
29332	categorization into SIZE_OR_OFFSET_CHANGE_CATEGORY for data member
29333	adding or removal and for data member type size change.
29334
293352014-04-15  Dodji Seketeli <dodji@redhat.com>
29336
29337	If a diff node is in NO_CHANGE_CATEGORY do not report it anymore
29338	* src/abg-comparison.cc (diff::is_filtered_out): Now that we seem
29339	to be flagging every changes to a class into a category, we do not
29340	need to dive into reporting a diff not that is categorized as
29341	NO_CHANGE_CATEGORY anymore.  So let's have the implementation that
29342	one would expect for this function.
29343
293442014-04-15  Dodji Seketeli <dodji@redhat.com>
29345
29346	Categorize changes to virt mem fncts as VIRTUAL_MEMBER_CHANGE_CATEGORY
29347	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): New static
29348	function.
29349	(harmful_filter): Categorize changes to virtual member functions
29350	into VIRTUAL_MEMBER_CHANGE_CATEGORY.
29351	* src/abg-comparison.cc
29352	(class_diff::priv::count_filtered_changed_dm): Move this up, right
29353	after class_diff::priv::count_filtered_subtype_changed_dm.
29354	(SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED): New macro.
29355	(class_diff::priv::count_filtered_{changed, inserted,
29356	deleted}_mem_fns): Modify these to properly take member function
29357	virtual-ness in account.
29358
293592014-04-15  Dodji Seketeli <dodji@redhat.com>
29360
29361	Do not hash non-virtual member functions when hashing a class
29362	* src/abg-hash.cc (class_decl::hash::operator): Do not hash
29363	non-virtual member functions.
29364
293652014-04-15  Dodji Seketeli <dodji@redhat.com>
29366
29367	Fix a missing new line in the reports
29368	* src/abg-comparison.cc (represent(class_decl::method_decl_sptr,
29369	ostream&)): Add a missing new line.
29370	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
29371
293722014-04-14  Dodji Seketeli <dodji@redhat.com>
29373
29374	Add more pretty printing facilities
29375	* include/abg-comparison.h (get_pretty_representation(diff*)):
29376	Declare new function.
29377	* include/abg-fwd.h (get_pretty_representation): Declare functions
29378	for decl_base*, type_base*, decl_base_sptr and type_base_sptr.
29379	* src/abg-comparison.cc (get_pretty_representation): Implement
29380	this for diff*.
29381	* src/abg-ir.cc (get_pretty_representation): Define
29382	implementations for decl_base*, type_base*, decl_base_sptr and
29383	type_base_sptr.
29384
293852014-04-14  Dodji Seketeli <dodji@redhat.com>
29386
29387	Don't compare non-virtual member functions in class comparison
29388	* src/abg-comparison.cc
29389	(class_diff::ensure_lookup_tables_populated): Use the virtual
29390	member functions here, not the member functions in general.
29391	(compute_diff): Consider virtual member functions only, not
29392	non-virtual ones.
29393	* src/abg-ir.cc (class_decl::operator==): Do not compare
29394	non-virtual member functions.  Only compare virtual member
29395	functions.
29396	* tests/data/test-bidiff/test-struct1-report.txt: New test input.
29397	* tests/data/test-diff-dwarf/test0-report.txt: New test input.
29398	* tests/data/test-diff-filter/test0-report.txt: New test input.
29399	* tests/data/test-diff-filter/test01-report.txt: New test input.
29400	* tests/data/test-diff-filter/test10-report.txt: New test input.
29401	* tests/data/test-diff-filter/test11-report.txt: New test input.
29402	* tests/data/test-diff-filter/test2-report.txt: New test input.
29403	* tests/data/test-diff-filter/test9-report.txt: New test input.
29404
294052014-04-14  Dodji Seketeli <dodji@redhat.com>
29406
29407	Recognize virtual member functions better and store them appart
29408	* include/abg-fwd.h (set_member_function_is_virtual): Declare new
29409	function.
29410	* include/abg-ir.h (class class_decl): Declare
29411	set_member_function_is_virtual and member_function_is_virtual as
29412	friends of class_decl.
29413	(class_decl::add_member_function): Take an is_virtual flag.
29414	(class_decl::get_num_virtual_functions): Remove.
29415	(class_decl::get_virtual_mem_fns): New member function.
29416	(mem_fn_context_rel::is_virtual_): New member.
29417	(mem_fn_context_rel::mem_fn_context_rel): Adjust to initialize the
29418	new is_virtual_ member.
29419	(mem_fn_context_rel::is_virtual): New member functions.
29420	* src/abg-comparison.cc (represent): Adjust.
29421	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Adjust.
29422	* src/abg-ir.cc (member_function_is_virtual): Change this to use
29423	mem_fn_context_rel::is_virtual.
29424	(set_member_function_is_virtual): Define this new function.
29425	(class_decl::priv::virtual_mem_fns_): New member to hold virtual
29426	member functions.
29427	(class_decl::get_virtual_mem_fns): Implement this member function.
29428	(class_decl::get_num_virtual_functions): Remove.
29429	(class_decl::add_member_function): Take a new is_virtual flag.
29430	Add virtual member functions to
29431	class_decl::priv::virtual_mem_fns_.
29432	* src/abg-reader.cc (build_class_decl): Adjust.
29433
294342014-04-13  Dodji Seketeli <dodji@redhat.com>
29435
29436	Filter non-virtual member fns insertions/deletions from class changes
29437	* include/abg-fwd.h (member_function_is_virtual): Declare new
29438	function.
29439	* include/abg-comparison.h
29440	(diff_category::{NON_VIRT_MEM_FUN_CHANGE_CATEGORY,
29441	VIRTUAL_MEMBER_CHANGE_CATEGORY}): New enumerators.
29442	(diff_category::EVERYTHING_CATEGORY): Adjust.
29443	(class_diff::{changed, deleted, inserted}_member_fns): Declare new
29444	member functions.
29445	* src/abg-comp-filter.cc (data_member_added_or_removed): Add
29446	missing comments.
29447	(has_non_virtual_mem_fn_change): New static predicate function.
29448	(harmless_filter::visit): Categorize non-virtual member function
29449	changes in a diff into NON_VIRT_MEM_FUN_CHANGE_CATEGORY.
29450	* src/abg-comparison.cc
29451	(TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macro.
29452	(report_mem_header): Count filtered functions for added/deleted
29453	functions as well.
29454	(class_diff::priv::count_filtered_changed_mem_fns): Renamed
29455	priv::count_filtered_member_functions into this.  Filter out
29456	changes to non-virtual member functions here.
29457	(class_diff::priv::count_filtered_{inserted, deleted}_mem_fns):
29458	New member functions.
29459	(class_diff::{deleted, inserted, changed}_member_fns): Define new
29460	member functions.
29461	(class_diff::report): Adjust count for filtered inserted/deleted
29462	member functions.  Do not report NON_VIRT_MEM_FUN_CHANGE_CATEGORY
29463	if it's disallowed.
29464	(class_diff::traverse): Propagate only
29465	VIRTUAL_MEMBER_CHANGE_CATEGORY from member functions to their
29466	enclosing class.
29467	* src/abg-ir.cc (member_function_is_virtual): Define new
29468	functions.
29469	* tools/bidiff.cc (set_diff_context_from_opts): Adjust to add
29470	NON_VIRT_MEM_FUN_CHANGE_CATEGORY into the harmless group and
29471	VIRTUAL_MEMBER_CHANGE_CATEGORY into the harmful one.
29472	* tests/data/test-diff-filter/test0-report.txt: New test input.
29473	* tests/data/test-diff-filter/test10-report.txt: Likewise.
29474	* tests/data/test-diff-filter/test10-v0.cc: Likewise.
29475	* tests/data/test-diff-filter/test10-v0.o: Likewise.
29476	* tests/data/test-diff-filter/test10-v1.cc: Likewise.
29477	* tests/data/test-diff-filter/test10-v1.o: Likewise.
29478	* tests/data/test-diff-filter/test11-report.txt: Likewise.
29479	* tests/data/test-diff-filter/test11-v0.cc: Likewise.
29480	* tests/data/test-diff-filter/test11-v0.o: Likewise.
29481	* tests/data/test-diff-filter/test11-v1.cc: Likewise.
29482	* tests/data/test-diff-filter/test11-v1.o: Likewise.
29483	* tests/data/test-diff-filter/test2-report.txt: Likewise.
29484	* tests/data/test-diff-filter/test9-report.txt: Likewise.
29485	* tests/data/test-diff-filter/test9-v0.cc: Likewise.
29486	* tests/data/test-diff-filter/test9-v0.o: Likewise.
29487	* tests/data/test-diff-filter/test9-v1.cc: Likewise.
29488	* tests/data/test-diff-filter/test9-v1.o: Likewise.
29489	* tests/test-diff-filter.cc: Consume the test input above to run
29490	more tests.
29491
294922014-04-13  Dodji Seketeli <dodji@redhat.com>
29493
29494	Make class_decl pimpl and harden comparison infloop prevention
29495	* include/abg-ir.h (class_decl::{priv}): New private data member.
29496	(class_decl::{get_is_declaration_only, set_is_declaration_only,
29497	is_struct, get_definition_of_declaration, get_earlier_declaration,
29498	add_base_specifier, get_base_specifiers, get_member_types,
29499	get_data_members, get_member_functions,
29500	get_member_function_templates, get_member_class_templates}): Move
29501	these methods out-of-line.
29502	(class_decl::{comparison_started_,
29503	declaration_,is_declaration_only_, definition_of_declaration,
29504	is_struct_, bases_, member_types_, data_members_,
29505	member_functions_, member_function_template,
29506	member_class_templates_}): Move these data members into the pimpl
29507	in ...
29508	* src/abg-ir.cc
29509	(class_decl::priv::{declaration_,is_declaration_only_,
29510	definition_of_declaration, is_struct_, bases_, member_types_,
29511	data_members_, member_functions_, member_function_template,
29512	member_class_templates_}): ... here.
29513	(class_decl::priv::classes_being_compared_): New data member.
29514	(class_decl::priv::priv): Initialize the data members.
29515	(class_decl::priv::{mark_as_being_compared,
29516	unmark_as_being_compared, comparison_started): New methods.
29517	(class_decl::{get_is_declaration_only, set_is_declaration_only,
29518	is_struct, get_definition_of_declaration, add_base_specifier,
29519	get_base_specifiers, get_member_types, get_data_members,
29520	get_member_functions, get_member_function_templates,
29521	get_member_class_templates}): Move these out-of-line in here.
29522	(class_decl::{class_decl, set_definition_of_declaration,
29523	set_earlier_declaration, insert_member_type, add_member_type,
29524	add_data_member, add_member_function,
29525	add_member_function_template, add_member_class_template,
29526	has_no_base_nor_member}): Adjust.
29527	(class_decl::operator==): Harden inf-loop prevention during class
29528	comparison using the new priv::mark/unmark_as_being_compared()
29529	functions.  Now comparison of a class really compares member
29530	functions again.  And it is *slooow*.  I should probably change
29531	this to compare only virtual member functions.  But at least this
29532	should be correct and robust for now.
29533	* tests/data/test-diff-filter/test0-report.txt: Adjust.
29534	* test01-report.txt: Adjust.
29535
295362014-04-11  Dodji Seketeli <dodji@redhat.com>
29537
29538	Remove the parent member of the diff node
29539	* include/abg-comparison.h (diff::parent_): Remove.
29540	(diff::diff): Adjust.
29541	(diff::{get, set}_parent): Remove.
29542	* src/abg-comp-filter.cc (harmless_filter::visit): Remove category
29543	propagation to the parent.
29544
295452014-04-11  Dodji Seketeli <dodji@redhat.com>
29546
29547	Update the decl_base copy constructor for forgotten members
29548	* src/abg-ir.cc (decl_base::decl_base): Copy forgotten decl_base
29549	members hashing_started_, qualified_parent_name_, qualified_name_.
29550
295512014-04-11  Dodji Seketeli <dodji@redhat.com>
29552
29553	Comment fix in filtering code
29554	* src/abg-comp-filter.cc (harmful_filter::visit): Fix comment
29555	typos.
29556
295572014-04-11  Dodji Seketeli <dodji@redhat.com>
29558
29559	Put data member type size changes in SIZE_OR_OFFSET_CHANGE_CATEGORY
29560	* src/abg-comp-filter.cc (type_size_changed): New overload for
29561	type_base_sptr.
29562	(data_member_type_size_changed): New predicate.
29563	(harmful_filter::visit): Use the new predicate to categorize data
29564	member type size changes into the SIZE_OR_OFFSET_CHANGE_CATEGORY.
29565
295662014-04-11  Dodji Seketeli <dodji@redhat.com>
29567
29568	Represent a removed+added data member at a given offset as changed
29569	* include/abg-fwd.h (get_data_member_offset): Declare new overload for
29570	decl_base_sptr.
29571	* include/abg-comparison.h (unsigned_decl_base_sptr_map)
29572	(unsigned_changed_type_or_decl_map): New typedefs.
29573	* src/abg-ir.cc (get_data_member_offset): Define new overload for decl_base_sptr.
29574	* src/abg-comparison.cc (diff_kind::subtype_change_kind): New
29575	enumerator for a change about a type or sub-type of a member of a
29576	structure/enum.
29577	(report_mem_header): Handle the new enumerator above.
29578	(class_diff::priv::{deleted_dm_by_offset_, inserted_dm_by_offset_,
29579	changed_dm_}): New data members.
29580	(class_diff::priv::subtype_changed_dm_): Renamed
29581	class_diff::priv::changed_data_members_ into this.
29582	(class_diff::priv::subtype_changed_dm): Renamed
29583	class_diff::priv::data_member_has_changed into this. Adjust.
29584	(class_diff::count_filtered_subtype_changed_dm): Renamed
29585	count_filtered_data_members into this.  Adjust.
29586	(class_diff::priv::count_filtered_changed_dm): New member
29587	function.
29588	(class_diff::lookup_tables_empty): Adjust.
29589	(class_diff::ensure_lookup_tables_populated): Adjust.  Detect when
29590	a data member is deleted and added back to offset N, and be
29591	prepared to present that as a change of data member at offset N.
29592	(class_diff::report): Adjust.  Report data members of a given
29593	offset that have changed.
29594	* tests/data/test-diff-dwarf/test6-report.txt: New reference
29595	report for new test input.
29596	* tests/data/test-diff-dwarf/test6-v0.cc: Source code for new test
29597	input binary.
29598	* tests/data/test-diff-dwarf/test6-v0.o: New test input binary.
29599	* tests/data/test-diff-dwarf/test6-v1.cc: Source code for new test
29600	input binary.
29601	* tests/data/test-diff-dwarf/test6-v1.o: New test input binary.
29602	* tests/test-diff-dwarf.cc: Adjust to include the new test inputs above.
29603
296042014-04-11  Dodji Seketeli <dodji@redhat.com>
29605
29606	Unmark class_diff node as being traversed once traversal is finished
29607	* src/abg-comparison.cc (class_diff:traverse): Unmark class_diff
29608	node as being traversed once traversal is finished
29609
296102014-04-11  Dodji Seketeli <dodji@redhat.com>
29611
29612	Do not use the parent diff node link for category propagation
29613	* src/abg-comparison.cc (class_diff::traverse): Use the new
29614	TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY macro to propagate
29615	categorization from the children diff nodes to the current one for
29616	bases, data members and member functions.
29617	(scope_diff::traverse): Likewise, use the
29618	TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY to propagate
29619	categorization from the children diff nodes to the current one.
29620
296212014-04-11  Dodji Seketeli <dodji@redhat.com>
29622
29623	Ensure that each diff node is traversed just once
29624	* include/abg-comparison.cc (pointer_map): New typedef.
29625	(diff_context::{has_diff_for}): New overload for diff*.
29626	(diff_context::{diff_has_been_traversed, mark_diff_as_traversed,
29627	forget_traversed_diffs}): Declare new methods.
29628	* src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE)
29629	(ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Define new macros.
29630	(diff_context::priv::traversed_diff_nodes_): New data member.
29631	(diff_context::has_diff_for): New overload for diff*
29632	(diff_context::{diff_has_been_traversed, mark_diff_as_traversed,
29633	forget_traversed_diffs}): Define new member functions.
29634	(diff_context::maybe_apply_filters): Forget the traversed diffs
29635	before applying a filter.
29636	({distinct_diff, var_diff, pointer_diff, reference_diff,
29637	qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff,
29638	function_decl_diff, type_decl_diff, typedef_diff,
29639	translation_unit_diff}::traverse): Ensure that the diff node is
29640	traversed only once.
29641
296422014-04-11  Dodji Seketeli <dodji@redhat.com>
29643
29644	Factorize diff sub-tree traversal and category propagation code
29645	* src/abg-comparison.cc
29646	(TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
29647	(TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macros.
29648	({distinct_diff, pointer_diff, reference_diff,
29649	qualified_type_diff, enum_diff, base_diff, function_decl_diff,
29650	typedef_diff}::traverse): Use the new macro above in lieu of the
29651	duplicated sub-tree traversal code in there.
29652
296532014-04-11  Dodji Seketeli <dodji@redhat.com>
29654
29655	Style fixes in the diff nodes traversing code
29656	* src/abg-comparison.cc (TRY_{PRE, PRO}_VISIT, TRY_{PRE,
29657	PRO}_VISIT_CLASS_DIFF, ): Add a white space.
29658
296592014-04-10  Dodji Seketeli <dodji@redhat.com>
29660
29661	Supporting reporting data member name change
29662	* src/abg-comparison.cc (represent): Support reporting data member
29663	name change.
29664
296652014-04-10  Dodji Seketeli <dodji@redhat.com>
29666
29667	Consider added/removed data members as changing size or offset
29668	* src/abg-comp-filter.cc (data_member_added_or_removed): New
29669	static function.
29670	(harmless_filter::visit): Re-organize logic.  Categorize data
29671	member addition/removal into SIZE_OR_OFFSET_CHANGE_CATEGORY.
29672
296732014-04-10  Dodji Seketeli <dodji@redhat.com>
29674
29675	Add missing comment
29676	* src/abg-ir.cc (non_type_tparameter::get_hash): Add missing api doc.
29677
296782014-04-09  Dodji Seketeli <dodji@redhat.com>
29679
29680	Fix and add missing hashing through the virtual decl_base::get_hash
29681	* include/abg-ir.h (struct {scope_decl, non_type_tparameter,
29682	type_composition, class_decl}::hash): Declare hashers.
29683	({scope_decl, var_decl, non_type_tparameter, type_composition,
29684	class_decl}::get_hash): Provide new overloads of the get_hash.
29685	* src/abg-hash.cc ({type_decl, scope_type_decl,
29686	qualified_type_def, pointer_type_def, reference_type_def,
29687	enum_type_decl, typedef_decl, var_decl,
29688	function_decl}::hash::operator()): If the hash is being
29689	calculated, do not use the not-yet fully calculated hash value.
29690	Rather, calculate the hash, cache it and return the value.
29691	({class_decl, non_type_tparameter}::hash::operator()): Moved the
29692	{class_decl, non_type_tparameter}::hash declaration out of here
29693	and stick it in include/abg-ir.h.  Keep the definition of the
29694	hashing operators here though.
29695	(type_composition::hash::operator()): New operator definition.
29696	* src/abg-ir.cc ({scope_decl, var_decl, class_decl,
29697	non_type_tparameter, type_composition}::get_hash): Define new
29698	virtual overload.
29699
297002014-04-08  Dodji Seketeli <dodji@redhat.com>
29701
29702	Fix mis-hashing of base specifiers and function_decl during comparison
29703	* include/abg-ir.h (function_decl::get_hash): Declare new virtual
29704	overload.
29705	* src/abg-hash.cc (class_decl::base_spec::hash::operator()):
29706	Properly hash the base specifier so that it doesn't collide with
29707	hashing a class.
29708	* src/abg-ir.cc (decl_base::get_hash): Abort if we detect a
29709	missing overload for this;
29710	(function_decl::get_hash() const): Implement this missing
29711	overload, allowing using the virtual decl_base::get_hash for
29712	function_decl.
29713
297142014-04-08  Dodji Seketeli <dodji@redhat.com>
29715
29716	Properly place opening quote and add missing closing quote in report
29717	* src/abg-comparison.cc (corpus_diff::report): Move the [{A,D}]
29718	marker before the opening quote.  And add a closing quote.
29719	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
29720	* tests/data/test-diff-filter/test0-report.txt: Adjust.
29721	* tests/data/test-diff-filter/test01-report.txt: Adjust.
29722	* tests/data/test-diff-filter/test2-report.txt: Adjust.
29723
297242014-04-08  Dodji Seketeli <dodji@redhat.com>
29725
29726	Drive-by indentation fix
29727	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Fix
29728	indentation.
29729
297302014-04-08  Dodji Seketeli <dodji@redhat.com>
29731
29732	Drop ABI artifacts that are local to a function
29733	* src/abg-dwarf-reader.cc (get_scope_for_die): If the parent die
29734	is  DW_TAG_subprogram then just drop the whole thing on the floor.
29735	(build_ir_node_from_die): When the scope is NULL, just drop the
29736	whole thing on the floor.
29737
297382014-04-08  Dodji Seketeli <dodji@redhat.com>
29739
29740	Fix the static data member recognition hack
29741	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
29742	When trying to recognize the global var_decl as being definition
29743	variables for static data members, lookup the declaration for the
29744	data member in the relevant class.  If found, then just flag the
29745	var_decl for the data member as being static; no need to add a
29746	var_decl as data member in that case, that would duplicate the
29747	data member.
29748
297492014-04-08  Dodji Seketeli <dodji@redhat.com>
29750
29751	Fix looking up a node inside a class
29752	* src/abg-ir.cc (lookup_node_in_scope): Do not forget to actually
29753	look at the class members.  Sigh.
29754
297552014-04-07  Dodji Seketeli <dodji@redhat.com>
29756
29757	Work around old dwarf producers forgetting mangled names for functions
29758	* src/abg-comparison.cc
29759	(corpus_diff::priv::ensure_lookup_tables_populated): If lookup
29760	using mangled name for a deleted function yields nada, try the
29761	lookup with the pretty representation for the function.
29762
297632014-04-07  Dodji Seketeli <dodji@redhat.com>
29764
29765	Make type_base::get_{size,alignment}_in_bits virtual
29766	* include/abg-ir.h (type_base::get_{size,alignment}_in_bits): Make
29767	this virtual.
29768	(typedef_decl::get_{size,alignment}_in_bits): Add new member
29769	functions.  Get the size,alignment from the underlying type and
29770	update the current size/alignment if they differ.  Keep in mind
29771	that the size of an underlying class_decl can change over its
29772	lifetime, given how the dwarf reader reads the type information,
29773	i.e, there can be a DIE for a class type with no size information
29774	that will lead to the creation of a class_decl with size zero.
29775	Later during the DWARF reading process, another DIE will
29776	supplement the type information, adding size information to that
29777	class_decl.  In between, a typedef_decl might have been created
29778	with the first version of the class_decl that has a zero size.  I
29779	guess this should be extended to the other type constructs that
29780	have an underlying type (qualified types, references and pointers).
29781
297822014-04-07  Dodji Seketeli <dodji@redhat.com>
29783
29784	Look through typedefs when setting SIZE_OR_OFFSET_CHANGE_CATEGORY
29785	* include/abg-fwd.h (is_class_type): Declare new functions.
29786	* src/abg-comp-filter.cc (harmful_filter::visit): Use the above to
29787	convert a type into a class.
29788	* src/abg-ir.cc (is_class_type): Define the new function.
29789
297902014-04-06  Dodji Seketeli <dodji@redhat.com>
29791
29792	Add a new DECL_NAME_CHANGE_CATEGORY change category
29793	* include/abg-comparison.h (enum
29794	diff_category::DECL_NAME_CHANGE_CATEGORY): New enumerator.
29795	* src/abg-comparison.cc (report_name_size_and_alignment_changes)
29796	({enum, typedef}_diff::report): Adjust to avoid emitting name
29797	change report if the DECL_NAME_CHANGE_CATEGORY category of change
29798	is currently disallowed.
29799	* abg-comp-filter.cc (decl_name_changed): New static function.
29800	(harmless_filter::visit): Detect that the decl name changed and
29801	put the current diff node (and its parents) into the
29802	DECL_NAME_CHANGE_CATEGORY category.
29803	* tools/bidiff.cc (set_diff_context_from_opts): Set the new
29804	DECL_NAME_CHANGE_CATEGORY category into the harmless_changes group
29805	of categories.
29806	* tests/data/test-diff-filter/test6-report.txt: New test input file.
29807	* tests/data/test-diff-filter/test6-v0.cc: Likewise.
29808	* tests/data/test-diff-filter/test6-v0.o: Likewise.
29809	* tests/data/test-diff-filter/test6-v1.cc: Likewise.
29810	* tests/data/test-diff-filter/test6-v1.o: Likewise.
29811	* tests/data/test-diff-filter/test7-report.txt: Likewise.
29812	* tests/data/test-diff-filter/test7-v0.cc: Likewise.
29813	* tests/data/test-diff-filter/test7-v0.o: Likewise.
29814	* tests/data/test-diff-filter/test7-v1.cc: Likewise.
29815	* tests/data/test-diff-filter/test7-v1.o: Likewise.
29816	* tests/test-diff-filter.cc: Take the new inputs above to run new tests.
29817	* tests/Makefile.am: Add the new files above to the distribution.
29818
298192014-04-05  Dodji Seketeli <dodji@redhat.com>
29820
29821	Emit qualified name for typedefs
29822	* src/abg-comparison.cc (typedef_diff::report): Emit qualified
29823	names for typedefs in diff reports about typedef name changes.
29824
298252014-04-05  Dodji Seketeli <dodji@redhat.com>
29826
29827	Fix indentation in distinct type diff report
29828	* src/abg-comparison.cc (distinct_diff::report): Do not forget to
29829	change line.
29830
298312014-04-05  Dodji Seketeli <dodji@redhat.com>
29832
29833	Really compare return types for function types
29834	* src/abg-ir.cc (compare_function_types): Compare return types,
29835	unless this is a method and the return type is the same type as
29836	the containing class type.
29837	* tests/data/test-diff-dwarf/test5-report.txt: Reference report
29838	for the comparison of the two input binaries below.
29839	* tests/data/test-diff-dwarf/test5-v0.cc: Source code for the
29840	input binary below.
29841	* tests/data/test-diff-dwarf/test5-v0.o: Test input binary.
29842	* tests/data/test-diff-dwarf/test5-v1.cc: Source code for the
29843	input binary below.
29844	* tests/data/test-diff-dwarf/test5-v1.o: Test input binary.
29845
298462014-04-05  Dodji Seketeli <dodji@redhat.com>
29847
29848	Add missing tests for previous commits
29849	* tests/data/test-diff-dwarf/test4-report.txt: Adjust.
29850	* tests/test-diff-dwarf.cc: Run tests for
29851	data/test-diff-dwarf/test3-report.txt" and
29852	data/test-diff-dwarf/test4-report.txt.
29853
298542014-04-05  Dodji Seketeli <dodji@redhat.com>
29855
29856	Categorize through compatible distinct type diffs
29857	* src/abg-comparison.cc (report_size_and_alignment_changes): Split
29858	this static function out of ...
29859	(report_name_size_and_alignment_changes): ... this one.
29860	(distinct_diff::report): If the typedef-stripped variants of the
29861	diff subjects are of the same kind, display their diff.
29862	Otherwise, tell explicitly is the distinct type diff involves a
29863	type size change.
29864	(distinct_diff::traverse): If the typedef-stripped variants of the
29865	diff subjects are of the same kind, traverse that underlying diff
29866	sub-tree and propagate the categorizing possibly resulting from
29867	that traversal.
29868	* tests/data/test-diff-dwarf/test4-v0.o: New test input binary.
29869	* tests/data/test-diff-dwarf/test4-v0.cc: Source code for the
29870	input binary above.
29871	* tests/data/test-diff-dwarf/test4-v1.o: New test input binary.
29872	* tests/data/test-diff-dwarf/test4-v1.cc: Source code for the
29873	input binary above.
29874	* tests/data/test-diff-dwarf/test4-report.txt: Reference report
29875	for the difference between the two binaries above.
29876	* tests/data/test-diff-filter/test5-v0.o: New test input binary.
29877	* tests/data/test-diff-filter/test5-v0.cc: Source code for the
29878	input binary above.
29879	* tests/data/test-diff-filter/test5-v1.o: New test input binary.
29880	* tests/data/test-diff-filter/test5-v1.cc: Source code for the
29881	input binary above.
29882	* tests/data/test-diff-filter/test5-report.txt: Reference report
29883	for the difference between the two binaries above.
29884	* tests/test-diff-filter.cc: Adjust to produce a filtered diff for
29885	the two input binaries above.
29886	* tests/Makefile.am: Adjust to add missing test files to the
29887	distribution.
29888
298892014-04-04  Dodji Seketeli <dodji@redhat.com>
29890
29891	Slight run-by fixes
29892	* src/abg-comparison.cc
29893	(corpus_diff::priv::apply_filters_and_compute_diff_stats)
29894	(corpus_diff::report): Use compute_diff for types which it has an
29895	overload rather than going through the compute_diff_for_decls that
29896	would use dynamic casting.
29897
298982014-04-04  Dodji Seketeli <dodji@redhat.com>
29899
29900	Do not hook type diff nodes to a parent
29901	* abg/comparison.cc (var_diff::var_diff): Do not set parent node
29902	for the type diff of the var_diff.
29903	(var_diff::traverse): Handle category propagation from the
29904	type diff node to the var_diff node.
29905	(pointer_diff::underlying_type_diff)
29906	(reference_diff::underlying_type_diff)
29907	(qualified_type_diff::underlying_type_diff, enum_diff::enum_diff)
29908	(base_diff::get_underlying_class_diff)
29909	(typedef_diff::underlying_type_diff): Do not set the parent node
29910	here.
29911	({pointer_diff, reference_diff, qualified_type, enum_diff,
29912	class_diff, base_diff, function_decl_diff,
29913	typedef_diff}::traverse): Handle category propagation here.
29914	* tests/data/test-diff-filter/test4-v0.o: New input binary.
29915	* tests/data/test-diff-filter/test4-v0.cc: Source code for the
29916	input binary above.
29917	* tests/data/test-diff-filter/test4-v1.o: New input binary.
29918	* tests/data/test-diff-filter/test4-v1.cc: Source code for the
29919	input binary above.
29920	* tests/data/test-diff-filter/test4-report.txt: Reference diff
29921	report for the input binaries above.
29922	* tests/test-diff-filter.cc:: Run bidiff --no-harmless on the
29923	binaries above.
29924
299252014-04-04  Dodji Seketeli <dodji@redhat.com>
29926
29927	Fix off-by one comparison bug in comparing function parameters
29928	* src/abg-comparison.cc
29929	(function_decl_diff::ensure_lookup_tables_populated): Function
29930	parameters that are diff'ed start at the first non-implicit
29931	parameter, not at the first parameter.  Oops.
29932	* tests/data/test-diff-dwarf/test3-v0.o: New test input binary.
29933	* tests/data/test-diff-dwarf/test3-v0.cc: Source code for the
29934	binary above.
29935	* tests/data/test-diff-dwarf/test3-v1.o: New test input binary.
29936	* tests/data/test-diff-dwarf/test3-v1.cc: Source code for the
29937	binary above.
29938	* tests/data/test-diff-dwarf/test3-report.txt: Reference report
29939	for the diff of the new test inputs.
29940	* tests/test-diff-dwarf.cc: Use the test inputs above to run new
29941	tests.
29942
299432014-04-03  Dodji Seketeli <dodji@redhat.com>
29944
29945	Do not forget parm sub-type changes as opposed to parm changes
29946	* src/abg-comparison.cc
29947	(function_decl_diff::ensure_lookup_tables_populated): A parm
29948	change is valid only when the added parm has a different name from
29949	the removed parm.  Both have the same index, of course.  In that
29950	case, do not try to remove the corresponding parm sub-type change.
29951	* tests/data/test-bidiff/test-enum0-report.txt: Adjust.
29952	* tests/data/test-bidiff/test-enum1-report.txt: Adjust.
29953	* tests/data/test-bidiff/test-qual-type0-report.txt: Adjust.
29954	* tests/data/test-bidiff/test-struct0-report.txt: Adjust.
29955	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
29956	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
29957	* tests/data/test-diff-filter/test0-report.txt: Adjust.
29958	* tests/data/test-diff-filter/test01-report.txt: Adjust.
29959	* tests/data/test-diff-filter/test1-report.txt: Adjust.
29960	* tests/data/test-diff-filter/test2-report.txt: Adjust.
29961	* tests/data/test-diff-filter/test3-report.txt: Adjust.
29962
299632014-04-03  Dodji Seketeli <dodji@redhat.com>
29964
29965	Remove useless white space
29966	* src/abg-ir.cc (look_through_decl_only_class): Remove useless
29967	white space.
29968
299692014-04-02  Dodji Seketeli <dodji@redhat.com>
29970
29971	Use mangled name for decl comparison when it's present
29972	* src/abg-ir.cc (decl_base::operator==(const decl_base& other)
29973	const): Use the mangled name of the decl in priority.
29974	* src/abg-hash.cc (struct decl_base::hash::operator()): Likewise.
29975	* src/abg-comparison.cc (function_decl_diff::report): Do not
29976	report a function name change if it doesn't involve a mangled name
29977	change.  This might change when we start dealing with templates.
29978
299792014-04-02  Dodji Seketeli <dodji@redhat.com>
29980
29981	A change involving a decl-only class is not SIZE_OR_OFFSET_CHANGE_CATEGORY
29982	* src/abg-comp-filter.cc (harmful_filter::visit): If a size change
29983	involves a decl-only class, it certainly shouldn't trigger putting
29984	the sub-tree into the SIZE_OR_OFFSET_CHANGE_CATEGORY category.
29985
299862014-04-02  Dodji Seketeli <dodji@redhat.com>
29987
29988	Fix heuristics to detect function static-ness for DWARF < 3
29989	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Make
29990	the heuristics work for functions with no parameters.
29991
299922014-04-02  Dodji Seketeli <dodji@redhat.com>
29993
29994	Avoid emitting local filtered-out changes in more spots
29995	* src/abg-comparison.cc (maybe_report_diff_for_member): Take the
29996	diff_context in parameter.  Use that to check if local changes of
29997	category ACCESS_CHANGE_CATEGORY are filtered-out and do not report
29998	the change in that case.
29999	({var_diff, enum_diff, class_diff, base_diff,
30000	function_decl_diff}::report): Adjust.
30001
300022014-04-02  Dodji Seketeli <dodji@redhat.com>
30003
30004	Add a COMPATIBLE_TYPE_CHANGE_CATEGORY to bidiff --no-harmless
30005	* include/abg-comparison.h
30006	(diff_category::COMPATIBLE_TYPE_CHANGE_CATEGORY): New enumerator.
30007	(operator|=(diff_category&, diff_category)): New declaration.
30008	* include/abg-fwd.h (is_typedef, strip_typedef)
30009	(types_are_compatible): New declarations.
30010	* include/abg-ir.h (operator==(const decl_base_sptr, const
30011	decl_base_sptr)): Added the consts here.
30012	(operator==(const type_base_sptr, const type_base_sptr)): New
30013	declaration.
30014	* src/abg-comp-filter.cc (is_compatible_change): New static
30015	function.
30016	(harmless_filter::visit): Detect compatible changes and add the
30017	sub-tree into the new COMPATIBLE_TYPE_CHANGE_CATEGORY if
30018	applicable. Cleanup the logic.
30019	* src/abg-comparison.cc (operator|=(diff_category&,
30020	diff_category)): Define new function.
30021	(operator==(const decl_base_sptr l, const decl_base_sptr r)): Add
30022	consts.
30023	(operator==(const type_base_sptr l, const type_base_sptr r)):
30024	Define new operator.
30025	(is_typedef, strip_typedef, types_are_compatible): New function
30026	definitions.
30027	* tests/data/test-diff-filter/test3-report.txt: New test report
30028	reference.
30029	* tests/data/test-diff-filter/test3-v0.cc: Source code for new
30030	test input.
30031	* tests/data/test-diff-filter/test3-v0.o: New test input.
30032	* tests/data/test-diff-filter/test3-v1.cc: Source code for new
30033	test input.
30034	* tests/data/test-diff-filter/test3-v1.o: New test input.
30035	* tests/test-diff-filter.cc: Adjust to consume the new tests
30036	inputs above.
30037	* tools/bidiff.cc: Add the new COMPATIBLE_TYPE_CHANGE_CATEGORY
30038	into the --harmless group.
30039
300402014-04-01  Dodji Seketeli <dodji@redhat.com>
30041
30042	Don't emit local filtered-out changes
30043	* src/abg-comparison.cc (represent): For var_decl, do not emit
30044	filtered-out local size/offset/access changes.
30045	(report_name_size_and_alignment_changes): Take the diff context.
30046	Do not report filtered-out local size/offset changes.
30047	({var_diff, enum_diff, class_diff, type_decl_diff}::report):
30048	Adjust.
30049	* test0-report.txt: Adjust.
30050	* test01-report.txt: New reference report for the same inputs
30051	test0-v{1,0}.o, but called without the --no-harmless command line.
30052	* tests/data/test-diff-filter/test2-v0.cc: Source code for new test input.
30053	* tests/data/test-diff-filter/test2-v1.cc: Likewise.
30054	* tests/data/test-diff-filter/test2-v0.o: New test input.
30055	* tests/data/test-diff-filter/test2-v1.o: Likewise.
30056	* tests/data/test-diff-filter/test2-report.txt: Reference report
30057	for new test input.
30058	* tests/test-diff-filter.cc: Consume the test inputs above.
30059	* tests/Makefile.am: Add the new test inputs above to the
30060	distribution.
30061
300622014-04-01  Dodji Seketeli <dodji@redhat.com>
30063
30064	Compact & intuitive reporting for changed function parameters
30065	* include/abg-comparison.h (unsigned_changed_parm_map)
30066	(unsigned_parm_map): New typedefs.
30067	* src/abg-comparison.cc
30068	(function_decl_diff::subtype_changed_parms): Renamed this from
30069	changed_parms.
30070	(function_decl_diff::priv::subtype_changed_parms_}): Renamed this
30071	from changed_parms_;
30072	(function_decl_diff::priv::{deleted_parms_by_id_,
30073	added_parms_by_id_, changed_parms_by_id_}): New members.
30074	(function_decl_diff::ensure_lookup_tables_populated): Update the
30075	new priv::changed_parms_by_id_ member to contain the parameters
30076	that got changed, as opposed to the subtype_changed_parms_ member
30077	that contain parameters that got a sub-type change.  The other
30078	priv::*_by_id_ members are helpers for this.  Update them too.
30079	(function_decl_diff::subtype_changed_parms): Renamed this from
30080	::changed_parms.
30081	(function_decl_diff::report): Report separately about parameters
30082	having a sub-type change, and parameters that got changed.  Note
30083	that in both cases, the change is necessarily to a compatible
30084	type.
30085	* data/test-diff-dwarf/test2-v0.cc: New test file.
30086	* data/test-diff-dwarf/test2-v0.o: Likewise.
30087	* data/test-diff-dwarf/test2-v1.cc: Likewise.
30088	* data/test-diff-dwarf/test2-v1.o: Likewise.
30089	* data/test-diff-dwarf/test2-report.txt: Likewise.
30090	* tests/Makefile.am: Add the new test files above to the
30091	distribution.
30092	* tests/test-diff-dwarf.cc: Consume the input files above to
30093	actually perform a regression test.
30094
300952014-03-31  Dodji Seketeli <dodji@redhat.com>
30096
30097	Fix thinko class_diff traversing.
30098	* src/abg-comparison.cc (class_diff::traverse): Fix thinking in
30099	introduced by commit "6709478 Fix infinite loop when traversing
30100	classes and their members"
30101	* tests/data/test-diff-filter/test1-v{0,1}.o: New test binary input files.
30102	* tests/data/test-diff-filter/test1-v{0,1}.cc: Source code for the
30103	above.
30104	* tests/data/test-diff-filter/test1-report.txt: Reference report
30105	for the diffing of the two binary input files above.
30106	* tests/test-diff-filter.cc: Make the test run on the new input above.
30107	* tests/Makefile.am: Add the new material to the distribution.
30108
301092014-03-31  Dodji Seketeli <dodji@redhat.com>
30110
30111	Add forgotten test output adjustment
30112	* tests/data/test-diff-filter/test0-report.txt: Adjust for the
30113	commit "a8d5284 Fix diff report indentation issue"
30114	* tests/data/test-diff-dwarf/test{0,1}-report.txt: Likewise.
30115
301162014-03-31  Dodji Seketeli <dodji@redhat.com>
30117
30118	Add forgotten source file for binary test input
30119	* tests/data/test-diff-dwarf/test1-v0.cc: New file.
30120	* tests/data/test-diff-dwarf/test1-v1.cc: Likewise.
30121
301222014-03-31  Dodji Seketeli <dodji@redhat.com>
30123
30124	Fix diff report indentation issue
30125	* abg-comparison.cc (corpus_diff::report): Indent the details of
30126	function changes.
30127
301282014-03-31  Dodji Seketeli <dodji@redhat.com>
30129
30130	Fix infinite loop when traversing classes and their members
30131	* src/abg-comparison.cc (TRY_{PRE,POST}_VISIT_CLASS_DIFF): New
30132	macros.
30133	(class_diff::priv::traversing_): New flag.
30134	(class_diff::priv::priv): New constructor to initialize the new
30135	flag above.
30136	(class_diff::traversing): Do not traverse the diff again if it's
30137	being traversed already.
30138
301392014-03-31  Dodji Seketeli <dodji@redhat.com>
30140
30141	Fix access_changed and data_member_offset_changed predicates
30142	* src/abg-comp-filter.cc (access_changed)
30143	(data_member_offset_changed): Fix detection of membership.
30144
301452014-03-29  Dodji Seketeli <dodji@redhat.com>
30146
30147	Take filtering in account in diff stats & better categorizing
30148	* include/abg-comparison.h
30149	(diff_category::ACCESS_CHANGE_CATEGORY): Renamed
30150	ACCESS_CHANGED_CATEGORY into this.
30151	(diff_category::SIZE_OR_OFFSET_CHANGE_CATEGORY): Renamed
30152	SIZE_CHANGED_CATEGORY into this.  Changed its semantics to
30153	incorporate offset changes as well.
30154	* src/abg-comparison.cc (struct noop_deleter): Move this up.
30155	(represent): Do not report filtered out data members.
30156	(report_mem_header): Add a new num_filtered parameter to take
30157	filtered-out members in account in members report headers.
30158	Adjust.
30159	(class_diff::priv::{count_filtered_bases,
30160	count_filtered_data_members, count_filtered_member_functions}):
30161	New member functions.  When a member is filtered, do not report
30162	it all.
30163	({enum_diff, class_diff}::report): Adjust.  Take filtered members
30164	into account in headers.
30165	(corpus_diff::priv::apply_filters_and_compute_diff_stats): New
30166	member function.
30167	(corpus_diff::priv::emit_diff_stats): Renamed
30168	emit_corpus_diff_stats into this.  Change it to take the stats in
30169	parameter.
30170	(corpus_diff::report): Adjust to re-use the above.  Filter
30171	varibles as well.  Take the filtered functions & variables in
30172	account in the stats.  Do not report filtered-out functions &
30173	variables at all.
30174	* src/abg-comp-filter.cc (type_size_changed, access_changed)
30175	(data_member_offset_changed): New predicates.
30176	({harmless, harmful}_filter::visit): Adjust to use the new
30177	predicates above.  Update the harmful variant for the new
30178	SIZE_OR_OFFSET_CHANGE_CATEGORY category.
30179	* tools/bidiff.cc (set_diff_context_from_opts): Adjust for the
30180	categories name changes.
30181	* tests/data/test-diff-filter/test0-report.txt: New test input.
30182	* tests/data/test-diff-filter/test0-v0.cc: Likewise.
30183	* tests/data/test-diff-filter/test0-v0.o: Likewise.
30184	* tests/data/test-diff-filter/test0-v1.cc: Likewise.
30185	* tests/data/test-diff-filter/test0-v1.o: Likewise.
30186	* tests/test-diff-filter.cc: New test harness.
30187	* tests/Makefile.am: Add the new test files above to the
30188	distribution.
30189
301902014-03-29  Dodji Seketeli <dodji@redhat.com>
30191
30192	Fix var_diff length determination
30193	* src/abg-comparison.cc (var_diff::length):  Just compare the two
30194	diff subjects.
30195
301962014-03-29  Dodji Seketeli <dodji@redhat.com>
30197
30198	Fix typos in the test-diff-dwarf.cc source code
30199	* tests/test-diff-dwarf.cc: Fix various typos.
30200
302012014-03-27  Dodji Seketeli <dodji@redhat.com>
30202
30203	Initial implementation of diff tree node filtering
30204	* include/abg-comp-filter.h: New file.
30205	* include/Makefile.am: Add the new include/abg-comp-filter.h to
30206	the source distribution.
30207	* include/abg-comparison.h (enum visiting_kind, diff_category): New enums.
30208	(operator|): Declare new operator declaration for the new
30209	visiting_kind enum.
30210	(operator{|,^,&,~}): Declare new operator decl for the new
30211	diff_category enum.
30212	(diff_context::{get_allowed_category, set_allowed_category,
30213	switch_categories_on, switch_categories_off, diff_filters,
30214	add_diff_filter, maybe_apply_filters}): Declare new member functions.
30215	(diff::{parent_, category_}): New members.
30216	(diff::diff): Adjust.
30217	(diff::{get_parent, set_parent, get_category, add_to_category,
30218	is_filtered_out, to_be_reported}):  New members.
30219	(diff_node_visitor::{get_visiting_kind, set_visiting_kind}): New
30220	members.
30221	(diff_node_visitor::visit): Add a new flag to saying if the
30222	visitor is being called in post or pre children traversing mode.
30223	* src/abg-comparison.cc (operator|): Declare new operator
30224	declaration for the new visiting_kind enum.
30225	(operator{|,^,&,~}): Declare new operator decl for the new
30226	diff_category enum.
30227	(diff_context::priv::{allowed_category_, filters_}): New members.
30228	(diff_context::diff_context): Add all known filters.
30229	(diff_context::{get_allowed_category, set_allowed_category,
30230	switch_categories_on, switch_categories_off, diff_filters,
30231	add_diff_filter, maybe_apply_filters}): Define new member
30232	functions.
30233	(diff::{is_filtered_out, to_be_reported}): Define new members.
30234	(*::report): Use the new diff::to_be_reported function.
30235	(*::traverse): Adjust for pre/post visiting.
30236	(var_diff::var_diff): Chain the type diff node to its parent.
30237	({pointer_diff, reference_diff, qualified_type_diff,
30238	typedef_diff}::underlying_type_diff): Chain the underlying type
30239	diff node to its parent.
30240	(enum_diff::enum_diff): Likewise.
30241	(base_diff::underlying_class_diff): Likewise.
30242	({class_diff, corpus_diff}::report): Do not report changed
30243	(member) functions that have been filtered out.  Rather report
30244	that they have been filtered out.
30245	({function_decl_diff, class_diff}::traverse): Chain underlying
30246	type diff nodes to their parent.
30247	(diff_node_visitor::visit): Add a new flag to saying if the
30248	visitor is being called in post or pre children traversing mode.
30249	Make sure to call the default diff::visit overload.
30250	* src/abg-comp-filter.cc: New file.
30251	* src/Makefile.am: Add the new abg-comp-filter.cc to the source
30252	distribution.
30253	* tools/bidiff.cc (options::show_harm{ful,less}_changes): New
30254	members.
30255	(display_usage): Add usage strings for --no-harmless and
30256	--no-harmful options.
30257	(parse_command_line): Parse --no-harmless and --no-harmful command
30258	line options.
30259	(set_diff_context_from_opts): Populate the diff context
30260	accordingly.
30261
302622014-03-26  Dodji Seketeli <dodji@redhat.com>
30263
30264	Add missing headers double inclusion guards
30265	* include/abg-comparison.h: Add a missing double inclusion guard.
30266	* include/abg-diff-utils.h: Likewise.
30267
302682014-03-26  Dodji Seketeli <dodji@redhat.com>
30269
30270	Add a missing apostrophe to access reporting
30271	* src/abg-comparison.cc (represent): For member var_decls, add a
30272	missing apostrophe after the access.
30273	* tests/data/test-diff-dwarf/test0-report.txt: Update test report.
30274
302752014-03-21  Dodji Seketeli <dodji@redhat.com>
30276
30277	Fix diff emptiness detection for function_decl_diff nodes
30278	* src/abg-comparison.cc (function_decl_diff::length): Just compare
30279	the two functions here, damit.
30280	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
30281
302822014-03-21  Dodji Seketeli <dodji@redhat.com>
30283
30284	Fixlets in the bidiff regression testing harness
30285	* tests/test-bidiff.cc (main): Fix a typo.  Fix the path to the
30286	output path.
30287
302882014-03-21  Dodji Seketeli <dodji@redhat.com>
30289
30290	Initial regression test for dwarf diffing
30291	* tests/test-diff-dwarf.cc: New dwarf diffing regression test
30292	harness.
30293	* tests/data/test-diff-dwarf/test0-report.txt: New test input.
30294	* tests/data/test-diff-dwarf/test0-v0.cc: Likewise.
30295	* tests/data/test-diff-dwarf/test0-v0.o: Likewise.
30296	* tests/data/test-diff-dwarf/test0-v1.cc: Likewise.
30297	* tests/data/test-diff-dwarf/test0-v1.o: Likewise.
30298	* tests/Makefile.am: Add the new test inputs from
30299	tests/test-diff-dwarf.cc and tests/data/test-diff-dwarf/* to
30300	the build system.
30301
303022014-03-21  Dodji Seketeli <dodji@redhat.com>
30303
30304	Rename test-walker.cc into test-ir-walker.cc
30305	* tests/test-ir-walker.cc: Renamed test-walker.cc into this.
30306	* tests/Makefile.am: Adjust.  The generated binary is now testirwalker.
30307
303082014-03-21  Dodji Seketeli <dodji@redhat.com>
30309
30310	Initial diff tree traversal infrastructure
30311	* include/abg-comparison.h (struct diff_traversable_base, struct
30312	diff_node_visitor): New type.
30313	(class diff): Extends the new diff_traversable_base.
30314	({diff, distinct_diff, var_diff, pointer_diff, reference_diff,
30315	qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff,
30316	function_decl_diff, type_decl_diff, typedef_diff,
30317	translation_unit_diff, corpus_diff}::traverse): New methods.
30318	(function_decl_diff::return_type_diff): New accessor.  Renamed
30319	return_diff into this.
30320	(translation_unit_diff::{first, second}_translation_unit): New
30321	accessors.
30322	(corpus_diff::{deleted, added, changed}_functions): New accessors.
30323	* src/abg-comparison.cc ({distinct_diff, var_diff,
30324	pointer_diff, reference_diff, qualified_type_diff, enum_diff,
30325	class_diff, base_diff, scope_diff, function_decl_diff,
30326	type_decl_diff, typedef_diff, translation_unit_diff,
30327	corpus_diff}::traverse): New function implementations.
30328	(maybe_report_diff_for_member): Renamed
30329	maybe_report_diff_for_class_members into this.
30330	(var_diff::report): Adjust.
30331	(struct translation_unit_diff::priv): New private type.
30332	(translation_unit_diff::translation_unit_diff): Instantiate the
30333	new priv_ member.
30334	(translation_unit_diff::{first,second}_translation_unit): New
30335	accessors.
30336	(corpus_diff::{deleted, added, changed}_functions): New function
30337	implementations.
30338	(diff_node_visitor::visit): New function implementations.
30339
303402014-03-19  Dodji Seketeli <dodji@redhat.com>
30341
30342	Make tree walking preemptive
30343	* include/abg-traverse.h (traversable_base::traversable): Change
30344	the signature of this to return a boolean.
30345	* include/abg-ir.h (ir_traversable_base::traverse): Change the
30346	signature of this to return a boolean.
30347	(*::traverse): Adjust.
30348	(ir_node_visitor::visit): Change the signature of this to return a
30349	boolean.
30350	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Adjust.
30351	* src/abg-ir.cc (::traverse): Adjust.
30352	* tests/test-walker.cc (name_printing_visitor::visit): Adjust.
30353
303542014-03-26  Jonathan Wakely <jwakely@redhat.com>
30355
30356	Fix comment typos
30357	* include/abg-diff-utils.h (compute_diff): Fix typo in apidoc
30358	comment.
30359
303602014-03-24  Dodji Seketeli <dodji@redhat.com>
30361
30362	Follow DW_AT_abstract_origin and add missing mangled name
30363	* src/abg-dwarf-reader.cc (build_function_decl): Change signature
30364	to take function_decl to which one shall add properties that got
30365	added by subsequent DIEs later.
30366	(build_class_type_and_add_to_ir): Adjust.
30367	(build_function_decl): Allow adding new properties to an existing
30368	function_decl.  Add the mangled name in particular.
30369	* tests/data/test-read-dwarf/test1.abi: Update test.
30370
303712014-03-20  Dodji Seketeli <dodji@redhat.com>
30372
30373	Fix destructor naming.
30374	* src/abg-ir.cc (function_decl::get_pretty_representation): In
30375	DWARF at least, the destructor function name already contains the
30376	'~'.  No need to add it.
30377
303782014-03-20  Dodji Seketeli <dodji@redhat.com>
30379
30380	Better static function determination heuristic
30381	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Better
30382	heuristic.
30383
303842014-03-20  Dodji Seketeli <dodji@redhat.com>
30385
30386	Dynamically wire class_decl::base_spec hashing
30387	* include/abg-ir.h (decl_base::get_hash): Make this virtual.
30388	(class_decl::base_spec::get_hash): Declare a new virtual overload.
30389	* src/abg-ir.cc (class_decl::base_spec::get_hash): Define.
30390
303912014-03-20  Dodji Seketeli <dodji@redhat.com>
30392
30393	Slight indentation fix in the diff report
30394	* src/abg-comparison.cc (class_diff::report): Indentation fix for
30395	member function changes report.
30396
303972014-03-20  Dodji Seketeli <dodji@redhat.com>
30398
30399	Get rid of class_decl::member_function
30400	* include/abg-fwd.h (is_member_function)
30401	(get_member_function_is_{ctor,dtor,const})
30402	(get_member_function_vtable_offset): New function declarations.
30403	* include/abg-ir.h (class_decl::member_function): Remove.
30404	(class_decl::member_functions): Adjust.  This is now just a vector
30405	of method_decl_sptr.
30406	(class_decl::add_member_function): Remove the overload taking
30407	class_decl::member_function.  Adjust the other overload to take a
30408	method_decl_sptr.
30409	(class mem_fn_context_rel): New class.
30410	(class_decl::method_decl::set_scope): New virtual overload.
30411	(class_decl::member_function): Remove.
30412	(operator==): Remove the overload taking a
30413	class_decl::member_function.
30414	(class_decl::member_function::hash): Remove.
30415	(ir_node_visitor::visit): Remove the overload taking a
30416	class_decl::member_function.
30417	* include/abg-comparison.h (changed_member_function_sptr)
30418	(string_member_function_sptr_map): Adjust.
30419	* src/abg-comparison.cc (represent): Adjust the overload taking a
30420	class_decl::member_function to take a class_decl::method_decl.
30421	(class_diff::{report, ensure_lookup_tables_populated}): Adjust.
30422	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the
30423	overload taking a class_decl::member_function.
30424	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
30425	Adjust.
30426	* src/abg-hash.cc (decl_base::hash::operator()): Use the fully
30427	qualified name of the decl in the hash, to increase the likelihood
30428	of avoiding hash collisions.
30429	(method_type::hash::operator()): Likewise.
30430	(function_decl::hash::operator()): Take member functions in
30431	account.
30432	(class_decl::member_function::hash::operator()): Remove.
30433	(class_decl::hash::operator()): Adjust.
30434	(type_base::dynamic_hash::operator()): Adjust.
30435	* src/abg-ir.cc (is_member_function)
30436	(get_member_function_is_{ctor,dtor,const})
30437	(get_member_function_vtable_offset): New function definitions.
30438	(function_decl::get_pretty_representation): Adjust.
30439	(function_decl::operator): Take member functions in account here.
30440	(class_decl::insert_member_decl): Adjust.
30441	(mem_fn_context_rel::~mem_fn_context_rel): New definition.
30442	(class_decl::member_function::*): Remove.
30443	(class_decl::method_decl::set_scope): New definition.
30444	(class_decl::get_num_virtual_functions): Adjust.
30445	(class_decl::add_member_function): Remove overload taking a
30446	class_decl::member_function.  Define a new overload taking a
30447	class_decl::method_decl.
30448	(ir_node_visitor::visit): Remove the overload taking a
30449	class_decl::member_function.
30450	* src/abg-reader.cc (build_class_decl): Adjust.
30451	* src/abg-writer.cc (write_voffset, write_class_decl): Adjust.
30452
304532014-03-19  Dodji Seketeli <dodji@redhat.com>
30454
30455	Get rid of class_decl::data_member
30456	* include/abg-fwd.h (has_scope): Delete the overloads for
30457	type_base.
30458	(get_member_is_static): Add an overload for decl_base*.
30459	({is,get,set}_data_member,{get_,set}_data_member_is_laid_out)
30460	({get,set}_data_member_offset): New access declarations.
30461	* include/abg-ir.h (class context_rel): Move up.
30462	(decl_base::set_context_rel): New definition.
30463	(class dm_context_rel): New type.
30464	(decl_base::hash_as_member): Remove.
30465	(var_decl::set_scope): Declare new virtual member.
30466	(class_decl::data_member): Remove.
30467	(ir_node_visitor::visit): Remove the overload for
30468	class_decl::data_member.
30469	(represent_data_member): Remove the represent overload for
30470	class_decl::data_member into this.  Make it take a var_decl.
30471	(represent): Change the overload that takes two
30472	class_decl::data_member take two var_decl.  And adjust it.
30473	(class_diff::report): Adjust.
30474	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the
30475	overload that takes a class_decl::data_member*.  Adjust the
30476	overload that takes a var_decl to recognize (static) data members.
30477	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir)
30478	(build_class_type_and_add_to_ir, build_ir_node_from_die):
30479	Adjust.
30480	* src/abg-hash.cc (var_decl::hash::operator()): Adjust.
30481	(class_decl::data_member::hash::operator()): Remove.
30482	(decl_base::hash::operator()): Take the context relationship in
30483	account here.
30484	(decl_base::hash_as_member::operator()): Remove.
30485	({enum_type_decl,typedef_decl}::hash::operator()): Adjust.
30486	(class_decl::member_function::hash::operator()): Adjust.
30487	(type_base::dynamic_hash::operator()): Adjust.
30488	* src/abg-ir.cc (dm_context_rel::~dm_context_rel): New definition.
30489	(has_scope): Remove overload for type_base.
30490	(get_member_is_static): New overload for decl_base*.
30491	(is_data_member): New function definition.
30492	({get,set}_data_member_{offset,is_laid_out}): Define new
30493	accessors.
30494	(var_decl::set_scope): Define new member function.  Make this set
30495	a dm_context_rel as the context relationship.
30496	(var_decl::operator==): Adjust to take in account the new data
30497	member relationship.
30498	(class_decl::class_decl): Adjust.
30499	(class_decl::insert_member_decl): Adjust.
30500	(class_decl::add_data_member): Remove the overload for
30501	class_decl::data_member.
30502	(class_decl::add_data_member): Adjust the overload for var_decl.
30503	(operator==): Remove overload for class_decl::data_member*.
30504	(class_decl::data_member::operator==): Likewise.
30505	(ir_node_visitor::visit): Remove overload for
30506	class_decl::data_member.
30507	* src/abg-writer.cc (write_layout_offset, write_class_decl):
30508	Adjust.
30509	* tests/data/test-read-write/test20.xml: Adjust.
30510
305112014-03-18  Dodji Seketeli <dodji@redhat.com>
30512
30513	Better base class diff reporting
30514	* include/abg-comparison.h (class base_diff): New.
30515	* include/abg-ir.h (function_decl::get_first_non_implicit_parm):
30516	New member function.
30517	(function_type::get_first_non_implicit_parm): Likewise.
30518	* src/abg-comparison.cc (base_has_changed): Change parm to take
30519	class_decl::base_spec_sptr.
30520	(class_diff::ensure_lookup_tables_populated): Compare the base
30521	specs not just the base classes.
30522	(class_diff::report): Adjust.  Report sub-type changes in the
30523	member functions.
30524	(base_diff::*): Define member functions.
30525	(compute_diff): Define an overload for base_diff_sptr.
30526	* src/abg-hash.cc ({function_type,
30527	method_type}::hash::operator()): Do not hash the implicit parm of
30528	member functions.
30529	(class_decl::hash::operator()):  Do not hash member types.
30530	* src/abg-ir.cc (decl_base::decl_base): Initialize the
30531	hashing_started_ member that got moved here from class_decl.
30532	(decl_base::get_hash): Do not set the hash if it's being set b/c
30533	we are in a class_decl.
30534	(decl_base::operator==) Do not compare hashes for now.  Two decls
30535	can have different hashes and compare equal; think about an
30536	incomplete type foo, that compares equal with a complete foo.
30537	Their hashes will be different though.  So for now, just avoid
30538	comparing these.
30539	(compare_function_types): Avoid comparing the implicit parameter
30540	for member functions.
30541	({function, method}_type::get_first_non_implicit_parm): New
30542	definition.
30543	* tests/data/test-read-write/test20.xml: Update.
30544
305452014-03-13  Dodji Seketeli <dodji@redhat.com>
30546
30547	Do not report change in typedef underlying type is there is none
30548	* src/abg-comparison.cc (typedef_diff::report): Do not forget to
30549	check the length of the diff of the underlying type before sending
30550	its diff report down the wire.
30551
305522014-03-13  Dodji Seketeli <dodji@redhat.com>
30553
30554	Avoid hashing a access & static-ness of member types twice
30555	* src/abg-hash.cc (class_decl::hash::operator()): Do hash the
30556	'member' part of the member types here, it has been hashed
30557	already.
30558
305592014-03-13  Dodji Seketeli <dodji@redhat.com>
30560
30561	Set class {size,loc} when adding members to a decl-only class
30562	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
30563	forget to set class size and location when adding members to a
30564	declaration-only class, turning it into a definition class.
30565
305662014-03-13  Dodji Seketeli <dodji@redhat.com>
30567
30568	Use the same representation for member and non-member types
30569	* include/abg-fwd.h (is_at_class_scope): Add new oveloads.
30570	(as_non_member_type, as_non_member_class_decl): Remove.
30571	(has_scope, is_member_decl, is_member_type): New function
30572	declarations.  (get_member_is_static, set_member_is_static):
30573	Likewise.  * include/abg-ir.h (enum access_specifier): Move to
30574	the abigail:: namespace, from ...
30575	(class_decl::access_specifier): ... here.  (class
30576	context_rel): New type.  (decl_base::hash_as_member): New
30577	hasher.  (decl_base::context_): Change the type of this to
30578	context_rel_sptr.  (decl_base::get_context_rel): New protected
30579	getter.  (decl_base::get_scope): Move this out-of-line.
30580	(class_decl::member_type): Remove.
30581	(class_decl::member_types): Adjust this typedef.
30582	(class_decl::{insert,add}_member_type): Make these take a
30583	type_base_sptr now.  (class_decl::add_member_type): Change the
30584	overload that returned a member_type to return a
30585	type_base_sptr.  (get_member_access_specifier,
30586	set_member_access_specifier): New function declarations.  *
30587	include/abg-comparison.h (class member_type_diff): Remove.
30588	(compute_diff): Remove the overload for member_type_diff.  *
30589	src/abg-comparison.cc (compute_diff_for_types): Adjust for the
30590	removal of class_decl::member_type.
30591	(maybe_report_diff_for_class_members): New static function.
30592	(report_name_size_and_alignment_changes): Do not report a name
30593	change just because of a struct -> class change.  ({var_diff,
30594	enum_diff, function_decl_diff}::report): Use the new
30595	maybe_report_diff_for_class_members.  (class_diff::report):
30596	Adjust for the removal of class_decl::member_type.  Use the
30597	new maybe_report_diff_for_class_members.  (class member_diff):
30598	Remove.  * src/abg-dwarf-reader.cc (die_access_specifier)
30599	(get_scope_for_die, build_translation_unit_and_add_to_ir)
30600	(build_class_type_and_add_to_ir, build_function_decl)
30601	(build_ir_node_from_die): Adjust.  * abg-hash.cc (struct
30602	decl_base::hash_as_member): Define.  ({scope_type_decl,
30603	enum_type_decl, typedef_decl}::hash::operator()): Use the
30604	decl_base::hash_as_member.
30605	* src/abg-ir.cc (decl_base::decl_base): Adjust.
30606	(decl_base::get_scope): New out-of-line getter.
30607	(decl_base::{operator==, set_scope): Adjust.
30608	(has_scope, is_member_decl, is_member_type)
30609	(get_member_access_specifier, set_member_access_specifier)
30610	(get_member_is_static, set_member_is_static, is_at_class_scope):
30611	New function definitions.
30612	(as_non_member_type, as_non_member_class_decl): Remove.
30613	(get_node_name): Adjust.
30614	(class_decl::{class_decl, set_earlier_declaration,
30615	insert_member_decl, insert_member_type, add_member_type):
30616	Likewise.
30617	(class_decl::member_type::*) Remove.
30618	* src/abg-reader.cc (read_access, build_qualified_type_decl)
30619	(build_reference_type_def, build_typedef_decl)
30620	(build_class_decl): Adjust.
30621	* src/abg-writer.cc (write_access, write_member_type)
30622	(write_class_decl): Likewise.
30623
306242014-03-12  Dodji Seketeli <dodji@redhat.com>
30625
30626	Avoid more static_casts in the (comparison) code
30627	* src/abg-ir.cc (class_decl::insert_member_type, operator==):
30628	Remove static_casts.
30629	(class_decl::member_type::operator==): Likewise.
30630	(class_decl::member_class_template::operator==): Likewise.
30631
306322014-03-12  Dodji Seketeli <dodji@redhat.com>
30633
30634	Allow adding members to decl-only classes making them defined classes
30635	* include/abg-fwd.h (lookup_type_in_scope)
30636	(lookup_var_decl_in_scope): New declarations.
30637	* include/abg-ir.h (class_decl::get_is_declaration_only): Rename
30638	is_declaration_only on this.
30639	(class_decl::set_is_declaration_only):
30640	* src/abg-comparison.cc (try_to_diff<class_decl>)
30641	(class_diff::ensure_lookup_tables_populated)
30642	(scope_diff::ensure_lookup_tables_populated): Update for the
30643	get_is_declaration_only renaming.
30644	* src/abg-dwarf-reader.cc (get_scope_for_die): Likewize.
30645	(build_class_type_and_add_to_ir): Make sure that a member type or
30646	data member is not already present in the class before adding it.
30647	Also, if a decl-only class gets a data member, it's not a
30648	decl-only class anymore.
30649	* src/abg-hash.cc (class_decl::hash::operator()): Update for the
30650	get_is_declaration_only renaming.
30651	* src/abg-ir.cc (scope_decl::find_iterator_for_member)
30652	(look_through_decl_only_class): Likewise.
30653	(lookup_type_in_scope, lookup_var_decl_in_scope, get_node_name)
30654	(convert_node_to_decl, lookup_node_in_scope)
30655	(lookup_type_in_scope): New definitions.
30656	(class_decl::{set_definition_of_declaration,
30657	set_earlier_declaration, operator==}): Update for the
30658	get_is_declaration_only renaming.
30659	* src/abg-reader.cc (build_class_decl): Likewise.
30660	* src/abg-writer.cc (write_class_is_declaration_only): Likewise.
30661
306622014-03-12  Jonathan Wakely <jwakely@redhat.com>
30663
30664	Fixed typos in abg-diff-utils.h
30665	* include/abg-diff-utils.h (compute_diff): Fix typos in the API
30666	doc.
30667
306682014-03-11  Dodji Seketeli <dodji@redhat.com>
30669
30670	Initialize a variable
30671	* tools/bilint.cc (main): Initialize the 'r' variable.
30672
306732014-03-11  Dodji Seketeli <dodji@redhat.com>
30674
30675	Do not declare classes before defining them anymore
30676	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
30677	declare classes before defining them because both the declaration
30678	and the definition now compare equal.
30679	* tests/data/test-read-dwarf/test1.abi: Update test.
30680	* tests/data/test-read-write/test20.xml: Likewise.
30681
306822014-03-11  Dodji Seketeli <dodji@redhat.com>
30683
30684	Little style fix
30685	* src/abg-comparison.cc (class_diff::report): Slight style fix.
30686
306872014-03-10  Dodji Seketeli <dodji@redhat.com>
30688
30689	Better support for decl-only classes in diffing and comparison
30690	* include/abg-fwd.h (look_through_decl_only_class): New function
30691	declaration.
30692	* src/abg-comparison.cc (class_diff::length): Just compare the two
30693	classes.
30694	(compute_diff): Look through the two classes if they are
30695	decl-only, and use their declaration for the diffing.
30696	* src/abg-ir.cc (look_through_decl_only_class): Define this new
30697	entry point.
30698	(class_decl::set_definition_of_declaration): Allow setting a
30699	definition that is itself a declaration-only.
30700	* src/abg-writer.cc (write_class_decl): Declaration-only can now
30701	have members, namely member types.
30702
307032014-03-10  Dodji Seketeli <dodji@redhat.com>
30704
30705	Fix comparison wrt hash number
30706	* src/abg-ir.cc (decl_base::operator==): Do not consider empty
30707	hashes.
30708	(class_decl::operator==): Better support for comparing decl-only
30709	classes against non-decl-only classes.
30710
307112014-03-10  Dodji Seketeli <dodji@redhat.com>
30712
30713	Better support of class DIEs with DW_AT_specification
30714	* src/abg-dwarf-reader.cc (get_scope_for_die): The definition of a
30715	declaration-only class can be NULL.  Do not look through in that
30716	case.
30717	(build_class_type_and_add_to_ir): Support adding class members to
30718	an existing class.
30719	(build_ir_node_from_die): If a class DIE has a DW_AT_specification,
30720	get the specification DIE, get its matching IR node and add the
30721	current members of the current DIE to that IR node.
30722
307232014-03-10  Dodji Seketeli <dodji@redhat.com>
30724
30725	Tell struct and class apart
30726	* include/abg-ir.h (class_decl::is_struct_): New member.
30727	(class_decl::class_decl): Take an additional is_struct member.
30728	(class_decl::is_struct): New getter.
30729	* src/abg-ir.cc (class_decl::class_decl): Initialize the new
30730	is_struct_ data member.
30731	(class_decl::get_pretty_representation): Tell struct and class
30732	apart.
30733	* abg-reader.cc (read_is_struct): New static function.
30734	(build_class_decl): Capture the struct-ness of the class.
30735	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
30736	Likewise.
30737	* src/abg-writer.cc (write_is_struct): New static function.
30738	(write_class_decl): Write the struct-ness of the class.
30739	* tests/data/test-read-dwarf/test1.abi: Update test.
30740
307412014-03-06  Dodji Seketeli <dodji@redhat.com>
30742
30743	Fix typedef_diff emptyness detection
30744	* src/abg-comparison.cc (typedef_diff::length): Do not mask away the
30745	dynamic type of the typedef_decl before the comparison.
30746
307472014-02-28  Dodji Seketeli <dodji@redhat.com>
30748
30749	Add --drop/--keep options to bidiff
30750	* include/abg-sptr-utils.h: New file.
30751	* include/Makefile.am: Add abg-sptr-utils. to the build system.
30752	* include/abg-libxml-utils.h (reader_sptr, xml_char_sptr): Remove
30753	these typedefs as there are now in abg-sptr-utils.
30754	(build_sptr): Likewise for this template and its specializations
30755	declarations.
30756	* src/abg-libxml-utils.cc (sptr_utils::build_sptr): Mode the
30757	definition of the specializations for xmlTextReader and xmlChar
30758	into the sptr_utils namespace.
30759	* include/abg-corpus.h
30760	(corpus::{get_regex_patterns_of_fns_to_suppress,
30761	get_regex_patterns_of_vars_to_suppress,
30762	get_regex_patterns_of_fns_to_keep,
30763	get_regex_patterns_of_vars_to_keep}): Declare new member
30764	functions.
30765	* src/abg-comparison.cc (sptr_utils::regex_t_deleter): Define new
30766	functor.
30767	(build_sptr) Define new specialization for regex_t.
30768	(struct array_deleter): Remove unused functor.
30769	(corpus::priv::regex_patterns_{fns,vars}_to_{suppress,keep}): New data
30770	members.
30771	(symtab_build_visitor_type::regex_patterns_{fns,vars}_to_{suppress,keep}):
30772	Likewise.
30773	(symtab_build_visitor_type::r_{fns,vars}_{suppress,keep})):
30774	Likewise.
30775	(symtab_build_visitor_type::symtab_build_visitor_type): Update the
30776	signature of this constructor to take regex patterns for functions
30777	and variables to suppress and to keep.  Also, initialize the data
30778	members from these new parameters.
30779	(symtab_build_visitor_type::regex_{fns,vars}_{suppress,keep}): New
30780	member functions.
30781	(symtab_build_visitor_type::{add_fn_to_wip_fns,
30782	add_var_to_wip_vars}): Likewise.
30783	(symtab_build_visitor_type::visit) Use either add_fn_to_wip_fns or
30784	add_var_to_wip_vars depending on the overload of the visit()
30785	member.
30786	(corpus::priv::build_symbol_table): Update for the change of the
30787	symtab_build_visitor_type constructor signature.
30788	(corpus::get_regex_patterns_of_{fns,vars}_to_{suppress,keep}):
30789	Define new member functions.
30790	* tools/bidiff.cc (options::{drop,keep}_{fn,var}_regex_patterns}):
30791	New data member.
30792	(display_usage): Add help strings for --drop, --drop-fn,
30793	--drop-var, --keep, --keep-fn, --keep-var
30794	(parse_command_line): Parse the command lines above.
30795	(set_corpus_keep_drop_regex_patterns): Define new static function.
30796	(main): Use the new set_corpus_keep_drop_regex_patterns.
30797
307982014-02-28  Dodji Seketeli <dodji@redhat.com>
30799
30800	Style fix in the dwarf reader
30801	* src/abg-dwarf-reader.cc (die_is_public_decl): Rename
30802	is_public_decl into this.
30803	(die_is_declaration_only): Rename is_declaration_only into this.
30804	(build_class_type_and_add_to_ir, build_var_decl)
30805	(build_function_decl): Adjust for the renames above.
30806
308072014-02-28  Dodji Seketeli <dodji@redhat.com>
30808
30809	Skip artificial (member) functions from DWARF
30810	* src/abg-dwarf-reader.cc (die_is_artificial): New static
30811	function.
30812	(build_class_type_and_add_to_ir, build_ir_node_from_die): Use the
30813	die_is_artificial function to test if the function DIE is
30814	artificial and then skip it.
30815
308162014-02-28  Dodji Seketeli <dodji@redhat.com>
30817
30818	Fix function parameter addition/deletion/change detection
30819	* include/abg-ir.h (function_decl::parameter::get_name_id):
30820	Declare new entry point.
30821	* src/abg-comparison.cc
30822	(function_decl_diff::ensure_lookup_tables_populated): Use the new
30823	function_decl::parameter::get_name_id() for the unique name of the
30824	parameter.  Also, fix a little logic error: if a parm is deleted
30825	and inserted, in all cases, consider it as not deleted.
30826
308272014-02-28  Dodji Seketeli <dodji@redhat.com>
30828
30829	Add a --stat option to bidiff
30830	* include/abg-comparison.h (diff_context::show_stats_only):
30831	Declare new accessors.
30832	* src/abg-comparison.cc
30833	(diff_context::priv::show_stats_only_): New member.
30834	(diff_context::show_stats_only): Define new accessors.
30835	(corpus_diff::report): If showing stats only, quit right after
30836	showing the summary.
30837	* tools/bidiff.cc (options::show_stats_only): New data member.
30838	(options::options): Initialize the new data member.
30839	(display_usage): Add help string for --stat.
30840	(parse_command_line): Parse the --stat option.
30841	(set_diff_context_from_opts): Update to set the show_stats_only
30842	onto the context.  Cleanup the logic to make it more compact.
30843
308442014-02-28  Dodji Seketeli <dodji@redhat.com>
30845
30846	Report about functions of different names
30847	* src/abg-comparison.cc (function_decl_diff::report): Consider the
30848	case of functions with different names.  This doesn't happen in
30849	the current pipeline b/c they just show up as deleted/added
30850	functions so the function reporter doesn't see them as they have
30851	been already reported by now.
30852
308532014-02-28  Dodji Seketeli <dodji@redhat.com>
30854
30855	Fix length calculation for type diffs.
30856	* src/abg-comparison.cc (diff_length_of_type_bases): Fix stupid
30857	harmful thinko here.
30858
308592014-02-28  Dodji Seketeli <dodji@redhat.com>
30860
30861	Fix calculation of the length of distinct_diff
30862	* src/abg-comparison.cc (distinct_diff::length): Also perform a
30863	deep comparison here.
30864
308652014-02-28  Dodji Seketeli <dodji@redhat.com>
30866
30867	Fix diff length calculation for typedef diffs
30868	* src/abg-comparison.cc (typedef_diff::length): Just use
30869	comparison for this.
30870
308712014-02-28  Dodji Seketeli <dodji@redhat.com>
30872
30873	Fix layout of diff summary
30874	* src/abg-comparison.cc
30875	(corpus_diff::priv::emit_corpus_diff_stats): Remove useless
30876	vertical and horizontal white spaces.
30877
308782014-02-28  Dodji Seketeli <dodji@redhat.com>
30879
30880	Fix indentation of pieces of class diff report
30881	* src/abg-comparison.cc (represent, class_diff::report): Fix
30882	indentation.
30883
308842014-02-28  Dodji Seketeli <dodji@redhat.com>
30885
30886	Fix detection of entities of different kinds for diff purposes
30887	* src/abg-comparison.cc
30888	(distinct_diff::entities_are_of_distinct_kinds): Consider two NULL
30889	decls are distinct types for the purpose of diffing.  This is just
30890	a shortcut to avoid creating a null_diff type for now.  But then,
30891	stop considering same pointers as different.  This was a bug.
30892
308932014-02-28  Dodji Seketeli <dodji@redhat.com>
30894
30895	Constify function_decl::parameter::get_type_pretty_representation()
30896	* include/abg-ir.h
30897	(function_decl::parameter::get_type_pretty_representation): This
30898	is now const.
30899
309002014-02-28  Dodji Seketeli <dodji@redhat.com>
30901
30902	Improve API doc for the location machinery
30903	* include/abg-ir.h (class location): Improve doc.
30904	(decl_base::{get,set}_location): Likewise.
30905
309062014-02-26  Dodji Seketeli <dodji@redhat.com>
30907
30908	Remove useless dynamic cast
30909	* src/abg-ir.cc (class_decl::insert_member_decl): Remove useless
30910	dynamic cast from here.
30911
309122014-02-26  Dodji Seketeli <dodji@redhat.com>
30913
30914	Insert reference, pointers and qual types at their declaration point
30915	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Insert
30916	reference, pointers and qualified types at the point where we see
30917	them, in their scope, rather than under the scope of their
30918	underlying type.  This is because their might be first declared as
30919	member types and we don't want to loose that information.
30920
309212014-02-24  Dodji Seketeli <dodji@redhat.com>
30922
30923	Fix documentation for the diff_utils namespace
30924	* include/abg-diff-utils.h (namespace diff_utils): Add comment.
30925	(compute_diff): Update comments for some overloads where they were
30926	missing.
30927
309282014-02-21  Dodji Seketeli <dodji@redhat.com>
30929
30930	Misc style fixes
30931	* src/abg-comparison.cc
30932	(class_diff::ensure_lookup_tables_populated): use
30933	as_non_member_class_decl rather that complicated casting.
30934	src/abg-ir.cc (var_decl::get_pretty_representation): Use
30935	get_type_declaration rather than casting.
30936
309372014-02-21  Dodji Seketeli <dodji@redhat.com>
30938
30939	Fix a glitch in member data diff reporting
30940	* src/abg-comparison.cc (represent): Do not forget the "'" around
30941	the access specifier.
30942
309432014-02-21  Dodji Seketeli <dodji@redhat.com>
30944
30945	Proper support for diffing member types
30946	* include/abg-comparison.h (class member_type_diff): New class.
30947	(member_type_diff_sptr): New convenience typedef.
30948	(compute_diff): New overload for member_type_diff.
30949	* src/abg-comparison.cc (struct member_type_diff::priv): New
30950	definition.
30951	(member_type_diff::{first_member_type, second_member_type,
30952	underlying_type_diff, length}): New member function definitions.
30953	(compute_diff): New definition for member type diffs.
30954	(compute_diff_for_types): Support diffing
30955	member types.
30956	(class_diff::report): Do not use strip member types now that we
30957	can properly diff them.
30958
309592014-02-21  Dodji Seketeli <dodji@redhat.com>
30960
30961	Fix the support for printing cv-qualified names
30962	* include/abg-ir.h (decl_base::{location_, name_,
30963	qualified_parent_name_, qualified_name_}): Make these data members
30964	protected rather than private.
30965	(decl_base::get_qualified_parent_name): Declare new member
30966	functions.
30967	(decl_base::get_qualified_name): Make the core overload virtual.
30968	Simplify the other overload that calls the core one.
30969	(qualified_type_def::build_name): Declare new protected helper
30970	function.
30971	(qualified_type_def::{get_cv_quals_string_prefix,
30972	get_qualified_name}): Declare new functions.
30973	(pointer_type_def::{get_qualified_name}}): Likewise.
30974	(class_decl::member_type::get_qualified_name): Likewise.
30975	* src/abg-ir.cc (decl_base::get_qualified_parent_name): New
30976	definition.
30977	(decl_base::get_name): Make this out-of-line.
30978	(decl_base::get_qualified_name): The signature of this got
30979	simplified.  Make it use the new get_qualified_parent_name.
30980	(qualified_type_def::{build_name, get_qualified_name,
30981	get_cv_quals_string_prefix}): New definitions.
30982	(qualified_type_def::qualified_type_def): Update the constructor
30983	to use the new build_name function above.
30984	(pointer_type_def::get_qualified_name): New definitions.
30985	(reference_type_def::get_qualified_name): Likewise.
30986	(class_decl::member_type::get_qualified_name): Likewise.
30987
309882014-02-21  Dodji Seketeli <dodji@redhat.com>
30989
30990	Misc style fix
30991	* src/abg-comparison.cc (represent): Remove useless curly braces
30992	and vertical spaces.
30993
309942014-02-21  Dodji Seketeli <dodji@redhat.com>
30995
30996	Support DW_AT_specification on class/struct DIEs
30997	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Support
30998	DW_AT_specification on DW_TAG_{class,structure}type.
30999
310002014-02-21  Dodji Seketeli <dodji@redhat.com>
31001
31002	Avoid comparing member types and class templates
31003	* src/abg-comparison.h (compute_diff): For class_decl_sptr, do not
31004	compare member types and member class templates.  This adds a lots
31005	of noise that is not necessarily useful for now.
31006	* tests/data/test-bidiff/test-qual-type0-report.txt: Update tests.
31007	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
31008	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
31009
310102014-02-21  Dodji Seketeli <dodji@redhat.com>
31011
31012	Fix the report of added/removed function parameters
31013	* src/abg-comparison.cc
31014	(function_decl_diff::priv::{inserted_parms_, removed_parms_}):
31015	Remove these.
31016	(function_decl_diff::ensure_lookup_tables_populated): Fix thinko.
31017	Avoid using the members removed above.  Use one less loop to
31018	update the changed params.
31019	(function_decl_diff::report): Avoid using the removed_parms_
31020	data member that was removed above.
31021
310222014-02-21  Dodji Seketeli <dodji@redhat.com>
31023
31024	Put the setter of access specifiers in class_decl::member_base
31025	* include/abg-ir.h
31026	(class_decl::member_base::set_access_specifier): Put the setter
31027	for access specifier here, where it belongs ...
31028	(class_decl::member_type::set_access_specifier): ... not here.
31029
310302014-02-21  Dodji Seketeli <dodji@redhat.com>
31031
31032	First approach to avoid duplication of IR nodes for forward-declared classes
31033	* src/abg-dwarf-reader.cc (is_declaration_only): Put this back (I
31034	removed it earlier).
31035	(build_class_type_and_add_to_ir): If the class is a
31036	declaration-only (a forward declaration), do not add a new
31037	declaration only IR node.
31038
310392014-02-21  Dodji Seketeli <dodji@redhat.com>
31040
31041	Do not forget to set the indexes of fn parms
31042	* include/abg-ir.h (function_type::function_type): In the
31043	constructor that takes a vector of parms, walk the vector and set
31044	the indexes of the parms.
31045
310462014-02-19  Dodji Seketeli <dodji@redhat.com>
31047
31048	Misc diff reporting output cleanup
31049	* src/abg-comparison.cc (function_decl_diff::report): Do not talk
31050	about changed function anymore.  Rather, say that some indirect
31051	sub-types changed in the function.
31052
310532014-02-19  Dodji Seketeli <dodji@redhat.com>
31054
31055	Do not forget some member types/functions we built IR nodes for
31056	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
31057	Associate the member type IR node to the offset of the die of the
31058	member type.
31059	(build_ir_node_from_die): For a DW_TAG_subprogram DIE that has a
31060	DW_AT_specification pointing to another subprogram DIE, associate
31061	the offset of this DIE to the IR node of that other DIE.
31062
310632014-02-19  Dodji Seketeli <dodji@redhat.com>
31064
31065	Better support of static member variables
31066	* include/abg-fwd.h (fqn_to_components)
31067	(lookup_type_in_translation_unit, demangle_cplus_mangled_name):
31068	Declare new public entry points
31069	* src/abg-comparison.cc (corpus_diff::report): Report stuff about
31070	global variables using their mangled name, and demangle them.  If
31071	there is no mangled name for the variable, then use its pretty
31072	representation.
31073	(compute_diff): For the corpus overload, compare global variables
31074	using their mangled name, if its available; otherwise, fall back
31075	to using their pretty representation.
31076	* src/abg-corpus.cc (var_comp::operator()(const var_decl*,
31077	const_var_decl*)): Compare variables using their mangled name in
31078	priority.  If it's not available then use their pretty
31079	representation.
31080	* src/abg-dwarf-reader.cc
31081	(read_context::var_decls_to_re_add_to_tree): New accessor.
31082	(build_translation_unit_and_add_to_ir): If there is what appears
31083	to be a definition of a static member variable variable -- this is
31084	in case this definition lacks the DW_AT_specification attribute
31085	that links it to the DW_TAG_member or DW_TAG_variable DIE that is
31086	a child of the right class/structure DIE -- that is not at the
31087	right place in the DIE tree, remove it from the its current place
31088	in the tree and try to hang it off of the right DIE.  To do this,
31089	de-mangle its mangled name, look at what is supposed to be the
31090	parent class name, look it up in the translation unit IR, and if
31091	found, stick the variable IR node in there, as a static member
31092	variable.  If not found, then bad luck.
31093	(build_class_type_and_add_to_ir): Do not try to see if a member
31094	variable is static here as the way I was doing it was unreliable.
31095	Build the data member node directly w/o going through building a
31096	variable node first.  Register the data member in the die offset
31097	-> IR node map.
31098	(build_ir_node_from_die): When seeing DW_TAG_variable, look for a
31099	DW_AT_specification attribute.  If there is one, then it points to
31100	a the DIE of a data member and means that data member is static.
31101	Flag the IR node of that data member as static thus.  Update the
31102	die offset -> IR node map.  If there is no DW_AT_specification
31103	attribute or if it doesn't point to a data member DIE, schedule
31104	this variable tag for a stage when after the whole IR is built for
31105	the translation unit, the variable's mangled named is inspected,
31106	its hypothetical parent struct/class is looked up and the variable
31107	IR node is put into the node of the right struct/class IR node.
31108	* src/abg-ir.cc (enum lookup_entity_kind): New.
31109	(fqn_to_components, iterator, lookup_type_in_translation_unit)
31110	(lookup_node_in_translation_unit, lookup_type_in_translation_unit)
31111	(demangle_cplus_mangled_name): New function definitions.
31112
311132014-02-19  Dodji Seketeli <dodji@redhat.com>
31114
31115	Shorten an accessor name in the DWARF reader
31116	* src/abg-dwarf-reader.cc (read_context::cur_tu): Rename
31117	read_context::current_translation_unit into this.
31118	(read_context::current_scope, die_location)
31119	(build_translation_unit_and_add_to_ir, build_enum_type)
31120	(build_function_decl): Adjust wrt the change above.
31121
311222014-02-19  Dodji Seketeli <dodji@redhat.com>
31123
31124	Unset decl scope when removing the decl from its scope
31125	* src/abg-ir.cc (remove_decl_from_scope): Unset the scope of the
31126	decl.
31127
311282014-02-19  Dodji Seketeli <dodji@redhat.com>
31129
31130	Support adding data member from var_decl
31131	* src/abg-ir.cc (class_decl::insert_member_decl):  Support taking
31132	a var_decl.
31133	(class_decl::add_data_member): Do not insert a data member twice.
31134
311352014-02-19  Dodji Seketeli <dodji@redhat.com>
31136
31137	Fix qualified type pretty printing
31138	* src/abg-ir.cc (qualified_type_def::qualified_type_def): Remove
31139	useless white space.
31140
311412014-02-19  Dodji Seketeli <dodji@redhat.com>
31142
31143	Add class_decl::member_base::set_is_static() accessor
31144	* include/abg-ir.h (class_decl::member_base::get_is_static):
31145	Rename is_static into get_is_static.
31146	(class_decl::member_base::set_is_static): New accessor.
31147	* src/abg-comparison.cc (represent): Adjust for
31148	class_decl::member_base::is_static -> get_is_static.
31149	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Likewise.
31150	src/abg-hash.cc (class_decl::member_function::hash::operator()):
31151	Likewise.
31152	* src/abg-ir.cc (class_decl::member_base::operator==): Likewise.
31153	* src/abg-writer.cc (write_class_decl): Likewise.
31154
311552014-02-13  Dodji Seketeli <dodji@redhat.com>
31156
31157	Fixes needed to diff libstdc++ v4_4 against master
31158	* src/abg-comparison.cc
31159	(class_diff::ensure_lookup_tables_populated): Support several
31160	instances of the same member function being deleted.  That can
31161	happen when the same member function was present in the initial
31162	class several times.  Yeah, I've seen that in dwarf.
31163	* src/abg-corpus.cc (corpus::priv::build_symbol_table): Do not add
31164	the same variable (identified by its mangled name) twice in the
31165	variable symbol table.
31166
311672014-02-13  Dodji Seketeli <dodji@redhat.com>
31168
31169	Fix wrong deleted functions count when diffing corpora
31170	* src/abg-comparison.cc
31171	(corpus_diff::priv::ensure_lookup_tables_populated): If a function
31172	has changed, deleted it from the list the removed functions.
31173
311742014-02-13  Dodji Seketeli <dodji@redhat.com>
31175
31176	Several fixes needed to read libstdc++.so
31177	* src/abg-reader.cc (read_context::map_id_and_node): Allow
31178	duplicated class and basic type declarations.
31179	(build_type_decl): Allow duplicated type decls.
31180	(build_qualified_type_decl, build_pointer_type_def)
31181	(build_reference_type_def): As there can be several distinct
31182	duplicated types, compare them by value.
31183	(build_class_decl): There can be duplicated class decls.
31184	* src/abg-writer.cc (write_enum_type_decl): The name of the enum
31185	needs to be xml-escaped.
31186
311872014-02-12  Dodji Seketeli <dodji@redhat.com>
31188
31189	qualified, pointer and reference types can be member types
31190	* src/abg-reader.cc (build_qualified_type_decl)
31191	(build_pointer_type_def, build_reference_type_def): Consider that
31192	these types can be member types.
31193
311942014-02-12  Dodji Seketeli <dodji@redhat.com>
31195
31196	Consider two typedefs with different names to be different
31197	* src/abg-ir.cc (typedef_decl::operator==): Consider two typedefs
31198	with different names to be different.
31199
312002014-02-12  Dodji Seketeli <dodji@redhat.com>
31201
31202	Really Avoid trying to build IR nodes for non-public functions
31203	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For the
31204	DW_TAG_subprogram case, bail out early if the current function is
31205	non-public.
31206
312072014-02-12  Dodji Seketeli <dodji@redhat.com>
31208
31209	Add --{changed,deleted,added}-{fns,vars} options to bidiff
31210	* include/abg-comparison.h
31211	(diff_context::{show_{deleted,changed_added}_{fns,vars}}): Declare
31212	new accessors.
31213	(corpus_diff::context): Declare new getter.
31214	* src/abg-comparison.cc
31215	(diff_context::{show_{deleted,changed_added}_{fns,vars}}): Define
31216	these new accessors.
31217	(corpus_diff::priv::emit_corpus_diff_stats): Define new function.
31218	(corpus_diff::context()): Define new getter.
31219	(corpus_diff::report): Use the new
31220	corpus_diff::priv::emit_corpus_diff_stats to emit diff stats at
31221	the beginning of the report.  Conditionalise emitting the
31222	different parts of the reports (changed,deleted,added stuff) on
31223	the values of the new properties that were just added.
31224	* tools/bidiff.cc
31225	(options::{show_{deleted,changed,added}_{fns,vars}): New
31226	properties.
31227	(display_usage, parse_command_line): Update for the newly added
31228	--{changed,deleted,added}-{fns,vars} command line options.
31229	(set_diff_context_from_opts): Define new static function.
31230	(main): Create a diff context, initialize it from the options
31231	(using set_diff_context_from_opts) and pass it to compute_diff.
31232
312332014-02-11  Dodji Seketeli <dodji@redhat.com>
31234
31235	Add --show-symtabs to bidiff
31236	* tools/bidiff.cc (display_usage): Update usage string.
31237	(parse_command_line): Recognize the --show-symtab cmdline option.
31238	(display_symtabs): New static function.
31239	(main): Call the new display_symtabs.
31240
312412014-02-11  Dodji Seketeli <dodji@redhat.com>
31242
31243	Harden class_decl node traversal code
31244	* src/abg-ir.cc (class_decl::traverse): Add a few asserts here and there.
31245
312462014-02-11  Dodji Seketeli <dodji@redhat.com>
31247
31248	Fix the pretty representation for member functions
31249	* src/abg-ir.cc (function_decl::get_pretty_representation): Fix
31250	this to properly display the representation of member functions.
31251	* tests/data/test-bidiff/test-enum0-report.txt: Update this.
31252	* tests/data/test-bidiff/test-enum1-report.txt: Likewise.
31253	* tests/data/test-bidiff/test-qual-type0-report.txt: Likewise.
31254	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
31255	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
31256
312572014-02-11  Dodji Seketeli <dodji@redhat.com>
31258
31259	Do not forget to traverse member types
31260	* include/abg-ir.h (class_decl::member_type::traverse): Declare new virtual
31261	function.
31262	(ir_node_visitor::visit): Declare new virtual function
31263	* src/abg-ir.cc (class_decl::member_type::traverse): Implement the
31264	traversal of a member type.
31265	(ir_node_visitor::visit): Provide a default implementation for the
31266	visitor of member type.
31267
312682014-02-11  Dodji Seketeli <dodji@redhat.com>
31269
31270	From DWARD, avoid adding IR nodes for member functions twice
31271	* include/abg-fwd.h (as_non_member_class_decl): Declare new overload.
31272	* src/abg-ir.cc (as_non_member_class_decl): Define new overload.
31273	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Add
31274	member functions to the DIE -> IR Node map.
31275	(build_ir_node_from_die): Assert that DW_TAG_subprogram cannot be
31276	for a member function here because getting the scope of the member
31277	function would have constructed the entire class that contains it,
31278	including the member function.  Then, calling
31279	build_ir_node_from_die for the DIE of the member function would
31280	find the already IR Node in the DIE -> IR Node map.
31281
312822014-02-11  Dodji Seketeli <dodji@redhat.com>
31283
31284	Fix access specifiers value
31285	* include/abg-ir.h (class_decl::enum access_specifier): Give the enumerators
31286	the same values as what the DWARF spec says.
31287
312882014-02-10  Dodji Seketeli <dodji@redhat.com>
31289
31290	Misc diff report cleanups
31291	* include/abg-ir.h (function_decl::parameter::get_type_name): Add
31292	comment.
31293	(function_decl::parameter::get_type_pretty_representation): New
31294	member fn.
31295	* src/abg-comparison.cc (represent): When representing changed
31296	members, use their pretty representation.
31297	(function_decl_diff::{ensure_lookup_tables_populated, report}): Use the
31298	pretty representation of parameters type.
31299	(typedef_diff::report): Enclose the underlying type in "'".
31300	(corpus_diff::report): Add proper spacing.
31301
313022014-02-10  Dodji Seketeli <dodji@redhat.com>
31303
31304	Re-organize the output of diffing two corpora
31305	* src/abg-comparison.cc (corpus_diff::report): Emit
31306	information about the number of added/removed/changed
31307	functions.  If the report is big, prefix any added
31308	function with '[A]' deleted function with '[B]'.  Also,
31309	fix indentation.
31310
313112014-02-10  Dodji Seketeli <dodji@redhat.com>
31312
31313	Support diffing entities of different kinds.
31314	* include/abg-comparison.h (class distinct_diff): Declare new
31315	type.
31316	(compute_diff_for_distinct_kinds): Declare new function.
31317	* src/abg-comparison.cc (distinct_diff::{distinct_diff, first,
31318	second, entities_are_of_distinct_kinds, length, report}): Define
31319	new member functions.
31320	(compute_diff_for_distinct_kinds, try_to_diff_distinct_kinds):
31321	Define new function.
31322	(compute_diff_for_types, compute_diff_for_decls): Support diffing
31323	entities of different kinds.
31324
313252014-02-10  Dodji Seketeli <dodji@redhat.com>
31326
31327	Avoid recursive comparison on class_decl & perform some optimizations
31328	* src/abg-ir.cc (class_decl::operator==(const decl_base& other)
31329	const): Bail out early in case of recursive comparison, or if type
31330	hashes are different.  Do not try to compute qualified name unless
31331	it's really necessary.  The optimizations part of this change were
31332	hinted by profiling.
31333
313342014-02-10  Dodji Seketeli <dodji@redhat.com>
31335
31336	Handle the DIE for a fn that has a 'specification' attribute
31337	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For the
31338	DW_TAG_subprogram case, if the function has a DW_AT_specification
31339	attribute, build the IR node for the specification DIE instead.
31340
313412014-02-10  Dodji Seketeli <dodji@redhat.com>
31342
31343	Add an assert in the dwarf reader
31344	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
31345	Assert that the result of build_function_decl on a member function
31346	is a method_decl.
31347
313482014-02-10  Dodji Seketeli <dodji@redhat.com>
31349
31350	Do not forget that build_ir_node_from_die can return member types
31351	* src/abg-dwarf-reader.cc (get_scope_for_die): Handle member class
31352	types.
31353	(build_function_decl): Likewise.
31354
313552014-02-10  Dodji Seketeli <dodji@redhat.com>
31356
31357	A member function can have an empty mangled name
31358	* src/abg-comparison.cc
31359	(class_diff::ensure_lookup_tables_populated): If a member function
31360	has an empty mangling name, use its pretty representation.
31361
313622014-02-10  Dodji Seketeli <dodji@redhat.com>
31363
31364	Remove too eager asserts
31365	* src/abg-comparison.cc
31366	(class_diff::ensure_lookup_tables_populated): Do not assert that
31367	the same member type cannot be deleted/inserted twice.  It
31368	actually can for, pointers, references, typedefs, etc.
31369
313702014-02-10  Dodji Seketeli <dodji@redhat.com>
31371
31372	Fix some new line handling in diff reports
31373	* src/abg-comparison.cc (represent): Remove extra new line after
31374	reporting virtual function number.
31375	(class_diff::report): Do not forget to emit a new line between two
31376	inserted functions.
31377
313782014-02-10  Dodji Seketeli <dodji@redhat.com>
31379
31380	Perform the diff of changed functions and variables in the right order
31381	* src/abg-comparison.cc
31382	(corpus_diff::priv::ensure_lookup_tables_populated): In a changed
31383	function or variable, do not mix up the new and old value.
31384
313852014-02-10  Dodji Seketeli <dodji@redhat.com>
31386
31387	Fix typo in report
31388	* src/abg-comparison.cc (reference_diff::report): Fix typo
31389	refereneced -> referenced.
31390
313912014-02-10  Dodji Seketeli <dodji@redhat.com>
31392
31393	Fix various crashes
31394	* src/abg-comparison.cc (decls_equal::operator()(const decls_type,
31395	const decls_type) const): Do not crash when of the decl_types is
31396	NULL.
31397	({pointer_diff, reference_diff, enum_diff}::length): Avoid
31398	crashing if the underlying type is NULL.
31399	* abg-ir.cc (function_decl::get_pretty_representation): Avoid
31400	crashing on member functions with empty parameter set.
31401	signed-off-by: Dodji Seketeli <dodji@redhat.com>
31402
314032014-02-10  Dodji Seketeli <dodji@redhat.com>
31404
31405	More optimizations hinted by profiling
31406	* include/abg-ir.h (decl_base::qualified_name_): New member.
31407	(decl_base::get_qualified_name): Cache the qualified name.
31408	(decl_base::get_type): Return a reference on the shared pointer.
31409	(method_type::get_class_type): Likewise.
31410	(class_decl::get_definition_of_declaration): Likewise.
31411	(class_decl::member_type::get_underlying_type): Likewise.
31412	(class_decl::base_spec::get_base_class): Likewise.
31413	* src/abg-ir.cc (decl_base::get_qualified_name): Implement the
31414	caching.
31415	(class_decl::member_type::get_qualified_name): Return a reference
31416	on the shared pointer.
31417
314182014-02-10  Dodji Seketeli <dodji@redhat.com>
31419
31420	Avoid crashing when getting function parm type name
31421	* include/abg-ir.h (function_decl::parameter::get_type_name): New
31422	member function.
31423	* src/abg-comparison.cc
31424	(function_decl_diff::ensure_lookup_tables_populated): Use the new
31425	member function above.
31426
314272014-02-10  Dodji Seketeli <dodji@redhat.com>
31428
31429	Small optimization hinted by profiling
31430	* include/abg-diff-utils.h (d_path_vec::max_d): Avoid using member
31431	functions.  This is relevant only when compiling w/o optimization.
31432
314332014-02-10  Dodji Seketeli <dodji@redhat.com>
31434
31435	Fix allocation of diff_utils::d_path_vec
31436	* include/abg-diff-utils.h (d_path_vec::d_path_vec):  Do not
31437	forget to allocate enough data for reverse vectors as well.  The
31438	comment of the constructor is accurate.
31439
314402014-02-07  Dodji Seketeli <dodji@redhat.com>
31441
31442	Misc style fixes
31443	* include/abg-hash.h (combine_hashes): Remove trailing white
31444	spaces.
31445	* include/abg-ir.h (class function_decl): Add end-of-class
31446	comment.
31447	(struct type_base::cached_hash): Fix comment.
31448	* src/abg-comparison.cc: Remove useless new line.
31449	* src/abg-corpus.cc: Likewise.
31450	* src/abg-writer.cc: Likewise.
31451
314522014-02-07  Dodji Seketeli <dodji@redhat.com>
31453
31454	Support looking through decl-only classes and update diff reports accordingly
31455	* include/abg-comparison.h (class diff_context): New class.
31456	(class diff::{ctxt_, reported_once_, currently_reporting_}): New
31457	data members.
31458	(diff::diff): Initialize the new data members above.
31459	(diff::{context, currently_reporting, reported_once}): New
31460	accessors.
31461	(compute_diff, var_diff::var_diff, pointer_diff::pointer_diff)
31462	(reference_diff::reference_diff, qualified_type_diff)
31463	(enum_diff:enum_diff, class_diff::class_diff)
31464	(scope_diff::scope_diff, function_decl_diff::function_decl_diff)
31465	(type_decl_diff::type_decl_diff, typedef_diff::typedef_diff)
31466	(translation_unit_diff::translation_unit_diff, corpus_diff::corpus_diff):
31467	Take an additional pointer to diff_context.
31468	* abg-comparison.cc (diff_context::{has_diff_for,
31469	has_diff_for_types, add_diff}): New methods.
31470	(try_to_diff, compute_diff_for_types, compute_diff_for_decls)
31471	(represent): Take an additional pointer to
31472	diff_context in argument.  In the later function, do not re-report
31473	a diff if it has already been reported, or if it's being reported
31474	already.
31475	(var_diff::var_diff, pointer_diff::pointer_diff)
31476	(reference_diff::reference_diff)
31477	(qualified_type_diff::qualified_type_diff, enum_diff::enum_diff)
31478	(class_diff::class_diff, scope_diff::scope_diff)
31479	(function_decl_diff::function_decl_diff, type_decl::type_decl)
31480	(typedef_diff::typedef_diff)
31481	(translation_unit_diff::translation_unit_diff)
31482	(corpus_diff::corpus_diff): Take an additional pointer to
31483	diff_context in argument.
31484	({pointer_diff, qualified_type_diff,
31485	reference_type_diff}::report): do not re-report a diff about the
31486	underlying type if it has already been reported, or if it's being
31487	reported already.
31488	(enum_diff::report): Fix this to properly use the populated lookup
31489	tables.
31490	(compute_diff): take an additional pointer to diff_context in
31491	argument. For the var_decl, pointer_diff reference_type_diff,
31492	qualified_type_diff enum_diff, scope_diff, function_decl_diff,
31493	type_decl_diff and typedef_diff overloads, do not re-build a diff
31494	object, if one exits already.  Otherwise, record the new diff
31495	object created so that it can be re-used later.
31496	(enum_diff::ensure_lookup_tables_populated): Fix logic to avoid
31497	one loop.
31498	(class_decl::priv::{deleted_member_functions_,
31499	inserted_member_functions_, changed_member_function_}): New
31500	members to support reporting about member functions changes.
31501	(class_decl::{lookup_tables_empty, clear_lookup_tables, length):
31502	Update for the new additions above.
31503	(class_decl::ensure_lookup_tables_populated): Likewise.  Fix to
31504	properly use the lookup tables and also avoid a going through
31505	several loops to compute the changed members.
31506	(class_decl::report): Flip a switch to make the beginning and end
31507	of the reporting, in the context.  Also, do not try to report
31508	again, if we were already reporting this diff.  Fix quite some
31509	spots to properly use the lookup tables.
31510	(scope_diff::ensure_lookup_tables_populated): Skip decl-only
31511	classes during comparison. Fix some thinkos.  Fix logic to avoid a
31512	loop.
31513	(scope_diff::report): Adjust to pass a context to
31514	compute_diff_for_types.
31515	(function_decl_diff::ensure_lookup_tables_populated): Fix logic to
31516	avoid a loop.
31517	(function_decl_diff::report): Adjust call to
31518	compute_diff_for_types to pass the context.
31519	(typedef::report): Avoid re-reporting the diff of the underlying
31520	types, if we are already reporting it.
31521	(corpus_diff::priv::ensure_lookup_tables_populated): Use the
31522	pretty representation of the function rather than its name to key
31523	the maps of deleted and added functions. Fix logic to avoid going
31524	through an additional loop for the changed functions.
31525	(corpus_diff::report): Add a title for removed/added/changed
31526	functions.  Fix indentation for added/removed/changed functions.
31527	* include/abg-ir.h (class_decl::comparison_started_): New member
31528	* src/abg-dwarf-reader.cc (is_public_decl): Style fix.
31529	(is_declaration_only_): New static function.
31530	(build_class_type_and_add_to_ir): Create decl-only classes (IR) for
31531	classes flagged as declaration-only in the DWARF.
31532	* src/abg-hash.cc (class_decl::hash::operator()): Do not forget to
31533	include the "is_declaration_only" flag into the hashing.
31534	* src/abg-ir.cc (class_decl::operator==): Look through decl-only
31535	classes to get their definitions and compare the definitions
31536	instead.  Avoid comparing member types and fns if the comparison
31537	of this type has already started.
31538	* src/abg-reader.cc (build_class_decl): Set the definition of a
31539	declaration, when we see it.
31540	* tests/data/test-bidiff/test-qual-type0-report.txt: Update.
31541	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
31542	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
31543	signed-off-by: Dodji Seketeli <dodji@redhat.com>
31544
315452014-02-07  Dodji Seketeli <dodji@redhat.com>
31546
31547	Support reading *.bi input with duplicated qualified type ids.
31548	* src/abg-reader.cc (read_context::map_id_and_node): Support
31549	qualified types with duplicated ids.
31550
315512014-02-07  Dodji Seketeli <dodji@redhat.com>
31552
31553	Fix comparison of member types
31554	* src/abg-ir.cc (class_decl::member_type::operator==): Compare the
31555	underlying type of the member type.
31556
315572014-02-07  Dodji Seketeli <dodji@redhat.com>
31558
31559	Avoid duplicated entries in the symbol tables of the corpus
31560	* include/abg-ir.h ({var_decl, function_decl}::ptr_equal): New
31561	equality functor for pointers to var_decl and function_decl.
31562	({function_decl, var_decl}::hash): Make these hashing functors
31563	public.
31564	* include/abg-hash.cc (struct var_decl::hash, struct
31565	function_decl::hash): Remove these from here.  There are now in
31566	the public abg-ir.h.
31567	({var_decl, function_decl}::hash::operator()): Define these here.
31568	* src/abg-corpus.cc (symtab_build_visitor_type::{fns_map,
31569	fn_is_in_map, add_fn_to_map, vars_map, var_is_in_map,
31570	add_var_to_map}): New accessors.
31571	(corpus::priv::build_symbol_table): Avoid duplicated entries in
31572	variables and functions symbols tables.
31573
315742014-02-07  Dodji Seketeli <dodji@redhat.com>
31575
31576	Ease debugging of abigail::diff_utils::compute_diff
31577	* include/abg-diff-utils.h (compute_diff): Add asserts on for the
31578	length of the shortest edit script during the divide and conquer
31579	part of the diff algorithm.
31580
315812014-02-07  Dodji Seketeli <dodji@redhat.com>
31582
31583	Fix further reaching reverse path calculation in core diff algo
31584	* include/abg-diff-utils.h (end_of_frr_d_path_in_k_plus_delta):
31585	Favour moving left when the two abscissas at the previous steps
31586	are equal.
31587	(compute_diff): Update the length of the shortest edit script when
31588	the size of one of the inputs is zero.
31589	* tests/test-core-diff.cc (in_out_spec): Add a new input to diff
31590	two sequences for regression testing.
31591	* tests/data/test-core-diff/report13.txt: New reference for
31592	the comparison of the new regression test above.
31593
315942014-02-07  Dodji Seketeli <dodji@redhat.com>
31595
31596	Add debugging facilities for core diffing issues
31597	* include/abg-ir.h (fns_to_str): Declare new fn.
31598	* src/abg-ir.cc (get_next_string, fn_to_str, fns_to_str): New
31599	static functions.
31600	(fns_to_str): Define new fn.
31601	* tools/abg-tools-utils.cc (dump_functions_as_string)
31602	(dump_function_names, compare_functions): New functions.
31603
316042014-01-20  Dodji Seketeli <dodji@redhat.com>
31605
31606	Fix apidoc comment
31607	* src/abg-ir.cc (decl_base::operator==): Fix comment.
31608
316092014-01-20  Dodji Seketeli <dodji@redhat.com>
31610
31611	Fix bilint outputting for translation units & corpus
31612	* tools/bilint.cc (main): Fix logic.
31613
316142014-01-20  Dodji Seketeli <dodji@redhat.com>
31615
31616	Remove debugging assertion when diffing
31617	* include/abg-diff-utils.h (d_path_vec::at): Do not check for
31618	bounds.
31619
316202014-01-20  Dodji Seketeli <dodji@redhat.com>
31621
31622	Do not use exceptions in dynamic_cast
31623	* src/abg-ir.cc (class_decl::member_function::operator==)
31624	(class_decl::member_function::operator==): Do not use the
31625	exception path for dynamic casting.  This was near the top of many
31626	profiles.
31627
316282014-01-20  Dodji Seketeli <dodji@redhat.com>
31629
31630	Just add decls sequentially when reading from DWARF
31631	* src/abg-dwarf-reader.cc (insert_decl_into_ir_under_scope)
31632	(build_namespace_decl_and_add_to_ir, build_enum_type)
31633	(build_class_type_and_add_to_ir, build_ir_node_from_die)
31634	(build_ir_node_from_die): Remove.
31635	* tests/data/test-read-dwarf/test0.abi: Update because now type
31636	IDs can be used before they are defined.
31637	* tests/data/test-read-dwarf/test1.abi: Likewise.
31638
316392014-01-17  Dodji Seketeli <dodji@redhat.com>
31640
31641	Misc Doxygen API doc fixes
31642	* include/abg-comparison.h: Various doxygen api doc string fixes.
31643	* include/abg-diff-utils.h: Likewise.
31644	* include/abg-dwarf-reader.h: Likewise.
31645	* include/abg-ir.h: Likewise.
31646	* include/abg-reader.h: Likewise.
31647	* include/abg-writer.h: Likewise.
31648	* src/abg-comparison.cc: Likewise.
31649	* src/abg-corpus.cc: Likewise.
31650	* src/abg-dwarf-reader.cc: Likewise.
31651	* src/abg-ir.cc: Likewise.
31652	* src/abg-libxml-utils.cc: Likewise.
31653	* src/abg-reader.cc: Likewise.
31654	* src/abg-writer.cc: Likewise.
31655
316562014-01-17  Dodji Seketeli <dodji@redhat.com>
31657
31658	Fix bilint --noout, add --diff option
31659	* tools/bilint.cc (options::options): Initialize ...
31660	(options::{diff, bidiff}): ... new members.
31661	(display_usage): Update the display usage string for --diff &
31662	--bidiff options.
31663	(parse_command_line): Support the --diff and --bidiff options.
31664	(main): Require the --diff option to actually diff the emitted
31665	output with input.  Make --noout really work for when reading
31666	from dwarf.
31667
316682014-01-17  Dodji Seketeli <dodji@redhat.com>
31669
31670	Read .abi files with types used before being defined & lots of fixes
31671	* src/abg-reader.cc (read_context::m_decls_stack): Make this is a
31672	std::deque, rather than a std::stack.
31673	(read_context::{get_id_xml_node_map,
31674	clear_id_xml_node_map, get_xml_node_decl_map,
31675	map_xml_node_to_decl, get_decl_for_xml_node,
31676	clear_xml_node_decl_map, map_id_and_node, get_xml_node_from_id,
31677	get_scope_for_node, build_or_get_type_decl}): New member
31678	functions.
31679	(read_context::{get_cur_decl, push_decl, pop_decl}): Update this
31680	now that the decl stack uses a std::deque.
31681	(read_context::clear_decls_stack): New.
31682	(read_context::get_translation_unit):  Use the first decl of the
31683	decl stack, that is most certainly the global scope of the current
31684	translation unit, to get the translation unit.
31685	(read_context::key_type_decl): Take a new flag to force the
31686	re-keying; that is set an id to a new type, even if the id was
31687	already set to a type.
31688	(read_context::push_and_key_type_decl): Assert that a type must
31689	have a declaration.
31690	(handle_*): Make these return the decl_base_sptr resulting from
31691	the parsing of the xml node, rather than just a bool.
31692	(walk_xml_node_to_map_type_ids): New static function.
31693	(read_translation_unit_from_input): Read the abi-instr xml
31694	sub-tree once, just to build an id->xml node map.  That way, when a
31695	declaration needs a type what is not yet defined, it can just get
31696	its XML node, build the type from it and use it.  Do not forget to
31697	advance the xml reader cursor when the reading of the 'abi-instr'
31698	sub-tree is read.  Clear all the new maps we have used for the
31699	current translation unit.
31700	(handle_element_node): Cleanup logic.
31701	(build_namespace_decl): Update the new xml node -> decl map, and
31702	use it to avoid building the same namespace twice.
31703	(build_function_parameter): Do not even try to get the type of a
31704	variadic parameter.
31705	(build_function_decl, build_var_decl): Support types that are defined later.
31706	(build_type_decl): Do not build the same type twice.  But there
31707	can be several 'unnamed-enum-underlying-type' node.  In that case
31708	just return the previous one.
31709	(build_qualified_type_decl, build_pointer_type_def)
31710	(build_reference_type_def, build_enum_type_decl)
31711	(build_typedef_decl): Support underlying type defined later.
31712	(build_class_decl): Support declaration-only related cases where
31713	we can have several xml nodes with the same id.  Update the new
31714	xml node -> IR node maps.  Fix member type adding.
31715	(build_type_tparameter, build_non_type_tparameter)
31716	(build_template_tparameter): Support used types defined later.
31717
317182014-01-17  Dodji Seketeli <dodji@redhat.com>
31719
31720	Fix member class template creation
31721	* src/abg-ir.cc (class_decl::add_member_class_template): Do not
31722	forget the scope of the member class template itself.
31723
317242014-01-17  Dodji Seketeli <dodji@redhat.com>
31725
31726	Avoid endless loop in unescape_xml_string
31727	* src/abg-libxml-utils.cc (unescape_xml_string): Avoid and endless
31728	loop for strings containing an '&' but that are not pre-defined
31729	entities.
31730
317312014-01-17  Dodji Seketeli <dodji@redhat.com>
31732
31733	Fix a potential crash
31734	* src/abg-ir.cc (decl_base::get_qualified_name): Do not crash if
31735	the scope is empty.
31736
317372014-01-17  Dodji Seketeli <dodji@redhat.com>
31738
31739	Do not loose the member type information when reading them from DWARF
31740	* include/abg-ir.h (class_decl::declaration_):  Make this be a
31741	decl_base_sptr so that it can actually be a
31742	class_decl::member_type which underlying type is a class decl.
31743	(class_decl::{set, get}_earlier_declaration): Take or return a
31744	decl_base_sptr rather than a class_decl_sptr.
31745	* src/abg-ir.cc (class_decl::set_earlier_declaration): Take a
31746	decl_base_sptr rather than a class_decl_sptr.
31747	* src/abg-dwarf-reader.cc (die_class_map_type): Make this map take
31748	decl_base_sptr rather than a class_decl_sptr.
31749	(build_class_type_and_add_to_ir): If the class being currently
31750	built is a member class, do not loose that information after it
31751	has been added to its scope.  Also, base types and types of member
31752	variables can be member types and should retain that information.
31753	(build_qualified_type): Likewise, the underlying type of a
31754	qualified type shouldn't loose the information about its
31755	potentially being a member type.
31756	(build_pointer_type_def, build_reference_type, build_typedef_type)
31757	(build_var_decl, build_function_decl): Likewise.
31758
317592014-01-17  Dodji Seketeli <dodji@redhat.com>
31760
31761	Fix hashing of member types
31762	* include/abg-ir.h (class_decl::{member_function_template,
31763	member_class_template}):  Make these inherit from decl_base, to
31764	comply with class_decl::member_type.
31765	(class_decl_base_spec::{base_spec, member_type, member_function,
31766	member_function_template, member_class_template}::hash): Declare
31767	these hashing functors in the header here.
31768	(class_decl::{member_base, member_type, data_member,
31769	member_function, member_function_template,
31770	member_class_template}::hash::operator()): define these out of
31771	line here.
31772	(type_base::dynamic_hash::operator()): Update this to hash member
31773	things.
31774	* src/abg-writer.cc (write_qualified_type_def)
31775	(write_pointer_type_def, write_class_decl)
31776	(write_reference_type_def, write_enum_type_decl): Add an overload
31777	that takes the type ID to use in the serialization.
31778	(write_member_type): New implementation.
31779
317802014-01-17  Dodji Seketeli <dodji@redhat.com>
31781
31782	A Member class can also be a scope for other decls in DWARF
31783	* include/abg-fwd.h (as_non_member_class_decl): Declare ...
31784	* src/abg-ir.cc (as_non_member_class_decl): ... this new function.
31785	* include/abg-ir.h (class class_decl::member_type): Add more
31786	comments about member types.
31787	* src/abg-dwarf-reader.cc (get_scope_for_die): Use the new
31788	as_non_member_class_decl here.
31789
317902014-01-17  Dodji Seketeli <dodji@redhat.com>
31791
31792	Misc style fixes
31793	* include/abg-ir.h (location_manager::_Impl): Rename this type
31794	into priv.
31795	* src/abg-ir.cc b/src/abg-ir.cc (location_manager::_Impl):
31796	Likewise.
31797	(location_manager::location_manager): Update for the renaming
31798	above.
31799	* src/abg-reader.cc (build_type_decl): Remove useless white space.
31800	(build_enum_type_decl, build_class_decl): Use the _sptr typedef in
31801	the return type.
31802
318032014-01-14  Dodji Seketeli <dodji@redhat.com>
31804
31805	Update namespace comments
31806	* src/abg-dwarf-reader.cc (namespace dwarf_reader): Add apidoc comment.
31807	* src/abg-reader.cc (namespace xml_reader): Update apidoc comment.
31808
318092014-01-14  Dodji Seketeli <dodji@redhat.com>
31810
31811	Expand 'abi-instr' XML element nodes during de-serialization
31812	* src/abg-reader.cc (update_read_context)
31813	(update_depth_info_of_read_context): Remove.
31814	(read_context::{pop_scope, pop_scope_or_abort): New.
31815	(read_context::{push_decl_to_current_scope,
31816	push_and_key_type_decl}): Remove the overloads that take the
31817	'update_depth_info' boolean.
31818	(build_namespace_decl): New static function.
31819	(build_function_decl, build_var_decl, build_type_decl)
31820	(build_qualified_type_decl, build_pointer_type_def)
31821	(build_reference_type_def, build_enum_type_decl, build_type_decl)
31822	(build_class_decl, build_function_tdecl, build_class_tdecl)
31823	(build_type_tparameter, build_type_composition)
31824	(build_non_type_tparameter, build_template_tparameter)
31825	(build_template_parameter, build_type): Remove the
31826	'update_depth_info' boolean from parameters.
31827	(handle_element_node): Renamed handle_element into this.  Take an
31828	xml node and a boolean to add the resulting IR node to the IR.
31829	(handle_type_decl, handle_namespace_decl)
31830	(handle_qualified_type_decl, handle_pointer_type_def)
31831	(handle_reference_type_def, handle_enum_type_decl)
31832	(handle_typedef_decl, handle_var_decl, handle_function_decl)
31833	(handle_class_decl, handle_function_tdecl, handle_class_tdecl):
31834	Take an xml node and a boolean to add the resulting IR node to the
31835	IR.
31836	(advance_cursor): No more need to call update_read_context.
31837	(read_translation_unit_from_input): Expand the 'abi-instr' node
31838	into memory so that we walk its XML nodes and build the IR nodes
31839	from them.
31840	(read_location): Remove the overload that was using the xml reader.
31841	():
31842
318432014-01-14  Dodji Seketeli <dodji@redhat.com>
31844
31845	Misc style fixes
31846	* src/abg-reader.cc (read_context::{get_cur_decl, pop_decl}): Return
31847	decl_base_sptr rather than shared_ptr<decl_base>.
31848	(read_context::push_decl): Take a decl_base_sptr rather than
31849	shared_ptr<decl_base>.
31850
318512014-01-14  Dodji Seketeli <dodji@redhat.com>
31852
31853	Fix apidoc markup
31854	* include/abg-comparison.h (class var_diff): @ref var_decls ->
31855	@ref var_decl.
31856	* src/abg-comparison.cc (function_decl_diff::first_function_decl):
31857	@Return -> @return.
31858
318592014-01-14  Jonathan Wakely <jwakely@redhat.com>
31860
31861	Fix checkout & build instructions
31862	* CONTRIBUTING: Fix Git repository url.
31863	* doc/website/mainpage.txt: Add elfutils into the dependencies
31864	list and fix the repository directory name.  Also use autoreconf
31865	-i.
31866	* include/abg-fwd.h: Fix Git repository URL.
31867
318682014-01-13  Dodji Seketeli <dodji@redhat.com>
31869
31870	Tweak dwarf reading test to detect more namespace linking-fu
31871	* tests/data/test-read-dwarf/test0.cc: Define a member function
31872	out-of-line, outside of its namespace.
31873	* tests/data/test-read-dwarf/test0.abi: Update the .abi file.
31874	* tests/data/test-read-dwarf/test0: Update the resulting binary.
31875
318762014-01-13  Dodji Seketeli <dodji@redhat.com>
31877
31878	Add asserts to detect type id mis-management in native format
31879	* read_translation_unit_from_input
31880	(read_translation_unit_from_input): Abort when an element could
31881	not be handled.
31882	(build_function_parameter, build_type_decl, qualified_type_def)
31883	(build_pointer_type_def, build_reference_type_def)
31884	(build_enum_type_decl, build_typedef_decl, build_class_decl)
31885	(build_type_tparameter, build_template_tparameter)
31886	(handle_qualified_type_decl, handle_pointer_type_def)
31887	(handle_reference_type_def, handle_typedef_decl):
31888	Abort when a referred-to type is not found or if a type is defined twice.
31889
318902014-01-13  Dodji Seketeli <dodji@redhat.com>
31891
31892	Misc style fixes
31893	* src/abg-hash.cc
31894	(class_decl::member_function_template::hash::operator()): Remove
31895	useless vertical space.
31896	* src/abg-ir.cc (class_decl::class_decl): Properly indent.
31897	* src/abg-writer.cc (fn_tmpl_shared_ptr_map)
31898	(class_tmpl_shared_ptr_map): Properly indent these typedefs.
31899
319002014-01-13  Dodji Seketeli <dodji@redhat.com>
31901
31902	Optimize comparison & underlying type accessing
31903	* include/abg-ir.h (qualified_type::get_underlying_type)
31904	(pointer_type_def::get_pointed_to_type)
31905	(reference_type_def::get_pointed_to_type)
31906	(typedef_decl::get_underlying_type): Avoid triggering refcount
31907	counter increasing/decreasing here, by returning a reference to
31908	the underlying type.  This showed up high on a profile.
31909	({scope_decl, type_decl, scope_type_decl, namespace_decl,
31910	qualified_type_def, pointer_type_def, reference_type_def,
31911	enum_type_decl, typedef_decl, var_decl, class_decl}::operator==):
31912	Avoid taking the exception-using path of dynamic_cast.  This
31913	showed up very high on a profile.
31914
319152014-01-13  Dodji Seketeli <dodji@redhat.com>
31916
31917	Fix reading/writing native xml corpus files
31918	* src/abg-reader.cc (read_context::clear_type_map): New member
31919	function.
31920	(read_translation_unit_from_input): Read up to the next element
31921	node if we are not on an element node already.  Clear the type
31922	map.  Realize that we might be on the next 'abi-instr' node upon
31923	completion.
31924	(read_corpus_from_input): Read up to the next element node if we
31925	are not on an element node already.  It must be an "abi-corpus"
31926	node.  THen Advance to the next 'abi-instr' element node before
31927	handing it to read_translation_unit_from_input.
31928	* src/abg-writer.cc (write_context::clear_type_id_map): New member
31929	function.
31930	(write_translation_unit): Call it.
31931	* tools/abg-tools-utils.cc (guess_file_type): Read enough bytes to
31932	detect abi-corpus files magic bytes.
31933	* tools/bilint.cc (main): Do not write the corpus file to the
31934	output stream if --noout has been provided.
31935
319362014-01-13  Dodji Seketeli <dodji@redhat.com>
31937
31938	Escape xml pre-defined entities in native (de-)serialization.
31939	* include/abg-libxml-utils.h (escape_xml_string)
31940	(unescape_xml_string): Declare new functions.
31941	* src/abg-libxml-utils.cc (escape_xml_string)
31942	(unescape_xml_string): Define them.
31943	* src/abg-reader.cc (build_function_decl, build_var_decl)
31944	(build_type_decl, build_enum_type_decl, build_class_decl)
31945	(build_type_tparameter, build_non_type_tparameter)
31946	(build_template_tparameter, handle_namespace_decl)
31947	(handle_typedef_decl): Use unescape_xml_string.
31948	* src/abg-writer.cc (write_type_decl, write_function_decl)
31949	(write_class_decl, write_type_tparameter)
31950	(write_non_type_tparameter, write_template_tparameter): Use
31951	escape_xml_string.
31952
319532014-01-13  Dodji Seketeli <dodji@redhat.com>
31954
31955	Implement hash caching
31956	* include/abg-ir.h (decl_base::hash_): New member.
31957	(decl_base::{g,s}et_hash): New accessors.
31958	(type_base_::cached_hash): Forward-declare new hasher.
31959	(struct type_ptr_equal): New equality predicate.
31960	(type_shared_ptr_equal::operator()): Do not forget to test pointer
31961	equality.
31962	(type_base::cached_hash): Declare new hasher.
31963	* src/abg-hash.cc ({decl_base, type_decl, scope_type_decl,
31964	qualified_type_def, pointer_type_def, reference_type_def,
31965	enum_type_decl, typedef_decl, var_decl, function_decl,
31966	function_decl::parameter, class_decl::data_member,
31967	class_decl::member_function, class_decl, }::hash::operator()):
31968	Implement caching.
31969	(type_base::cached_hash::operator()(const type_base*)): Define.
31970	(type_base::cached_hash::operator() (const type_base_sptr):
31971	Define.
31972	* src/abg-ir.cc (type_ptr_map): Make this map use
31973	type_base::cached_hash instead of type_base::ptr_hash now.
31974	(decl_base::decl_base): Initialize the new
31975	decl_base::hash_. member.
31976	(decl_base::{s,g}et_hash): Define.
31977	(decl_base::operator==(const decl_base& other)): Take the hash in
31978	account to speed up inequality detection.
31979	* src/abg-writer.cc (type_ptr_map): Renamed type_shared_ptr_map
31980	into this.  Make it use type_base::cached_hash and type_ptr_equal
31981	instead of type_base::shared_ptr_hash and type_shared_ptr_equal.
31982	(get_id_for_type): Add overload for type_base*.  Re-write the
31983	previous overload in terms of this one.
31984	(write_context::m_type_id_map): Use type_ptr_map as the type for
31985	this.
31986
319872014-01-13  Dodji Seketeli <dodji@redhat.com>
31988
31989	Do not canonicalize types anymore; it's slow and luckily not needed
31990	* src/abg-ir.h (translation_unit::canonicalize_type): Remove.
31991	* src/abg-dwarf-reader.cc (canonicalize_and_add_type_to_ir)
31992	(canonicalize_and_insert_type_into_ir)
31993	(canonicalize_and_insert_type_into_ir_under_scope): Remove.
31994	(build_enum_type, build_class_type, build_ir_node_from_die):
31995	Update for removal of type canonicalization.
31996	* src/abg-ir.cc (translation_unit::canonicalize_type): Remove.
31997
319982014-01-13  Dodji Seketeli <dodji@redhat.com>
31999
32000	Fix class scope setting & member type de-serializing from dwarf
32001	* include/abg-fwd.h (add_decl_to_scope, insert_decl_into_scope):
32002	return the decl added to the scope.
32003	(as_non_member_type, get_type_declaration): Declare new entry
32004	points.
32005	* include/abg-ir.h (class decl_base::insert_decl_into_scope):
32006	Update this friend declaration.
32007	(class scope_decl, class_decl): Update the friend add_decl_to_scope
32008	declaration.
32009	(scope_decl::add_member_decl): Return the added decl.
32010	(class_decl_sptr): Move this typedef befoer the class_decl class
32011	declaration.
32012	(class_decl::definition_of_declaration_): New member.
32013	(class_decl::{set_definition_of_declaration,
32014	get_definition_of_declaration}): New accessors.
32015	(class_decl::add_member_decl): Return the added member.
32016	(class_decl::insert_member_type): New member.
32017	(class_decl::member_base::access_specifier): Make this protected.
32018	(class_decl::member_type): Make this inherit from type_vase.
32019	(class_decl::member_type::type_): Remove this member.
32020	(class_decl::member_type::as_type): Remove this accessor.
32021	(class_decl::member_type::operator==(const type_base&)): New.
32022	(class_decl::member_type::operator shared_ptr<type_base>() const):
32023	Remove.
32024	(class_decl::member_type::get_underlying_type): New.
32025	(class_decl::member_type::operator==(const member_type&) const):
32026	New.
32027	* src/abg-comparison.cc
32028	(class_diff::{ensure_lookup_tables_populated, report}): Adjust for
32029	the removal of class_decl::member_type::as_type.
32030	* src/abg-dwarf-reader.cc (scope_stack_type): Change this as a
32031	typedef to stack<scope_decl*>.
32032	(current_scope): Change return type from scope_decl_sptr to
32033	scope_decl*.
32034	(insert_decl_into_scope): New.
32035	(build_namespace_decl_and_add_to_ir): Use insert_decl_into_scope
32036	in lieu of add_decl_to_scope.
32037	(build_class_type_and_add_to_ir): likewise.  Link a class
32038	definition to its declaration.  Push the current scope on the
32039	scope stack.  Use as_non_member_type.  Fix setting member types.
32040	(get_scope_for_die): Look through declaration-only classe to get
32041	its definition.
32042	(build_qualified_type, build_pointer_type_def)
32043	(build_reference_type, build_typedef_type, build_var_decl)
32044	(build_function_decl): Use as_non_member_type.
32045	(build_ir_node_from_die): Fix member variable & function adding.
32046	* src/abg-ir.cc (scope_decl::{add_member_decl,
32047	insert_member_decl}): Return the added member.
32048	(add_decl_to_scope): Likewise.
32049	(insert_decl_into_scope): Likewise.
32050	(get_top_most_scope_under): Fix logic.
32051	(get_type_declaration): New overload that return a decl_base*.
32052	(as_non_member_type): New definition.
32053	(class_decl::{get_definition_of_declaration,
32054	set_definition_of_declaration, insert_member_decl}): Likewise.
32055	(class_decl::add_member_decl): Re-write in terms of
32056	class::insert_member_decl.
32057	(class_decl::insert_member_type): New definition.
32058	(class_decl::add_member_type): Re-write in terms of
32059	class_decl::insert_member_type.
32060	(class_decl::remove_member_type): Update for the
32061	class_decl::member_type::as_type removal.
32062	(class_decl::{add_data_member, add_member_function,
32063	add_member_function_template, add_member_class_template}): Call
32064	scope_decl::add_member_decl.
32065	(class_decl::member_type::member_type): Update as the type now
32066	virtually inherits from type_base.
32067	(class_decl::member_type::{set,get}_access_specifier): New
32068	definitions.
32069	(class_decl::member_type::get_underlying_type): Likewise.
32070	(class_decl::member_type::set_scope): Update wrt
32071	class_decl::member_type::as_type -> get_underlying_type rename.
32072	(class_decl::member_type::operator==(const decl_base& other)):
32073	There is no more class_decl::member_type::as_type.
32074	(class_decl::member_type::operator==(const type_base& other)):
32075	New.
32076	(class_decl::member_type::get_pretty_representation): Update wrt
32077	class_decl::member_type::as_type -> get_underlying_type rename.
32078	* src/abg-reader.cc (build_class_decl): New that add
32079	add_member_decl adds even member types, no need to add it
32080	explicitly anymore.
32081
320822014-01-07  Dodji Seketeli <dodji@redhat.com>
32083
32084	Add regression tests for dwarf reading
32085	* tests/test-read-dwarf.cc: New dwarf reading regression test.
32086	* tests/data/test-read-dwarf/test0: New test input.
32087	* data/test-read-dwarf/test0: Likewise.
32088	* data/test-read-dwarf/test0.abi: Likewise.
32089	* data/test-read-dwarf/test0.cc: Likewise.
32090	* data/test-read-dwarf/test1: Likewise.
32091	* data/test-read-dwarf/test1.abi: Likewise.
32092	* data/test-read-dwarf/test1.cc: Likewise.
32093	* tests/Makefile.am: Build the new tests/test-read-dwarf.cc file.
32094
320952014-01-07  Dodji Seketeli <dodji@redhat.com>
32096
32097	Remove useless dependencies in tests/Makefile.am
32098	* tests/Makefile.am: Remove useless *_DEPENDENCIES variables.
32099
321002014-01-07  Dodji Seketeli <dodji@redhat.com>
32101
32102	Support new 'abi-corpus' native XML format (.abi)
32103	* include/abg-reader.h (read_corpus_from_native_xml)
32104	(read_corpus_from_native_xml_file): Declare new entry points.
32105	* include/abg-writer.h (write_corpus_to_native_xml)
32106	(write_corpus_to_native_xml_file): Likewise.
32107	* src/abg-reader.cc (read_translation_unit_from_input): Renamed
32108	read_input into this.  Support new 'path' attribute for
32109	'abi-instr' XML element.
32110	(read_corpus_from_input): New static function.
32111	(read_translation_unit_from_file)
32112	(read_translation_unit_from_buffer)
32113	(read_translation_unit_from_istream): Update wrt read_input ->
32114	read_translation_unit_from_input.
32115	(read_corpus_from_native_xml, read_corpus_from_native_xml)
32116	(read_corpus_from_native_xml_file): Define new entry points.
32117	* src/abg-writer.cc (write_translation_unit): Write 'path'
32118	attribute into the 'abi-instr' xml element.
32119	(write_corpus_to_native_xml, write_corpus_to_native_xml_file):
32120	Define new entry points.
32121	* tools/abg-tools-utils.h (file_type::{FILE_TYPE_XML_CORPUS,
32122	FILE_TYPE_ZIP_CORPUS}): New enumerators.
32123	* tools/abg-tools-utils.cc (guess_file_type): Support detection of
32124	the new xml file format containing a document root 'abi-corpus'
32125	root element.
32126	* tools/bidiff.cc (main): Support diffing xml corpus-es and zip
32127	corpus-es.
32128	* tools/bidw.cc (main): Recognize elf files before reading them.
32129	* tools/bilint.cc (main): Support reading xml/zip corpus-es too.
32130	* tests/data/test-read-write/test[0-23].xml: Update 'path'
32131	attribute.
32132
321332014-01-07  Dodji Seketeli <dodji@redhat.com>
32134
32135	Misc style fixes
32136	* include/abg-writer.h (write_translation_unit): Re-indent parms.
32137	* src/abg-writer.cc (write_translation_unit): Likewise.
32138	* test/test-read-write.cc (main): Fix white space.
32139
321402014-01-06  Dodji Seketeli <dodji@redhat.com>
32141
32142	Fix global variables diff reporting in corpus-es
32143	* src/abg-comparison.cc
32144	(corpus_diff::priv::ensure_lookup_tables_populated): Fix a wrong
32145	assert, resulting from a copy paste typo.
32146
321472014-01-06  Dodji Seketeli <dodji@redhat.com>
32148
32149	Add support for global variables in corpus diffing
32150	* include/abg-comparison.h (string_var_ptr_map, changed_var_ptr)
32151	(string_changed_var_ptr_map): New convenience typedefs.
32152	* src/abg-comparison.cc
32153	(corpus_diff::priv::{deleted_vars_,added_vars_,changed_vars_}):
32154	New members.
32155	(corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables}):
32156	Update wrt the new variables related lookup tables.
32157	(corpus_diff::ensure_lookup_tables_populated): Update to populate
32158	variables related lookup tables.
32159	(corpus_diff::report): Update to display added/removed/changed
32160	variables.
32161
321622014-01-06  Dodji Seketeli <dodji@redhat.com>
32163
32164	Misc style fixlets
32165	* include/abg-comparison.h (changed_function_ptr): Fix comment.
32166	* src/abg-comparison.cc (corpus_diff::report): Likewise.
32167	* src/abg-corpus.cc (corpus::is_empty): Likewise.
32168
321692013-12-23  Dodji Seketeli <dodji@redhat.com>
32170
32171	Initial support for diffing ABI corpus files
32172	* include/abg-comparison.h (string_function_ptr_map)
32173	(changed_function_ptr, string_changed_function_ptr_map)
32174	(corpus_diff_sptr): New convenience typedefs.
32175	(translation_unit_diff): Add comments.
32176	(class corpus_diff): New type.
32177	(compute_diff): New overload for corpus_diff.
32178	* include/abg-corpus.h (corpus::{functions, variables}): New
32179	typedefs.
32180	(corpus::{operator==, get_functions, get_variables}): New members.
32181	* include/abg-diff-utils.h (struct deep_ptr_eq_functor): New
32182	functor.
32183	* include/abg-ir.h (translation_unit::operator==): New member
32184	equality operator.
32185	* src/abg-comparison.cc (struct corpus_diff::priv): New private
32186	struct holding the private members of corpus_diff.
32187	(corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables,
32188	ensure_lookup_tables_populated}): Define new private member functions.
32189	(corpus_diff::{corpus_diff, first_corpus, second_corpus,
32190	function_changes, variable_changes, length, report}): New public members.
32191	(struct noop_deleter): New struct.
32192	(compute_diff): New implementation for corpus_diff.
32193	* src/abg-corpus.cc (struct corpus::priv): Renamed corpus::impl
32194	into this.  Add new fns, vars and is_symbol_table_built data
32195	members.
32196	(corpus::priv::build_symbol_table): New member function.
32197	(class symtab_build_visitor_type): New visitor type to build the
32198	symbol table.
32199	(struct func_comp, struct var_comp): New comparison functors.
32200	(corpus::priv::build_symbol_table): Define new member function.
32201	(corpus::{corpus, add, get_translation_units, operator==,
32202	get_functions, get_variables}): Define new members.
32203	* src/abg-ir.cc (translation_unit::operator==): Define new member
32204	equality operator.
32205	(operator==(translation_unit_sptr l, translation_unit_sptr r)):
32206	Define new equality operator.
32207	* tools/abg-tools-utils.h (enum file_type): New enum.
32208	(guess_file_type): Declare new function.
32209	* tools/abg-tools-utils.cc (guess_file_type): define new function.
32210	* tools/bidiff.cc (main): Guess the type of the files given in
32211	input and support elf files reading and diffing.
32212
322132013-12-23  Dodji Seketeli <dodji@redhat.com>
32214
32215	Generalize use of equality operator in core diff algorithms
32216	* include/abg-diff-utils.h (struct default_eq_functor): New
32217	equality functor.
32218	(end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Add a
32219	new equality functor template parameter and document it.  Use it
32220	to compare the elements of the sequences given in argument.
32221	(compute_middle_snake, ses_len, compute_diff): Add a new equality
32222	functor template parameter and document it.  Adjust call to
32223	end_of_frr_d_path_in_k_plus_delta, end_of_fr_d_path_in_k and
32224	compute_middle_snake.
32225	(ses_len, compute_diff): Add a new overload that uses a
32226	default_eq_functor as comparison functor, to avoid breaking
32227	existing client code.
32228	* src/abg-diff-utils.cc (compute_middle_snake): Adjust the call to
32229	the compute_middle_snake.
32230
322312013-12-23  Dodji Seketeli <dodji@redhat.com>
32232
32233	Change ir node visitor interface work on pointer to nodes
32234	* include/abg-ir.h (ir_traversable_base): New type to be the base
32235	of IR nodes that are to be traversed.  Extends traversable_base.
32236	Its ir_traversable_base::traversable() method takes an
32237	ir_node_visitor&.
32238	(ir_node_visitor::visit): Change these virtual overloads to take
32239	pointers to IR nodes, rather than references.  This will be useful
32240	to e.g, store these IR nodes in containers on the side for some
32241	algorithms to work.  That is going to be useful later to,
32242	e.g. build symbol tables on the side, using the visitor interface.
32243	(class decl_base): Make this inherit ir_traversable_base.
32244	* src/abg-ir.cc (*::traverse): Adjust comments and the call the
32245	ir_node_visitor::visit call.  Use the ir_traversable_base type
32246	rather than traversable_base.
32247	(ir_traversable_base::traverse): Define.
32248	(ir_node_visitor::visit): Change these overloads to take pointers
32249	rather than reference to ir nodes.
32250	* tests/test-walker.cc (name_printing_visitor::visit): Adjust to
32251	take pointers rather than references.
32252
322532013-12-23  Dodji Seketeli <dodji@redhat.com>
32254
32255	Do not forget to read function parms
32256	* src/abg-dwarf-reader.cc (build_function_decl): Do not forget the
32257	the function parameters.  Oops.
32258
322592013-12-20  Dodji Seketeli <dodji@redhat.com>
32260
32261	Support reading member functions and member types from DWARF
32262	* include/abg-ir.h (method_type_sptr): New convenience typedef.
32263	* src/abg-dwarf-reader.cc (read_context::{dwarf_version,
32264	die_wip_classes_map}): New accessors.
32265	(die_is_virtual): Rename is_virtual into this.
32266	(is_type_tag, is_type_die, die_virtual_function_index): Define new
32267	static functions.
32268	(die_member_offset): Fix comment.
32269	(get_scope_for_die): Take the read context as argument.
32270	(canonicalize_and_add_type_to_ir): Likewise.  On NULL scope, get
32271	the current translation unit from the read context.
32272	(canonicalize_and_insert_type_into_ir_under_scope): Handle NULL
32273	context.
32274	(build_function_decl): Support creating method_decls from here
32275	when necessary.
32276	(build_class_type_and_add_to_ir): Rename build_class_type into
32277	this.  Handle adding the class to the IR and to the relevant maps.
32278	During the creation of the class, arrange for
32279	build_ir_node_from_die on the current DIE to return a
32280	declaration-only class, representing the declaration for the class
32281	that is being constructed.  This breaks circular dependencies
32282	induced by decls/types that refer to the class being built, before
32283	the class is fully built and has a (logical) type ID.  Once the
32284	class is created, make it refer to the class declaration that was
32285	previously handed for the requests to the class DIE.  Now requests
32286	to the class DIE will just yield the newly built class.  Add
32287	support for member functions and member types.
32288	(build_corpus): Support reading the dwarf version and stick it
32289	into the context.
32290	(build_ir_node_from_die): Adjust for change in
32291	canonicalize_and_add_type_to_ir and build_class_type signature
32292	change.
32293	* src/abg-ir.cc (class_decl::method_decl::get_type): Support
32294	returning NULL type.
32295
322962013-12-20  Dodji Seketeli <dodji@redhat.com>
32297
32298	Don't crash in get_global_scope on empty decls
32299	* src/abg-ir.cc (get_global_scope): Don't crash when given a NULL
32300	decl.
32301
323022013-12-20  Dodji Seketeli <dodji@redhat.com>
32303
32304	Make decl_base::set_scope virtual, to work on class_decl::member_type
32305	* include/abg-ir.h (decl_base::set_scope): Make this virtual.
32306	(class_decl::member_type::set_scope): Declare an overload here.
32307	* src/abg-ir.cc (class_decl::member_type::set_scope): Define new
32308	overload.  Make this set the scope of the underlying type of the
32309	member type as well.
32310
323112013-12-20  Dodji Seketeli <dodji@redhat.com>
32312
32313	Support artificial parameters
32314	* include/abg-ir.h (function_decl::parameter::{get,
32315	set}_artificial): Add new accessors for an "artificial" flag.
32316	* src/abg-reader.cc (build_function_parameter): Support reading
32317	the artificial parameter flag.
32318	* src/abg-writer.cc (write_function_decl): Support writing the
32319	artificial parameter flag.
32320
323212013-12-19  Dodji Seketeli <dodji@redhat.com>
32322
32323	Initial support for reading struct/class
32324	* src/abg-dwarf-reader.cc (enum virtuality): New enum.
32325	(class expr_result, struct dwarf_expr_eval_context): New types.
32326	(die_size_in_bits)
32327	(die_access_specifier, die_virtuality, is_virtual)
32328	(die_location_expr, op_pushes_constant_value)
32329	(op_pushes_non_constant_value, op_manipulates_stack)
32330	(op_is_arith_logic, op_is_control_flow)
32331	(eval_last_constant_dwarf_sub_expr, die_member_offset)
32332	(build_class_type): New static functions.
32333	(build_ir_node_from_die<DW_TAG_{class, structure}_type>): Support
32334	creating IR node for class and struct by calling the new
32335	build_class_type.
32336
323372013-12-19  Dodji Seketeli <dodji@redhat.com>
32338
32339	Slight style fix
32340	* src/abg-dwarf-reader.cc (build_qualified_type): Fix indentation.
32341
323422013-12-19  Dodji Seketeli <dodji@redhat.com>
32343
32344	Be more forgiving when parsing xml from stdin
32345	* src/abg-libxml-utils.cc (xml_istream_input_read): Return the
32346	byte read count even when the stream seems to be borked.  In that
32347	case it should be zero.
32348
323492013-12-19  Dodji Seketeli <dodji@redhat.com>
32350
32351	Don't crash if building pointer/reference yields NULL
32352	* src/abg-dwarf-reader.cc
32353	(build_ir_node_from_die<DW_TAG_pointer_type)
32354	(DW_TAG_rvalue{0,1}_reference_type>): Do not crash if building the
32355	IR node for the underlying type yields NULL.
32356
323572013-12-19  Dodji Seketeli <dodji@redhat.com>
32358
32359	Use dwarf_attr_integrate() rather than dwarf_attr()
32360	* src/abg-dwarf-reader.cc (die_string_attribute)
32361	(die_unsigned_constant_attribute, die_signed_constant_attribute)
32362	(die_flag_attribute, die_die_attribute): Use dwarf_attr_integrate
32363	rather than dwarf_attr to look through DW_AT_abstract_origin.
32364
323652013-12-14  Dodji Seketeli <dodji@redhat.com>
32366
32367	Support enums
32368	* src/abg-dwarf-reader.cc (build_enum_type): New function.
32369	(build_ir_node_from_die): Call the new build_enum_type here to
32370	Handle DW_TAG_enumeration_type DIEs.
32371
323722013-12-14  Dodji Seketeli <dodji@redhat.com>
32373
32374	Build & use a DIE -> parent map to avoid emitting useless types
32375	* include/abg-ir.h (translation_unit::{mark_type_as_used,
32376	prune_unused_types}): Remove these declarations.
32377	* src/abg-ir.cc (translation_unit::priv::used_types_): Remove.
32378	(class subtype_marking_visitor): Likewise.
32379	(translation_unit::{mark_type_as_used, prune_unused_types):
32380	Likewise.
32381	(get_top_most_scope_under): Fix logic and add comment.
32382	* src/abg-dwarf-reader.cc (die_tu_map_type, offset_offset_map):
32383	New convenience typedefs.
32384	(read_context::{die_tu_map_, die_parent_map_}): New context
32385	members.
32386	(read_context::{die_tu_map, die_parent_map}): New accessors.
32387	(build_ir_node_from_die): New overload that takes the scope of the
32388	ir node in parameter.
32389	(die_signed_constant_attribute): Un-comment this.
32390	(build_die_parent_relations_under, build_die_parent_map)
32391	(get_parent_die, get_scope_for_die): New static functions.
32392	(build_translation_unit_and_add_to_ir): Renamed
32393	build_translation_unit into this. Populate the new
32394	read_context::die_tu_map() here.
32395	(canonicalize_and_add_type_to_ir)
32396	(canonicalize_and_insert_type_into_ir)
32397	(canonicalize_and_insert_type_into_ir_under_scope): Move these
32398	overloads over the top of the file.
32399	(build_namespace_decl_and_add_to_ir): Fix this by adding the
32400	namespace to the IR scope of the DIE (using the new
32401	get_scope_for_die()).  Update the read_context::die_decl_map()
32402	map.
32403	(build_function_decl): Support functions that return void.  Also,
32404	skip parameters that don't have type set.
32405	(build_corpus): Walk all the DIEs to build a DIE -> parent map.
32406	Adjust for the rename to build_translation_unit_and_add_to_ir.
32407	(build_ir_node_from_die): Add a scope parm.  Adjust back to
32408	building IR nodes only for public decls, unless the
32409	'called_from_public_decl' flag is set.  Adjust to stick the resulting
32410	IR node into the scope given in parameter.
32411
324122013-12-14  Dodji Seketeli <dodji@redhat.com>
32413
32414	Mark sub-types as part of general type marking
32415	* src/abg-ir.cc (subtype_marking_visitor): New visitor.
32416	(translation_unit::mark_type_as_used): When marking a composite
32417	type as used, mark its sub-types as well.
32418
324192013-12-14  Dodji Seketeli <dodji@redhat.com>
32420
32421	Add missing virtual keywords for traverse() method
32422	* include/abg-ir.h ({translation_unit, decl_base, scope_decl,
32423	type_decl, namespace_decl, qualified_type_decl, pointer_type_def,
32424	reference_type_def, enum_type_decl, typedef_decl, var_decl,
32425	function_tdecl, class_decl, class_decl::data_member,
32426	class_decl::member_function, class_decl::member_function_template,
32427	class_decl::member_class_template}::traverse): Add a virtual
32428	keyword at least to "document" that this method is virtual -- and
32429	thus remind the user that it overrides the
32430	traversable_base::traverse().
32431
324322013-12-14  Dodji Seketeli <dodji@redhat.com>
32433
32434	Add a is_type overload
32435	* include/abg-fwd.h (is_type): Declare new overload that takes a
32436	type reference.
32437	* src/abg-ir.cc (is_type): Define.
32438
324392013-12-13  Dodji Seketeli <dodji@redhat.com>
32440
32441	Prune types that are not ref'ed by public decls
32442	* include/abg-fwd.h (remove_decl_from_scope): Declare new
32443	function.
32444	* include/abg-ir.h (type_base_sptr, decl_base_sptr): Move these
32445	convenience typedef before the translation_unit declaration.
32446	(translation_unit::{mark_type_as_used, prune_unused_types}):
32447	Declare new methods.
32448	(decl_base::remove_member_decl): Likewise.
32449	(class_decl::{remove_member_decl, remove_member_type): Likewise.
32450	* src/abg-dwarf-reader.cc (die_decl_map_type): Change this map
32451	type so that the value is now a DIE offset, rather than a DIE.
32452	This is because many times the lifetime of DIEs is shorter than
32453	the one of the reader_context.  Also, the die offset uniquely
32454	designates a physical DIE even if several different instances of
32455	logical DIE might point to it.
32456	(struct die_hash): Remove this as it's useless now that we store
32457	DIE offsets in the map.
32458	(build_translation_unit): Call build_ir_node_from_die w/o setting
32459	the called_from_public_decl flag.  Prune the types that are not
32460	used by any public decls.
32461	(build_namespace_decl_and_add_to_ir): all build_ir_node_from_die
32462	w/o setting the called_from_public_decl flag.
32463	(build_ir_node_from_die): Change the only_public_decl flag into a
32464	called_from_public_decl flag.  Mark types used by public decls as
32465	such.  Adjust for the parm changes of build_qualified_type
32466	build_pointer_type_def, build_reference_type, and
32467	build_typedef_type.
32468	(build_qualified_type, build_pointer_type_def)
32469	(build_reference_type, build_typedef_type): Take a new
32470	called_from_public_decl.  Pass it to build_ir_node_from_die.
32471	(build_var_decl): Call build_ir_node_from_die with the
32472	called_from_public_decl flag set to true to flag the types
32473	referenced by this variable as being used.
32474	(build_function_decl): Take a called_from_public_decl flag as
32475	well, as this function can now call build_function_decl itself to
32476	build a function decl out of the value of the DW_AT_specification
32477	attribute, for DIEs representing function definitions.  Also, flag
32478	the types referenced by public functions are being used.
32479	* src/abg-ir.cc (translation_unit::priv::used_types_): New map for
32480	the used types.
32481	(translation_unit::{mark_type_as_used, prune_unused_types}):
32482	Define new methods.
32483	(scope_decl::remove_member_decl): Likewise.
32484	(remove_decl_from_scope): Define new function.
32485	(class_decl::{remove_member_decl, remove_member_type}): Define new
32486	methods.
32487
324882013-12-12  Dodji Seketeli <dodji@redhat.com>
32489
32490	Support reading namespaces
32491	* include/abg-fwd.h (get_global_scope): Return a const
32492	global_scope.  Add a new overload that takes a naked pointer as
32493	parm.
32494	(insert_decl_into_scope, get_top_most_scope_under): Declare new
32495	entry points.
32496	* include/abg-ir.h (class decl_base, class scope_decl): Add
32497	insert_decl_into_scope as a friend of these classes.
32498	(scope_decl::{insert_decl_into_scope, find_iterator_for_member}):
32499	Declare new member.
32500	(scope_decl::get_member_decls): New non-const overload.
32501	* src/abg-dwarf-reader.cc (build_translation_unit): Remove the
32502	"recurse" parameter.  Adjust the call to build_ir_node_from_die to
32503	read just public decls that are at namespace scope.  Anything else
32504	should be dropped unless it's needed to emitting the public
32505	namespace-level decls.
32506	(build_namespace_decl_and_add_to_ir)
32507	(canonicalize_and_insert_type_into_ir): Define new static
32508	functions.
32509	(build_corpus): Adjust ad build_translation_unit doesn't have the
32510	"recurse" parameter anymore.
32511	(canonicalize_and_add_type_to_ir): Make this static.  Fix
32512	comments.
32513	(build_ir_node_from_die): Take a new "only_public_decl"
32514	parameter. For DW_TAG_base_type case, use the new
32515	canonicalize_and_insert_type_into_ir to insert the type at the
32516	right place in the global scope making sure it is seen before the
32517	current scope.  For pointer, references and qualified types, use
32518	canonicalize_and_insert_type_into_ir to add the type at the same
32519	scope as its underlying type.  Handle DW_TAG_{namespace,module}
32520	using the new build_namespace_decl_and_add_to_ir function.  Add
32521	some vertical spaces and some assertions.
32522	* src/abg-ir.cc (scope_decl::add_member_decl): Use scope_decl_sptr
32523	typedef.
32524	(scope_decl::{insert_member_decl,find_iterator_for_member}):
32525	Define new methods.
32526	(insert_decl_into_scope, get_top_most_scope_under): Define new
32527	functions.
32528	(get_global_scope): Constify the return type.
32529	(get_translation_unit): Adjust as get_global_scope now returns a
32530	const.
32531	* src/abg-reader.cc (get_translation_unit): Likewise.
32532
325332013-12-12  Dodji Seketeli <dodji@redhat.com>
32534
32535	Fix function_decl::parameter::operator==
32536	* include/abg-ir.h (function_decl::parameter::operator==): Support
32537	empty type, e.g, in presence of a variadic parameter.
32538
325392013-12-12  Dodji Seketeli <dodji@redhat.com>
32540
32541	Misc style fixes
32542	* include/abg-ir.h (decl_base::set_visibility): Remove useless
32543	white space.
32544	(class scope_decl): Remove useless white space.
32545	(scope_decl::add_member_decl): Use decl_base_sptr convenience
32546	typedef.
32547	(global_scope_sptr, namespace_decl_sptr): New convenience typedef.
32548	(class global_scope): Remove useless white space.
32549
325502013-12-11  Dodji Seketeli <dodji@redhat.com>
32551
32552	Misc style fixes
32553	* src/abg-dwarf-reader.cc (die_string_attribute, is_public_decl)
32554	(build_translation_unit, build_ir_node_from_die): Fix comments.
32555	(die_unsigned_constant_attribute, die_signed_constant_attribute)
32556	(die_loc_and_name): Align parms.
32557
325582013-12-11  Dodji Seketeli <dodji@redhat.com>
32559
32560	Support typedef types
32561	* src/abg-dwarf-reader.cc (build_typedef_type): Define new static
32562	function.
32563	(canonicalize_and_add_type_to_ir): Do not crash on NULL input
32564	type.  Also, add a new overload for smart pointer on scope.
32565	(build_ir_node_from_die): For DW_TAG_base_type case, adjust as
32566	canonicalize_and_add_type_to_ir now takes smart pointers on
32567	scopes.  Support the DW_TAG_typedef case by calling the new
32568	build_typedef_type.
32569
325702013-12-11  Dodji Seketeli <dodji@redhat.com>
32571
32572	Support reference types
32573	* src/abg-dwarf-reader.cc (build_pointer_type_def): Do not forget
32574	to get the proper size of the pointer type.
32575	(build_reference_type): Define new static function.
32576	(build_ir_node_from_die): Call build_reference_type for the
32577	DW_TAG_reference_type and DW_TAG_rvalue_reference_type cases.
32578
325792013-12-11  Dodji Seketeli <dodji@redhat.com>
32580
32581	Support pointer types
32582	* include/abg-fwd.h (get_translation_unit, get_global_scope):
32583	Declare new overloads that act on a naked pointer to decl_base.
32584	* src/abg-dwarf-reader.cc (build_pointer_type_def): Define new
32585	static function.
32586	(canonicalize_and_add_type_to_ir): Take a naked pointer to
32587	scope_decl rather than a smart pointer.
32588	(build_ir_node_from_die): For DW_TAG_base_type, adjust.  Support
32589	DW_TAG_pointer_type case.  For DW_TAG_{const,volatile}_type case,
32590	make sure the qualified type is in the same scope as its
32591	underlying type.
32592	* src/abg-ir.cc (get_global_scope, get_translation_unit): Define
32593	new overloads that acts on a naked decl_base.
32594
325952013-12-11  Dodji Seketeli <dodji@redhat.com>
32596
32597	Support qualified types
32598	* src/abg-dwarf-reader.cc (build_qualified_type)
32599	(canonicalize_and_add_type_to_ir): Define new static functions.
32600	(build_ir_node_from_die): In the DW_TAG_base_type case, use the
32601	new canonicalize_and_add_type_to_ir which is a factorization of
32602	this code.  In the DW_TAG_{const,volatile}_type, use the new
32603	build_qualified_type and canonicalize_and_add_type_to_ir
32604	functions.
32605
326062013-12-11  Dodji Seketeli <dodji@redhat.com>
32607
32608	Support reading public functions from DWARF
32609	* src/abg-dwarf-reader.cc (read_context::dwarf_): New member.
32610	(read_context::load_debug_info): Move the content of
32611	load_debug_info_from_elf here.
32612	(read_context::dwarf): New accessor for the dwarf_ member above.
32613	(die_flag_attribute, die_loc_and_name, is_public_decl)
32614	(build_function_decl): New static functions.
32615	(die_location): Do not try to create a location object when the
32616	location has empty file or empty line number.
32617	(build_translation_unit): Take a new address_size parameter.
32618	(build_type_decl): Really take a context parameter.  Use the new
32619	die_loc_and_name() here.
32620	(build_var_decl): Skip non-public vars.
32621	(build_corpus): Use dwarf_nextcu instead of dwfl_nextcu, so that
32622	we can get the address_size used in the current CU.  Note that for
32623	this we are getting the Dwarf* pointer from the context thanks to
32624	the new read_context::dwarf() getter.  Adjust the call to
32625	build_translation_unit to pass it the new address_size.
32626	(build_ir_node_from_die): Shorten lines a little bit.  Call the
32627	new build_function_decl to support reading DW_TAG_subprogram DIEs.
32628	(read_corpus_from_elf): Adjust to create the read context earlier
32629	and use its read_context::load_debug_info method to load the debug
32630	info.
32631
326322013-12-11  Dodji Seketeli <dodji@redhat.com>
32633
32634	Make bilint read input from stdin
32635	* include/abg-libxml-utils.h (new_reader_from_istream): Declare
32636	new public entry point.
32637	* src/abg-libxml-utils.cc (xml_istream_input_read)
32638	(xml_istream_input_close): New static functions.
32639	(new_reader_from_istream): Define new public input function.
32640	* include/abg-reader.h (read_translation_unit_from_istream):
32641	Declare new entry points.
32642	* src/abg-reader.cc (read_translation_unit_from_istream): Define
32643	new entry points.
32644	* tools/bilint.cc (options::{read_from_stdin, noout}): New
32645	members.
32646	(display_usage): Document --stdin and --noout.
32647	(parse_command_line): Adjust to consider that no option on the
32648	command line means reading from stdin, just like --stdin.  Support
32649	the --noout option as well.
32650	(main): Support Read the abi instr from stdin; in that case, what
32651	was read is just serialized back to stdout, unless --noout was
32652	supplied.
32653
326542013-12-11  Dodji Seketeli <dodji@redhat.com>
32655
32656	Support the "address-size" attribute for <abi-instr> elements
32657	* include/abg-ir.h (translation_unit::translation_unit): Take an
32658	address_size parameter.
32659	(translation_unit::{get_address_size, set_address_size}): New
32660	accessors.
32661	* src/abg-ir.cc (translation_unit::priv::address_size_): New
32662	private member.
32663	(translation_unit::translation_unit): Take an address_size
32664	parameter.
32665	(translation_unit::{get_address_size, set_address_size}): Define
32666	these new methods.
32667	* src/abg-reader.cc (read_input): Read the "address-size"
32668	attribute from the abi-instr element.
32669	* src/abg-writer.cc (write_translation_unit): Write the
32670	"address-size" attribute.
32671	* tests/data/test-read-write/test23.xml: New test input.
32672	* tests/test-read-write.cc (in_out_specs): Add the new test above
32673	to the list of files to read and write back.
32674
326752013-12-11  Dodji Seketeli <dodji@redhat.com>
32676
32677	Support variadic arguments in function decls
32678	* src/abg-reader.cc (build_function_parameter): Support reading
32679	the "is-variadic" attribute.
32680	* src/abg-writer.cc (write_function_decl): Support writing the
32681	"is-variadic" attribute.
32682	* tests/data/test-read-write/test22.xml: New test input.
32683	* tests/test-read-write.cc (in_out_specs): Add the new test to the
32684	list of files to read and write back.
32685
326862013-12-07  Dodji Seketeli <dodji@redhat.com>
32687
32688	Initial support of reading an ABI Corpus from DWARF
32689	* configure.ac: Check the presence of libdw.so and
32690	elfutils/libdwfl.h headers from elfutils and define the necessary
32691	linking flags.
32692	* include/abg-dwarf-reader.h: New header file
32693	* include/Makefile.am: Add the new header file to the source
32694	distribution.
32695	* src/abg-dwarf-reader.cc:: New file.
32696	* src/Makefile.am: Add the new file to the source distribution.
32697	* include/abg-fwd.h (dump): Add declarations for several overloads
32698	to allow dumping to a given output stream.
32699	* include/abg-ir.h (class translation_unit): Use a pimpl idiom for
32700	this now.
32701	(translation_unit::canonicalize_type): Declare new method.
32702	* src/abg-ir.cc (struct translation_unit::priv): New private type
32703	for the pimpl idiom for translation_unit.
32704	(translation_unit::{translation_unit, get_global_scope, get_path,
32705	set_path, get_loc_mgr}): Adjust for pimpl idiom.
32706	(translation_unit::canonicalize_type): Define this new method and
32707	one overload.
32708	* src/abg-writer.cc (dump): Define several overloads to dump IR
32709	nodes to given output streams.
32710	* tools/bidw.cc: New file for the new bidw tool.
32711	* tools/Makefile.am: Define rules to build the new bidw tools.
32712
327132013-12-07  Dodji Seketeli <dodji@redhat.com>
32714
32715	Pass a string by reference rather than by value
32716	* tools/bilint.cc (display_usage): Pass program name by reference.
32717
327182013-12-07  Dodji Seketeli <dodji@redhat.com>
32719
32720	Misc style fixes
32721	* src/abg-ir.cc (location_manager::location_manager)
32722	(translation_unit::{is_empty, traverse, ~translation_unit): Remove
32723	useless vertical white spaces.
32724	* tools/bilint.cc (parse_command_line): Fix indentation.
32725
327262013-12-04  Dodji Seketeli <dodji@redhat.com>
32727
32728	Prepare serialization API for multiple backends
32729	* include/abg-reader.h: New file with abigail::xml_reader APIs.
32730	* include/abg-writer.h: New file with abigail::xml_writer APIs.
32731	* include/Makefile.am: Add the new files above to the source
32732	distribution.
32733	* src/abg-reader.cc: Update top-file comments.
32734	(namespace xml_reader): Rename namespace
32735	reader into this.
32736	(read_to_translation_unit, read_corpus_from_archive): New static
32737	functions.
32738	(read_translation_unit_from_file)
32739	(read_translation_unit_from_file, read_corpus_from_file): New
32740	entry points.
32741	(struct array_deleter): New functor.
32742	(translation_unit::read): Remove this.
32743	* src/abg-writer.cc: Update top file comments.
32744	(namespace xml_writer): Rename namespace
32745	writer into this.
32746	(struct archive_write_ctxt): New internal type.
32747	(create_archive_write_context, write_translation_unit_to_archive)
32748	(write_translation_unit, write_corpus_to_archive): New low level
32749	static functions overloads.
32750	(write_corpus_to_archive, write_translation_unit): Public higher
32751	level overloads.
32752	(translation_unit::write): Remove.
32753	(dump): Update for new xml_writer namespace.
32754	* include/abg-ir.h (translation_unit::{read, write}): Remove these
32755	serialization methods.
32756	* include/abg-corpus.h (corpus_sptr): New convenience typedef.
32757	(corpus::{read, write}): Remove these methods.
32758	* src/abg-corpus.cc (corpus::{read, write})
32759	(corpus::impl::{serialized_tus, archive}): Remove these members.
32760	(corpus::impl::{get_archive, close_archive, write_tu_to_archive,
32761	read_to_translation_unit}): Remove these methods.
32762	* tests/test-bidiff.cc (main): Update for usage of the new
32763	xml_reader API.
32764	* tests/test-read-write.cc (main): Likewise. Update for the usage
32765	of the new xml_writer API, too.
32766	* tests/test-walker.cc (main): Update for the usage of the new
32767	xml_reader API.
32768	* tests/test-write-read-archive.cc (main): Likewise.  And for the
32769	xml_writer API, too.
32770	* tools/biar.cc (add_tus_to_archive, extract_tus_from_archive): Likewise.
32771	* tools/bidiff.cc (main): Likewise, for xml_reader APIs.
32772	* tools/bilint.cc (main): Likewise, for xml_writer APIs, too.
32773
327742013-11-29  Dodji Seketeli <dodji@redhat.com>
32775
32776	Add support for bidiff regression testing
32777	* tests/data/test-bidiff/test-enum0-v0.cc.bi: New input file.
32778	* tests/data/test-bidiff/test-enum0-v1.cc.bi: Likewise.
32779	* tests/data/test-bidiff/test-enum0-report.diff: Likewise.
32780	* tests/data/test-bidiff/test-enum1-v0.cc.bi: Likewise.
32781	* tests/data/test-bidiff/test-enum1-v1.cc.bi: Likewise.
32782	* tests/data/test-bidiff/test-enum1-report.txt: Likewise.
32783	* tests/data/test-bidiff/test-qual-type0-v0.cc.bi: Likewise.
32784	* tests/data/test-bidiff/test-qual-type0-v1.cc.bi: Likewise.
32785	* tests/data/test-bidiff/test-qual-type0-report.txt: Likewise.
32786	* tests/data/test-bidiff/test-struct0-v0.cc.bi: Likewise.
32787	* tests/data/test-bidiff/test-struct0-v1.cc.bi: Likewise.
32788	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
32789	* tests/data/test-bidiff/test-struct1-v0.cc.bi: Likewise.
32790	* tests/data/test-bidiff/test-struct1-v1.cc.bi: Likewise.
32791	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
32792	* tests/data/test-bidiff/test-var0-v0.cc.bi: Likewise.
32793	* tests/data/test-bidiff/test-var0-v1.cc.bi: Likewise.
32794	* tests/data/test-bidiff/test-var0-report.txt: Likewise.
32795	* tests/test-bidiff.cc: New file.
32796	* tests/Makefile.am: Build the new runtestbidiff regression test
32797	and add the above to the source distribution.
32798
327992013-11-29  Dodji Seketeli <dodji@redhat.com>
32800
32801	Add missing test inputs to source distribution
32802	* tests/Makefile.am (data/test-read-write/test{17, 18, 19, 20,
32803	21}.xml): Add these test input files to the source distribution.
32804
328052013-11-28  Dodji Seketeli <dodji@redhat.com>
32806
32807	Add diff support for var_decl
32808	* include/abg-comparison.h (class var_diff): New declaration.
32809	(var_diff_sptr): New convenience typedef.
32810	(compute_diff): New overloads for var_diff, decl_base and
32811	type_base.
32812	* src/abg-comparison.cc (try_to_diff): Renamed try_to_diff_types
32813	into this.
32814	(compute_diff_for_types): Adjust for the try_to_diff_types
32815	renaming.  Fix comments.
32816	(compute_diff_for_decls): Re-use try_to_diff.  Update for
32817	var_decl.
32818	(compute_diff): Define overloads for decl_base, type_base and
32819	var_decl.
32820	(diff_length_of_decl_bases, diff_length_of_type_bases): New static
32821	help functions.
32822	(report_name_size_and_alignment_changes): Renamed
32823	report_size_and_alignment_changes into this.  Make it report name
32824	changes as well.
32825	(var_diff::priv): New struct.
32826	(var_diff::{var_diff, first_var, second_var, type_diff, length,
32827	report}): Define methods.
32828	({qualified_type_diff, enum_diff, class_diff, scope_diff,
32829	function_decl_diff}::report): Do not report
32830	anything if the diff is empty.
32831	(type_decl_diff::length): Fix this.
32832	(type_decl_diff::report): Adjust for renaming to
32833	report_name_size_and_alignment_changes.
32834
328352013-11-28  Dodji Seketeli <dodji@redhat.com>
32836
32837	Add enum_type_decl::get_pretty_representation()
32838	* include/abg-ir.h (enum_type_decl::get_pretty_representation):
32839	Declare new virtual method override.
32840	* src/abg-ir.cc (enum_type_decl::get_pretty_representation):
32841	Define it.
32842
328432013-11-28  Dodji Seketeli <dodji@redhat.com>
32844
32845	Change return type of abigail::is_type()
32846	* include/abg-fwd.h (is_type): Change the return type from bool to
32847	type_base_sptr.
32848
328492013-11-27  Dodji Seketeli <dodji@redhat.com>
32850
32851	Support diff for enum_type_decl
32852	* include/abg-ir.h (enum_type_decl_sptr): New typedef.
32853	(enum_type_decl::enumerator::enumerator): Make default constructor
32854	public so that enumerators can be stored in vectors.  Maybe I
32855	should have made stored pointers to enumerators instead ...
32856	(enum_type_decl::enumerator::get_qualified_name): Define new
32857	method.
32858	* include/abg-comparison.h (string_enumerator_map)
32859	(changed_enumerator, string_changed_enumerator_map)
32860	(enum_diff_sptr): New convenience typedefs.
32861	(class enum_diff): Declare new class.
32862	(compute_diff): New overload for enum_type_decl.
32863	* src/abg-comparison.cc (enum diff_kind, report_mem_header): Move
32864	these at the beginning of the file.
32865	(struct enum_diff::priv): Define this.
32866	(enum_diff::{clear_lookup_tables, lookup_tables_empty,
32867	ensure_lookup_tables_populated, enum_diff, first_enum,
32868	second_enum, underlying_type_diff, deleted_enumerators,
32869	inserted_enumerators, changed_enumerators, length, report}):
32870	Define these new methods.
32871	(compute_diff): New overload for enum_diff.
32872	(compute_diff_for_types): Add support enum_type_decl here.
32873
328742013-11-27  Dodji Seketeli <dodji@redhat.com>
32875
32876	Fix equality operator for enum_type_decl
32877	* src/abg-ir.cc (enum_type_decl::operator==(const type_base& o)):
32878	This was comparing just the decl_base and type_base part of the
32879	enum.  Now re-use the enum_type_decl::operator==(const decl_base)
32880	that compares the entirety of the types.
32881
328822013-11-27  Dodji Seketeli <dodji@redhat.com>
32883
32884	Fix indentation and wording of some existing diff reports
32885	* src/abg-comparison.cc (class_diff::report): Fix report wording.
32886	Change indentation space from 4 white spaces to two.
32887	(scope_diff::report): Fix logic indentation generation.
32888
328892013-11-26  Dodji Seketeli <dodji@redhat.com>
32890
32891	Change enum_type_decl::enumerators from a list to a vector
32892	* include/abg-ir.h (enum_type_decl::enumerators): Change this from
32893	a list to a vector.
32894	* src/abg-hash.cc (enum_type_decl::hash::operator()): Use the
32895	typedef enum_type_decl::enumerators rather than std::list<blah>.
32896	* src/abg-ir.cc (enum_type_decl::get_enumerators): Use
32897	the enum_type_decl::enumerators typedef.
32898	(enum_type_decl::operator==): Likewise.
32899	* src/abg-reader.cc (build_enum_type_decl): Likewise.
32900	* src/abg-writer.cc (write_enum_type_decl): Likewise.
32901
329022013-11-25  Dodji Seketeli <dodji@redhat.com>
32903
32904	Fix thinko in qualified_type_diff::length
32905	* src/abg-comparison.cc (qualified_type_diff::length): Fix thinko.
32906
329072013-11-25  Dodji Seketeli <dodji@redhat.com>
32908
32909	Support diff between qualified types
32910	* include/abg-ir.h (qualified_type_def_sptr): Declare new typedef.
32911	(class qualified_type_def): Add comment at the end.
32912	(operator<<(std::ostream&, qualified_type_def::CV)): Declare new
32913	streaming operator.
32914	* src/abg-ir.cc (operator<<(std::ostream&,
32915	qualified_type_def::CV)): Define this new streaming operator.
32916	* include/abg-comparison.h (class qualified_type): Declare new
32917	class.
32918	(compute_diff): Declare new overload for qualified_type_def_sptr.
32919	* src/abg-comparison.cc (struct qualified_type_diff::priv): Define
32920	new type.
32921	(qualified_type_diff::{qualified_type_diff, first_qualified_type,
32922	second_qualified_type, underlying_type_diff, length}):
32923	Define new methods.
32924	(get_leaf_type): Define new static function.
32925	(compute_diff): Define overload for qualified_type_def_sptr.
32926	(compute_diff_for_types): Add support for
32927	diffing qualified_type_def here.
32928
329292013-11-25  Dodji Seketeli <dodji@redhat.com>
32930
32931	Cleanup header of changes of underlying types of pointers/references
32932	* src/abg-comparison.cc ({pointer_diff, reference_diff}::report):
32933	Unify header of changes in the referenced type.
32934	* src/abg-ir.cc (decl_base::get_pretty_representation): By
32935	default, do not prefix types with "type ", for consistency sake.
32936
329372013-11-25  Dodji Seketeli <dodji@redhat.com>
32938
32939	Ensure diff types can only be created by compute_diff
32940	* include/abg-comparison.h (diff::diff): Make constructor
32941	protected.
32942	(pointer_diff::pointer_diff): Likewise.
32943	(pointer_diff::{first_pointer, second_pointer}): Constify the
32944	return type.
32945	(compute_diff): Make this a friend of class pointer_diff.
32946	(reference_diff::reference_diff): Make this constructor protected.
32947	(compute_diff): Make this a friend of class reference_diff.
32948	(class_diff::class_diff): Make this constructor protected.
32949	(compute_diff): Make this a friend of class class_diff.
32950	(scope_diff::scope_diff): Make this constructor protected.
32951	(compute_diff): Make this a friend of class scope_diff.
32952	(function_decl_diff::function_decl_diff): Make this constructor
32953	protected.
32954	(type_decl_diff::type_decl_diff): Likewise.
32955	(typedef_diff::typedef_diff): Likewise.
32956	(translation_unit_diff::translation_unit_diff): Likewise.
32957	(compute_diff): Make this a friend of class translation_unit_diff.
32958	* src/abg-comparison.cc (pointer_diff::{first_pointer,
32959	second_pointer}): Constify return type.
32960
329612013-11-21  Dodji Seketeli <dodji@redhat.com>
32962
32963	Add size/alignment info to class diff report
32964	* src/abg-comparison.cc (represent): Move these static overloads
32965	to the beginning of the file.
32966	(report_size_and_alignment_changes): New function.  It has been
32967	factorized out of ...
32968	(type_decl_diff::report): ... this.
32969	(class_diff::report): Use the new
32970	report_size_and_alignment_changes to report size/alignment info
32971	for classes.
32972
329732013-11-21  Dodji Seketeli <dodji@redhat.com>
32974
32975	Style fix
32976	* src/abg-comparison.cc (class_diff::report): Rename first_class
32977	into first and second_class into second.
32978
329792013-11-21  Dodji Seketeli <dodji@redhat.com>
32980
32981	Misc diff reporting nits
32982	* include/abg-ir.h (type_decl::get_pretty_representation): New
32983	overload.
32984	* abg-ir.cc (type_decl::get_pretty_representation): Implement it.
32985	* src/abg-comparison.cc (represent, class_diff::report): Quote the
32986	pretty representation of abi artifacts in the report.
32987	(type_decl_diff::report): Better wording to express type_decl
32988	change.
32989
329902013-11-20  Dodji Seketeli <dodji@redhat.com>
32991
32992	Support reporting changed data member in class
32993	* include/abg-ir.h (operator<<(std::ostream&, decl_base::binding))
32994	(operator<<(std::ostream&, class_decl::access_specifier)): Declare
32995	new streaming operators.
32996	(class_decl::member_type::get_pretty_representation): New virtual
32997	overload.
32998	* src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)):
32999	(operator<<(std::ostream&, class_decl::access_specifier)): Define
33000	new streaming operators.
33001	(class_decl::member_type::get_pretty_representation): Define new method.
33002	* src/abg-comparison.cc (represent): Make the existing overloads
33003	end by a newline. Add a new overload that represents the changes
33004	that happened a given data member.
33005	(enum diff_kind): New.
33006	(report_mem_header): Renamed report_num_dels_or_ins into this.
33007	Make it support introducing changed members as well as
33008	deletions/insertions.
33009	(class_diff::report): Adjust for the report_num_dels_or_ins ->
33010	report_mem_header change.  Use the new represent() overload to
33011	report about changed data members.  Adjust logic now that
33012	represent() emits a newline at its end.  Also adjust logic as far
33013	as representing base classes and member types changes is
33014	concerned.
33015	(type_decl_diff::report): Remove useless white space.
33016
330172013-11-20  Dodji Seketeli <dodji@redhat.com>
33018
33019	Ensure that *::report adds just one empty line to its content
33020	* include/abg-comparison.h (diff::report): Add a comment saying
33021	that each the diff::report interface must leave one empty line at
33022	the end of the report.
33023	* src/abg-comparison.cc ({pointer_diff, reference_diff,
33024	class_diff, scope_diff, function_decl_diff, type_decl_diff,
33025	typedef_diff}::report): Leave just one
33026	empty line after content.
33027
330282013-11-20  Dodji Seketeli <dodji@redhat.com>
33029
33030	Various doxygen doc additions and fixes
33031	* include/abg-comparison.h: Lots of doc string additions & fixes,
33032	especially for typedefs.
33033	* include/abg-ir.h: Likewise.
33034	* src/abg-comparison.cc: Likewise.
33035	* src/abg-ir.cc: Likewise.
33036
330372013-11-20  Dodji Seketeli <dodji@redhat.com>
33038
33039	Better support changed base classes and member types
33040	* include/abg-comparison.h (class_diff::{clear_lookup_tables,
33041	lookup_tables_empty, ensure_lookup_tables_populated}): Declare new
33042	methods.
33043	(compute_diff): Make this a friend of class_diff.
33044	* src/abg-comparison.cc (class_diff::priv::{deleted_bases_,
33045	inserted_bases_, changed_bases_, deleted_member_types_,
33046	inserted_member_types_, changed_member_types_,
33047	deleted_data_members_, inserted_data_members_,
33048	changed_data_members_, deleted_member_class_tmpls_,
33049	inserted_member_class_tmpls_, changed_member_class_tmpls_}):
33050	Define new members.
33051	(class_diff::priv::{base_has_changed, member_type_has_changed,
33052	data_member_has_changed}): Declare and define new methods.
33053	(class_diff::{clear_lookup_tables, lookup_tables_empty,
33054	ensure_lookup_tables_populated}): Define new methods.
33055	(class_diff::report): Detect and report when a base class or a
33056	member type has changed, as opposed to just saying that it has
33057	been removed and inserted.  Fix the rest of the function to avoid
33058	emitting useless vertical space and avoid saying that the class
33059	has "zero" insertion/deletion of a given kind of member.
33060	(scope_diff::report): avoid saying that the scope has "zero"
33061	insertion/deletion of a given kind of member.  Avoid useless
33062	vertical spaces.
33063	(type_decl_diff::report): Avoid useless vertical spaces.
33064
330652013-11-19  Dodji Seketeli <dodji@redhat.com>
33066
33067	Add bilint tool to validate bi files somewhat.
33068	* tools/bilint.cc: New file.
33069	* tools/Makefile.am: Build and install the new file above.
33070
330712013-11-19  Dodji Seketeli <dodji@redhat.com>
33072
33073	Add diff support for typedef_decl and type_decl
33074	* include/abg-ir.h (operator<<(std::ostream&,
33075	decl_base::visibility)): Declare new streaming operator.
33076	* src/abg-ir.cc (operator<<(std::ostream&,
33077	decl_base::visibility)): Define it.
33078	(type_decl::{operator==, get_pretty_representation}): Likewise,
33079	define these new overloads.
33080	(decl_base::{operator==, get_pretty_representation}): New overloads.
33081	* include/abg-comparison.h (type_decl_diff type_decl_diff_sptr,
33082	typedef_diff, typedef_diff_sptr): Declare new classes and
33083	typedefs.
33084	* src/abg-comparison.cc (type_decl_diff::{type_decl_diff,
33085	first_type_decl, second_type_decl, length, report}): New methods
33086	definitions.
33087	(compute_diff): New function definition that takes pointers of
33088	type_decl.
33089	(typedef_diff::{typedef_diff, first_typedef_decl,
33090	second_typedef_decl, underlying_type_diff, length, report}): New
33091	methods.
33092	(compute_diff): New function definition that takes pointers of
33093	typedef_decl.
33094	(try_to_diff_types): New template function, factorized out of ...
33095	(compute_diff_for_types): ... this.  Add support diffing type_decl
33096	and typedef_decl.
33097	(pointer_diff::report): Fix indentation of emitted report.
33098	* tools/bidiff.cc (parse_command_line): Fix style.
33099
331002013-11-19  Dodji Seketeli <dodji@redhat.com>
33101
33102	Avoid missing member types while reading bi files
33103	* include/abg-fwd.h (get_type_declaration): Declare function.
33104	* include/abg-ir.h (class decl_base): Add class_decl as a friend.
33105	This to be able to call decl_base::set_scope from class_decl.
33106	(scope_decl::add_member_decl): Make this virtual protected, so
33107	that it can be called (virtually) from e.g, class_decl.
33108	(type_decl_sptr, typedef_decl_sptr): New convenience typedefs.
33109	(class_decl::add_member_decl): New virtual overload for
33110	scope_decl::add_member_decl.
33111	(class_decl::{add_member_type, add_data_member,
33112	add_member_function}): New overloads.
33113	* src/abg-ir.cc (add_decl_to_scope): Benign style cleanup.
33114	(get_type_declaration): Define new function.
33115	(class_decl::add_member_decl): New method.
33116	(class_decl::add_member_type): Avoid silently added a new member
33117	type when that member type has already been (perhaps
33118	inadvertently) added to a scope already.  Rather, put a strict
33119	assert in place there.  Also add a new overload that constructs
33120	the member type out of a classic type and adds it to the class.
33121	(class_decl::{add_data_member, add_member_function}): Likewise.
33122	(class_decl::{add_member_function_template,
33123	add_member_class_template}): Avoid silently added a new member
33124	template when that template has already been (perhaps
33125	inadvertently) added to a scope already.  Rather, put a strict
33126	assert in place there.
33127	* src/abg-reader.cc (push_decl_to_current_scope): Take a an extra
33128	flag saying if the current decl should be added to the current
33129	scope as well (in addition to being pushed onto the stack of
33130	scopes maintained in the reader context).
33131	(push_and_key_type_decl): Likewise, take that extra flag and pass
33132	it to push_decl_to_current_scope.
33133	(build_function_decl, build_var_decl, build_type_decl)
33134	(build_qualified_type_decl, build_pointer_type_def)
33135	(build_reference_type_def, build_enum_type_decl, build_typedef_decl)
33136	(build_function_tdecl, build_class_tdecl): Likewise.
33137	(build_class_decl): Likewise.  When building member data, types,
33138	and functions, make sure /not/ to add the data, type of function to
33139	the current scope before adding it to the class_decl.  This was
33140	making the member not being added to the class because it already
33141	had a scope.
33142	(build_type_tparameter, build_type_composition)
33143	(build_non_type_tparameter, build_template_tparameter)
33144	(build_type): Adjust to add the template parm to the current scope
33145	explicitly, like previously.
33146	(handle_type_decl): Use build_type_decl function. Add the
33147	type_decl to the current scope, like previously.
33148	(handle_namespace_decl, handle_qualified_type_decl)
33149	(handle_pointer_type_def, handle_reference_type_def)
33150	(handle_enum_type_decl, handle_typedef_decl, handle_var_decl)
33151	(handle_function_decl, handle_class_decl, handle_function_tdecl)
33152	(handle_class_tdecl): Adjust to add the decl to the current scope,
33153	like previously.
33154	* tests/data/test-read-write/test21.xml: New test input with
33155	member type(def).
33156
331572013-10-24  Dodji Seketeli <dodji@redhat.com>
33158
33159	Avoid tabs and add const/virtual/offsets to class member diff reports
33160	* include/abg-ir.h (class_decl::get_num_virtual_functions): New
33161	declaration.
33162	* src/abg-ir.cc (class_decl::get_num_virtual_functions): New
33163	definition.
33164	(function_decl::get_pretty_representation): Represent
33165	destructors and const member functions.
33166	* src/abg-writer.cc (write_cdtor_const_static): Take a new bool
33167	parm for constness and serialize it.
33168	(write_class_decl): Serialize member functions & function template
33169	const-ness.
33170	* src/abg-reader.cc (read_cdtor_const): Read the "const" xml
33171	attribute, rather than "is_const".
33172
331732013-10-24  Dodji Seketeli <dodji@redhat.com>
33174
33175	Fix num insertions reporting in member functions
33176	* src/abg-comparison.cc (class_diff::report): Fix num insertions
33177	reporting.
33178
331792013-10-24  Dodji Seketeli <dodji@redhat.com>
33180
33181	Serialize vtable offset for virtual functions
33182	* include/abg-ir.h
33183	(class_decl::member_function::get_vtable_offset): Renamed
33184	class_decl::member_function::get_vtable_offset_in_bits into this.
33185	The offset is an index into a table; it's not a value in bits.
33186	* src/abg-hash.cc (class_decl::member_function::hash): Update wrt
33187	function name change above.
33188	* src/abg-ir.cc (class_decl::member_function::operator==):
33189	Likewise.
33190	* src/abg-reader.cc (build_class_decl): Rename the attribute
33191	vtable-offset-in-bits into vtable-offset.
33192	* src/abg-writer.cc (write_voffset): New function.
33193	(write_class_decl): Use the new write_voffset.  Cleanup.
33194
331952013-10-24  Dodji Seketeli <dodji@redhat.com>
33196
33197	White space and style fixes
33198	* include/abg-ir.h (class_decl::member_function::member_function):
33199	Align function parameters.
33200	* src/abg-ir.cc (type_decl::operator==): Remove useless white spaces
33201
332022013-10-24  Dodji Seketeli <dodji@redhat.com>
33203
33204	Do not report added/removed type_decls
33205	* src/abg-comparison.cc (scope_diff::report): Do not report
33206	added/removed type_decls.
33207
332082013-10-24  Dodji Seketeli <dodji@redhat.com>
33209
33210	Fix string representation for variables and methods
33211	* src/abg-ir.cc (var_decl::get_pretty_representation): Don't use
33212	the pretty representation for the type of the variable; just use
33213	its qualified name.
33214	(method_type::set_class_type): I wonder what I was thinking when
33215	setting the first parameter's type to being the type of the
33216	class.  Remove this.
33217	(function_decl::get_pretty_representation): Use the "method "
33218	prefix for methods.  Avoid printing the first parameter of
33219	methods.  Use the qualified name of the parameter type, rather
33220	than its pretty representation.
33221	* src/abg-writer.cc (write_class_decl): Do not skip the first
33222	function parameter when serializing the method.
33223
332242013-10-24  Dodji Seketeli <dodji@redhat.com>
33225
33226	Support reporting removed types/decls
33227	* include/abg-comparison.h (scope_diff::{removed_types,
33228	removed_decls, added_types, added_decls}): New accessor methods
33229	declarations.
33230	* src/abg-comparison.cc (scope_diff::{removed_types,
33231	removed_decls, added_types, added_decls}): New accessor methods
33232	definitions.
33233	(scope_diff::report): Report removed & added types/decls.
33234
332352013-10-24  Dodji Seketeli <dodji@redhat.com>
33236
33237	Fix erratic reporting of changed types & decls in scopes
33238	* src/abg-comparison.cc
33239	(scope_diff::ensure_lookup_tables_populated): A changed type/decl
33240	is not only one that has been both deleted and inserted (as is a
33241	type/decl with a given name N has been deleted and a type/decl
33242	with that same name N has been inserted), but we must also ensure
33243	that both inserted and deleted type/decl are not the same.
33244	Otherwise, it might has been a type/decl that has been shuffled
33245	around.
33246
332472013-10-24  Dodji Seketeli <dodji@redhat.com>
33248
33249	Fix some class & scope diff reports formatting glitchs
33250	* src/abg-comparison.cc (class_diff::report): Quote data members.
33251	(scope_diff::report): Simplify how we report changed types. Avoid
33252	unnecessary vertical spaces.
33253
332542013-10-24  Dodji Seketeli <dodji@redhat.com>
33255
33256	Pretty representation for variables and types by default
33257	* include/abg-ir.h (var_decl::get_pretty_representation): New
33258	method declaration.
33259	* src/abg-ir.cc (decl_base::get_pretty_representation): Prefix
33260	types with the "type " string.
33261	(var_decl::get_pretty_representation): New method definition.
33262
332632013-10-24  Dodji Seketeli <dodji@redhat.com>
33264
33265	Re-write middle snakes management in core diff algorithms
33266	* include/abg-diff-utils.h (point::set): New overload..
33267	(point::{add, operator<, operator>, operator<=, operator>=}): New
33268	methods.
33269	(point::operator!=): Constify.
33270	(point::operator==): Constify. Cleanup.
33271	(point::operator=): Keep emptiness.
33272	(class snake): New class definition
33273	(d_path_vec::{over_bounds, offset}): New methods.
33274	(d_path_vec::check_index_against_bound): Don't take a bound
33275	parameter anymore.  Use the new over_bound method above.  Fix up
33276	error reporting.
33277	(d_path_vec::d_path_vec): Fix d_path_vec size allocation.
33278	(d_path_vec::operator[]): Use the d_path_vec::at method to check
33279	all accesses against the bounds.  This is slower, but at least we
33280	can expect to have something that is more robust.  We can remove
33281	the bound checking later when we are sure the code has been tested
33282	enough.  Also use the new offset() method.
33283	(d_path_vec::at): Take long long.
33284	(ends_of_furthest_d_paths_overlap): Constify input parameters.
33285	(end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Take
33286	an instance of the new snake in parameter, rather than a bare end
33287	point that wasn't carrying enough information about the snake.
33288	Record the snake which consists of up to four points: a begin
33289	point, an intermediate point, a diagonal start point and an end
33290	point.  Return that snake upon successful completion.
33291	(compute_middle_snake): Take an instance of snake, rather than the
33292	two points that were supposed to represent a snake and with which
33293	we were loosing information before.  Revisit/simplify the logic of
33294	this function; this literally goes forward or in reverse, gets the
33295	resulting snake returned by the end_of_fr_d_path_in_k and
33296	end_of_frr_d_path_in_k_plus_delta functions, detect if these snakes
33297	overlap and just return the current snake.  Much simpler.  The
33298	caller now gets a snake, which has much more information than the
33299	previous snake approximation made of just two points.  Bonus
33300	point, this follows almost to the word, what the paper says.
33301	(maybe_record_match_point, find_snake_start_point): Remove these
33302	as there are not used by compute_middle_snake anymore.
33303	(print_snake, ses_len): Update these to take/handle a snake.
33304	(snake_end_points): New declaration.
33305	(compute_diff): When we are getting an empty first sequence, this
33306	means that we are inserting the second sequence *before* the
33307	beginning of the first sequence; keep this information by setting
33308	the insertion point index to -1, rather than zero.  Update this to
33309	get/handle snakes, rather than free points vaguely representing
33310	snakes.  Now that compute_middle_snake returns real snakes, handle
33311	the information we are getting.  Basically for edit scripts of
33312	length equal to 1, as the snake carries all the necessary
33313	information about the non-diagonal edge (as well as the diagonal
33314	edges), we (can) now precisely update the current edit script (as
33315	well as the longest common sub-sequence).  For edit scripts of
33316	length greater than 1, better at which points to divide the
33317	problem and consequently, at which points to conquer it back --
33318	better following The Paper to the letter.
33319	(display_edit_script): Update this for the use of instances of
33320	snake.
33321	* src/abg-diff-utils.cc (ends_of_furthest_d_paths_overlap): Update
33322	for constification of inputs.
33323	(snake_end_points): Define new function.
33324	(compute_middle_snake): Adapt for the taking an instance of snake.
33325	* tests/test-diff2.cc (main): Update for using instances of snake.
33326	* tests/test-core-diff.cc: Add new tests.
33327	* tests/data/test-core-diff/report0.txt: Update for output
33328	adaptation.
33329	* tests/data/test-core-diff/report6.txt: Likewise.
33330	* tests/data/test-core-diff/report7.txt: Likewise.
33331	* tests/data/test-core-diff/report8.txt: New test data.
33332	* tests/data/test-core-diff/report9.txt: Likewise.
33333	* tests/data/test-core-diff/report10.txt: Likewise.
33334	* tests/data/test-core-diff/report11.txt: Likewise.
33335	* tests/data/test-core-diff/report12.txt: Likewise.
33336	* tests/data/test-core-diff/report3.txt: Likewise.
33337
333382013-10-19  Dodji Seketeli <dodji@redhat.com>
33339
33340	Support diff/reporting for functions & better diff/report in general
33341	* include/abg-ir.h ({decl_base, class_decl,
33342	function_decl}::get_pretty_representation): New virtual member to
33343	get a pretty string name for decls & types.
33344	(class_decl::parameter): Add an index to the parameter type.
33345	(class_decl::parameter::parameter): Update the constructor for the
33346	change above.
33347	(class_decl::parameter::{get_index, set_index}): Accessors for the
33348	new index.
33349	(class_decl::parameter::operator==): Take in account the index.
33350	(function_type::append_parameter): Set the index of the parameter
33351	here.
33352	* include/abg-fwd.h (get_type_name): New declaration.
33353	* src/abg-ir.cc (get_type_name): New definition.
33354	({decl_base, function_decl,
33355	class_decl}::get_pretty_representation): New implementations.
33356	(method_type::set_class_type): Update this to set function
33357	parameter's index by default.
33358	(function_decl::append_parameters): Use the append_parameter
33359	method from function_type.
33360	* include/abg-comparison.h (class function_decl_diff): New type
33361	declaration.
33362	* src/abg-comparison.cc (compute_diff_for_decls, compute_diff):
33363	New definitions.
33364	({pointer_diff, class_diff, scope_diff}::report): Use the new
33365	get_pretty_representation.  Output a prettier report.
33366	(function_decl_diff::priv): New type.
33367	(function_decl_diff::{deleted_parameter_at, inserted_parameter_at,
33368	ensure_lookup_tables_populated, function_decl_diff,
33369	first_function_decl, second_function_decl, changed_parms,
33370	removed_parms, added_parms, length, report}): New member function
33371	definitions.
33372	* src/abg-hash.cc (function_decl::parameter::hash): Update this to
33373	take the index in account.
33374
333752013-10-19  Dodji Seketeli <dodji@redhat.com>
33376
33377	Misc style & white space fixes
33378	* include/abg-fwd.h (is_global_scope, is_at_global_scope)
33379	(is_at_class_scope, is_at_template_scope, is_template_parameter)
33380	(is_type, is_var_decl, is_template_parm_composition_type)
33381	(is_template_decl, is_function_template_pattern)
33382	(add_decl_to_scope, get_global_scope, get_translation_unit):
33383	Remove parameter names from declarations.
33384	* include/abg-ir.h (decl_base::set_location): Remove useless white
33385	space.
33386	(struct type_shared_ptr_equal): Fix comment filling.
33387
333882013-10-16  Dodji Seketeli <dodji@redhat.com>
33389
33390	Avoid useless hashing during serialization
33391	* src/abg-writer.cc (write_context::get_id_for_type): Avoid the
33392	useless hashing incurred by the [] operator on the map, when we
33393	already have the value we want.
33394
333952013-10-16  Dodji Seketeli <dodji@redhat.com>
33396
33397	Add more IR nodes dumping routines
33398	* include/abg-fwd.h (dump): Declare 4 overloads for the dumping
33399	routines.
33400	* include/abg-ir.h (var_decl_sptr): New typedef.
33401	* src/abg-writer.cc (dump(const decl_base_sptr)): Add comments.
33402	(dump(const type_base_sptr)): New dumping routines.
33403	(dump(const var_decl_sptr)): Likewise.
33404
334052013-10-16  Dodji Seketeli <dodji@redhat.com>
33406
33407	Fix IR node comparison bugs
33408	* include/abg-ir.h (type_shared_ptr_equal::operator()): Fix thinko
33409	in checking for the boolean value of the pointers to types.
33410	* src/abg-ir.cc (type_decl::operator==(const decl_base&)): Do not
33411	forget to compare the decl_base part of the type too.
33412	(type_decl::operator==(const type_base&)): To ease maintenance,
33413	re-use the equality operator that takes a decl_base.
33414	(scope_type_decl::operator==(const type_base&)): Likewise.
33415	(qualified_type_def::operator==(const type_base&)): Likewise.
33416	(compare_function_types): New sub-routine to compare function
33417	types.  It fixes an infinite recursion when comparing two methods
33418	of the same class.
33419	(function_type::operator==(const type_base&)): Use the new
33420	compare_function_types function.
33421	(class_decl::operator==(const decl_base&)): Fix a thinko in the
33422	first test of the function.  Use a dedicated scope for each class
33423	section comparison; that way, there won't be any chance to misuse
33424	the variables pertaining to a different section.  Fix the member
33425	function sections; we were mistakenly using the variables for the
33426	*data* section there.
33427	(class_decl::operator==(const type_base&)): Re-use the operator
33428	that takes a decl_base.
33429	(class_decl::operator==(const class_decl&)): Don't remove
33430	const-ness during the static cast.
33431	(class_decl::member_function::operator==(const member_function&)):
33432	Do not remove the reference from the static cast.
33433	(class_decl::member_class_template::operator==(const
33434	member_base&)): Likewise.
33435	(type_tparameter::operator==(const template_parameter&)):
33436	Likewise.
33437	(template_tparameter::operator==(const template_parameter&)):
33438	Likewise.
33439	(function_tdecl::operator==(const template_decl&)): Likewise.
33440	(class_tdecl::operator==(const template_decl&)): Likewise.
33441	(class_tdecl::operator==(const class_tdecl&)): Likewise.
33442	* tests/data/test-read-write/test12.xml: Update this because the
33443	test now correctly considers two type template parameters at the
33444	same index as being equivalent.
33445	* tests/data/test-read-write/test13.xml: Likewise.
33446
334472013-10-16  Dodji Seketeli <dodji@redhat.com>
33448
33449	On going white space cleanups
33450	* include/abg-ir.h: Remove useless white spaces.
33451	* src/abg-ir.cc: Likewise.
33452	* src/abg-reader.cc: Likewise.
33453	* src/abg-writer.cc: Likewise.
33454
334552013-10-15  Dodji Seketeli <dodji@redhat.com>
33456
33457	Finish reporting about class_diff
33458	* src/abg-comparison.cc (report_num_dels_or_ins): Factorize out
33459	the header of each of inserted/deleted parts of the class into
33460	this new function.
33461	(class_diff::report): Use the new report_num_dels_or_ins.  Cleanup
33462	the code.  Add support for reporting about member functions,
33463	member function templates and member class templates.
33464
334652013-10-15  Dodji Seketeli <dodji@redhat.com>
33466
33467	White space cleanup in abg-ir.h
33468	* include/abg-ir.h
33469	(class_decl::member_function_template::member_function_template):
33470	Remove useless white space.
33471
334722013-10-15  Dodji Seketeli <dodji@redhat.com>
33473
33474	Progress on diffing pointers, references and classes
33475	* include/abg-comparison.h (diff::{first_subject,second_subject): Changed
33476	first_scope/second_scope into these; so that this diff class now works on
33477	stuff that are not scope.  Changed the type of these to
33478	decl_base_sptr
33479	(diff::diff): Update for the change above.
33480	(diff::{length, report}): New virtual pure methods.
33481	(class pointer_diff, reference_diff): New classes declarations.
33482	(compute_diff): New overloads for the new classes above.  Make the
33483	existing overloads take shared_pointers instead of references.
33484	Also make them return shared pointers of the computed diff, rather
33485	than just populating diff references passed in parameter.
33486	(class class_diff): Renamed class class_decl_diff into this.
33487	(report_changes): Change these functions into member functions.
33488	* src/abg-comparison.cc (compute_diff_for_types): New static
33489	function.
33490	(pointer_diff::pointer_diff, pointer_diff::first_pointer)
33491	(pointer_diff::second_pointer, pointer_diff::length)
33492	(pointer_diff::underlying_type_diff)
33493	(pointer_diff::underlying_type_diff, pointer_diff::report)
33494	(pointer_diff::report, compute_diff)
33495	(reference_diff::reference_diff, reference_diff::first_reference)
33496	(reference_diff::second_reference)
33497	(reference_diff::underlying_type_diff)
33498	(reference_diff::underlying_type_diff, reference_diff::length)
33499	(reference_diff::report, compute_diff): New functions.
33500	(class_diff::class_diff, class_diff::length)
33501	(class_diff::first_class_decl, class_diff::second_class_decl)
33502	(class_diff::base_changes, class_diff::base_changes)
33503	(class_diff::member_types_changes)
33504	(class_diff::member_types_changes)
33505	(class_diff::data_members_changes)
33506	(class_diff::data_members_changes, class_diff::member_fns_changes)
33507	(class_diff::member_fns_changes)
33508	(class_diff::member_fn_tmpls_changes)
33509	(class_diff::member_class_tmpls_changes)
33510	Update wrt class_decl_diff -> class_diff renaming.
33511	(class_diff::report): Make the report function be a member
33512	function.  Add an indentation parameter. Add support for member
33513	types and data members.
33514	(compute_diff): New overload for class_decl_sptr.
33515	(scope_diff::first_scope, scope_diff::second_scope)
33516	(scope_diff::length, scope_diff::report): New member functions.
33517	(scope_diff::{deleted_member_at, inserted_member_at}): Update wrt
33518	first_scope -> first_subject change.
33519	(compute_diff): New overload for scope_decl_sptr.
33520	(translation_unit_diff::report): Change the report function into
33521	this member function.
33522	(compute_diff): Change the overload for translation_unit to take a
33523	translation_unit_sptr rather than a reference.
33524	* tools/bidiff.cc (main): Update this wrt the change of the
33525	signature of compute_diff.
33526
335272013-10-15  Dodji Seketeli <dodji@redhat.com>
33528
33529	Fix construction of class_decl::member_type
33530	* include/abg-ir.h (class_decl::member_type::member_type): Remove
33531	inline body from here.
33532	* src/abg-ir.cc (class_decl::member_type::member_type): Move
33533	implementation here.  Also, properly set the name of the the
33534	member_type at construction time.
33535
335362013-10-15  Dodji Seketeli <dodji@redhat.com>
33537
33538	Few typedef additions to abg-ir.h
33539	* include/abg-ir.h (pointer_type_def_sptr)
33540	(reference_type_def_sptr): New typedefs.
33541
335422013-10-11  Dodji Seketeli <dodji@redhat.com>
33543
33544	Add debugging routines for decl_base_sptr and translation_unit
33545	* src/abg-writer.cc (dump): Add two version of this; on for
33546	decl_base_sptr, one for translation_unit&.
33547
335482013-10-11  Dodji Seketeli <dodji@redhat.com>
33549
33550	Initial implementation of tu diffing & bidiff cmd line program
33551	* include/abg-comparison.h (class translation_unit_diff): New type.
33552	(compute_diff): Make this take class_decl&, rather than
33553	class_decl_sptr.  Add new overloads for scope_decl& and
33554	translation_unit&.
33555	(report_changes): New overload for scope_diff& and
33556	translation_unit&.
33557	* src/abg-comparison.cc (struct class_decl_diff::priv): New type.
33558	(class class_decl_diff): Add comments to methods.
33559	(class translation_unit_diff): Implement methods.
33560	(compute_diff, report_changes): Implement the new overloads.
33561	(scope_diff::ensure_lookup_tables_populated): Fix a thinko here.
33562	* src/abg-ir.cc (is_var_decl): Add new predicate.
33563	* tools/abg-tools-utils.h (file_exists, is_regular_file)
33564	(check_file): Declare new functions.
33565	* tools/abg-tools-utils.cc (get_stat, file_exists, check_file)
33566	(is_regular_file): Define new functions.
33567	(is_dir): Use the new get_stat.
33568	* tools/bidiff.cc: New file.
33569	* tools/Makefile.am: Add tools/bidiff.cc to the build system; make it
33570	produce the bidiff tool.
33571
335722013-10-10  Dodji Seketeli <dodji@redhat.com>
33573
33574	Fix inheritance of operator== on decl_base and type_base
33575	* include/abg-ir.h (*lots of descendants of decl_base, type_decl)
33576	(template_decl, class_decl::member_base): Replace the previous classical
33577	*::operator==(*&) with an overload of decl_base::operator==(const
33578	decl_base&), type_base::operator==(const type_base),
33579	template_decl::operator==(const template_decl&) or
33580	class_decl::member_base::operator==(const
33581	class_decl::member_base&).  This makes the descendant operator be
33582	the one called when a comparison involves references the parent
33583	class.
33584	* src/abg-ir.cc: Write the implementation of the above.  Remove
33585	the useless static_casts from the previous operator== code.
33586
335872013-10-10  Dodji Seketeli <dodji@redhat.com>
33588
33589	On going misc white spaces and style fixes
33590	* include/abg-ir.h: Add author.  Remove many useless white
33591	spaces.  Add missing end-of-class comments.  Move function
33592	declaration comments from here to their definition point.
33593	* include/abg-fwd.h: Remove useless indentation.  Also move
33594	doxygen comments to *definition* points in src/abg-ir.cc.
33595	* src/abg-ir.cc: Remove many useless white spaces.  Move comments
33596	from declaration points to here.
33597
335982013-10-06  Dodji Seketeli <dodji@redhat.com>
33599
33600	Fix middle snake determination & ses len computation for d == 1
33601	* include/abg-diff-utils.h (compute_middle_snake): After the
33602	overlap determination happened, finding the middle snake can
33603	require keep on building the current path until the "end".  The
33604	end meaning reaching the max of D.  And that max is (M + N)/2 + 1.
33605	In the extreme cases were middle snake was on the very last step
33606	(M + N) + 1, we were not finding the middle snake.  Fix this.
33607	(compute_diff): When d == 1 and the first edge on the edit graph
33608	is a non-diagonal edge and when a_base != a_begin, we were failing
33609	to properly initialize x,y to find that non-diagonal edge.  Also
33610	we were failing to correctly compute the size of the sequence.
33611	Fix these.
33612	* tests/test-core-diff.cc: Add a new regression test for the two
33613	cases above.
33614	* tests/data/test-core-diff/report7.txt: New reference data for
33615	the new regression test.
33616
336172013-10-05  Dodji Seketeli <dodji@redhat.com>
33618
33619	Initial un-debugged implementation of scope diffing
33620	* include/abg-comparison.h (class scope_diff): New type.
33621	(compute_diff(scope_decl_sptr, scope_decl_sptr, scope_diff)): New
33622	declaration.
33623	(report_changes): New declaration.
33624	* src/abg-comparison.cc (struct scope_diff::priv): Define.
33625	(scope_diff::{clear_lookup_tables, lookup_tables_empty,
33626	ensure_lookup_tables_populated, scope_diff, member_changes,
33627	deleted_member_at, inserted_member_at, changed_types,
33628	changed_decls}): Define these new member functions.
33629	(compute_diff): Define.
33630	* include/abg-ir.h (decl_base_sptr): New typedef.
33631	(operator==(decl_base_sptr, decl_base_sptr)): Declare new
33632	operator.
33633	* src/abg-ir.cc (operator==(decl_base_sptr, decl_base_sptr)):
33634	Define.
33635	(scope_decl::{operator==, traverse}): Adjust for using vectors to
33636	store scope members now, rather than lists.
33637	(scope_decl::{declarations, scopes}): Make these types be vector.
33638	This makes the members of a scopes be vector, rather than lists.
33639	This enables them to be diffed.
33640
336412013-10-05  Dodji Seketeli <dodji@redhat.com>
33642
33643	Simplify & cleanup compute_diff core api
33644	* include/abg-diff-utils.h (insertion::inserted_): Changed the
33645	type of this from vector<int> to vector<unsigned>.
33646	(insertion::{insertion, inserted_indexes}): Adjust.
33647	(compute_diff): Add two new simpler overloads.  Implement them in
33648	term of the former more complex overload.
33649	(compute_lcs): Adjust for the vector<int> -> vector<unsigned>
33650	change.
33651	* src/abg-diff-utils.cc (compute_lcs, compute_ses): Adjust for the
33652	compute_diff change above.
33653	* src/abg-comparison.cc (compute_diff, report_changes): Adjust for
33654	the compute_diff & vector<unsigned> changes above..
33655
336562013-10-05  Dodji Seketeli <dodji@redhat.com>
33657
33658	Misc white space, style and comments cleanup
33659	* include/abg-ir.h (class scope_decl): Add end of class comment.
33660	(class type_base): Add a _sptr typedef and end of class comment.
33661	* src/abg-ir.cc (operator==(class_decl_sptr, class_decl_sptr)):
33662	Fix comment.
33663
336642013-10-04  Dodji Seketeli <dodji@redhat.com>
33665
33666	Un-debugged initial implementation of class diffing.
33667	* include/abg-ir.h (decl_base::get_qualified_name): New
33668	declaration.
33669	(class_decl::{base_specs, member_types, data_members,
33670	member_functions, member_function_templates,
33671	member_class_templates}): Make all these containers be vectors,
33672	rather than list.  This makes these containers (like
33673	class_decl::base_specs, class_decl::member_types, etc) be suitable
33674	to be used by the core diffing algorithms to diff their content.
33675	(operator==(class_decl_sptr, class_decl_sptr))
33676	(operator==(class_decl::member_type_sptr, class_decl::member_type_sptr))
33677	(operator==(class_decl::base_spec_sptr,
33678	class_decl::base_spec_sptr))
33679	(operator==(class_decl::data_member_sptr,
33680	class_decl::data_member_sptr))
33681	(operator==(class_decl::member_function_sptr,
33682	class_decl::member_function_sptr))
33683	(operator==(class_decl::member_function_template_sptr,
33684	class_decl::member_function_template_sptr))
33685	(operator==(class_decl::member_class_template_sptr,
33686	class_decl::member_class_template_sptr)): Declare
33687	these new equality operators.  These are to be used by the core
33688	diffing algorithms when comparing two vectors of shared pointers
33689	of members of class_decls.
33690	* src/abg-ir.cc (decl_base::get_qualified_name): Define.
33691	(class_decl::class_decl, class_decl::operator==(class_decl&)): Adjust for the
33692	containers type change to a vector.
33693	(operator==(class_decl_sptr, class_decl_sptr))
33694	(operator==(class_decl::member_type_sptr, class_decl::member_type_sptr))
33695	(operator==(class_decl::base_spec_sptr,
33696	class_decl::base_spec_sptr))
33697	(operator==(class_decl::data_member_sptr,
33698	class_decl::data_member_sptr))
33699	(operator==(class_decl::member_function_sptr,
33700	class_decl::member_function_sptr))
33701	(operator==(class_decl::member_function_template_sptr,
33702	class_decl::member_function_template_sptr))
33703	(operator==(class_decl::member_class_template_sptr,
33704	class_decl::member_class_template_sptr)): Define
33705	these.
33706	* include/abg-comparison.h (diff::scope_): Remove
33707	(diff::{first_scope_, second_scope_}): New members.
33708	(class_decl_diff::class_decl_diff): Pass the new scopes to this
33709	constructor.
33710	(class_decl_diff::{first_class_decl, second_class_decl})
33711	(report_changes): New declarations.
33712	* src/abg-comparison.cc (class_decl_diff::class_decl_diff): Update
33713	as per the declaration.
33714	(class_decl_diff::{first_class_decl, second_class_decl}): Define
33715	as per the declaration.
33716	(compute_diff): Initial implementation for this.
33717	(report_changes): Define.
33718
337192013-10-04  Dodji Seketeli <dodji@redhat.com>
33720
33721	Change the diff::changes_type back to just edit_script
33722	* include/abg-comparison.h (diff::changes_type):
33723	Remove this typedef.
33724	(class_decl_diff::data_members_changes): Rename
33725	class_decl_diff::data_member_changes into this.
33726	(class_decl_diff::member_fn_tmpls_changes): Renamed
33727	class_decl_diff::member_fn_tmpl_changes into this.
33728	(class_decl_diff::member_class_tmpls_changes): Renamed
33729	class_decl_diff::member_class_tmpl_changes into this.
33730	(class_decl_diff::{base_changes, member_types_changes,
33731	data_members_changes, member_fns_changes, member_fn_tmpls_changes,
33732	member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust
33733	these declarations for the use of edit_script.
33734	* src/abg-comparison.cc (class_decl_diff::priv::*): Likewise.
33735	(class_decl_diff::{base_changes, member_types_changes,
33736	data_members_changes, member_fns_changes, member_fn_tmpls_changes,
33737	member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust
33738	these definitions for the above.
33739
337402013-10-04  Dodji Seketeli <dodji@redhat.com>
33741
33742	Misc white space, style and comment fixes
33743	* include/abg-ir.h: Lots of useless white space removals and
33744	comments adding.
33745	(class class_decl::member_base): Fix comment.
33746	* src/abg-hash.cc: Lots of useless white space removals too.
33747	* src/abg-ir.cc: Remove useless white space too.
33748
337492013-10-04  Dodji Seketeli <dodji@redhat.com>
33750
33751	Fix middle snake determination
33752	* include/abg-diff-utils.h (point::{operator!=,operator==}): New
33753	operators.
33754	(end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Allow
33755	the initial point (-1,-1) that is not a point addressing elements
33756	of the input sequences, but that is the starting point of the
33757	forward paths and the ending point of reverse paths in the "Linear
33758	Refinement" of the algorithm.
33759	(is_match_point, maybe_record_match_point)
33760	(find_snake_start_point): New functions.
33761	(find_last_snake_in_path): Remove this.  It's not used anymore.
33762	(compute_middle_snake): Allow checking for overlapping paths even
33763	on points that are outside of the edit graph boundaries.  Once the
33764	overlap is detected, if a non-empty snake has been seen already,
33765	report it as the middle snake.  Otherwise, keep building the path
33766	until the end and report the last snake encountered as the middle
33767	snake.  Add comments.
33768	(compute_diff): For the d == 1 case, fix the logic of the finding
33769	the non-diagonal edge.  Fix typos.  Add comments.
33770	(display_edit_script): Fix report glitches.
33771	* tests/data/test-core-diff/report3.txt: Update as per the report
33772	glitch above.
33773	* tests/data/test-core-diff/report4.txt: Likewise.
33774	* tests/data/test-core-diff/report5.txt: Likewise.
33775	* tests/data/test-core-diff/report6.txt: New reference report for
33776	a new test.
33777	* tests/test-core-diff.cc: Add a new test for negative delta.
33778
337792013-10-03  Dodji Seketeli <dodji@redhat.com>
33780
33781	Initial regression test facility for core diff algorithms
33782	* tests/data/test-core-diff/report0.txt: New test reference data.
33783	* tests/data/test-core-diff/report1.txt: Likewise.
33784	* tests/data/test-core-diff/report2.txt: Likewise.
33785	* tests/data/test-core-diff/report3.txt: Likewise.
33786	* tests/data/test-core-diff/report4.txt: Likewise.
33787	* tests/data/test-core-diff/report5.txt: Likewise.
33788	* tests/test-core-diff.cc: New regression test program.
33789	* tests/Makefile.am: Add these new files to the build system.
33790
337912013-10-02  Dodji Seketeli <dodji@redhat.com>
33792
33793	Initial command line testing facility for core diff algorithms
33794	* tests/test-diff2.cc: New command line testing facility.
33795	* tests/Makefile.am: Add this to the build system.
33796
337972013-10-02  Dodji Seketeli <dodji@redhat.com>
33798
33799	Fix core diff algorithms for negative deltas
33800	* diff2.h (point::point): New copy constructor.
33801	(point::{operator+=, operator=}):  Use point::set.
33802	(point::{operator--, operator++,}): New operators.
33803	(d_path_vec::{a_size_, b_size_}): New members.
33804	(d_path_vec::max_d_): Remove this member.
33805	(d_path_vec::max_d): Compute this, now that max_d_ was removed.
33806	(point_is_valid_in_graph): Declare this new function.
33807	(end_of_fr_d_path_in_k, ): Return
33808	a bool when the end of furthest reaching past found is within the
33809	bounds of the edit graph.  Add comments.
33810	(end_of_frr_d_path_in_k_plus_delta): Likewise.  Also, delta can be
33811	negative; support that.  Do not cross the boundaries of the edit
33812	graph when following a diagonal edge.
33813	(find_last_snake_in_path): New function.
33814	(compute_middle_snake): Make forward/reverse d_path_vec be big
33815	enough to hold paths for M+N differences.  Normally M+N/2 should
33816	be enough, but we were getting weird out of bound errors.  Let's
33817	handle it this way for now.  Do not require that we check for
33818	overlap only when we are on a diagonal edge.  Once we detected an
33819	overlap, use the new find_last_snake_in_path to find the
33820	boundaries of the snake.
33821	(ses_len): Delta can be negative.
33822	(display_edit): Small minor English nit.
33823
338242013-09-28  Dodji Seketeli <dodji@redhat.com>
33825
33826	Lay down the foundations of computing the diff between two class_decl
33827	* include/abg-diff-utils.h: New file.
33828	* src/abg-diff-utils.cc: Likewise.  Implement the code diffing
33829	algorithms from Eugene Myers.
33830	* include/abg-comparison.h: New file. First short at defining the
33831	basic APIs to compute the diff of two classes.
33832	* src/abg-comparison.cc: New file.  Start the implementation of
33833	the above header.
33834
338352013-09-26  Dodji Seketeli <dodji@redhat.com>
33836
33837	Prepare node visitors to be usable on things other than IR nodes
33838	* include/abg-fwd.h (node_visitor_base): Renamed ir_node_visitor
33839	into this.
33840	* include/abg-traverse.h (struct node_visitor_base): New base for
33841	the visitors.
33842	(struct traversable_base): Update comments.
33843	(traversable_base::traverse): Change this into non-pure virtual.
33844	Make it take a reference to node_visitor_base, rather than a
33845	reference to ir_node_visitor.
33846	* src/abg-traverse.cc (traversable_base::traverse): New empty
33847	default implementation.
33848	* include/abg-ir.h: Make ir_node_visitor inherit from new
33849	node_visitor_base.
33850
338512013-09-26  Dodji Seketeli <dodji@redhat.com>
33852
33853	Renamed data members from m_something to something_
33854	* src/abg-ir.{cc,h}: Renamed data members from m_something to
33855	something_ and update their usage.
33856
338572013-08-29  Dodji Seketeli <dodji@redhat.com>
33858
33859	Initial version of an archive manipulation program: biar
33860	* tests/test-utils.h (is_dir, ensure_dir_path_created)
33861	(ensure_parent_dir_created): Move these directories manipulation
33862	utilities from here to ...
33863	* tools/abg-tools-utils.h (is_dir, ensure_dir_path_created)
33864	(ensure_parent_dir_created): ... here in this new file.
33865	(dir_name, base_name): Declare these new functions.
33866	* tests/test-utils.cc (is_dir, ensure_dir_path_created)
33867	(ensure_parent_dir_created): Likewise, move these to ...
33868	* tools/abg-tools-utils.cc (is_dir, ensure_dir_path_created)
33869	(ensure_parent_dir_created): ... here in this new file.
33870	(dir_name, base_name): Define these.
33871	* tools/Makefile.am: New file.  Create a new libtoolsutils.la
33872	static library with stuff from tools/abg-tools-utils.cc in it.
33873	Also create a new 'biar' program with the stuff from the new
33874	tools/biar.cc in it.
33875	* tools/biar.cc: New file.  Contains the code for the new "biar"
33876	archive manipulation command line utility.
33877	* tests/test-read-write.cc (main): Adjust for the change about
33878	ensure_parent_dir_created above.
33879	* tests/test-write-read-archive.cc (main): Likewise.
33880	* Makefile.am (SUBDIRS): Add the new tools/ sub-directory to the
33881	build system.
33882	* configure.ac (AC_CONFIG_FILES): Generate tools/Makefile.
33883	* tests/Makefile.am: Make libtestutils.la link with the new
33884	libtoolsutils.la.  Make sure to express the dependencies between
33885	libtestutils.la and the binaries that depend on it.  Otherwise
33886	parallel builds can go awry.
33887
338882013-08-29  Dodji Seketeli <dodji@redhat.com>
33889
33890	Define translation_unit{_sptr,s} types in abigail::
33891	* include/abg-corpus.h (abigail::corpus::{translation_unit_sptr,
33892	translation_units):  Do not define these typedefs here.  Rather)
33893	(define them ...
33894	* include/abg-ir.h
33895	(abigail::{translation_units,translation_unit_sptr): ... here.
33896	This is because a translation unit can be manipulated
33897	independently from an abi corpus.
33898	* src/abg-corpus.cc (corpus::get_translation_units): Adjust return
33899	type to comply with the change above.
33900
339012013-08-29  Dodji Seketeli <dodji@redhat.com>
33902
33903	Fix header inclusion in abg-corpus.h
33904	* include/abg-corpus.h: Drop incomplete abg-traverse.h and
33905	abg-fwd.h.  Use abg-ir.h proper and be done with it.  Users of the
33906	library will just have to use abg-corpus.h to manipulate and the
33907	archives and the IR they contain.
33908
339092013-08-29  Dodji Seketeli <dodji@redhat.com>
33910
33911	Add error message to translation_unit::write
33912	* src/abg-writer.cc (translation_unit::write): Add an error
33913	message to stderr if something ultimately went wrong.
33914
339152013-08-29  Dodji Seketeli <dodji@redhat.com>
33916
33917	Rename abigail::corpus::{get_file_path --> get_path}
33918	* include/abg-corpus.h (corpus::{get_path, set_path): Renamed
33919	corpus::get_file_path and corpus::set_file_path into these as
33920	get_path/set_path is what is used elsewhere as well.
33921	* src/abg-corpus.cc (corpus::{get_path, set_path}): Likewise.
33922	* tests/test-write-read-archive.cc (main): Adjust for the change
33923	above.
33924
339252013-08-29  Dodji Seketeli <dodji@redhat.com>
33926
33927	Cleanup src/Makefile.am
33928	* src/Makefile.am: Fix library naming and remove useless trailing
33929	space from directory path.
33930
339312013-08-27  Dodji Seketeli <dodji@redhat.com>
33932
33933	Initial writing/reading of an ABI corpus to an archive
33934	* configure.ac: Support detection of libzip dependency. Define
33935	new DEPS_CFLAGS and DEPS_LIBS variables for use in
33936	Makefile.am to refer to the dependency headers and
33937	libraries.
33938	* doc/website/mainpage.txt: Update this to talk about the new
33939	libzip dependency.
33940	* include/Makefile.am: Add abg-libzip-utils.h to the build system.
33941	* include/abg-corpus.h (corps): Hide abigail::corpus's private behind a
33942	pimpl idiom.
33943	(corpus::{drop_translation_units, get_file_path, set_file_path,
33944	write, read}): New methods.
33945	* include/abg-libxml-utils.h (new_reader_from_buffer): Declare new
33946	function.
33947	* include/abg-libzip-utils.h: New file.
33948	* src/Makefile.am: Add abg-corpus.cc and abg-libzip-utils.cc to
33949	the build system.  Refer to the library and headers dependencies
33950	via the new DEPS_LIBS and DEPS_CFLAGS variables.
33951	* src/abg-corpus.cc: New file.
33952	* src/abg-ir.cc (translation::set_path): New method.
33953	* src/abg-libxml-utils.cc (new_reader_from_buffer): Define new
33954	function.
33955	* src/abg-libzip-utils.cc: New file.
33956	* src/abg-reader.cc (translation_unit::read): New overload.
33957	* src/abg-writer.cc: Inject the names from the std namespace into
33958	the abigail namespace, rather than into abigail::writer.
33959	(abigail::translation_unit::write): New overload.  This can now
33960	use ofstream and the other stuff from std that are injected in the
33961	abigail:: namespace.
33962	* tests/Makefile.am: Add tests/test-write-read-archive.cc to the
33963	build system; use that to build runtestwritereadarchive.  Also add
33964	the input test data from
33965	tests/data/test-write-read-archive/test[0-4].xml.
33966	* /tests/data/test-write-read-archive/test[0-4].xml: New test
33967	input data files.
33968	* tests/test-write-read-archive.cc: New test for this archive
33969	write/read support.
33970
339712013-08-27  Dodji Seketeli <dodji@redhat.com>
33972
33973	Fix & add missing API documentation
33974	* src/abg-ir.cc (location_manager::create_new_location): Fix
33975	documentation comment.  (translation_unit::translation_unit)
33976	(translation_uni::get_global_scope, translation_unit::get_path)
33977	(translation_unit::traverse, translation_unit::get_loc_mgr)
33978	(translation_unit::is_empty, translation_unit::traverse): Add
33979	missing documentation comments.
33980	* src/abg-libxml-utils.cc (new_reader_from_file): Fix comment.
33981	* src/abg-reader.cc (translation_unit::read): Likewise.
33982
339832013-08-27  Dodji Seketeli <dodji@redhat.com>
33984
33985	Remove useless header inclusion
33986	* include/abg-traverse.h: Remove useless #include <tr1/memory>
33987
339882013-08-27  Dodji Seketeli <dodji@redhat.com>
33989
33990	Misc white space cleanups
33991	* include/abg-corpus.h: Cleanup white spaces.
33992	* include/abg-fwd.h: Likewise.
33993	* include/abg-ir.h: Likewise.
33994	* include/abg-libxml-utils.h: Likewise.
33995	* src/abg-config.cc: Likewise.
33996	* src/abg-ir.cc: Likewise.
33997	* src/abg-reader.cc: Likewise.
33998	* src/abg-writer.cc: Likewise.
33999
340002013-08-27  Dodji Seketeli <dodji@redhat.com>
34001
34002	Small cleanup in abg-config.cc
34003	* src/abg-config.cc: Include auto-generated
34004	$(top_builddir)/config.h file.
34005
340062013-08-27  Dodji Seketeli <dodji@redhat.com>
34007
34008	Pass absolute paths to the compiler during the build
34009	* src/Makefile.am: Pass absolute file paths to the compiler during
34010	the build.  This helps in e.g in emacs' compilation mode, when the
34011	output shows an error reported by GCC's diagnostics, setting point
34012	to the error line and hitting 'enter' transports the user to the
34013	file location where the error happened; as the file path is nows
34014	absolute, emacs can always find it.  Otherwise, finding it depends
34015	on $PWD and whatnot.
34016	* tests/Makefile.am: Likewise.
34017
340182013-08-27  Dodji Seketeli <dodji@redhat.com>
34019
34020	Misc cleanups in abg-fwd.h
34021	* include/abg-fwd.h: Move location, location_manager and
34022	translation_unit in the ir section.  Remove stuff that was
34023	commented out anyway.
34024
340252013-08-27  Dodji Seketeli <dodji@redhat.com>
34026
34027	Move location, location_manager & translation_unit back into abg-ir.h
34028	* include/abg-corpus.h: Move location location_manager,
34029	translation_unit from here ...
34030	* include/abg-ir.h: ... to here.  The reason being that these are
34031	really constructs of the Internal Representation of the ABI/API of
34032	a translation unit.  What is left in abg-corpus is really
34033	exclusively related to an ABI Corpus, which I see more as a
34034	"packaging" construct that abstracts the bundling of several
34035	translation units together.  Also, I fixed some comments about the
34036	location/location_manger types; now a location is made specific to
34037	a translation unit; to an abi corpus.  A location of a given
34038	translation unit has to be decoded by the location manager of that
34039	same translation unit.
34040
340412013-08-22  Dodji Seketeli <dodji@redhat.com>
34042
34043	Make libxml2 a private dependency wrt pkconfig
34044	* libabigail.pc.in: Libxml2 is not exposed to clients so make it
34045	be a private dependency.
34046
340472013-08-22  Dodji Seketeli <dodji@redhat.com>
34048
34049	White space fix in COMPILING
34050	* COMPILING: White space fix.
34051
340522013-08-22  Dodji Seketeli <dodji@redhat.com>
34053
34054	Add abg-version.h.in to the source distribution & cleanup
34055	* include/Makefile.am:  Add abg-version.h.in to the source
34056	distribution.
34057	* configure.ac: Generate abg-version.h in using the existing
34058	AC_CONFIG_FILES macro call.
34059
340602013-08-22  Dodji Seketeli <dodji@redhat.com>
34061
34062	Support pkgconfig through a new libabigail.pc file
34063	* libabigail.pc.in: New pkgconfig file.
34064	* configure.ac: Define the LIBXML2_VERSION variable that is used
34065	in the libabigail.pc.in file.  Generate the libabigail.pc file
34066	from its libabigail.pc.in template.
34067	* Makefile.am: Add libabigail.pc.in to the source distribution.
34068	Install the generated libabigail.pc to the right destination.
34069
340702013-08-21  Dodji Seketeli <dodji@redhat.com>
34071
34072	Tweak the apidoc mainpage
34073	* include/abg-fwd.h<doxygen markup>: Fix link to the project web
34074	page and for git check-out.
34075
340762013-08-21  Dodji Seketeli <dodji@redhat.com>
34077
34078	Initial website generation-fu using Doxygen
34079	* doc/website/mainpage.txt: New file representing the input for
34080	the website.
34081	* doc/website/libabigail-website.doxy: New file representing the
34082	doxygen configuration for the website generation.
34083	* doc/api/libabigail.doxy: Output doxygen generation warnings into
34084	a file.
34085	* doc/Makefile.am: Support generating the website from doxygen.
34086	Update the api generation relevant macros names for better
34087	consistency.  Make "make html" generate the website too.  Make
34088	"make clean" erase the website bits too.  Add a 'website'
34089	target to make the website.
34090
340912013-08-21  Dodji Seketeli <dodji@redhat.com>
34092
34093	Fix typo in CONTRIBUTING file
34094	* CONTRIBUTING: Fix typo, courtesy of Mark Wielaard.
34095
340962013-08-19  Dodji Seketeli <dodji@redhat.com>
34097
34098	Remove autotools-generated files
34099	* Makefile.in: Remove this autotools-generated file.  I know that
34100	people in the GCC-realm like storing these autotools-generated
34101	files into the source control system, but I believe in this day
34102	and age, this is annoying (to say the least) for the project
34103	developers for no good reason.  Requiring (the ubiquitous)
34104	autoconf for building from source is no big deal today, and typing
34105	"autoreconf" is not hard to do, really.  And it saves the
34106	developers for having to update a bunch of boilerplate
34107	automatically generated files into the source control system; this
34108	is really unnecessary noise and it is a commonly accepted good
34109	practice to avoid doing it these days.  To help people who do not
34110	know how to handle this, there is a COMPILING file in the source
34111	tree that explains how to build the project from sources.
34112	* aclocal.m4: Likewise.
34113	* configure: Likewise.
34114	* include/Makefile.in: Likewise.
34115	* src/Makefile.in: Likewise.
34116	* doc/Makefile.in: Likewise.
34117	* tests/Makefile.in: Likewise.
34118
341192013-08-19  Dodji Seketeli <dodji@redhat.com>
34120
34121	Add a new COMPILING file explaining how to build the package
34122	* COMPILING: New file.
34123
341242013-08-14  Dodji Seketeli <dodji@redhat.com>
34125
34126	Remove name of unused parameter in decl_base::traverse.
34127	* src/abg-ir.c (decl_base::traverse): Remove name of unused parameter.
34128
341292013-08-14  Dodji Seketeli <dodji@redhat.com>
34130
34131	install headers in $includedir/libabigail
34132	* include/Makefile.am: Install headers in $includedir/libabigail
34133
341342013-08-14  Dodji Seketeli <dodji@redhat.com>
34135
34136	For usage from within GCC set header path to $includedir/libabigail
34137	* abigail.m4:  The include path used for compilation goes to
34138	$includedir/libabigail.
34139
341402013-08-08  Benjamin Kosnik <bkoz@redhat.com>
34141
34142	Separate out bits from the ir header.
34143	* include/abg-irfwd.h: Move to...
34144	* include/abg-fwd.h: ...this.
34145	* include/abg-ir.h (traverse_base): Move to...
34146	* include/abg-traverse.h: ...here. New.
34147	* include/abg-ir.h (location, location_manager, translation_unit):
34148	Move to...
34149	* include/abg-corpus.h: ...here.
34150	* include/Makefile.am: Adjust.
34151	* include/Makefile.in: Regenerate.
34152
341532013-08-07  Benjamin Kosnik <bkoz@redhat.com>
34154
34155	Template naming compression.
34156	* include/abg-ir.h: Template naming compressions.
34157	(class_template_decl): To class_tdecl.
34158	(function_template_decl): To function_tdecl.
34159	(template_type_parameter): To type_tparameter.
34160	(template_non_type_parameter): To non_type_tparameter.
34161	(template_template_parameter): To template_tparameter.
34162	(tmpl_parm_type_composition): To type_composition.
34163	* include/abg-irfwd.h: Same.
34164	* src/abg-hash.cc: Same.
34165	* src/abg-ir.cc: Same.
34166	* src/abg-reader.cc: Same.
34167
341682013-08-07  Benjamin Kosnik <bkoz@redhat.com>
34169
34170	Slight change to doxy config.
34171	* doc/api/libabigail.doxy: Turn off namespace scopes, on all the viz.
34172
341732013-08-07  Benjamin Kosnik <bkoz@redhat.com>
34174
34175	Move class_decl nested types out-of-line.
34176	* include/abg-ir.h (class_decl): Move nested types out of line.
34177
341782013-08-07  Benjamin Kosnik <bkoz@redhat.com>
34179
34180	Rename class_decl::method to class_decl::method_base.
34181	* include/abg-ir.h (class_decl::member): To member_base.
34182	* src/abg-hash.cc: Same.
34183	* src/abg-ir.cc: Same.
34184	* src/abg-writer.cc: Same.
34185
341862013-08-07  Benjamin Kosnik <bkoz@redhat.com>
34187
34188	Nest hashers.
34189	* include/abg-ir.h: Nest all hashers.
34190	* include/abg-irfwd.h (abigail): Don't inject std::tr1::hash.
34191	Remove hasher forward declarations.
34192	* include/abg-hash.h: Tweak.
34193	* src/abg-hash.cc: Define hashers here.
34194	* src/abg-ir.cc: Adjust for above.
34195	* src/abg-reader.cc: Same.
34196	* src/abg-writer.cc: Same.
34197
341982013-08-06  Benjamin Kosnik <bkoz@redhat.com>
34199
34200	Rename abi_corpus to corpus
34201	* include/abg-corpus.h (abi_corpus): Change to corpus.
34202	* include/abg-hash.h: Tweaks.
34203	* include/abg-libxml-utils.h: Same.
34204
342052013-08-06  Benjamin Kosnik <bkoz@redhat.com>
34206
34207	Simplify interface for serializing/deserializing translation_units.
34208	* include/abg-ir.h (translation_unit::read): New member function.
34209	(translation_unit::write): Same.
34210	* src/abg-reader.cc (translation_unit::read): Define.
34211	* src/abg-writer.cc (translation_unit::write): Define.
34212	* include/abg-reader.h: Remove.
34213	* include/abg-writer.h: Remove.
34214	* include/Makefile.am (headers): Same.
34215	* include/Makefile.in: Regenerate.
34216
342172013-08-06  Benjamin Kosnik <bkoz@redhat.com>
34218
34219	First pass clean reading API.
34220	* include/abg-reader.h (read_file): Remove extraneous file parameter.
34221	* src/abg-reader.cc: Same.
34222	* tests/test-read-write.cc: Adjust.
34223
342242013-08-06  Benjamin Kosnik <bkoz@redhat.com>
34225
34226	Rename traversable to traversable_base, move up the _decl hierarchy via decl_base derivation.
34227	* include/abg-ir.h (traversable): To traversable_base.
34228	(decl_base): Inherit from traversable_base.
34229	(decl_base::traverse): Null definition.
34230	(function_decl, etc.): Remove traversable_base as base class.
34231
342322013-08-06  Benjamin Kosnik <bkoz@redhat.com>
34233
34234	Standardize typedef naming. Plural form is the container form, smart_ptr types are type + _sptr.
34235	* include/abg-ir.h (scope_decl): Add declarations, scopes as types.
34236	(function_type): Add parameter_sptr, parameters as types.
34237	(enum_type_decl): Add type_sptr, enumerators as types.
34238	(class_decl): Adjust typedefs for consistency.  Change
34239	base_specs_type to base_specs, member_types_type to member_types,
34240	data_members_type to data_members, member_functions_type to
34241	member_functions, member_function_templates_type to
34242	member_function_templates, member_class_templates_type to
34243	member_class_templates.
34244
342452013-08-02  Benjamin Kosnik <bkoz@redhat.com>
34246
34247	Doxygen markup fixes final.
34248	* include/abg-config.h: Doxygen cleanups round two.
34249	* include/abg-hash.h: Same.
34250	* include/abg-ir.h: Same.
34251	* include/abg-irfwd.h: Same.
34252	* include/abg-libxml-utils.h: Same.
34253	* src/abg-config.cc: Same.
34254	* src/abg-hash.cc: Same.
34255	* src/abg-ir.cc: Same.
34256	* src/abg-reader.cc: Same.
34257	* src/abg-writer.cc: Same.
34258
342592013-08-01  Benjamin Kosnik <bkoz@redhat.com>
34260
34261	Forward decls for abg-ir.h, doxygen fixups, restyle.
34262	* include/abg-irfwd.h: New file for forward declarations.
34263	* include/Makefile.am: Add new header.
34264	* include/Makefile.in: Regenerate.
34265	* include/*: Forward declare, doxygen fixups, restyle.
34266	* src/*: Same.
34267	* src/abg-corpus.cc: Empty, removed.
34268	* doc/api/libabigail.doxy: Tweak.
34269
342702013-08-01  Benjamin Kosnik <bkoz@redhat.com>
34271
34272	Add virtual dtor to translation_unit.
34273	* include/abg-ir.h (translation_unit): Add virtual dtor.
34274	* src/abg-ir.cc: Define.
34275
342762013-08-01  Benjamin Kosnik <bkoz@redhat.com>
34277
34278	Adjust doxygen input path.
34279	* doc/api/libabigail.doxy: Adjust include directory.
34280
342812013-08-01  Benjamin Kosnik <bkoz@redhat.com>
34282
34283	Collapse subdir of include to include.
34284	* include/libabigail/abg-*.h: Move to...
34285	* include/abg-*.h
34286	* include/libabigail: Remove.
34287	* configure.ac: Adjust include location from libabigail/include to
34288	include.
34289	* Makefile.in: Same.
34290	* aclocal.m4: Same.
34291	* configure: Same.
34292	* doc/Makefile.in: Same.
34293	* include/Makefile.am: Same.
34294	* src/Makefile.am: Same.
34295	* src/Makefile.in: Same.
34296	* tests/Makefile.am: Same.
34297	* tests/Makefile.in: Same.
34298
342992013-07-23  Dodji Seketeli <dodji@seketeli.org>
34300
34301	Update autotool auto-generated files
34302	* Makefile.in: Updated.
34303	* aclocal.m4: Likewise.
34304	* configure: Likewise.
34305	* doc/Makefile.in: Likewise.
34306	* src/Makefile.in: Likewise.
34307	* tests/Makefile.in: Likewise.
34308
343092013-07-20  Dodji Seketeli <dodji@seketeli.org>
34310
34311	Implement a translation unit traversal API
34312	* include/libabigail/abg-ir.h (struct ir_node_visitor, struct
34313	traversable): New interfaces.
34314	(translation_unit, scope_decl, type_decl, qualified_type_def)
34315	(pointer_type_def, reference_type_def, enum_type_decl)
34316	(typedef_decl, var_decl, function_decl, data_member)
34317	(member_function, member_function_template)
34318	(member_class_template): Implement the traversable interface,
34319	overload the traversable::traverse pure virtual function.
34320	* src/abg-ir.cc ({translation_unit, scope_decl, type_decl,
34321	namespace_decl, qualified_type_def, pointer_type_def,
34322	reference_type_def, enum_type_decl, typedef_decl, var_decl,
34323	function_decl, class_decl::member_function, class_decl,
34324	class_decl::data_member, class_decl::member_function_template,
34325	class_decl::member_class_template, function_template_decl,
34326	class_template_decl, }::traverse): Implement traversal.
34327	(ir_node_visitor::visit): New method, overloaded for the types
34328	above, which implement the traversable interface.
34329	* tests/test-walker.cc: New test case program to showcase how to
34330	use the new traversal API.
34331	* tests/makefile.am: Add test-walker.cc to the build system.
34332
343332013-07-19  Dodji Seketeli <dodji@seketeli.org>
34334
34335	By default, statically link libabigail with whoever uses abigail.m4
34336	* abigail.m4: Make $abigaillibs statically link libabigail by default.
34337
343382013-07-19  Dodji Seketeli <dodji@seketeli.org>
34339
34340	Move static member definition to abg-viz-dot.cc file
34341	* include/libabigail/abg-viz-dot.h: Move definition of
34342	node_base::_M_count_total to ...
34343	* src/abg-viz-dot.cc: ... here.
34344
343452013-07-19  Dodji Seketeli <dodji@seketeli.org>
34346
34347	Put headers in include/libabigail
34348	* include/libabigail: New directory.
34349	* include/Makefile.am:  New file.
34350	* include/libabigail/Makefile.am: New file.
34351	* src/abg-*.h: Move these in include/libabigail/*.h
34352	* src/Makefile.am: Set -I option to look for headers in include/libabigail
34353	* doc/api/libabigail.doxy: Look for headers in include/libabigail
34354	* tests/Makefile.am: Set -I option to look for headers in include/libabigail
34355	* abigail.m4: Set includedir to $prefix/include/libabigail for
34356	library used as a dep, or to srcdir/libabigail/include/libabigail
34357	in GCC source tree.
34358	* configure.ac: Add Makefile.am in include and include/libabigail
34359	* abigail.m4: Look for headers in include/libabigail when the
34360	libabigail is in in the source tree and in $incdir/libabigail when
34361	it is installed as a dependency.
34362
343632013-07-18  Benjamin Kosnik <bkoz@redhat.com>
34364
34365	Install into docdir, turn off collaboration graphs.
34366	* doc/Makefile.am (doc-install-html-doxygen): Install generated
34367	files into docdir.
34368	* doc/api/libabigail.doxy (COLLABORATION_GRAPH): Turn off.
34369
343702013-07-18  Benjamin Kosnik <bkoz@redhat.com>
34371
34372	Fix dependencies for api/html output directory.
34373	* doc/Makefile.am: Create abi output directory.
34374
343752013-07-16  Dodji Seketeli <dodji@seketeli.org>
34376
34377	Prepare for publishing
34378	* COMMIT-LOG-GUIDELINES: New file.
34379	* CONTRIBUTING: New file.
34380	* README: Amended to refer to the first files above.
34381
343822013-07-16  Dodji Seketeli <dodji@seketeli.org>
34383
34384	LGPLv3 License the library
34385	* COPYING-LGPLV3:  New file.
34386	* abg-config.cc: License the file to LGPLv3.
34387	* abg-config.h: Likewise.
34388	* abg-corpus.cc: Likewise.
34389	* abg-corpus.h: Likewise.
34390	* abg-hash.cc: Likewise.
34391	* abg-hash.h: Likewise.
34392	* abg-ir.cc: Likewise.
34393	* abg-ir.h: Likewise.
34394	* abg-libxml-utils.cc: Likewise.
34395	* abg-libxml-utils.h: Likewise.
34396	* abg-reader.cc: Likewise.
34397	* abg-reader.h: Likewise.
34398	* abg-writer.cc: Likewise.
34399	* abg-writer.h: Likewise.
34400	* src/abg-viz-common.cc: Likewise.
34401	* src/abg-viz-common.h: Likewise.
34402	* src/abg-viz-dot.cc: Likewise.
34403	* src/abg-viz-dot.h: Likewise.
34404	* src/abg-viz-svg.cc: Likewise.
34405	* src/abg-viz-svg.h: Likewise.
34406	* tests/test-read-write.cc: Likewise.
34407	* tests/test-utils.cc: Likewise.
34408	* tests/test-utils.h: Likewise.
34409
344102013-07-17  Dodji Seketeli <dodji@seketeli.org>
34411
34412	Add assert.h in abg-ir.cc
34413	* src/abg-ir.cc: Add missing assert.h
34414
344152013-07-17  Dodji Seketeli <dodji@seketeli.org>
34416
34417	Fix missing license blurbs
34418	* src/abg-config.cc: Fix licensing blurb.
34419	* src/abg-config.h: Likewise.
34420	* src/abg-corpus.cc: Likewise.
34421	* src/abg-corpus.h: Likewise.
34422	* src/abg-ir.cc: Likewise.
34423	* src/abg-ir.h: Likewise.
34424	* src/abg-reader.cc: Likewise.
34425	* src/abg-writer.cc: Likewise.
34426
344272013-07-02  Benjamin Kosnik <bkoz@redhat.com>
34428
34429	Correct DOT merge.
34430	* src/abg-viz-common.h: Use _M_attributes for attribute overflows.
34431	* src/abg-viz-dot.h: Merge in correct node_base.
34432	* src/abg-viz-dot.cc: Same.
34433	* tests/test-dot.cc: Correct examples.
34434	* tests/Makefile.am: Add .gv to CLEANFILES.
34435	* tests/Makefile.in: Regenerate.
34436
344372013-07-02  Benjamin Kosnik <bkoz@redhat.com>
34438
34439	Pull out common style type.
34440	* src/abg-viz-common.h: Pull out common style type.
34441	* src/abg-viz-dot.cc: Adjust scoping.
34442	* src/abg-viz-common.cc: Same.
34443	* src/abg-viz-dot.h: Use common style class.
34444	* src/abg-viz-svg.h: Same.
34445
344462013-07-02  Benjamin Kosnik <bkoz@redhat.com>
34447
34448	Commonize visualization support.
34449	* src/abg-viz-svg.h: Move common code to...
34450	* src/abg-viz-dot.h: Move common code to...
34451	* src/abg-viz-common.h: ...here. New.
34452	* src/abg-viz-svg.cc: Move common code to...
34453	* src/abg-viz-common.cc: ...here. New.
34454	* src/Makefile.am: Add abg-viz-common.cc, abg-viz-common.h
34455	* src/Makefile.in: Regenerate.
34456
344572013-07-01  Benjamin Kosnik <bkoz@redhat.com>
34458
34459	Initial DOT work.
34460	* doc/vizualization/layout/scripts/
34461	(inkscape_export_svg_to_plain_svg.sh): Move...
34462	(inkscape_export_svg_to_png_and_pdf.sh): Move...
34463	* scripts: ..here. New toplevel directory.
34464	* scripts/scripts/dot_to_png.sh: New.
34465	* scripts/scripts/dot_to_svg.sh: New.
34466	* src/Makefile.am: Add abg-viz-dot.cc, abg-viz-dot.h.
34467	* tests/Makefile.am: Add test-dot.cc.
34468	* src/abg-viz-dot.cc: New.
34469	* src/abg-viz-dot.h: New.
34470	* tests/test-dot.cc: New.
34471	* doc/vizualization/graph: New.
34472	* doc/vizualization/graph/gv/sa-A.gv: New.
34473	* doc/vizualization/graph/gv/sa-B.gv: New.
34474	* doc/vizualization/graph/gv/sa-C1.gv: New.
34475	* doc/vizualization/graph/gv/sa-C2.gv: New.
34476	* doc/vizualization/graph/gv/sa-C3.gv: New.
34477	* doc/vizualization/graph/gv/sa-C4.gv: New.
34478	* doc/vizualization/graph/gv/sa-D1.gv: New.
34479	* doc/vizualization/graph/gv/sa-D2.gv: New.
34480	* doc/vizualization/graph/gv/sa-D2v.gv: New.
34481	* doc/vizualization/graph/gv/sa-D3.gv: New.
34482	* doc/vizualization/graph/gv/sa-D3v.gv: New.
34483	* doc/vizualization/graph/gv/sa-D4v.gv: New.
34484	* doc/vizualization/graph/gv/sa-D5v1.gv: New.
34485	* doc/vizualization/graph/gv/sa-D5v2.gv: New.
34486	* doc/vizualization/graph/gv/sa-DD1.gv: New.
34487	* doc/vizualization/graph/gv/sa-DD2.gv: New.
34488	* doc/vizualization/graph/gv/sa-DD3.gv: New.
34489	* doc/vizualization/graph/gv/sa-DD4.gv: New.
34490	* doc/vizualization/graph/gv/sa-DD5.gv: New.
34491	* doc/vizualization/graph/gv/sa-base.gv: New.
34492	* doc/vizualization/graph/png/sa-A.png: New.
34493	* doc/vizualization/graph/png/sa-B.png: New.
34494	* doc/vizualization/graph/png/sa-C1.png: New.
34495	* doc/vizualization/graph/png/sa-C2.png: New.
34496	* doc/vizualization/graph/png/sa-C3.png: New.
34497	* doc/vizualization/graph/png/sa-C4.png: New.
34498	* doc/vizualization/graph/png/sa-D1.png: New.
34499	* doc/vizualization/graph/png/sa-D2.png: New.
34500	* doc/vizualization/graph/png/sa-D2v.png: New.
34501	* doc/vizualization/graph/png/sa-D3.png: New.
34502	* doc/vizualization/graph/png/sa-D3v.png: New.
34503	* doc/vizualization/graph/png/sa-D4v.png: New.
34504	* doc/vizualization/graph/png/sa-D5v1.png: New.
34505	* doc/vizualization/graph/png/sa-D5v2.png: New.
34506	* doc/vizualization/graph/png/sa-DD1.png: New.
34507	* doc/vizualization/graph/png/sa-DD2.png: New.
34508	* doc/vizualization/graph/png/sa-DD3.png: New.
34509	* doc/vizualization/graph/png/sa-DD4.png: New.
34510	* doc/vizualization/graph/png/sa-DD5.png: New.
34511	* doc/vizualization/graph/png/sa-base.png: New.
34512	* doc/vizualization/graph/sources/sa-A.cc: New.
34513	* doc/vizualization/graph/sources/sa-B.cc: New.
34514	* doc/vizualization/graph/sources/sa-C.cc: New.
34515	* doc/vizualization/graph/sources/sa-D.cc: New.
34516	* doc/vizualization/graph/sources/sa-DD.cc: New.
34517	* doc/vizualization/graph/sources/sa-base.cc: New.
34518	* doc/vizualization/graph/svg/sa-A.svg: New.
34519	* doc/vizualization/graph/svg/sa-B.svg: New.
34520	* doc/vizualization/graph/svg/sa-C1.svg: New.
34521	* doc/vizualization/graph/svg/sa-C2.svg: New.
34522	* doc/vizualization/graph/svg/sa-C3.svg: New.
34523	* doc/vizualization/graph/svg/sa-C4.svg: New.
34524	* doc/vizualization/graph/svg/sa-D1.svg: New.
34525	* doc/vizualization/graph/svg/sa-D2.svg: New.
34526	* doc/vizualization/graph/svg/sa-D2v.svg: New.
34527	* doc/vizualization/graph/svg/sa-D3.svg: New.
34528	* doc/vizualization/graph/svg/sa-D3v.svg: New.
34529	* doc/vizualization/graph/svg/sa-D4v.svg: New.
34530	* doc/vizualization/graph/svg/sa-D5v1.svg: New.
34531	* doc/vizualization/graph/svg/sa-D5v2.svg: New.
34532	* doc/vizualization/graph/svg/sa-DD1.svg: New.
34533	* doc/vizualization/graph/svg/sa-DD2.svg: New.
34534	* doc/vizualization/graph/svg/sa-DD3.svg: New.
34535	* doc/vizualization/graph/svg/sa-DD4.svg: New.
34536	* doc/vizualization/graph/svg/sa-DD5.svg: New.
34537	* doc/vizualization/graph/svg/sa-base.svg: New.
34538
345392013-07-01  Benjamin Kosnik <bkoz@redhat.com>
34540
34541	Regenerate build/configure.
34542	* aclocal.m4:
34543	* configure:
34544
345452013-06-06  Benjamin Kosnik <bkoz@redhat.com>
34546
34547	Regenerate configure files.
34548	* Makefile.in:
34549	* aclocal.m4:
34550	* configure:
34551	* doc/Makefile.in:
34552	* src/Makefile.in:
34553	* tests/Makefile.in:
34554
345552013-05-28  Benjamin Kosnik <bkoz@redhat.com>
34556
34557	Add svg generation.
34558	* src/Makefile.am: Add abg-viz-svg.cc, abg-viz-svg.h.
34559	* tests/Makefile.am: Add test-svg.cc.
34560	* src/abg-viz-svg.cc: New.
34561	* src/abg-viz-svg.h: New.
34562	* tests/test-svg.cc: New.
34563
345642013-05-22  Benjamin Kosnik <bkoz@redhat.com>
34565
34566	Remove ChangeLog
34567	* ChangeLog: Remove content.
34568
345692013-05-21  Benjamin Kosnik <bkoz@redhat.com>
34570
34571	Fixup abg-version.h merge duplicate.
34572	* configure.ac: Remove src/abg-version.h merge duplicate.
34573
345742013-05-20  Benjamin Kosnik <bkoz@redhat.com>
34575
34576	Add doc/visualization/layout.
34577	* doc/vizualization/layout: New.
34578	* doc/vizualization/layout/pdf/sa-A.pdf: New.
34579	* doc/vizualization/layout/pdf/sa-B.pdf: New.
34580	* doc/vizualization/layout/pdf/sa-C1.pdf: New.
34581	* doc/vizualization/layout/pdf/sa-C2.pdf: New.
34582	* doc/vizualization/layout/pdf/sa-C3.pdf: New.
34583	* doc/vizualization/layout/pdf/sa-D1.pdf: New.
34584	* doc/vizualization/layout/pdf/sa-D2.pdf: New.
34585	* doc/vizualization/layout/pdf/sa-D2v.pdf: New.
34586	* doc/vizualization/layout/pdf/sa-D3.pdf: New.
34587	* doc/vizualization/layout/pdf/sa-D3v.pdf: New.
34588	* doc/vizualization/layout/pdf/sa-D4v.pdf: New.
34589	* doc/vizualization/layout/pdf/sa-DD1.pdf: New.
34590	* doc/vizualization/layout/pdf/sa-DD2.pdf: New.
34591	* doc/vizualization/layout/pdf/sa-DD3.pdf: New.
34592	* doc/vizualization/layout/pdf/sa-DD4.pdf: New.
34593	* doc/vizualization/layout/pdf/sa-DD5.pdf: New.
34594	* doc/vizualization/layout/pdf/sa-base.pdf: New.
34595	* doc/vizualization/layout/png/sa-A.png: New.
34596	* doc/vizualization/layout/png/sa-B.png: New.
34597	* doc/vizualization/layout/png/sa-C1.png: New.
34598	* doc/vizualization/layout/png/sa-C2.png: New.
34599	* doc/vizualization/layout/png/sa-C3.png: New.
34600	* doc/vizualization/layout/png/sa-D1.png: New.
34601	* doc/vizualization/layout/png/sa-D2.png: New.
34602	* doc/vizualization/layout/png/sa-D2v.png: New.
34603	* doc/vizualization/layout/png/sa-D3.png: New.
34604	* doc/vizualization/layout/png/sa-D3v.png: New.
34605	* doc/vizualization/layout/png/sa-D4v.png: New.
34606	* doc/vizualization/layout/png/sa-DD1.png: New.
34607	* doc/vizualization/layout/png/sa-DD2.png: New.
34608	* doc/vizualization/layout/png/sa-DD3.png: New.
34609	* doc/vizualization/layout/png/sa-DD4.png: New.
34610	* doc/vizualization/layout/png/sa-DD5.png: New.
34611	* doc/vizualization/layout/png/sa-base.png: New.
34612	* doc/vizualization/layout/scripts/
34613	(inkscape_export_svg_to_plain_svg.sh): New.
34614	(inkscape_export_svg_to_png_and_pdf.sh): New.
34615	* doc/vizualization/layout/sources/sa-A.cc: New.
34616	* doc/vizualization/layout/sources/sa-B.cc: New.
34617	* doc/vizualization/layout/sources/sa-C.cc: New.
34618	* doc/vizualization/layout/sources/sa-D.cc: New.
34619	* doc/vizualization/layout/sources/sa-DD.cc: New.
34620	* doc/vizualization/layout/sources/sa-base.cc: New.
34621	* doc/vizualization/layout/svg/sa-A.svg: New.
34622	* doc/vizualization/layout/svg/sa-B.svg: New.
34623	* doc/vizualization/layout/svg/sa-C1.svg: New.
34624	* doc/vizualization/layout/svg/sa-C2.svg: New.
34625	* doc/vizualization/layout/svg/sa-C3.svg: New.
34626	* doc/vizualization/layout/svg/sa-D1.svg: New.
34627	* doc/vizualization/layout/svg/sa-D2.svg: New.
34628	* doc/vizualization/layout/svg/sa-D2v.svg: New.
34629	* doc/vizualization/layout/svg/sa-D3.svg: New.
34630	* doc/vizualization/layout/svg/sa-D3v.svg: New.
34631	* doc/vizualization/layout/svg/sa-D4v.svg: New.
34632	* doc/vizualization/layout/svg/sa-DD1.svg: New.
34633	* doc/vizualization/layout/svg/sa-DD2.svg: New.
34634	* doc/vizualization/layout/svg/sa-DD3.svg: New.
34635	* doc/vizualization/layout/svg/sa-DD4.svg: New.
34636	* doc/vizualization/layout/svg/sa-DD5.svg: New.
34637	* doc/vizualization/layout/svg/sa-base.svg: New.
34638
346392013-05-20  Benjamin Kosnik <bkoz@redhat.com>
34640
34641	Generate abg-version.h at configure time.
34642	* configure.ac: Add src/abg-version.h to AC_CONFIG_FILES.
34643	* src/Makefile.am: Remove abg-version.h generation rules.
34644	* src/abg-version.h.in: New.
34645
346462013-04-02  Benjamin Kosnik <bkoz@redhat.com>
34647
34648	Add doc dir. Add Doxgen api generation rules.
34649	* doc: Add.
34650	* doc/Makefile.am (html, install-html): Add.
34651	* doc/Makefile.in: Add.
34652	* doc/api/libabigail.doxy: Add doxygen config.
34653	* src/abg-*: Add @file markup.
34654
346552013-03-27  Benjamin Kosnik <bkoz@redhat.com>
34656
34657	Add configure to source control
34658	* configure: Add.
34659	* src/abg-corpus.cc: include stdexcept
34660
346612013-06-25  Dodji Seketeli <dodji@redhat.com>
34662
34663	Support offsets and virtual attribute in base class specifiers
34664	* src/abg-ir.h (class_decl::base_spec::base_spec): Take an offset
34665	and a is_virtual flag.
34666	(class_decl::base_spec::{get_is_virtual, get_offset_in_bits}): New
34667	methods.
34668	(class_decl::has_no_base_nor_member): New method declaration..
34669	* src/abg-ir.cc (class_decl::base_spec::base_spec): Take an offset
34670	and a is_virtual flag
34671	(class_decl::has_no_base_nor_member): Define it.
34672	* src/abg-reader.cc (read_offset_in_bits): Renamed
34673	read_var_offset_in_bits into this.
34674	(read_is_virtual): New static function.
34675	(build_class_decl): Read the 'layout-offset-in-bits' and the
34676	'is-virtual' of the base class specifier.  Adjust for the
34677	read_var_offset_in_bits -> read_offset_in_bits rename.
34678	* src/abg-writer.cc (write_layout_offset): New overload for the
34679	base class specifiers.
34680	(write_class_decl): If the class has no member or base class, make
34681	it a proper empty xml element.  Write the offset and the
34682	is-virtual attribute.
34683	* tests/data/test-read-write/test20.xml: New test input data.
34684	* tests/test-read-write.cc: De-serialize the test above, serialize
34685	it back and compare that both versions are the same.
34686
346872013-06-22  Dodji Seketeli <dodji@redhat.com>
34688
34689	Iron out support for simple base classes.
34690	* src/abg-ir.h (class_decl::base_spec::base_spec): Move this
34691	out-of-line.  Add a new constructor for clients compiled without
34692	RTTI.
34693	* src/abg-ir.cc (class_decl::base_spec::base_spec):  This is now
34694	here out-of-line.  Define the new constructor for clients compiled
34695	without RTTI.
34696	* tests/data/test-read-write/test19.xml: New test case input for
34697	base classes.
34698	* tests/test-read-write.cc: De-serialize and serialize the new
34699	test case input above.
34700
347012013-06-21  Dodji Seketeli <dodji@redhat.com>
34702
34703	Fix handling of forward decl of classes
34704	* abg-ir.h (class_decl::set_earlier_declaration): Move this
34705	out-of-line and add an overload.
34706	* src/abg-ir.cc (class_decl::set_earlier_declaration): Moved this
34707	out-of-line here and add an overload.
34708	* src/abg-reader.cc (build_class_decl): Really read the
34709	'decl-of-decl-id' property.  Do not make the definition use the id
34710	of the declaration.  Both have their id.
34711	* src/abg-writer.cc (write_class_decl):  Put a space before the
34712	property "def-of-decl-id".
34713	* tests/data/test-read-write/test18.xml: New test input.
34714	* tests/test-read-write.cc: De-serialize this new input, serialize
34715	it back and make sure both versions are identical.
34716
347172013-06-21  Dodji Seketeli <dodji@redhat.com>
34718
34719	Serialize the layout offset of class data members.
34720	* src/abg-writer.cc (write_layout_offset): New function.
34721	(write_class_decl): Serialize the layout offset.
34722
347232013-06-21  Dodji Seketeli <dodji@redhat.com>
34724
34725	Support Bitwise OR for qualified_type_def::CV better
34726	* src/abg-ir.h (qualified_type_def::CV_RESTRICT): New enumerator
34727	for the qualified_type_def::CV enum.
34728	(operator|(qualified_type_def::CV, qualified_type_def::CV)): New
34729	declaration.
34730	* src/abg-ir.cc (operator|(qualified_type_def::CV,
34731	qualified_type_def::CV)): New definition.
34732	* src/abg-reader.cc (build_qualified_type_decl): No need for
34733	casting the result of bitwise or between instances of
34734	qualified_type_def::CV.
34735
347362013-06-14  Dodji Seketeli <dodji@seketeli.org>
34737
34738	Support method type/decl, variadic functions, class declarations-only
34739	* src/abg-ir.h (function_decl::parameter::parameter): New
34740	constructor with variadic parameter marker.
34741	(function_decl::m_type): Make this protected to let method_decl
34742	inheriting class to access it.
34743	(function_decl::get_type): Move this out-of-line.
34744	(class method_type, method_type_hash): New types.
34745	(enum class_decl::access_specifier): Add no_access new enumerator.
34746	(class_decl::data_member::data_member): Move this out-of-line.
34747	(class_decl::data_member::~data_member): Declare virtual
34748	destructor.
34749	(class method_decl): New class.
34750	(class member_function): Make this inherit method_decl, instead of
34751	function_decl.
34752	(class_decl::class_decl): New constructors.
34753	(class_decl::{hashing_started, is_declaration_only,
34754	set_earlier_declaration, get_earlier_declaration}): New methods.
34755	* src/abg-ir.cc (add_decl_to_scope): If a decl is already in a
34756	scope, don't add it to this scope.
34757	(get_global_scope): Make this work when passed an instance of
34758	global_scope.
34759	(dynamic_type_hash::operator()): Add support for method_type.
34760	(method_type::{method_type, set_class_type, ~method_type, })
34761	(method_type_hash::operator()): New defintions.
34762	(function_decl::get_type, class_decl::class_decl): Move these
34763	out-of-line here.
34764	(class_decl::method_decl::{method_decl, ~method_decl, get_type}):
34765	New definitions.
34766	(class_decl::member_function::member_function): Move this
34767	out-of-line here.  Support method_decl.
34768	(class_decl::data_member::data_member): Likewise.
34769	(class_decl_hash::operator()): Guard this against endless loop.
34770	* src/abg-reader.cc (write_class_is_declaration_only): New static
34771	function.
34772	(write_var_decl): Take a flag to write the mangled name or not.
34773	(write_function_decl): Take a flag to skip the first parameter.
34774	(write_cdtor_const_static): Use 'yes' instead of 'true' as value
34775	of the properties.
34776	(write_decl, write_function_template_decl): Adjust wrt the new
34777	signatures of write_var_decl and write_function_decl.
34778	(write_enum_type_decl): Simplify call to write_location.
34779	(write_class_decl): Support serializing declaration-only classes.
34780	* src/abg-writer.cc:
34781	* tests/data/test-read-write/test17.xml: New test input.
34782	* tests/test-read-write.cc: De-serialize the above, and serialize it back.
34783	* tests/data/test-read-write/test10.xml: Update this test.
34784
347852013-06-01  Dodji Seketeli <dodji@redhat.com>
34786
34787	Support function_type and adapt a function_decl to use it
34788	* src/abg-ir.h (class function_type): Forward decl prior to class
34789	function_decl.
34790	(function_decl::parameter): Pass string by const reference.  Add a
34791	variadic marker member and initialize it.
34792	(function_decl::parameter::get_type): Add a non-const overload.
34793	(function_decl::parameter::get_variadic_marker): New getter.
34794	(function_decl::function_decl) Take a const reference to a vector
34795	for parameters, type size/alignment.  Add two overloads that takes a
34796	pointer to function_type.
34797	(function_decl::get_parameters): Move this out-of-line.
34798	(function_decl::append_parameter(s)): Renamed
34799	function_decl::add_parameter(s) into these.  Move it out-of-line.
34800	Add an overload.
34801	(function_decl::{get_type, set_type}): New declaration.
34802	(function_decl::get_return_type): Move this out-of-line.
34803	(function_decl::is_variadic): New in-line function.
34804	(function_decl::m_type): New data member.
34805	(function_decl::{m_parms, m_return_type}): Remove.  This are now
34806	carried by function_decl::m_type.
34807	(class function_type, struct function_type_hash): New
34808	declarations.
34809	(member_function::member_function): Take a vector of pointers to
34810	parameters.  Take size/align of the type of the member function.
34811	Adjust initialization.
34812	* src/abg-ir.cc (dynamic_type_hash): Hash instance of
34813	function_type accessed through a pointer.
34814	(function_type::{operator==, ~function_type})
34815	(function_type_hash::operaror(), function_decl::{get_return_type,
34816	}, function_decl::parameter::hash::operator()): New definitions.
34817	(function_decl::function_decl): The out-of-line definitions of the
34818	declarations above.
34819	(function_decl::append_parameter): Moved this out-of-line from
34820	inline function_decl::add_parameter.  Make this rely on the
34821	underlying m_type.
34822	(function_decl::operator==): Adjust for use of vector for the
34823	parameters.  Also, there is no need anymore to compare the
34824	parameters or the return types as they are compared by the
34825	comparison of the function types.
34826	* src/abg-reader.cc (build_function_decl): Read the new size/alignment
34827	attributes on the function-decl element.  Build a function_type
34828	and use it to build the function_decl.  Parameters and return type
34829	are now hung off of the function_type.
34830	(handle_function_decl): use build_function_decl.
34831	* src/abg-writer.cc (write_function_decl): Write the new
34832	size/alignment properties of the function-decl element.  Adjust
34833	for the use of vectors for function parameters now.
34834	* tests/data/test-read-write/test10.xml: Adjust for the presence
34835	of size/alignment properties in the function-decl element now.
34836	* tests/data/test-read-write/test11.xml: Likewise.
34837	* tests/data/test-read-write/test12.xml: Likewise.
34838	* tests/data/test-read-write/test13.xml: Likewise.
34839	* tests/data/test-read-write/test14.xml: Likewise.
34840	* tests/data/test-read-write/test9.xml: Likewise.
34841
348422013-06-01  Dodji Seketeli <dodji@redhat.com>
34843
34844	Support null type hashing
34845	* src/abg-ir.cc (dynamic_type_hash::operator()(const type_base* t)
34846	const): Support hashing null type.
34847
348482013-05-23  Dodji Seketeli <dodji@redhat.com>
34849
34850	Add a couple of output file suffix configuration properties
34851	* src/abg-config.h (config::{get_tu_instr_suffix,
34852	set_tu_instr_suffix, get_tu_instr_archive_suffix,
34853	set_tu_instr_archive_suffix}): New decls.
34854	* src/abg-config.cc (config::{get_tu_instr_suffix,
34855	set_tu_instr_suffix, get_tu_instr_archive_suffix,
34856	set_tu_instr_archive_suffix}): New defs.
34857
348582013-05-23  Dodji Seketeli <dodji@redhat.com>
34859
34860	Add a new add_decl_to_scope overload
34861	* src/abg-ir.h (add_decl_to_scope): New declaration.
34862	* src/abg-ir.cc (add_decl_to_scope): New definition.
34863
348642013-05-23  Dodji Seketeli <dodji@redhat.com>
34865
34866	Ensure add_decl_to_scope properly updates the scope
34867	* src/abg-ir.h (scope_decl::m_member_scopes)
34868	(scope_decl::get_member_scopes): New declarations.
34869	(scope_decl::add_member_decl): Move this to ...
34870	* src/abg-ir.cc (scope_decl::add_member_decl): ... here.  Make it
34871	update the new scope_decl::m_member_scopes too.
34872
348732013-05-23  Dodji Seketeli <dodji@redhat.com>
34874
34875	Add translation_unit::get_path
34876	* src/abg-ir.cc (translation_unit::get_path): New declaration.
34877	* src/abg-ir.cc (translation_unit::get_path): New definition.
34878
348792013-05-23  Dodji Seketeli <dodji@redhat.com>
34880
34881	Link the global scope to its translation unit
34882	* src/abg-ir.h (global_scope::global_scope): Take a translation
34883	unit and initialize the tu member with it.
34884	* src/abg-ir.cc (translation_unit::get_global_scope): Initialize
34885	the global scope with its actual translation unit.
34886
348872013-05-23  Dodji Seketeli <dodji@redhat.com>
34888
34889	Have location numbers that are stable throughout translation unit editing
34890	* src/abg-irc.cc (location_manager::create_new_location): Just
34891	append the new expanded location to the end of the location
34892	vectors, and return the new size of the vector as the location
34893	number.  That way we don't change the location number of an
34894	expanded location that is already in the vector -- that change
34895	happens if we keep the vector sorted during the insertion.
34896	(location_manager::expand_location):  The index of the expanded
34897	location is the location number - 1.
34898
348992013-05-23  Dodji Seketeli <dodji@redhat.com>
34900
34901	Fix in-source detection of the library for GCC
34902	* abigail.m4 (ABIGAIL_INIT): Don't forget to set abigaillibs when
34903	we detect the library in the source tree, particularly for GCC.
34904
349052013-05-21  Dodji Seketeli <dodji@redhat.com>
34906
34907	Re-generate aclocal.m4
34908	* aclocal.m4: Re-generate with autoconf 2.64.
34909
349102013-05-21  Benjamin Kosnik <bkoz@redhat.com>
34911
34912	Generate abg-version at configure time in builddir
34913	* configure.ac: Add src/abg-version.h to AC_CONFIG_FILES.
34914	* src/Makefile.am: Remote ad-hoc generation of abg-version.h from
34915	here.
34916	* src/abg-version.h.in: New file.
34917	* configure: Re-generate.
34918	* src/Makefile.in: Likewise.
34919
349202013-05-21  Dodji Seketeli <dodji@redhat.com>
34921
34922	add abigail.m4 to the distribution
34923	* Makefile.am: Add abigail.m4 to the distribution.
34924	* Makefile.in: Re-generate.
34925
349262013-05-10  Dodji Seketeli <dodji@redhat.com>
34927
34928	Pedantic fixes
34929	* src/abg-ir.h (enum decl_base::binding): Remove trailing space.
34930	(enum class_decl::access_specifier): Likewise.
34931
349322013-05-07  Dodji Seketeli <dodji@redhat.com>
34933
34934	Fix for building libabigail inside the GCC tree
34935	* abigail.m4: Detect when we are in the GCC tree; disable version
34936	check in that case.
34937
349382013-05-07  Dodji Seketeli <dodji@redhat.com>
34939
34940	Re-generate configury with autoconf 2.64
34941	* abigail.m4: Add licence header.
34942	* configure.ac: Re-generate configure script with autoconf 2.64
34943	like for GCC.
34944
349452013-05-07  Dodji Seketeli <dodji@redhat.com>
34946
34947	Allow autoconf-based clients to detect the library
34948	* configure.ac: Define the components of the version number as
34949	autoconf variables.  Set the version number to 0.1.0
34950	* abigail.m4: New file
34951	* Makefile.am: Add abigail.m4 to the build system.  Install it in
34952	$(datadir)/aclocal.
34953	* src/Makefile.am: Generate and add abg-version.h from the version
34954	number autoconf variable defined in configure.ac.  Re-generate
34955	abg-version.h each time configure.ac changes.
34956	* src/abg-config.h (abigail_get_library_version): Declare ...
34957	* src/abg-config.cc (abigail_get_library_version): ... and define
34958	this wirth C linkage.  This is useful for autoconf tests to test
34959	for the presence of the library.
34960	* configure: Re-generate.
34961	* Makefile.in: Likewise.
34962	* src/Makefile.in: Likewise.
34963	* tests/Makefile.in: Likewise.
34964
349652013-05-03  Dodji Seketeli <dodji@redhat.com>
34966
34967	Build system fix for make distcheck
34968	* Makefile.am: Support the doc sub-directory.  We don't have a
34969	COPYRIGHT file.
34970	* src/Makefile.am: Don't prefix the file paths by the absolute
34971	path of the src dir; current autotools know how to deal with it,
34972	otherwise and it break them.
34973	* tests/Makefile.am: Likewise.  Make sure to remove the output of
34974	the tests upon make clean.
34975	* Makefile.in: Re-generate.
34976	* aclocal.m4: Likewise.
34977	* configure: Likewise.
34978	* src/Makefile.in: Likewise.
34979	* tests/Makefile.in: Likewise.
34980
349812013-05-02  Dodji Seketeli <dodji@redhat.com>
34982
34983	Initial support for member class templates
34984	* src/abg-ir.cc (class_decl::add_member_function_template): Fix
34985	comment.
34986	(class_decl::add_member_class_template)
34987	(class_decl::member_class_template::operator==)
34988	(class_decl::member_class_template_hash::operator()): New
34989	definitions.
34990	(class_decl::operator==): Compare member templates.  Fix logic.
34991	(class_decl::data_member_hash::operator())
34992	(class_decl::member_function_hash::operator())
34993	(class_decl::member_function_template_hash::operator()): Don't
34994	hash the is_static boolean as it's hashed as part of the 'member'
34995	sub-object hashing.
34996	(class_decl::member_function_template::operator==): Move this out
34997	of line here, from the header file.
34998	(class_decl_hash::operator()): Hash member class templates.
34999	* src/abg-ir.h (class_decl::member::{m_is_static,is_static}): Add the is_static
35000	boolean here, so that it's factorized out of the inherited classes
35001	of this class.
35002	(class_decl::data_member::{is_static, m_is_static})
35003	(class_decl::member_function::{is_static, m_is_static})
35004	(class_decl::member_function_template::{is_static, m_is_static}): Remove this
35005	as it's now part of the base 'member' class.
35006	(class_decl::data_member::operator==)
35007	(class_decl::member_function::operator==): Don't compare the
35008	is_static boolean as it's now compared as part of the 'member'
35009	sub-object comparison.
35010	(class_decl::member_function_template::operator==): Move this
35011	out-of-line into src/abg-ir.cc.
35012	(class class_decl::member_class_template, struct
35013	class_decl::member_class_template_hash)
35014	(class_decl::{add_member_class_template,
35015	get_member_class_templates}): New declarations.
35016	(class_decl::member_class_templates_type): New typedef.
35017	* src/abg-reader.cc (build_class_decl): Support de-serializing
35018	member class templates.
35019	* src/abg-writer.cc (write_class_decl): Likewise, support
35020	serializing member class templates.
35021	* tests/data/test-read-write/test16.xml: New test input.
35022	* tests/test-read-write.cc (int_out_specs[]): Add the new test
35023	input to the list of inputs that are de-serialized and serialized
35024	back.
35025	* tests/Makefile.am: Add the new test input to the distribution.
35026
350272013-05-02  Dodji Seketeli <dodji@redhat.com>
35028
35029	Initial support of class templates
35030	* src/abg-ir.cc (class_template_decl::class_template_decl)
35031	(class_template_decl::set_pattern)
35032	(class_template_decl::operator==)
35033	(class_template_decl::~class_template_decl)
35034	(class_template_decl_hash::operator())
35035	(class_tmpl_shared_ptr_hash::operator()): New definitions.
35036	* src/abg-ir.h (class class_template_decl, struct
35037	class_tmpl_shared_ptr_hash, struct class_tmpl_shared_ptr_hash):
35038	New declarations.
35039	* src/abg-reader.cc (read_context::const_class_tmpl_map_it): New
35040	typedef.
35041	(read_context::get_fn_tmpl_decl): Fix comment.
35042	(read_context::{get_class_tmpl_decl,key_class_tmpl_decl})
35043	(build_class_template_decl, handle_class_template_decl): New
35044	definitions.
35045	(read_context::m_class_tmpl_map): New member.
35046	(handle_element): Support "class-template-decl" xml elements
35047	nodes.
35048	(build_class_decl): Add missing bits to comment.
35049	(build_function_template_decl): Fix spacing.
35050	* src/abg-writer.cc (class_tmpl_shared_ptr_map): New typedef.
35051	(write_context::m_class_tmpl_map): New member.
35052	(write_context::get_id_for_class_tmpl, write_class_template_decl):
35053	New definitions.
35054	(write_template_parameters): Factorize this this out from ...
35055	(write_function_template_decl): ... here.
35056	(write_decl): Support writing instances of class_template_decl.
35057	Fix spacing.
35058	* tests/data/test-read-write/test15.xml: New test input.
35059	* tests/Makefile.am: Add the new test15.xml input to the
35060	distribution.
35061	* tests/test-read-write.cc (in_out_specs): Add the new test15.xml
35062	test to the list of serialized output to be de-serialized and
35063	serialized back.
35064
350652013-05-02  Dodji Seketeli <dodji@redhat.com>
35066
35067	Fix function_tempalte_decl init & hashing
35068	* src/abg-ir.cc (function_template_decl::operator==): Compare the
35069	patterns, not a pointer to them.
35070	(function_template_decl_hash::operator()): Don't try to hash null
35071	patterns.
35072	* src/abg-ir.h (function_template_decl::function_template_decl):
35073	Use function_template_decl::set_pattern to set the pattern here.
35074
350752013-04-30  Dodji Seketeli <dodji@redhat.com>
35076
35077	Support member function templates
35078	* src:abg-ir.h: Move template declarations before class
35079	class_decl, so that class_decl can have member templates.
35080	(class class_decl::member_function_template)
35081	(class_decl::add_member_function_template)
35082	(class_decl::{base_specs_type, member_types_type,
35083	data_members_types, member_functions_type,
35084	member_function_templates_type}): New declarations.
35085	* src/abg-ir.cc (class_decl::add_member_function_template)
35086	(class_decl::member_function_template_hash::operator()): New
35087	definitions.
35088	(class_decl_hash::operator()):  Support hashing for member
35089	function templates.
35090	* src/abg-reader.cc (build_class_decl): Use the new
35091	class_decl::{member_types_type, data_members_type,
35092	member_functions_type, base_specs_type} types.  Support member
35093	function templates.
35094	* src/abg-writer.cc (write_cdtor_const_static): New definition.
35095	(write_class_decl): Support member function templates.
35096	* tests/data/test-read-write/test14.xml: New input data.
35097	* tests/Makefile.am: Add it to the distribution.
35098	* tests/test-read-write.cc (InOutSpec int_out_specs): De-serialize
35099	the new test input file, serialize it back and diff both results.
35100
351012013-04-25  Dodji Seketeli <dodji@redhat.com>
35102
35103	Inheritance fix
35104	* src/abg-ir.h (class template_non_type_parameter): Make this
35105	inherit decl_base virtually.
35106
351072013-04-25  Dodji Seketeli <dodji@redhat.com>
35108
35109	Small comment fix
35110	* src/abg-ir.h (class template_decl): Fix comment.
35111
351122013-04-25  Dodji Seketeli <dodji@redhat.com>
35113
35114	Add some decl predicates
35115	* src/abg-ir.h (is_at_global_scope): Rename
35116	is_decl_at_global_scope into this.
35117	(is_at_class_scope, is_at_template_scope)
35118	(is_template_parameter, is_type)
35119	(is_template_parm_composition_type)
35120	(is_function_template_pattern, is_template_decl): New
35121	declarations.
35122	* src/abg-ir.cc (is_at_global_scope): Rename
35123	is_decl_at_global_scope into this.
35124	(is_at_class_scope, is_at_template_scope, is_template_parameter)
35125	(is_type, is_template_parm_composition_type)
35126	(is_function_template_pattern, is_template_decl): New definitions.
35127	* src/abg-reader.cc (update_depth_info_of_read_context): Use the
35128	new is_at_class_scope decl.
35129
351302013-04-25  Dodji Seketeli <dodji@redhat.com>
35131
35132	Support composing template type parameters
35133	* src/abg-ir.h (class tmpl_parm_type_composition): New
35134	declaration.
35135	* src/abg-ir.cc
35136	(tmpl_parm_type_composition::tmpl_parm_type_composition)
35137	(tmpl_parm_type_composition::~tmpl_parm_type_composition): New
35138	definitions.
35139	* src/abg-reader.cc (build_tmpl_parm_type_composition): New
35140	function.
35141	(build_template_parameter): Support template parameter type
35142	composition.
35143	* src/abg-writer.cc (write_tmpl_parm_type_composition): New
35144	function.
35145	(write_template_non_type_parameter): Fix type-id attribute.
35146	(write_template_parameter): Support template parameter type
35147	composition.
35148	* tests/data/test-read-write/test13.xml: New test input.
35149	* tests/Makefile.am: Add it to the distribution.
35150	* tests/test-read-write.cc (InOutSpec in_out_spec): Add test13.xml
35151	to the list of xml file that are de-serialized and serialized back.
35152
351532013-04-24  Dodji Seketeli <dodji@redhat.com>
35154
35155	Fix depth management during the parsing
35156	* src/abg-ir.cc (decl_base_hash::operator()):  Don't hash the
35157	context for decls in general.
35158	* src/abg-reader.cc (read_context::push_decl_to_current_scope)
35159	(read_context::push_and_key_type_decl): Add an overload that takes
35160	a node and update_depth_info boolean.
35161	(build_var_decl, build_type_decl, build_qualified_type_decl)
35162	(build_pointer_type_def, build_reference_type_def)
35163	(build_enum_type_decl, build_type_decl)
35164	(build_template_type_parameter, build_template_non_type_parameter)
35165	(build_template_template_parameter, build_template_parameter)
35166	(build_type): Make these functions take an update_depth_info
35167	parameter.  Pass it do read_context::push_and_key_type_decl or
35168	read_context::push_decl_to_current_scope rather than call
35169	update_read_context.
35170	(build_function_decl, build_class_decl)
35171	(build_function_template_decl): Change the seen_by_reader
35172	parameter into update_depth_info.  Pass the update_depth_info bool
35173	to read_context::push_decl_to_current_scope rather than call
35174	update_depth_info here.
35175	(handle_class, handle_function_template_decl): Adjust.
35176	* tests/data/test-read-write/test12.xml: Add new test input.
35177	* tests/test-read-write.cc (InOutSpec in_out_specs): Add it to the
35178	list of input to de-serialize, serialize back and compare the two.
35179	* tests/Makefile.am: Add the new test input to the distribution.
35180
351812013-04-23  Dodji Seketeli <dodji@redhat.com>
35182
35183	Initial support for function templates
35184	* src/abg-ir.h (function_decl::set_return_type): New inline
35185	definition.
35186	(class template_decl, struct template_decl_hash, class
35187	template_parameter, struct template_parameter_hash, struct
35188	dynamic_template_parameter_hash, struct
35189	template_parameter_shared_ptr_hash, class template_type_parameter)
35190	(struct template_type_parameter_hash, class
35191	template_non_type_parameter, struct
35192	template_non_type_parameter_hash, class
35193	template_template_parameter, struct
35194	template_template_parameter_hash, class function_template_decl)
35195	(struct function_template_decl_hash, struct
35196	fn_tmpl_shared_ptr_hash): New declarations.
35197	* src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing for
35198	template template, and template type parameters.
35199	(template_decl_hash::operator, template_decl::~template_decl)
35200	(template_decl::operator==, template_parameter::operator==)
35201	(template_parameter_hash::operator())
35202	(dynamic_template_parameter_hash::operator())
35203	(template_type_parameter::operator==)
35204	(template_type_parameter::~template_type_parameter)
35205	(template_type_parameter_hash::operator())
35206	(template_non_type_parameter::operator==)
35207	(template_non_type_parameter::~template_non_type_parameter)
35208	(template_non_type_parameter_hash::operator())
35209	(template_template_parameter::operator==)
35210	(template_template_parameter::~template_template_parameter)
35211	(template_template_parameter_hash::operator())
35212	(function_template_decl::operator==)
35213	(function_template_decl_hash::operator())
35214	(fn_tmpl_shared_ptr_hash::operator())
35215	(function_template_decl::~function_template_decl()): New
35216	definitions.
35217	* src/abg-reader.cc (read_context::get_fn_tmpl_decl)
35218	(read_context::key_fn_tmpl_decl): New functions.
35219	(read_context::m_fn_tmpl_map): New data member.
35220	(read_context::key_type_decl): Renamed read_context::add_type_decl
35221	into this.
35222	(read_context::push_decl_to_current_scope): Renamed
35223	read_context::finish_decl_creation into this.  Add an assert.
35224	(read_context::push_and_key_type_decl): Renamed
35225	read_context::finish_type_decl_creation into this.  Adjust to the
35226	use of push_decl_to_current_scope and key_type_decl.
35227	(build_function_template_decl, build_template_type_parameter)
35228	(build_template_non_type_parameter)
35229	(build_template_template_parameter, build_template_parameter)
35230	(handle_function_template_decl): New functions.
35231	(handle_element): Call handle_function_template_decl.
35232	(build_function_decl): Take a bool parameter to update depth
35233	information in parsing context.  Move instantiation of
35234	function_decl before parsing its xml sub-nodes.  Update the depth
35235	info in the parsing context if necessary.  Push the newly
35236	intantiated decl to scope.  And then parse the sub nodes.  Do not
35237	forget to add the fn parameters and return type using
35238	function_decl::add_parameter and function_decl::set_return_type.
35239	(build_var_decl, build_type_decl, build_qualified_type_decl)
35240	(build_pointer_type_def, build_reference_type_def)
35241	(build_enum_type_decl, build_typedef_decl, handled_type_decl)
35242	(handle_qualified_type_decl, handle_pointer_type_def)
35243	(handle_reference_type_def, handle_enum_type_decl)
35244	(handle_typedef_decl, handle_var_decl, handle_function_decl)
35245	(handle_class_decl): Adjust.
35246	(build_class_decl): Take a bool parameter to update depth
35247	information in parsing context. Add comment.  Wait for the class
35248	members to be built, before keying (and thus hashing it) the
35249	class.
35250	(build_type): Fix logic, and adjust.
35251	* src/abg-writer.cc (write_context::type_has_existing_id)
35252	(write_context::get_id_for_fn_tmpl, write_template_type_parameter)
35253	(write_template_non_type_parameter)
35254	(write_template_template_parameter, write_template_parameter)
35255	(write_function_template_decl): New functions.
35256	(write_context::get_id_for_type): Simplify logic.
35257	(write_decl): Support writing function template.
35258	* tests/data/test-read-write/test11.xml: New test input.
35259	* tests/test-read-write.cc (InoutSpec in_out_specs[]):
35260	De-serialize the new test11.xml test, serialize it back and diff
35261	output and input.
35262	* tests/Makefile.am: Add test11.xml to the distribution.
35263
352642013-04-23  Dodji Seketeli <dodji@redhat.com>
35265
35266	Mangled name of a scope_decl is its name
35267	* src/abg-ir.h (scope_decl::scope_decl): The mangled name is the name.
35268
352692013-04-23  Dodji Seketeli <dodji@redhat.com>
35270
35271	Update scope when adding class members
35272	* src/abg-ir.h (class_decl::add_member_type)
35273	(class_decl::add_data_member, class_decl::add_member_function):
35274	Move the inline implementation of these functions ...
35275	* src:abg-ir.cc (class_decl::add_member_type)
35276	(class_decl::add_data_member, class_decl::add_member_function):
35277	... here.  Augment their implementation to properly update the
35278	scope of the member.
35279
352802013-04-23  Dodji Seketeli <dodji@redhat.com>
35281
35282	Rename class_decl::member_type::get_type into as_type
35283	* src/abg-ir.h (class_decl::member_type::get_type): Rename this
35284	into class_decl::member_type::as_type.
35285	* src/abg-writer.cc (write_class_decl): Adjust.
35286
352872013-04-23  Dodji Seketeli <dodji@redhat.com>
35288
35289	Avoid having multiple sub-objects of base classes
35290	* src/abg-ir.cc (decl_base::decl_base): Remove useless definition.
35291	(type_base::type_base): Remove default arguments from parameters.
35292	(scope_type_decl::scope_type_decl)
35293	(namespace_decl::namespace_decl): Call the constructors for the
35294	virtual bases explicitly.
35295	* src/abg-ir.h (class scope_decl): Perform virtual inheritance of
35296	decl_base.
35297	(global_scope::global_scope): Call virtual base decl_base's
35298	constructor directly.
35299	(class type_decl): Inherit from decl_base and type_base
35300	virtually.
35301	(class scope_type_decl): Inherit from type_base virtually.
35302	(class qualified_type_def, pointer_type_def, reference_type_def)
35303	(class enum_type_decl, typedef_decl): Inherit from type_base and
35304	decl_base virtually.
35305	(class var_decl, function_decl): Inherit from decl_base virtually.
35306	(class class_decl::member): Don't inherit from anything and adjust
35307	constructor's mem-initializer accordingly.
35308	(class class_decl::member_type): Inherit from decl_base virtually
35309	and adjust constructor's mem-initializer accordingly.
35310	(class_decl::{data_member::data_member,member_function::member_function)
35311	(class_decl::class_decl): Call virtual base's constructor
35312	explicitly.
35313
353142013-04-22  Dodji Seketeli <dodji@redhat.com>
35315
35316	Move inline hashing functions out of line
35317	* src/abg-ir.h (decl_base_hash::operator())
35318	(type_base_hash::operator(), type_decl_hash::operator())
35319	(scope_type_decl_hash::operator())
35320	(qualified_type_def_hash::operator())
35321	(pointer_type_def_hash::operator())
35322	(reference_type_def_hash::operator())
35323	(enum_type_decl_hash::operator(), typedef_decl_hash::operator())
35324	(var_decl_hash::operator(), function_decl_hash::operator())
35325	(class_decl::member_type_hash::operator())
35326	(class_decl::base_spec_hash::operator())
35327	(class_decl::data_member_hash::operator())
35328	(class_decl::member_function_hash::operator()): Move these inline
35329	definition ...
35330	* src/abg-ir.cc: ... here.
35331
353322013-04-22  Dodji Seketeli <dodji@redhat.com>
35333
35334	Various style nit fixes
35335	* src/abg-ir.cc: Move the emacs mode specifier for the file to the
35336	top of the file, otherwise, it's not effective.
35337	(struct location_manager::priv): Add end of struct comment.
35338	(class_decl_hash::operator()): Add fn comment.
35339	* src/abg-ir.h: Move the emacs mode specifier for the file to the
35340	top of the file, otherwise, it's not effective.
35341	(class scope_decl): Add end of class comment.
35342	* src/abg-reader.cc: Move the emacs mode specifier for the file to the
35343	top of the file, otherwise, it's not effective.
35344	(read_context::{get_type_decl,add_type_decl): Add comment.
35345	(handle_namespace_decl): Fix indent.
35346	* src/abg-writer.cc: Move the emacs mode specifier for the file to
35347	the top of the file, otherwise, it's not effective.
35348
353492013-04-12  Dodji Seketeli <dodji@redhat.com>
35350
35351	Remove .gitignore from VCS
35352	* .gitignore: Remove from revision control as different
35353	programmers might want to ignore different things.
35354
353552013-04-08  Benjamin Kosnik <bkoz@redhat.com>
35356
35357	Add license
35358	* src/abg-*: Add license.
35359	* tests/test-*: Same.
35360
353612013-04-11  Dodji Seketeli <dodji@redhat.com>
35362
35363	Initial Support for class declarations
35364	* src/abg-ir.h (scope_decl::scope_decl)
35365	(scope_type_decl::scope_type_decl): Don't set mangled name for
35366	scope_decl instances as it doesn't make sense.
35367	(var_decl::var_decl): Pass the type shared pointer by value.
35368	(struct var_decl_hash, function_decl::parameter::operator==)
35369	(struct function_decl::parameter_hash, function_decl::operator==)
35370	(struct function_decl_hash, class class_decl, struct
35371	class_decl_hash): New declarations.
35372	* src/abg-ir.cc (scope_type_decl::scope_type_decl): Don't set the
35373	mangled name.  It doesn't make sense for scope_decls.
35374	(dynamic_type_hash::operator): Fix comment.  Run the hashing for
35375	scope_type_decl instances *after* running it for class_decl
35376	instance, otherwise, the class_decl instances case will never get
35377	hit.
35378	(var_decl::var_decl): Pass the type shared pointer by value.
35379	(function_decl::operator==, class_decl::operator==)
35380	(class_decl_hash::operator()): New fns.
35381	* src/abg-libxml-utils.h (get_xml_node_depth): Declare new fn.
35382	(XML_READER_GET_ATTRIBUTE): Fix comment.
35383	(XML_NODE_GET_ATTRIBUTE): New getter macro.
35384	* src/abg-libxml-utils.cc (get_xml_node_depth): New definition.
35385	* src/abg-reader.cc (update_read_context)
35386	(update_depth_info_of_read_context, read_visibility, read_binding)
35387	(read_access, read_size_and_alignment, read_static)
35388	(read_var_offset_in_bits, read_cdtor_const, build_function_decl)
35389	( build_var_decl, build_type_decl, build_qualified_type_decl)
35390	(build_pointer_type_def, build_reference_type_def)
35391	(build_enum_type_decl, build_typedef_decl, build_class_decl)
35392	(build_type, handle_class_decl): New functions or overloads.
35393	(handle_element): Update to handle "class-decl" xml elements.
35394	* src/abg-writer.cc (write_size_and_alignment, write_access)
35395	(write_class, do_indent_to_level, get_indent_to_level): New fns.
35396	(write_decl): Update to serialize instances of class_decl.
35397	(write_type_decl, write_pointer_type_def)
35398	(write_reference_type_def): Use the new write_size_and_alignment instead of
35399	writing the attributes directly.
35400	* tests/data/test-read-write/test10.xml: New test file.
35401	* tests/Makefile.am: Add tests/data/test-read-write/test10.xml to
35402	the build system.
35403	* tests/test-read-write.cc (in_out_spec): De-serialize
35404	data/test-read-write/test10.xml, serialize it back into
35405	output/test-read-write/test10.xml, and compare the two output that
35406	should be identical.
35407
354082013-04-11  Dodji Seketeli <dodji@redhat.com>
35409
35410	Update enum decl representation as per the schema
35411	* src/abg-reader.cc (handle_enum_type_decl): The name of the
35412	element holding the underlying type is now "underlying-type", no
35413	more "base".
35414	* src/abg-writer.cc (write_enum_type_decl): Likewise.
35415	* tests/data/test-read-write/test6.xml: Likewise.
35416
354172013-04-10  Dodji Seketeli <dodji@redhat.com>
35418
35419	Add tests/data/test-read-write/test9.xml
35420	* tests/data/test-read-write/test9.xml: (Forgot to) Add this new
35421	test file.
35422
354232013-04-04  Dodji Seketeli <dodji@redhat.com>
35424
35425	Support function declarations
35426	* src/abg-ir.h (class function_decl): New declaration & inline
35427	definitions.
35428	* src/abg-ir.cc (function_decl::~function_decl): New definition.
35429	* src/abg-reader.cc (read_location): New overload to read location
35430	from an xmlNodePtr.
35431	(build_function_parameter, handle_function_decl):
35432	New definitions.
35433	(handle_element): Support "function-decl" elements.
35434	* src/abg-writer.cc (write_location): New overload to write a
35435	location directly, not from a decl.
35436	(write_function_decl): New definition.
35437	(write_binding): Support writing the binding attribute from a
35438	function_decl instance.
35439	(write_decl): support serializing function
35440	* tests/data/test-read-write/test9.xml: New test input file.
35441	* tests/Makefile.am: Add data/test-read-write/test9.xml to the
35442	build system.
35443	* tests/test-read-write.cc: De-serialize
35444	data/test-read-write/test9.xml, serialize it back and diff the
35445	output from the input.
35446
354472013-04-03  Dodji Seketeli <dodji@redhat.com>
35448
35449	Update in-vcs configure and docs/Makefile.in to recent configure
35450	* configure: Updated as re-generated by autoconf 2.69.
35451	* doc/Makefile.in: Updated as re-generated by automake 1.12.2.
35452
354532013-04-02  Benjamin Kosnik <bkoz@redhat.com>
35454
35455	Add doc dir. Add Doxgen api generation rules.
35456	* doc: Add.
35457	* doc/Makefile.am (html, install-html): Add.
35458	* doc/Makefile.in: Add.
35459	* doc/api/libabigail.doxy: Add doxygen config.
35460	* src/abg-*: Add @file markup.
35461
354622013-04-03  Dodji Seketeli <dodji@redhat.com>
35463
35464	Introduce/use translation_unit & global_scope types
35465	* abg-corpus.h (abi_corpus::{get_decls, get_loc_mgr}): Remove.
35466	(abi_corpus::add): New function to add a translation unit.
35467	(abi_corpus::get_translation_units): New declaration.
35468	* abg-corpus.cc (abi_corpus::*): Remove all the definitions of
35469	abi_corpus for now, as the abi_corpus type is not used anymore --
35470	for now at least.
35471	* src/abg-ir.h (add_decl_to_scope, get_global_scope)
35472	(get_translation_unit, is_global_scope, is_decl_at_global_scope)
35473	(class translation_unit, class global_scope): New declarations
35474	* src/abg-ir.cc (translation_unit::translation_unit)
35475	(translation_unit::get_global_scope)
35476	(translation_unit::get_loc_mgr, translation_unit::get_loc_mgr)
35477	(translation_unit::is_empty, get_global_scope)
35478	(get_translation_unit, is_global_scope, is_global_scope)
35479	(is_decl_at_global_scope, global_scope::~global_scope): New
35480	definitions.
35481	(scope_decl::scope_decl, scope_decl::scope_decl)
35482	(scope_decl::add_member_decl, scope_decl::get_member_decls): Move
35483	to abg-ir.h, inline.
35484	* src/abg-reader.h (read_file): Don't use abi_corpus in the api.
35485	Rather, use translation_unit.
35486	* src/abg-reader.cc (read_context::get_cur_scope): Now that we
35487	have a specific instance of global_scope to represent global
35488	scope, don't play games with empty scopes to detect a global
35489	scope.
35490	(read_context::get_translation_unit): New definition.
35491	(read_context::finish_decl_creation, finish_type_decl_creation):
35492	(read_input, read_file, read_location, handle_element)
35493	(handle_type_decl)
35494	(handle_namespace_decl, handle_qualified_type_decl)
35495	(handle_pointer_type_def, handle_reference_type_def)
35496	(handle_enum_type_decl, handle_typedef_decl, handle_var_decl):
35497	Don't use abi_corpus anymore.  Rather, the translation unit a decl
35498	belongs to is accessible from the decl itself.
35499	* src/abg-writer.h (write_to_ostream): Use translation_unit in
35500	this API, rather than abi_corpus.
35501	* src/abg-writer.cc (write_translation_unit): Rename write_corpus
35502	into this.  And stop using abi_corpus here.
35503	(write_to_ostream, write_corpus, write_location, write_decl)
35504	(write_type_decl, write_namespace_decl, write_qualified_type_def)
35505	(write_pointer_type_def, write_reference_type_def)
35506	(write_enum_type_decl, write_typedef_decl, write_var_decl): Stop
35507	using abi_corpus.  Use the translation_unit that is accessible
35508	from the decl being serialized, if need be.
35509	* test-read-write.cc (main):  De-serialize the input into an
35510	instance of translation_unit, not an abi_corpus anymore, and
35511	serialize that translation_unit.
35512
355132013-04-02  Dodji Seketeli <dodji@redhat.com>
35514
35515	Support var decl & mangled_name attributes
35516	* src/abg-ir.h (decl_base::binding, decl_base::get_mangled_name)
35517	(decl_base::set_mangled_name, decl_base::m_mangled_name): New
35518	declarations.
35519	(scope_decl::scope_decl: type_decl::type_decl)
35520	(scope_type_decl::scope_type_decl, typedef_decl::typedef_decl):
35521	Initialize mangled_name.
35522	(namespace_decl::namespace_decl): Initialize visibility.
35523	(class var_decl): New declaration.
35524	* src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl)
35525	(type_decl::type_decl, scope_type_decl::scope_type_decl):
35526	Initialize mangled name.
35527	(namespace_decl::namespace_decl): Initialize visibility.
35528	(qualified_type_def::qualified_type_def)
35529	(pointer_type_def::pointer_type_def)
35530	(reference_type_def::reference_type_def): By default, set the
35531	visibility to the same as for the underlying type.
35532	(enum_type_decl::enum_type_decl, typedef_decl::typedef_decl):
35533	Initialize mangled name.
35534	(var_decl::var_decl, var_decl::operator==, var_decl::~var_decl):
35535	New definitions.
35536	* src/abg-reader.cc (read_visibility, read_binding, handle_var_decl): New
35537	definitions.
35538	(read_file): Handle var-decl elements.
35539	* src/abg-writer.cc (write_location): Rename write_decl_location
35540	into this.
35541	(write_var_decl, write_visibility, write_binding): New definitions.
35542	(write_decl, write_type_decl, write_qualified_type_def)
35543	(write_pointer_type_def, write_reference_type_def)
35544	(write_enum_type_decl, write_typedef_decl): Adjust to use
35545	write_location.
35546	* tests/data/test-read-write/test8.xml: New test input.
35547	* tests/test-read-write.cc: De-serialize the above and serialize
35548	it back and ensure both are equal.
35549	* tests/Makefile.am: add tests/data/test-read-write/test8.xml to
35550	the distribution.
35551
355522013-04-02  Dodji Seketeli <dodji@redhat.com>
35553
35554	Don't forget to init context & visibility in decl_base
35555	* src/abg-ir.cc (decl_base::decl_base): Initialize context and
35556	visibility on all the overloads of the constructor.
35557
355582013-03-31  Dodji Seketeli <dodji@redhat.com>
35559
35560	Fix some style
35561	* src/abg-ir.h (decl_base::get_scope): Really re-style.
35562
355632013-03-31  Dodji Seketeli <dodji@redhat.com>
35564
35565	Fix some style
35566	* src/abg-ir.h (decl_base::{get_location, set_location, get_name,
35567	set_name}): Re-style.
35568
355692013-03-31  Dodji Seketeli <dodji@redhat.com>
35570
35571	Basic support for type/decl visibility
35572	* src/abg-ir.h (enum decl_base::visibility)
35573	(decl_base::get_visibility, decl_base::set_visibility)
35574	(decl_base::m_visibility): New.
35575	(decl_base::decl_base, scope_decl::scope_decl)
35576	(type_decl::type_decl, enum_type_decl::enum_type_decl)
35577	(typedef_decl::typedef_decl): Pass visibility.
35578	* src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl)
35579	(type_decl::type_decl, enum_type_decl::enum_type_decl)
35580	(typedef_decl::typedef_decl): Pass visibility.
35581	(qualified_type_def::qualified_type_def)
35582	(pointer_type_def::pointer_type_def)
35583	(reference_type_def::reference_type_def): Initialize visibility.
35584
355852013-03-31  Dodji Seketeli <dodji@redhat.com>
35586
35587	A type/decl shouldn't hold a reference on its scope
35588	* src/abg-ir.h (decl_base::m_context): Make this a naked pointer.
35589	(decl_base::set_scope, add_decl_to_scope): Pass the
35590	scope as a naked pointer.
35591	* src/abg-ir.cc (decl_base::decl_base): Initialize the context to
35592	0.
35593	(decl_base::set_scope, add_decl_to_scope): Pass the scope as a
35594	naked pointer.
35595	* src/abg-reader.cc (read_context::get_cur_scope): Return a naked
35596	pointer.
35597	(handle_namespace_decl): Adjust accordingly.
35598
355992013-03-30  Dodji Seketeli <dodji@redhat.com>
35600
35601	Support typedef declarations
35602	* src/abg-ir.cc (dynamic_type_hash::operator()): Handle hashing of
35603	a pointer to an instance of typedef_decl.
35604	(typedef_decl::typedef_decl, typedef_decl::operator==)
35605	(typedef_decl::operator==, typedef_decl::get_underlying_type)
35606	(typedef_decl::~typedef_decl): New definitions.
35607	* src/abg-ir.h (class typedef_decl, struct typedef_decl_hash): New
35608	declarations.
35609	* src/abg-reader.cc (handle_typedef_decl): New definition.
35610	(handle_element): Handle de-serialization of typedef-decl element.
35611	* src/abg-writer.cc (write_typedef_decl): New definition.
35612	(write_decl): Handle serialization of an instance of typedef_decl.
35613	* tests/data/test-read-write/test7.xml: New test.
35614	* tests/Makefile.am: Add it to the distribution.
35615	* tests/test-read-write.cc: De-serialize the content of the new
35616	test, serialize it back and diff both.
35617
356182013-03-30  Dodji Seketeli <dodji@redhat.com>
35619
35620	Remove useless static_cast from hashing code
35621	* src/abg-ir.h (scope_type_decl_hash::operator())
35622	(qualified_type_def_hash::operator())
35623	(pointer_type_def_hash::operator())
35624	(reference_type_def_hash::operator()): Remove useless static_cast.
35625
356262013-03-30  Dodji Seketeli <dodji@redhat.com>
35627
35628	Simplify equality operators
35629	* src/abg-ir.cc (qualified_type_def::operator==)
35630	(pointer_type_def::operator==, reference_type_def::operator==)
35631	(enum_type_decl::operator==): Simplify the code by safely assuming
35632	the underlying type is non-null.
35633
356342013-03-30  Dodji Seketeli <dodji@redhat.com>
35635
35636	Support enum type declarations
35637	* src/abg-ir.h (class enum_type_decl, struct enum_type_decl_hash):
35638	New declarations.
35639	* src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing
35640	support for enum_type_decl.
35641	(enum_type_decl::enum_type_decl)
35642	(enum_type_decl::get_underlying_type)
35643	(enum_type_decl::get_enumerators, enum_type_decl::~enum_type_decl)
35644	(enum_type_decl::operator==): New definitions.
35645	* src/abg-reader.cc (handle_enum_type_decl): New definition.
35646	(handle_element): Handle "enum-decl" element.
35647	* src/abg-writer.cc (write_enum_type_decl): New.
35648	(write_decl): Add support to serialize enum_type_decl.
35649	* tests/test-read-write.cc: De-serialize and serialize
35650	data/test-read-write/test6.xml back.
35651	* tests/data/test-read-write/test6.xml: New test input.
35652	* tests/Makefile.am: Add it to the distribution.
35653
356542013-03-30  Dodji Seketeli <dodji@redhat.com>
35655
35656	Fix reference-type-def serialization
35657	* tests/test-read-write.cc: Really de-serialize and then serialize
35658	back data/test-read-write/test5.xml, not test4.xml.  Sigh.
35659	* src/abg-writer.cc (write_reference_type_def): As a result of
35660	really trying to serialize reference type definitions fix the
35661	serialization code here.
35662
356632013-03-29  Dodji Seketeli <dodji@redhat.com>
35664
35665	Support reference types
35666	* src/abg-ir.h (class reference_type_def, struct pointer_type_def)
35667	(struct reference_type_def): New declaration.
35668	(type_base_hash::operator(), type_decl_hash::operator())
35669	(scope_type_decl_hash::operator())
35670	(qualified_type_def_hash::operator()): Include the typeid name in
35671	the hash.
35672	* src/abg-ir.cc (reference_type_def::reference_type_def)
35673	(reference_type_def::operator==)
35674	(reference_type_def::get_pointed_to_type)
35675	(reference_type_def::is_lvalue)
35676	(reference_type_def::~reference_type_def): New definitions.
35677	(dynamic_type_hash::operator): Hash pointer_type_def and
35678	reference_type_def instances.
35679	* src/abg-reader.cc (read_context::finish_decl_creation)
35680	(read_context::finish_type_decl_creation)
35681	(handle_reference_type_def): New definitions.
35682	(read_file): Handle "reference-type-def" elements.
35683	(handle_type_decl, handle_namespace_decl)
35684	(handle_qualified_type_decl, handle_pointer_type_def): Use the new
35685	read_context::finish_type_decl_creation or
35686	read_context::finish_decl_creation.
35687	* src/abg-writer.cc (write_reference_type_def): New definition.
35688	(write_decl): Supporting writing a pointer to an instance of
35689	reference_type_def.
35690	* tests/data/test-read-write/test5.xml: New test file.
35691	* tests/test-read-write.cc: (De)Serialize it.
35692	* tests/Makefile.am: Add it to the build system.
35693
356942013-03-28  Dodji Seketeli <dodji@redhat.com>
35695
35696	Support pointer types & Fix IR types equality
35697	* src/abg-ir.h (location::{operator==, operator<})
35698	(decl_base::operator==, scope_decl::operator==)
35699	(type_base::operator==, struct type_shared_ptr_equal)
35700	(type_decl::operator==, scope_type::operator==)
35701	(qualified_type_def::operator==, class pointer_type_def): New
35702	declarations..
35703	* src/abg-ir.cc (decl_base::operator==, scope_decl::operator==)
35704	(type_base::operator==, type_decl::operator==)
35705	(scope_type_decl::operator==, namespace_decl::operator==)
35706	(qualified_type_def::operator==)
35707	(pointer_type_def::pointer_type_def, pointer_type_def::operator==)
35708	(pointer_type_def::get_pointed_to_type)
35709	(pointer_type_def::~pointer_type_def): New definitions.
35710	* src/abg-reader.cc (handle_pointer_type_def): New definition.
35711	(read_input): Handle pointer-type-def
35712	elements.
35713	* src/abg-writer.cc (type_shared_ptr_map):  Make this map use the
35714	use type_shared_ptr_equal predicate.
35715	(write_pointer_type_def): New definition.
35716	(write_decl): Improve logic.  Support serializing a pointer to
35717	pointer_type_def.
35718	* tests/data/test-read-write/test4.xml: New test input file.
35719	* tests/Makefile.am: Add tests/data/test-read-write/test4.xml to
35720	the build system.
35721	* tests/test-read-write.cc: (De)serialize the new test file.
35722
357232013-03-27  Dodji Seketeli <dodji@seketeli.org>
35724
35725	Support qualified types & Misc ancillary fixes
35726	* src/abg-ir.h (struct type_base_hash, struct dynamic_type_hash)
35727	(struct type_shared_ptr_hash, struct scope_type_decl_hash, class
35728	qualified_type_def, struct qualified_type_def_hash): New.
35729	(decl_base_hash::operator()): Constify. Don't crash if the scope
35730	of the decl we are hashing is null.
35731	(class type_decl): Add comment at the end.
35732	(type_decl_hash::operator()): Constify.  Reuse the new
35733	type_base_hash hasher.
35734	(class namespace_decl): Add comment.
35735	* src/abg-ir.cc (qualified_type_def::qualified_type_def)
35736	(qualified_type_def::~qualified_type_def)
35737	(qualified_type_def::get_cv_quals)
35738	(qualified_type_def::set_cv_quals)
35739	(qualified_type_def::get_underlying_type)
35740	(dynamic_type_hash::operator()): New function definitions.
35741	* src/abg-reader.cc (handle_qualified_type_decl): New.
35742	(read_file): Handle elements named "qualified-type-def".
35743	(read::context::add_type_decl): Assert that
35744	the type being associated to the unique ID is non-null.
35745	(handle_type_decl): Fix this in the process; don't crash if some
35746	attributes are not present.  Associate the unique id present in
35747	the xml document with the type we just parsed.
35748	(handle_namespace_decl): Add some comments.  Don't crash if the
35749	name attribute is not present.
35750	* src/abg-writer.cc (write_context::get_id_for_type)
35751	(write_context::m_type_id_map, write_decl_location)
35752	(write_qualified_type_def): New.
35753	(write_decl): Handle instances of qualified_type_def.
35754	(write_type_decl): Use the new write_decl_location and
35755	write_context::get_id_for_type.
35756	* tests/data/test-read-write/test0.xml: Update id format since we
35757	are now using the new write_context::get_id_for_type to generate
35758	it.
35759	* tests/data/test-read-write/test1.xml: Likewise.
35760	* tests/data/test-read-write/test2.xml: Likewise.
35761	* tests/data/test-read-write/test3.xml: New test.
35762	* tests/test-read-write.cc: Test De-serializing
35763	tests/data/test-read-write/test3.xml and serializing it back.
35764	Also don't bail out if we fail on one input.
35765	* tests/Makefile.am: Add tests/data/test-read-write/test3.xml to the
35766	distribution.
35767
357682013-03-27  Benjamin Kosnik <bkoz@redhat.com>
35769
35770	Various autotool adjustments
35771	* configure: Add.
35772	* configure.ac (AM_INIT_AUTOMAKE): Use gcc versions.
35773	(PKG_CHECK_MODULES): Re-use libjava/classpath solution, naming.
35774	* m4/pkg.m4: Add, take from classpath.
35775	* src/Makefile.am: Adjust names.
35776
357772013-03-26  Dodji Seketeli <dodji@seketeli.org>
35778
35779	Remove the 'm_kind' member from the IR
35780	* src/abg-ir.{h,cc}: Remove use of the m_kind field.  We are using
35781	full blown rtti so this uselessly just clutter the code.
35782
357832013-03-26  Dodji Seketeli <dodji@seketeli.org>
35784
35785	Fix parallel build
35786	* tests/Makefile.am: Remove useless absolute reference to the
35787	current directory.
35788
357892013-03-26  Dodji Seketeli <dodji@seketeli.org>
35790
35791	Fix depth handling during the parsing
35792	* src/abg-reader.cc (read_context::get_cur_scope): Remove useless
35793	const overload.  Don't make this rely on m_cur_scope.  Rather, use
35794	the path to the current decl (from the root element) to compute
35795	the cur scope.
35796	(read_context::m_cur_scope, read_context::set_cur_scope): Remove
35797	these.
35798	(update_read_context): Re-think logic.
35799	* tests/data/test-read-write/test2.xml: Add new test input.
35800	* tests/Makefile.am: Add data/test-read-write/test2.xml to the
35801	distribution.
35802	* tests/test-read-write.cc: Add data/test-read-write/test2.xml to
35803	the harness.
35804
358052013-03-25  Dodji Seketeli <dodji@seketeli.org>
35806
35807	Debug read-write of a type-decl in a namespace-decl
35808	* abg-ir.{h,cc} (decl_base::decl_base, scope_decl::scope_decl)
35809	(type_decl::type_decl, namespace_decl::namespace_decl): Do not
35810	append a decl to its context from within its constructor.  It's
35811	better doing that in a function that takes shared_ptrs to decl and
35812	context.  That way we avoid memory management havoc.
35813	(decl_base::set_scope): New private function.
35814	(scope_decl::add_member_decl): Make this private.
35815	(add_decl_to_scope): New function, friend of decl_base and
35816	scope_decl.
35817	* abg-reader.cc (read_context::get_cur_scope): Add a non-const
35818	overload.
35819	(handle_type_decl, handle_namespace_decl): Use add_decl_to_scope.
35820	Adjust to new type_decl and namespace_decl constructor signature.
35821	* src/abg-writer.cc (write_type): Emit 'id', not 'xml:id'.
35822	(write_namespace_decl): Emit "namespace-decl", not
35823	"namespace-decl-name", as the name of namespace element.
35824	* tests/Makefile.am (test0.xml): Rename input0.xml into this.
35825	(test1.xml): New test input.
35826	* tests/data/test-read-write/test0.xml: Update to use 'id' as id
35827	attribute, rather than xml:id.
35828	* tests/data/test-read-write/test1.xml: New test.
35829	* test-read-write.cc (struct InOutSpec): New
35830	(main): Reorganize to give a list of input files to read and to
35831	write to an output file, have the test read the input files, write
35832	them, and diff the two.
35833
358342013-03-22  Dodji Seketeli <dodji@seketeli.org>
35835
35836	Update tests/data/test-read-write/input0.xml
35837	* tests/data/test-read-write/input0.xml: Make this identical to
35838	how it would look like when serialized.
35839
358402013-03-22  Dodji Seketeli <dodji@seketeli.org>
35841
35842	Debug type-decl serialization
35843	* src/abg-writer.cc (do_indent): New function.
35844	(write_corpus&): Use do_indent.  Don't forget to close the
35845	abi-instr tag.
35846	(write_type_decl): Use do_indent.  Handle null decls pointers.
35847	Emit the id at the end of the element.
35848	(write_namespace_decl): Use do_indent.  Handle null decls
35849	pointers.
35850	* tests/test-utils.{h,cc} (get_src_dir,get_build_dir): Constify
35851	the returned reference to string.
35852	(is_dir, ensure_dir_path_created, ensure_parent_dir_created): New
35853	function definitions.
35854	* tests/test-read-write.cc (main): Augment the test to serialize
35855	the corpus too.
35856
358572013-03-21  Dodji Seketeli <dodji@seketeli.org>
35858
35859	Debugged type-decl de-serialization
35860	* src/abg-ir.cc (namespace_decl::~namespace_decl): Add this
35861	missing virtual constructor definition.
35862	* src/abg-reader.cc (read_context::{get_cur_decl,pop_decl}):
35863	Return a null pointer when the decls stack is empty.
35864	(update_read_context): Don't try to de-reference a NULL cur_decl.
35865	(read_input): Don't try to poke at file validity here.  What was I
35866	thinking.  Really test for advance_cursor to return 1, expressing
35867	success.
35868	* src/abg-reader.h (read_file):  Fix style.
35869	* Makefile.am: Add tests sub-directory.
35870	* configure.ac: Build with debugging-friendly options if the
35871	ABIGAIL_DEBUG env variable is set.  Generate tests/Makefile.
35872	* tests/Makefile.am: New file.
35873	* tests/test-read-write.cc: Likewise.
35874	* tests/test-utils.{h,cc}: Likewise.
35875	* tests/data/test-read-write/input0.xml: Likewise.
35876
358772013-03-21  Dodji Seketeli <dodji@seketeli.org>
35878
35879	Initial implementation of serialization of basic types and namespaces.
35880	* src/Makefile.am: Add abg-writer.{h,cc} and abg-config.{h,cc}.
35881	* src/abg-config.{h,cc}: New files.
35882	* src/abg-corpus.h (abi_corpus::decls_type): New typedef.
35883	(abi_corpus::{add,get_decls,get_loc_mgr}): Fix style.
35884	(abi_corpus::is_empty): Declare new function.
35885	* src/abg-corpus.cc (abi_corpus::add): really add the declaration
35886	to the corpus.
35887	(abi_corpus::is_empty): Define new function.
35888	* src/abg-ir.{h,cc} (location_manager::expand_location): Consti-fy
35889	this function.
35890	* src/abg-reader.cc (read_file): Add a corpus parameter.
35891	* src/abg-serialize.cc: Delete this file.
35892	* src/abg-writer.h (write_to_ostream): Rename write into this.
35893	Make it take a corpus and an ostream as parameters.
35894	* abg-writer.cc: New file.
35895
358962013-03-08  Dodji Seketeli <dodji@seketeli.org>
35897
35898	Parse type-decl and namespace-decl elements
35899	* configure.ac: Add libxml2 dependencies.
35900	* src/abg-corpus.{h,cc}: New files.
35901	* src/abg-hash.{h,cc}: Likewise.
35902	* src/abg-libxml-utils.{h,cc}: Likewise.
35903	* src/abg-reader.{h,cc}: Likewise.
35904	* src/abg-serialize.{h,cc}: Likewise.
35905	* src/abg-writer.h: Likewise.
35906	* src/Makefile.am: Build the new files above.
35907	* src/abg-ir.h (class location): Add public accessors for the value, and
35908	a truth operator.  Make the methods be inline.
35909	(class decl_base): Renamed decl into this.  Renamed what_decl_kind
35910	into what_kind. Renamed get_context into get_scope.  Add virtual
35911	destructor, accessors for location and name.
35912	(class {scope_decl, type_base, type_decl} ): Add virtual dtor.
35913	Re-style.
35914	(struct {decl_base_hash, type_decl_hash}): New hashing functors.
35915	(class {scope_type_decl, namespace_decl}): Add virtual dtor.
35916	* src/abg-ir.cc (location::*): Remove location definitions.  There
35917	are now inline in the header.
35918	(class decl_base): Renamed decl into this.  Remove most of the
35919	definitions from here as their are now inline in the header.
35920	(scope_decl::~scope_decl, type_base::~type_base)
35921	(type_decl::~type_decl, scope_type_decl::~scope_type_decl): New
35922	definitions.
35923
359242013-03-04  Dodji Seketeli <dodji@seketeli.org>
35925
35926	Updated hierarchy up to namespace_decl
35927	* src/abg-ir.h (location):  Make the default ctor public.
35928	(class decl): Declare data member and proper constructors.  Make the
35929	context be a shared_ptr.  Add a kind data member to avoid RTTI for
35930	now.
35931	(class scope_decl): Added protected constructor to handle the kind data
35932	member.
35933	(class type_base): Add data members proper and clean the iface up.
35934	(class type_decl, scope_type_decl, namespace_decl): Iron out
35935	constructors.
35936	* src/abg-ir.cc (class location): Fix style.
35937	(class decl, scope_decl, type_base, type_decl, scope_type_decl)
35938	(namespace_decl): Define these types.
35939
359402013-03-01  Dodji Seketeli <dodji@seketeli.org>
35941
35942	Add missing autoconfiscation files into version control
35943	* config.guess: Added to VCS.
35944	* config.sub: Likewise.
35945	* depcomp: Likewise.
35946	* install-sh: Likewise.
35947	* ltmain.sh: Likewise.
35948	* missing: Likewise
35949
359502013-03-01  Dodji Seketeli <dodji@seketeli.org>
35951
35952	Upload m4 file
35953	* m4/: Import this directory into version control.
35954
359552013-03-01  Dodji Seketeli <dodji@seketeli.org>
35956
35957	Create and expand locations
35958	* src/abg-ir.h (class {location, location_manager, decl,
35959	scoped_decl, type_base, type_decl, scope_type_decl): Declare new
35960	types.
35961	* src/abg-ir.cc (class {location, location_manager}): Define new types.
35962
359632013-03-01  Dodji Seketeli <dodji@seketeli.org>
35964
35965	Adjust src/Makefile.am after some file rename
35966	* src/Makefile.am: Update build system for renaming files from
35967	abgl-* into abg-*.
35968
359692013-03-01  Dodji Seketeli <dodji@seketeli.org>
35970
35971	Update the README file
35972	* README: Update.
35973
359742013-02-28  Dodji Seketeli <dodji@seketeli.org>
35975
35976	Initial AUTHORS and README
35977	* AUTHORS:
35978	* README:
35979
359802013-02-28  Dodji Seketeli <dodji@seketeli.org>
35981
35982	Leave license stuff for later
35983	* COPYING:
35984
359852013-02-28  Dodji Seketeli <dodji@seketeli.org>
35986
35987	Initial import Abigail
35988	* AUTHORS:
35989	* COPYING:
35990	* ChangeLog:
35991	* INSTALL:
35992	* Makefile.am:
35993	* NEWS:
35994	* README:
35995	* config.h.in:
35996	* configure.ac:
35997	* src/Makefile.am:
35998	* src/abg-ir.cc:
35999	* src/abg-ir.h:
36000
36001