• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
12022-12-02  Dodji Seketeli <dodji@redhat.com>
2
3	NEWS: Update for 2.2 release
4	* NEWS: Update for 2.2 release, with the output of
5	`git shortlog libabigail-2.1..HEAD`
6
72022-12-02  Dodji Seketeli <dodji@redhat.com>
8
9	Bug 29829 - dwarf-reader: Allow DIEs to be in a lexical block
10	* src/abg-dwarf-reader.cc (get_scope_for_die): Support
11	DW_TAG_lexical_block as DIE scope.
12
132022-12-02  Dodji Seketeli <dodji@redhat.com>
14
15	dwarf-reader: Make die_peel_{qual_ptr,typedef} always set peeled type
16	* src/abg-dwarf-reader.cc (die_peel_qual_ptr, die_peel_typedef):
17	If the function returned true, then set the peeled argument even
18	if the function hasn't peeled anything.
19
202022-11-24  Dodji Seketeli <dodji@redhat.com>
21
22	dwarf-reader: Avoid duplicating member functions
23	* src/abg-dwarf-reader.cc
24	(build_or_get_fn_decl_if_not_suppressed): Fix the code that is
25	supposed to avoid duplicating a member function.
26	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
27	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
28	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
29	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
30	Likewise.
31	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
32	Likewise.
33	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
34	Likewise.
35	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
36	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
37	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
38	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
39	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
40	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
41	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
42	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
43	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
44	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
45	Likewise.
46	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
47	Likewise.
48	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
49	Likewise.
50	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
51	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
52	Likewise.
53	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
54
552022-11-23  Dodji Seketeli <dodji@redhat.com>
56
57	dwarf-reader: Leverage ODR & DWZ
58	* doc/manuals/abidiff.rst: Add documentation for
59	--no-leverage-dwarf-factorization and
60	--no-assume-odr-for-cplusplus
61	* doc/manuals/abidw.rst: Likewise.
62	* doc/manuals/abipkgdiff.rst: Likewise.
63	* include/abg-fe-iface.h (options::{leverage_dwarf_factorization,
64	assume_odr_for_cplusplus}): New data members.
65	* src/abg-dwarf-reader.cc (reader::leverage_dwarf_factorization_):
66	New data member.
67	(reader::leverage_dwarf_factorization): New accessor.
68	(compare_dies): If we are allowed to leverage the DWARF
69	factorization and if two type DIEs coming from the
70	.gnu_debugaltlink DWARF section have different offset, then they
71	are different.  Also, if we are allowed to assume ODR, use it to
72	speed up class/struct/unions comparisons.
73	* tools/abidiff.cc (options::{assume_odr_for_cplusplus,
74	leverage_dwarf_factorization}): Define new data members.
75	(options::options): Initialize them.
76	(display_usage): Add new help strings for
77	--no-leverage-dwarf-factorization and
78	--no-assume-odr-for-cplusplus.
79	(parse_command_line): Parse these new options.
80	(set_generic_options): New function.
81	(main): Use the new set_generic_options function.
82	* tools/abidw.cc (options::{assume_odr_for_cplusplus,
83	leverage_dwarf_factorization}): Define new data members.
84	(options::options): Initialize them.
85	(display_usage): Add new help strings for
86	--no-leverage-dwarf-factorization and
87	--no-assume-odr-for-cplusplus.
88	(parse_command_line): Parse these new options.
89	(set_generic_options): New function.
90	(load_corpus_and_write_abixml): Use the new set_generic_options
91	function.
92	* tools/abipkgdiff.cc (options::{assume_odr_for_cplusplus,
93	leverage_dwarf_factorization}): Define new data members.
94	(options::options): Initialize them.
95	(display_usage): Add new help strings for
96	--no-leverage-dwarf-factorization and
97	--no-assume-odr-for-cplusplus.
98	(parse_command_line): Parse these new options.
99	(set_generic_options): New function.
100	(compare): Use it.
101
1022022-11-25  Dodji Seketeli <dodji@redhat.com>
103
104	Fix spurious deleted/added virtual destructor change report
105	* src/abg-comparison.cc (find_virtual_dtor_in_map): Define new
106	static function.
107	(class_diff::ensure_lookup_tables_populated): If a virtual
108	destructor is removed from the old binary version but is added to
109	the new one (but through a different name), let's assume the
110	virtual destructor is still there so there is no ABI issue
111	from that point of view.
112	* 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.
113
1142022-11-16  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
115
116	ctf-reader: Fix array size representation
117	* src/abg-ctf-reader.cc (build_array_ctf_range): Use
118	* tests/data/Makefile.am: Add new test.
119	`upper_bound' and number of elements to indicate infinite
120	array size.
121	* tests/data/test-read-ctf/test-array-size.abi: New test.
122	* tests/data/test-read-ctf/test-array-size.c: Likewise.
123	* tests/data/test-read-ctf/test-array-size.o: Likewise.
124	* tests/test-read-ctf.cc: Update testsuite.
125
1262022-11-16  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
127
128	ctf-reader: Fix representation of multidimensional arrays
129	* src/abg-ctf-reader.cc (+build_array_ctf_range): New definition.
130	* tests/data/Makefile.am: Add new testcase.
131	* tests/data/test-read-ctf/test-array-mdimension.abi: New testcase.
132	* tests/data/test-read-ctf/test-array-mdimension.c: Likewise.
133	* tests/data/test-read-ctf/test-array-mdimension.o: Likewise.
134	* tests/data/test-read-ctf/test9.o.abi: Adjust.
135	* tests/test-read-ctf.cc: Update testsuite.
136
1372022-11-16  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
138
139	ctf-reader: Strip qualification from a qualified array type
140	* src/abg-ctf-reader.cc (maybe_strip_qualification): New
141	definition.
142	(process_ctf_qualified_type): Strip redundant qualifiers.
143	* tests/data/test-read-ctf/test-const-array.abi: New test.
144	* tests/data/test-read-ctf/test-const-array.c: Likewise.
145	* tests/data/test-read-ctf/test-const-array.o: Likewise.
146	* tests/Makefile.am: Add the new test material to source
147	distribution.
148
1492022-11-29  Dodji Seketeli <dodji@redhat.com>
150
151	test-read-ctf: Update tests for fixing size and name for underlying types
152	* src/abg-ctf-reader.cc (process_ctf_{base_type,enum_type}):
153	Look at ctf refence type to build the underlying type if present.
154	* tests/data/Makefile.am: New test cases.
155	* tests/data/test-read-ctf/PR27700/test-PR27700.abi: New test input.
156	* tests/data/test-read-ctf/test-bitfield-enum.abi: Likewise.
157	* tests/data/test-read-ctf/test-bitfield-enum.c: Likewise.
158	* tests/data/test-read-ctf/test-bitfield-enum.o: Likewise.
159	* tests/data/test-read-ctf/test-bitfield.abi: Likewise.
160	* tests/data/test-read-ctf/test-bitfield.c: Likewise.
161	* tests/data/test-read-ctf/test-bitfield.o: Likewise.
162	* tests/data/test-read-ctf/test-enum-many.o.hash.abi: Adjust.
163	* tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise.
164	* tests/data/test-read-ctf/test-enum.o.abi: Likewise:
165	* tests/data/test-read-ctf/test0.abi: Likewise.
166	* tests/data/test-read-ctf/test0.hash.abi: Likewise.
167	* tests/data/test-read-ctf/test1.so.abi: Likewise.
168	* tests/data/test-read-ctf/test1.so.hash.abi: Likewise.
169	* tests/data/test-read-ctf/test5.o.abi: Likewise.
170	* tests/test-read-ctf.cc: Update test suite.
171
1722022-11-16  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
173
174	ctf-reader: Fix size and name for underlying types
175	* src/abg-ctf-reader.cc (process_ctf_{base_type,enum_type}):
176	Look at ctf refence type to build the underlying type if present.
177	* tests/data/Makefile.am: New test cases.
178	* tests/data/test-read-ctf/PR27700/test-PR27700.abi: New test input.
179	* tests/data/test-read-ctf/test-bitfield-enum.abi: Likewise.
180	* tests/data/test-read-ctf/test-bitfield-enum.c: Likewise.
181	* tests/data/test-read-ctf/test-bitfield-enum.o: Likewise.
182	* tests/data/test-read-ctf/test-bitfield.abi: Likewise.
183	* tests/data/test-read-ctf/test-bitfield.c: Likewise.
184	* tests/data/test-read-ctf/test-bitfield.o: Likewise.
185	* tests/data/test-read-ctf/test-enum-many.o.hash.abi: Adjust.
186	* tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise.
187	* tests/data/test-read-ctf/test-enum.o.abi: Likewise:
188	* tests/data/test-read-ctf/test0.abi: Likewise.
189	* tests/data/test-read-ctf/test0.hash.abi: Likewise.
190	* tests/data/test-read-ctf/test1.so.abi: Likewise.
191	* tests/data/test-read-ctf/test1.so.hash.abi: Likewise.
192	* tests/data/test-read-ctf/test5.o.abi: Likewise.
193	* tests/test-read-ctf.cc: Update test suite.
194
1952022-11-16  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
196
197	ctf-reader: Set alignment-in-bits property to 0
198	* src/abg-ctf-reader.cc (process_ctf_base_type)
199	(process_ctf_function_type, process_ctf_struct_type): Adjust
200	`align_in_bits' argument to `0'.
201	* tests/data/test-diff-pkg-ctf/dirpkg-3-report-1.txt: Adjust test.
202	* tests/data/test-diff-pkg-ctf/dirpkg-3-report-2.txt: Likewise.
203	* tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: Likewise.
204	* tests/data/test-read-ctf/PR27700/test-PR27700.abi: Likewise.
205	* tests/data/test-read-ctf/test-PR26568-1.o.abi: Likewise.
206	* tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise.
207	* tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Likewise.
208	* tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: Likewise.
209	* tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise.
210	* tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise.
211	* tests/data/test-read-ctf/test-callback.abi: Likewise.
212	* tests/data/test-read-ctf/test-callback2.abi: Likewise.
213	* tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: Likewise.
214	* tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: Likewise.
215	* tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise.
216	* tests/data/test-read-ctf/test-fallback.abi: Likewise.
217	* tests/data/test-read-ctf/test-forward-type-decl.abi: Likewise.
218	* tests/data/test-read-ctf/test-functions-declaration.abi: Likewise.
219	* tests/data/test-read-ctf/test-linux-module.abi: Likewise.
220	* tests/data/test-read-ctf/test-linux-module.abi: Likewise.
221	* tests/data/test-read-ctf/test-list-struct.abi: Likewise.
222	* tests/data/test-read-ctf/test0.abi: Likewise.
223	* tests/data/test-read-ctf/test0.hash.abi: Likewise.
224	* tests/data/test-read-ctf/test1.so.abi: Likewise.
225	* tests/data/test-read-ctf/test1.so.hash.abi: Likewise.
226	* tests/data/test-read-ctf/test2.so.abi: Likewise.
227	* tests/data/test-read-ctf/test2.so.hash.abi: Likewise.
228	* tests/data/test-read-ctf/test3.so.abi: Likewise.
229	* tests/data/test-read-ctf/test3.so.hash.abi: Likewise.
230	* tests/data/test-read-ctf/test4.so.abi: Likewise.
231	* tests/data/test-read-ctf/test4.so.hash.abi: Likewise.
232	* tests/data/test-read-ctf/test5.o.abi: Likewise.
233	* tests/data/test-read-ctf/test7.o.abi: Likewise.
234	* tests/data/test-read-ctf/test8.o.abi: Likewise.
235	* tests/data/test-read-ctf/test9.o.abi: Likewise.
236
2372022-11-22  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
238
239	Use the CTF reader by default when applicable
240	* doc/manuals/abidiff.rst: Adjust.
241	* doc/manuals/abidw.rst: Likewise.
242	* doc/manuals/abipkgdiff.rst: Likewise.
243	* doc/manuals/kmidiff.rst: Likewise.
244	* include/abg-elf-based-reader.h (initialize): Add member function.
245	* include/abg-elf-reader.h (has_{dwarf,ctf}_debug_info): Add predicate
246	functions.
247	* include/abg-tools-utils.h (create_best_elf_based_reader): Add arguments.
248	* src/abg-ctf-reader.cc (process_ctf_typedef, process_ctf_base_type)
249	(process_ctf_function_type, process_ctf_sou_members, process_ctf_forward_type)
250	(process_ctf_struct_type, process_ctf_union_type, process_ctf_array_type)
251	(process_ctf_qualified_type, process_ctf_pointer_type, process_ctf_enum_type):
252	Remove arguments. Using getters to access required information instead.
253	(reader::cur_tu_): Add data member.
254	(initialize): Add arguments.
255	(cur_transl_unit): Add {get,set)ter.
256	(slurp_elf_info): Clear `STATUS_DEBUG_INFO_NOT_FOUND' if corpus is
257	`LINUX_KERNEL_BINARY_ORIGIN'.
258	(reader::lookup_type): Remove.
259	(reader::build_type): New member function.
260	* src/abg-elf-reader.cc (reader::reader): Locate ctf debug info
261	from binary file.
262	(reader::reader): Reset base `fe_iface' constructor.
263	(reader::has_{dwarf,ctf}_debug_info): New definitions.
264	(reader::read_corpus): Set `STATUS_DEBUG_INFO_NOT_FOUND' according
265	to corpus::origin.
266	* src/abg-tools-utils.cc (dir_contains_ctf_archive): Define new member.
267	(file_has_ctf_debug_info): Looks for kernel ctf debug information archive.
268	(maybe_load_vmlinux_{dwarf,ctf}_corpus): Remove.
269	(load_vmlinux_corpus): Define function to load IR from kernel
270	regardless of the corpus::origin.
271	(build_corpus_group_from_kernel_dist_under): Use
272	create_best_elf_based_reader to select the front-end.
273	(create_best_elf_based_reader): Adjust to allow fallback behaviour
274	for different front-ends.
275	* tests/data/Makefile.am: Add tests.
276	* tests/data/test-diff-pkg-ctf/dirpkg-3-report-2.txt: Adjust.
277	* tests/data/test-read-ctf/test-fallback.abi: New test case.
278	* tests/data/test-read-ctf/test-fallback.c: Likewise.
279	* tests/data/test-read-ctf/test-fallback.o: Likewise.
280	* tests/data/test-read-dwarf/test-fallback.abi: Likewise.
281	* tests/data/test-read-dwarf/test-fallback.c: Likewise.
282	* tests/data/test-read-dwarf/test-fallback.o: Likewise.
283	* tests/test-diff-pkg.cc: Adjust.
284	* tests/test-read-common.cc (test_task::run_abidw): Use the
285	`options:option' field.
286	* tests/test-read-common.h (InOutSpec): Add new member.
287	* tests/test-read-ctf.cc (in_out_specs): Add option field to test
288	suite.  Add new test case.
289	* tests/test-read-dwarf.cc: Likewise.
290	* tools/abidiff.cc (main): Use create_best_elf_based_reader.
291	* tools/abidw.cc: Likewise.
292	* tools/abipkgdiff.cc: Likewise.
293
2942022-11-15  Dodji Seketeli <dodji@redhat.com>
295
296	Make Front Ends first class citizens
297	* include/abg-fwd.h (build_internal_underlying_enum_type_name):
298	Move this here from src/abg-dwarf-reader.cc.
299	* include/abg-elf-reader-common.h: Delete this file.  Its content
300	is going to be put in the new include/abg-elf-reader.h.
301	* src/abg-elf-reader-common.cc: Likewise.
302	* include/abg-{elf-based-reader, elf-reader, fe-iface}.h: Add new
303	files.
304	* src/abg-fe-iface.cc: Likewise.
305	* include/Makefile.am: Add the new file abg-fe-iface.h,
306	abg-elf-based-reader.h and abg-elf-reader.h to source distribution
307	and remove include/abg-elf-reader-common.h from source
308	distribution.
309	* src/abg-ir.cc (build_internal_underlying_enum_type_name): Move
310	this here from abg-dwarf-reader.cc so that it can be used by other
311	readers.
312	* include/abg-reader.h (abigail::abixml::reader): Rename the
313	namespace abigail::xml_reader into this one.
314	(read_context, create_native_xml_read_context)
315	(read_context_get_path, read_corpus_from_native_xml)
316	(read_corpus_from_native_xml_file)
317	(read_corpus_group_from_native_xml)
318	(read_corpus_group_from_native_xml_file): Remove.
319	(read_translation_unit_from_file)
320	(read_translation_unit_from_buffer)
321	(read_translation_unit_from_istream)
322	(read_translation_unit)
323	(consider_types_not_reachable_from_public_interfaces)
324	(get_types_from_type_id, get_artifact_used_by_relation_map)
325	(load_canonical_type_ids): Take an fe_iface&, not a read_context.
326	(create_reader): Declare new function that returns a
327	fe_iface_sptr.
328	(read_corpus_from_abixml, read_corpus_from_abixml_file)
329	(read_corpus_group_from_abixml)
330	(read_corpus_group_from_abixml_file): Declare new functions.
331	* src/abg-reader.cc (namespace abixml): Rename the
332	xml_reader namespace into this.
333	(abixml::reader_sptr): New typedef.
334	(abixml::reader): Rename read_context into this.  Make it
335	inherit the fe_iface interface.
336	(abixml::reader::{m_path, m_env, m_corpus, m_corpus_group,
337	m_exported_decls_builder, m_supprs}): Remove these data members
338	that are now part of the fe_iface parent type.
339	(abixml::reader::{set_environment, get_corpus, set_corpus,
340	set_corpus_group, maybe_add_fn_to_exported_decls,
341	maybe_add_var_to_exported_decls,
342	maybe_check_abixml_canonical_type_stability,
343	suppression_matches_function_sym_name,
344	suppression_matches_variable_name,
345	suppression_matches_variable_sym_name}): Remove.
346	(read_corpus_from_input): Remove.  Actually the code of this went
347	into abixml::reader::read_context().
348	(abixml::reader::get_libxml_reader): Rename the get_reader
349	member function into this.
350	(abixml::add_reader_suppressions): Rename
351	add_read_context_suppressions into this.
352	(abixml::reader::read_corpus): Implement this virtual
353	member function if the fe_iface parent interface.
354	(maybe_set_naming_typedef, advance_cursor)
355	(handle_version_attribute, walk_xml_node_to_map_type_ids)
356	(read_elf_needed_from_input, read_symbol_db_from_input)
357	(get_or_read_and_add_translation_unit, build_needed)
358	(read_elf_needed_from_input, add_read_context_suppressions)
359	(maybe_set_artificial_location, maybe_set_naming_typedef)
360	(build_namespace_decl, build_elf_symbol)
361	(build_elf_symbol_from_reference, build_elf_symbol_db)
362	(build_function_parameter, build_function_decl)
363	(build_function_decl_if_not_suppressed, function_is_suppressed)
364	(type_is_suppressed, build_var_decl_if_not_suppressed)
365	(variable_is_suppressed, variable_is_suppressed, build_var_decl)
366	(build_type_decl, build_qualified_type_decl)
367	(build_pointer_type_def, build_reference_type_def)
368	(build_function_type, build_subrange_type, build_array_type_def)
369	(build_enum_type_decl_if_not_suppressed, build_enum_type_decl)
370	(build_typedef_decl, build_class_decl_if_not_suppressed)
371	(build_union_decl_if_not_suppressed, build_class_decl)
372	(build_union_decl, build_function_tdecl, build_class_tdecl)
373	(build_type_tparameter, build_type_composition)
374	(build_non_type_tparameter, build_non_type_tparameter)
375	(build_template_tparameter, build_template_parameter, build_type)
376	(handle_type_decl, handle_namespace_decl)
377	(handle_qualified_type_decl, handle_pointer_type_def)
378	(handle_reference_type_def, handle_function_type)
379	(handle_array_type_def, handle_enum_type_decl)
380	(handle_typedef_decl, handle_var_decl, handle_function_decl)
381	(handle_class_decl, handle_union_decl, handle_function_tdecl)
382	(read_translation_unit_from_istream): Take or use an
383	abixml::reader rather than a read_context.
384	(read_translation_unit, read_translation_unit_from_input)
385	(consider_types_not_reachable_from_public_interfaces)
386	(get_types_from_type_id, get_artifact_used_by_relation_map)
387	(read_corpus_group_from_input, read_translation_unit)
388	(handle_element_node, read_location, read_artificial_location)
389	(load_canonical_type_ids) : Take an fe_iface&, not a read_context.
390	(create_abixml_reader): Rename create_native_xml_read_context
391	into this.  Make it return a fe_iface_sptr.
392	(read_corpus_from_abixml): Rename read_corpus_from_abixml into
393	this.
394	(read_corpus_from_abixml_file): Rename
395	read_corpus_from_native_xml_file into this.
396	(read_context_get_path): Remove.
397	* include/abg-tools-utils.h
398	(abigail::tools_utils::{file_has_dwarf_debug_info,
399	file_has_ctf_debug_info}): Declare new functions.
400	(create_best_elf_based_reader): Declare new function.
401	* include/abg-corpus.h (corpus::add): Pass the translation unit by
402	reference.
403	(corpus::exported_decls_builder::maybe_add_{fn,var}_to_exported_fns):
404	Take a const parameter.
405	* src/abg-corpus-priv.h
406	(corpus::exported_decls_builder::priv::add_{fn,var}_to_exported):
407	Take a const parameter and adjust.
408	* src/abg-corpus.cc
409	(corpus::exported_decls_builder::maybe_add_{fn,var}_to_exported_fns):
410	Take a const parameter.
411	(corpus::add): Take a reference to translation_unit_sptr.
412	* include/abg-suppression.h (abigail::fe_iface): Forward-declare
413	this.
414	(abigail::{suppression_sptr, suppressions_type}): Declare these
415	types here.
416	(abigail::suppr::{suppression_can_match,
417	suppression_matches_function_name,
418	suppression_matches_function_sym_name,
419	suppression_matches_variable_name,
420	suppression_matches_variable_sym_name,
421	suppression_matches_type_name_or_location,
422	is_elf_symbol_suppressed, is_elf_symbol_suppressed,
423	is_function_suppressed, is_variable_suppressed,
424	is_type_suppressed}): Declare these functions here.
425	* src/abg-suppression-priv.h (function_is_suppressed)
426	(variable_is_suppressed, type_is_suppressed)
427	(is_elf_symbol_suppressed): Remove these template functions.
428	* src/abg-suppression.cc (suppression_matches_function_name)
429	(suppression_matches_function_sym_name): Remove.
430	(variable_is_suppressed, suppression_can_match)
431	(suppression_matches_function_name)
432	(suppression_matches_function_sym_name)
433	(suppression_matches_variable_name)
434	(suppression_matches_variable_sym_name)
435	(suppression_matches_type_name_or_location)
436	(is_elf_symbol_suppressed, is_elf_symbol_suppressed)
437	(is_function_suppressed, is_variable_suppressed)
438	(is_type_suppressed): New functions.
439	* include/abg-ctf-reader.h (abigail::ctf::{read_context,
440	create_read_context, read_corpus,
441	read_and_add_corpus_to_group_from_elf,
442	set_read_context_corpus_group, reset_read_context, dic_type_key}):
443	Remove.
444	(ctf::{create_reader, reset_reader}): Declare new
445	functions.
446	* src/abg-ctf-reader.cc (read_context): Remove.
447	(process_ctf_typedef, process_ctf_base_type)
448	(build_ir_node_for_variadic_parameter_type)
449	(process_ctf_function_type, process_ctf_sou_members)
450	(process_ctf_forward_type, process_ctf_struct_type)
451	(process_ctf_union_type, process_ctf_array_type)
452	(process_ctf_qualified_type, process_ctf_pointer_type)
453	(process_ctf_enum_type, fill_ctf_section)
454	(lookup_symbol_in_ctf_archive, dic_type_key): Forward-declare
455	these static functions.
456	(ctf::reader): New class that is the abstraction
457	of the CTF reader.  It extends the abigail::elf_based_reader
458	class.  This is a renaming of the
459	abigail::ctf::read_context class.
460	(ctf::reader::{elf_handler, elf_fd,
461	elf_handler_dbg, elf_fd_dbg, symtab, debug_info_root_paths_,
462	debug_info_root_paths_}): Remove these data members as they are
463	now properties of the abigail::elf_reader class, which is a parent
464	class of this abigail::ctf::reader class.
465	(ctf::reader::{exported_decls_builder,
466	maybe_add_fn_to_exported_decls, current_corpus_group,
467	has_corpus_group, main_corpus_from_current_group,
468	current_corpus_is_main_corpus_from_current_group,
469	should_reuse_type_from_corpus_group}): Remove these accessors
470	that can now be used from the parent classes abigail::{elf_reader,
471	elf_based_reader}.
472	(ctf::reader::reader): This now delegates to the constructor of
473	elf_based_reader.  It doesn't pass any argument to initialize()
474	anymore.
475	(ctf::reader::initialize): Add an overload with no
476	parameter.  In the other overload, do not take a pointer to an
477	environment as no new environment can be passed to the instance of
478	reader that is being reset.  Adjust the code of the initializer to
479	reflect all the data members that got removed.
480	(ctf::{env, find_ctfa_file, slurp_elf_info,
481	process_ctf_archive, process_ctf_type, lookup_type, read_corpus,
482	~reader}): New member functions.  Most of these were free-form
483	functions that took ctf::read_context as first parameter.
484	In read_corpus, do not set the corpus::LINUX_KERNEL_BINARY_ORIGIN
485	origin as that is now done by elf::reader when it reads the
486	binary.
487	(lookup_type): Remove.  These are now member functions of the
488	ctf::reader class.
489	(process_ctf_typedef, process_ctf_base_type)
490	(build_ir_node_for_variadic_parameter_type)
491	(process_ctf_function_type, process_ctf_sou_members)
492	(process_ctf_forward_type, process_ctf_struct_type)
493	(process_ctf_union_type, process_ctf_array_type)
494	(process_ctf_qualified_type, process_ctf_pointer_type): Take a
495	ctf::reader rather an ctf::read_context.  Adjust the
496	content of the functions.
497	(process_ctf_type, lookup_type, process_ctf_archive): Remove these
498	and turn them into member functions of ctf::reader.
499	(open_elf_handler, close_elf_handler, find_alt_debuginfo): Remove
500	these ELF handling functions as ELF handling is now done by the
501	elf_reader parent class.
502	(fill_ctf_section): Take a const pointer to Elf_Scn.
503	(slurp_elf_info, find_ctfa_file): Remove this and make it be a
504	member of ctf::reader.  Also, make it handle only CTF
505	reader specific pieces.  slurp_elf_info now delegates the reading
506	of generic ELF properties to elf::reader by calling
507	elf::reader::read_corpus().
508	(create_read_context, read_corpus, set_read_context_corpus_group)
509	(read_and_add_corpus_to_group_from_elf): Remove these functions.
510	(create_reader, reset_reader): Create new functions
511	(dic_type_key): Make this static.
512	* include/abg-dwarf-reader.h (abigail::dwarf::elf_type):
513	Move this enum into the namespace abigail::elf_reader in the file
514	include/abg-elf-reader.h.
515	(abigail::dwarf::{read_context, read_context_sptr,
516	create_read_context, read_context_get_path, reset_read_context,
517	add_read_context_suppressions, set_read_context_corpus_group,
518	read_corpus_from_elf, read_and_add_corpus_to_group_from_elf,
519	read_and_add_corpus_to_group_from_elf,
520	add_read_context_suppressions, refers_to_alt_debug_info,
521	has_alt_debug_info, get_soname_of_elf_file, get_type_of_elf_file,
522	set_debug_info_root_path, get_debug_info_root_path,
523	get_show_stats, set_show_stats, set_drop_undefined_syms,
524	set_do_log, set_environment, get_environment}): Remove.
525	* src/abg-dwarf-reader.cc (struct dwfl_deleter, dwfl_sptr)
526	(addr_elf_symbol_sptr_map_type, address_set_type)
527	(address_set_sptr): Delete these types.
528	(read_context::options_type): Remove.  The data members of this
529	type got moved to struct fe_iface::options_type.
530	(find_alt_debug_info_link, find_alt_debug_info_path)
531	(find_alt_debug_info, lookup_data_tag_from_dynamic_segment)
532	(elf_file_type, refers_to_alt_debug_info, has_alt_debug_info)
533	(get_soname_of_elf_file, get_type_of_elf_file) : Remove these ELF
534	specific functions from here; move them to the elf_reader
535	namespace.
536	(dwarf::reader): Create new class that extends
537	elf_based_reader.  dwarf::read_context is renamed into this
538	type, actually.
539	(dwarf::reader::die_source_dependant_container_set::get_container):
540	Adjust.
541	(dwarf::reader::{supprs_, dwarf_version_,
542	offline_callbacks_, debug_info_root_paths_, handle_, dwarf_,
543	alt_fd_, alt_dwarf_, alt_debug_info_path_, elf_module_,
544	elf_handle_, elf_path_, symtab_section_, cur_corpus_group_,
545	cur_corpus_, dt_needed_, dt_soname_, elf_architecture_,
546	exported_decls_builder_, options_, drop_undefined_syms_}): Remove
547	these ELF-related data members to move them into the elf_reader
548	namespace.
549	(maybe_propagate_canonical_type)
550	(build_translation_unit_and_add_to_ir, build_ir_node_from_die)
551	(add_or_update_class_type, add_or_update_union_type)
552	(build_ir_node_for_void_type)
553	(build_ir_node_for_variadic_parameter_type, build_function_decl)
554	(function_is_suppressed, build_or_get_fn_decl_if_not_suppressed)
555	(build_var_decl, build_or_get_var_decl_if_not_suppressed)
556	(variable_is_suppressed)
557	(propagate_canonical_type)
558	(get_parent_die, get_scope_die, die_is_at_class_scope)
559	(die_location, die_qualified_type_name, die_qualified_name)
560	(die_qualified_type_name_empty)
561	(die_return_and_parm_names_from_fn_type_die)
562	(die_function_signature, die_function_type_is_method_type)
563	(die_pretty_print_type, die_pretty_print_decl, die_pretty_print)
564	(maybe_canonicalize_type, build_subrange_type)
565	(build_subranges_from_array_type_die, compare_dies, die_location)
566	(die_loc_and_name, die_is_effectively_public_decl)
567	(maybe_cache_type_comparison_result)
568	(get_cached_type_comparison_result)
569	(maybe_get_cached_type_comparison_result, die_is_at_class_scope)
570	(die_function_type_is_method_type, die_member_offset)
571	(die_qualified_type_name, die_qualified_decl_name)
572	(die_qualified_name, die_qualified_type_name_empty)
573	(die_return_and_parm_names_from_fn_type_die)
574	(die_function_signature, die_pretty_print_type)
575	(die_pretty_print_decl, die_pretty_print)
576	(at_least_one_decl_only_among_odr_relevant_dies)
577	(compare_as_type_dies, compare_as_decl_and_type_dies)
578	(fn_die_equal_by_linkage_name, try_canonical_die_comparison)
579	(maybe_propagate_canonical_type, propagate_canonical_type)
580	(compare_dies, compare_dies_during_canonicalization)
581	(find_import_unit_point_between_dies, get_parent_die)
582	(get_scope_die, find_lower_bound_in_imported_unit_points)
583	(build_translation_unit_and_add_to_ir)
584	(build_namespace_decl_and_add_to_ir, build_type_decl)
585	(build_enum_underlying_type, build_enum_type)
586	(finish_member_function_reading)
587	(maybe_finish_function_decl_reading)
588	(lookup_class_or_typedef_from_corpus)
589	(is_function_for_die_a_member_of_class)
590	(add_or_update_member_function, add_or_update_class_type)
591	(add_or_update_union_type, build_qualified_type)
592	(schedule_array_tree_for_late_canonicalization)
593	(maybe_strip_qualification, build_pointer_type_def)
594	(build_reference_type, build_function_type, build_subrange_type)
595	(build_subranges_from_array_type_die, build_array_type)
596	(build_typedef_type, build_or_get_var_decl_if_not_suppressed)
597	(build_var_decl, function_is_suppressed)
598	(build_or_get_fn_decl_if_not_suppressed, variable_is_suppressed)
599	(type_is_suppressed, type_is_suppressed)
600	(get_opaque_version_of_type, create_default_fn_sym)
601	(build_function_decl, maybe_canonicalize_type)
602	(build_ir_node_from_die)
603	(build_ir_node_for_variadic_parameter_type): Take a reference to
604	the new dwarf::reader rather than to the previous
605	read_context.  Adjust the function body.
606	(return_comparison_result): Adjust.
607	(dwarf::reader::reader): Adjust this from
608	read_context::read_context.
609	(dwarf::reader::initialize): Adjust from
610	dwarf::read_context::initialize.
611	(dwarf::reader::create): New factory static member
612	function.
613	(dwarf::reader::~reader): This doesn't have to clear
614	anything for now.
615	(dwarf::reader::read_corpus): New virtual member function
616	which implements the fe_iface::read_corpus pure virtual interface.
617	This now delegates the reading of the generic ELF properties to
618	elf::reader by calling elf::reader::read_corpus().
619	Newer front-ends will be able to do the same.
620	(dwarf::reader::reset_corpus): New member function.
621	(dwarf::reader::read_debug_info_into_corpus): Adjust.  This
622	is now a member function.  Also, do not set the
623	corpus::LINUX_KERNEL_BINARY_ORIGIN here as it's now set by the
624	elf::reader when it loads the binary.
625	(dwarf::reader::{env, drop_undefined_syms,
626	drop_undefined_syms, dwarf_elf_handle, dwarf_per_die_source,
627	elf_path, compute_canonical_die_offset, get_die_source,
628	get_die_from_offset, get_die_qualified_name,
629	get_die_pretty_type_representation, get_die_qualified_type_name,
630	get_die_pretty_representation, odr_is_relevant,
631	set_canonical_die_offset, get_canonical_die_offset,
632	erase_canonical_die_offset, die_wip_classes_map,
633	die_wip_function_types_map, compare_before_canonicalisation,
634	resolve_declaration_only_classes, resolve_declaration_only_enums,
635	symbol_already_belongs_to_a_function,
636	fixup_functions_with_no_symbols, canonicalize_types_scheduled,
637	tu_die_imported_unit_points_map, die_parent_map,
638	find_symbol_table_section, get_variable_address,
639	exported_decls_builder, load_all_types, load_in_linux_kernel_mode,
640	show_stats, do_log, build_die_parent_maps): Adjust.
641	(offset_pairs_stack_type::rdr_): Changed the ctxt_ into this.
642	(offset_pairs_stack_type::offset_pairs_stack_type): Adjust.
643	(offset_pairs_stack_type::{erase_redundant_type_pair_entry,
644	cancel_canonical_propagated_type}): Adjust.
645	(dwarf::reader::{get_suppressions, offline_callbacks,
646	create_default_dwfl, dwfl_handle, elf_module, elf_handle,
647	add_debug_info_root_paths, add_debug_info_root_path,
648	find_alt_debug_info, dwarf, alt_dwarf, alt_debug_info_path,
649	current_corpus, reset_current_corpus, current_corpus_group,
650	has_corpus_group, main_corpus_from_current_group,
651	current_corpus_is_main_corpus_from_current_group,
652	should_reuse_type_from_corpus_group, function_symbol_is_exported,
653	variable_symbol_is_exported, symtab, dt_needed, dt_soname,
654	elf_architecture, is_elf_symbol_suppressed,
655	load_dt_soname_and_needed, load_elf_architecture,
656	load_elf_properties, maybe_add_fn_to_exported_decls,
657	maybe_add_var_to_exported_decls}): Remove these member functions
658	as they got moved into the elf_reader namespace or into the
659	fe_iface class.
660	(dwarf::read_context::{suppression_can_match,
661	suppression_matches_function_sym_name,
662	suppression_matches_function_name,
663	suppression_matches_variable_name,
664	suppression_matches_variable_sym_name,
665	suppression_matches_type_name_or_location}): Move these into the
666	suppr namespace.  Make it take an additional parameter that is
667	reference fe_iface.
668	(dwarf::reader::load_debug_info): Remove.  This became
669	merged into dwarf::read_debug_info_into_corpus.
670	(dwarf::{set_debug_info_root_path,
671	get_debug_info_root_path, get_show_stats, set_drop_undefined_syms,
672	set_do_log}): Remove.
673	(add_read_context_suppressions)
674	(set_read_context_corpus_group, read_corpus_from_elf): Remove.
675	(read_debug_info_into_corpus): This became a member function of
676	dwarf::reader.
677	(create_reader): Renamed create_read_context into this.
678	Make it return an elf_based_reader_sptr, like the other front-end
679	factory functions.  Adjust.
680	(reset_dwarf_reader): Renamed reset_read_context into this.
681	Adjust.
682	(read_corpus_from_elf): Adjust.
683	* src/abg-elf-based-reader.cc: New file.
684	* src/abg-elf-helpers.h (struct dwfl_deleter, dwfl_sptr)
685	(addr_elf_symbol_sptr_map_type, address_set_sptr): Move these
686	types here from abg-dwarf-reader.cc
687	(initialize_dwfl_callbacks, lookup_data_tag_from_dynamic_segment):
688	* src/abg-elf-helpers.cc (lookup_data_tag_from_dynamic_segment)
689	(lookup_data_tag_from_dynamic_segment, initialize_dwfl_callbacks)
690	(create_new_dwfl_handle, get_soname_of_elf_file): New functions
691	that got moved here from the factorizing of abg-dwarf-reader.cc
692	and abg-ctf-reader.cc.
693	* src/abg-tools-utils.cc (file_has_dwarf_debug_info)
694	(file_has_ctf_debug_info): New functions.
695	(load_generate_apply_suppressions): Take an elf_based_reader, not
696	a dwarf::read_context.
697	(maybe_load_vmlinux_dwarf_corpus): Adjust the body to use the new
698	front-end types.
699	* src/Makefile.am: Add the new files src/abg-{fe-iface,
700	elf-based-reader, elf-reader}.cc to source distribution. Remove
701	src/abg-elf-reader-common.cc.
702	* tools/Makefile.am: Factorize linking to libabigail.so by using
703	LDADD.
704	* tools/abicompat.cc (read_corpus, main): Adjust.
705	* tools/abidiff.cc (set_suppressions)
706	(set_native_xml_reader_options, handle_error, main): Adjust.
707	* tools/abidw.cc (set_suppressions, load_corpus_and_write_abixml)
708	(load_kernel_corpus_group_and_write_abixml): Adjust.
709	* tools/abilint.cc (build_type_use_tree, show_how_type_is_used)
710	(set_suppressions, main): Adjust.
711	* tools/abipkgdiff.cc (elf_file::type, compare, compare_to_self)
712	(create_maps_of_package_content)
713	(compare_prepared_userspace_packages)
714	(self_compare_prepared_userspace_package): Adjust.
715	* tools/abisym.cc: Adjust invocation to
716	abigail::dwarf::lookup_symbol_from_elf, from
717	abigail::dwarf_reader::lookup_symbol_from_elf.
718	* tools/kmidiff.cc (main): Adjust.
719	* tests/print-diff-tree.cc (main): Adjust.
720	* tests/test-abidiff.cc (main): Likewise.
721	* tests/test-diff-dwarf.cc (main): Likewise.
722	* tests/test-ir-walker.cc (main): Likewise.
723	* tests/test-read-ctf.cc (test_task_ctf::perform): Likewise.
724	* tests/test-read-dwarf.cc: Remove the useless "using" statements.
725	* tests/test-read-write.cc: Likewise.
726	* tests/test-symtab.cc (read_corpus, TEST_CASE)
727	(assert_symbol_count): Adjust.
728	* tests/data/test-read-ctf/test0.abi: Adjust.
729	* tests/data/test-read-ctf/test0.hash.abi: Likewise.
730	* tests/data/test-read-ctf/test1.so.abi: Likewise.
731	* tests/data/test-read-ctf/test1.so.hash.abi: Likewise.
732	* tests/data/test-read-ctf/test2.so.abi: Likewise.
733	* tests/data/test-read-ctf/test2.so.hash.abi: Likewise.
734	* tests/data/test-read-ctf/test3.so.abi: Likewise.
735	* tests/data/test-read-ctf/test3.so.hash.abi: Likewise.
736	* tests/data/test-read-ctf/test4.so.abi: Likewise.
737	* tests/data/test-read-ctf/test4.so.hash.abi: Likewise.
738
7392022-11-10  Dodji Seketeli <dodji@redhat.com>
740
741	Use environment by reference.
742	* include/abg-corpus.h (corpus::corpus)
743	(corpus_group::corpus_group): Take environment&, not environment*
744	as parameter.
745	(corpus::{get_environment, set_environment}): Take or return
746	environment&, not environment*.
747	* src/abg-corpus.cc (corpus::corpus): Likewise.
748	(corpus::{get_environment, set_environment}): Likewise.
749	(corpus::add): Don't update the environment of the translation
750	unit.
751	(corpus::{record_type_as_reachable_from_public_interfaces,
752	type_is_reachable_from_public_interfaces, init_format_version,
753	add_corpus}): Adjust for accessing a reference to environment,
754	rather than a pointer.
755	* include/abg-ctf-reader.h (create_read_context): Take or return
756	environment&, not environment*.
757	* src/abg-ctf-reader.cc (read_context::ir_env): Make this a
758	reference to environment, not pointer anymore.
759	(read_context::read_context): Initialize the reference to
760	environment.
761	(read_context::initialize): Do not re-set the environment.
762	(process_ctf_base_type)
763	(build_ir_node_for_variadic_parameter_type)
764	(process_ctf_enum_type, read_corpus): Adjust for accessing a
765	reference to environment, rather than a pointer.
766	(create_read_context, reset_read_context): Take environment&, not
767	environment*.
768	* include/abg-dwarf-reader.h (create_read_context)
769	(reset_read_context, read_corpus_from_elf)
770	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
771	Likewise.
772	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
773	(lookup_symbol_from_gnu_hash_tab)
774	(lookup_symbol_from_elf_hash_tab, lookup_symbol_from_symtab)
775	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
776	Likewise.
777	(read_context::options_type::env): Make this be a reference to
778	environment, not a pointer.
779	(read_context::options::options): Remove the default constructor.
780	Add a new one to initialize the environment data member.
781	(read_context::read_context): Take environment&, not environment*.
782	Initialize the options_ data member.
783	(read_context::initialize): Do not take or initialize an
784	environment anymore.
785	(read_context::env): Return or take environment&, not
786	environment*.
787	(read_context::{get_die_qualified_name,
788	get_die_qualified_type_name, get_die_pretty_type_representation,
789	get_die_pretty_representation, compare_before_canonicalisation})
790	(build_translation_unit_and_add_to_ir, build_function_type)
791	(build_typedef_type, read_debug_info_into_corpus)
792	(read_debug_info_into_corpus, build_ir_node_from_die)
793	(build_ir_node_for_variadic_parameter_type, has_alt_debug_info):
794	Adjust to use an environment&, not a pointer.
795	(create_default_fn_sym, create_read_context)
796	(read_corpus_from_elf, lookup_symbol_from_elf)
797	(lookup_public_function_symbol_from_elf): Take environment&, not
798	environment*.
799	(reset_read_context): Do not take or reset environment* anymore.
800	* include/abg-fwd.h (type_or_void): Likewise.
801	* include/abg-ir.h (translation_unit::translation_unit): Likewise.
802	(translation_unit::{get_environment, set_environment}): Likewise.
803	(elf_symbol::elf_symbol): Likewise.
804	(elf_symbol::create): Remove the overload that takes no
805	parameter.  Then for overload that take parameters then take
806	environment&, not environment*.
807	(elf_symbol::get_environment): Take environment&, not
808	environment*.
809	(type_or_decl_base::type_or_decl_base): Make the copy constructor
810	and assignment operator private.
811	(type_or_decl_base::{s,g}et_environment): Take or return
812	environment& not environment*.
813	(type_or_decl_base::set_environment_for_artifact): Erase these
814	methods.
815	(decl_base::decl_base): Make copy constructor private.  Take or
816	return environment&, not environment* for the other constructors.
817	(scope_decl::scope_decl): Take or return environment&, not
818	environment*.
819	(type_base::type_base): Likewise.
820	(scope_type_decl::scope_type_decl): Likewise.
821	(namespace_decl::namespace_decl): Likewise.
822	(qualified_type_def::qualified_type_def): Likewise.
823	(pointer_type_def::pointer_type_def): Likewise.
824	(reference_type_def::reference_type_def): Likewise.
825	(array_type_def::subrange_type::subrange_type): Likewise.
826	(enum_type_def::enumerator::enumerator): Likewise.
827	(enum_type_def::enumerator::{get_name, get_qualified_name}):
828	Return a string&, no more interned_string&.  As the enumerator
829	don't have an enumerator anymore, there is no way to intern the
830	string anymore.  Hopefully this won't incur a performance loss.
831	(typedef_decl::typedef_decl, function_type::function_type)
832	(method_type::method_type, template_decl::template_decl)
833	(function_tdecl::function_tdecl, class_tdecl::class_tdecl)
834	(class_or_union::class_or_union, class_decl::class_decl)
835	(union_decl::union_decl): Take or return environment&, not
836	environment*.
837	* include/abg-reader.h (read_translation_unit_from_file)
838	(read_translation_unit_from_buffer)
839	(read_translation_unit_from_istream)
840	(create_native_xml_read_context, create_native_xml_read_context)
841	(read_corpus_from_native_xml, read_corpus_from_native_xml_file)
842	(read_corpus_group_from_native_xml)
843	(read_corpus_group_from_native_xml_file): Likewise.
844	* include/abg-tools-utils.h
845	(build_corpus_group_from_kernel_dist_under): Likewise.
846	* src/abg-tools-utils.cc (maybe_load_vmlinux_dwarf_corpus)
847	(maybe_load_vmlinux_ctf_corpus)
848	(build_corpus_group_from_kernel_dist_under): Likewise.
849	* include/abg-writer.h (create_write_context): Likewise.
850	* src/abg-writer.cc (id_manager::m_env, id_manager::id_manager)
851	(id_manager::get_environment, id_manager::get_id)
852	(id_manager::get_id_with_prefix): Adjust.
853	(write_context::m_env, write_context::write_context)
854	(write_context::get_environment, write_context::get_config)
855	(write_context::get_id_for_type, write_context::decl_is_emitted)
856	(write_context::record_decl_as_emitted, create_write_context)
857	(write_class_decl): Likewise.
858	* src/abg-comparison.cc (compute_diff): Stop ensuring that the two
859	artifacts being compare are in the same environment.  Now that the
860	environment is passed by reference, the potential for
861	accendentally comparing artifacts coming from different
862	environments is very low, given how the API is used in practice.
863	This is in the overloads for decl_base_sptr, type_base_sptr,
864	var_decl_sptr, pointer_type_def_sptr, array_type_def_sptr,
865	reference_type_def_sptr, qualified_type_def_sptr,
866	enum_type_decl_sptr, class_decl_sptr, class_decl::base_spec_sptr,
867	union_decl_sptr, scope_decl_sptr, function_decl::parameter_sptr,
868	function_type_sptr, function_decl_sptr, type_decl_sptr,
869	typedef_decl_sptr, translation_unit_sptr, corpus_sptr.
870	* src/abg-corpus-priv.h (corpus::priv::env): Make this be a
871	reference to environments, not a pointer.
872	(corpus::priv::priv): Pass environment&, not environment*.
873	* src/abg-ir-priv.h (translation_unit::priv::env_): Make this an
874	environment&, not an environment* anymore.
875	(translation_unit::priv::priv): Take an environment&, not an
876	environment*.
877	(environment::priv::{confirm_ct_propagation_for_types_dependant_on,
878	confirm_ct_propagation,
879	cancel_ct_propagation_for_types_dependant_on,
880	mark_as_being_compared, unmark_as_being_compared,
881	comparison_started, mark_as_being_compared, comparison_started}):
882	Adjust to use an environment&, not a pointer.
883	* src/abg-ir.cc (class environment_setter): Remove this class.
884	(push_composite_type_comparison_operands)
885	(pop_composite_type_comparison_operands, try_canonical_compare)
886	(return_comparison_result, translation_unit::{get_global_scope,
887	bind_function_type_life_time}): Adjust.
888	(translation_unit::{translation_unit, get_environment}): Take or
889	get an environment&, not an environment*.  Remove the getter that
890	returns an environment*.
891	(elf_symbol::priv::env_): Make this an environment&, not an
892	environment*.
893	(elf_symbol::priv::priv): Adjust.
894	(elf_symbol::elf_symbol): Remove the default constructor.  Change
895	the one that takes an environment.
896	(elf_symbol::create): Remove the default one.  Adjust the one that
897	takes an environment.
898	(elf_symbol::get_environment): Adjust.
899	(elf_symbol::set_environment_for_artifact): Remove.
900	(environment::{get_void_type, get_variadic_parameter_type}):
901	Adjust.
902	(type_or_decl_base::priv::env_): Make this be a const
903	environment&, not a const environment*.
904	(type_or_decl_base::priv::priv): Adjust.
905	(type_or_decl_base::type_or_decl_base): Remove the default and
906	copy constructor.
907	(type_or_decl_base::{set_environment, operator=})
908	(set_environment_for_artifact): Remove.
909	(type_or_decl_base::get_environment): Adjust.
910	(decl_base::{decl_base, set_name, set_naming_typedef,
911	set_linkage_name}): Adjust.
912	(get_decl_name_for_comparison, strip_typedef)
913	(strip_useless_const_qualification): Adjust.
914	(scope_decl::{scope_decl, add_member_decl, insert_member_decl}):
915	Adjust.
916	(get_generic_anonymous_internal_type_name, get_type_name)
917	(get_name_of_pointer_to_type, get_name_of_reference_to_type)
918	(get_name_of_qualified_type, get_function_type_name)
919	(get_method_type_name, is_void_pointer_type, lookup_basic_type)
920	(lookup_union_type, lookup_union_type_per_location)
921	(lookup_enum_type, lookup_typedef_type, lookup_pointer_type)
922	(lookup_type, lookup_basic_type_per_location)
923	(lookup_basic_type_per_location, lookup_basic_type)
924	(lookup_class_type, lookup_class_types)
925	(lookup_class_type_per_location, lookup_union_type)
926	(lookup_enum_type, lookup_enum_types)
927	(lookup_enum_type_per_location, lookup_typedef_type)
928	(lookup_typedef_type_per_location, maybe_update_types_lookup_map)
929	(maybe_update_types_lookup_map)
930	(synthesize_type_from_translation_unit)
931	(synthesize_function_type_from_translation_unit)
932	(demangle_cplus_mangled_name, type_or_void)
933	(types_defined_same_linux_kernel_corpus_public)
934	(compare_types_during_canonicalization)
935	(type_base::get_canonical_type_for, type_base::type_base)
936	(type_base::get_cached_pretty_representation)
937	(type_decl::type_decl, type_decl::get_qualified_name): Adjust.
938	(scope_type_decl::scope_type_decl)
939	(namespace_decl::namespace_decl, qualified_type_def::build_name)
940	(qualified_type_def::qualified_type_def)
941	(qualified_type_def::get_qualified_name)
942	(qualified_type_def::set_underlying_type)
943	(pointer_type_def::pointer_type_def)
944	(pointer_type_def::set_pointed_to_type)
945	(reference_type_def::reference_type_def)
946	(reference_type_def::set_pointed_to_type)
947	(array_type_def::subrange_type::subrange_type)
948	(array_type_def::array_type_def, array_type_def::update_size)
949	(array_type_def::set_element_type)
950	(array_type_def::append_subranges)
951	(array_type_def::get_qualified_name, enum_has_non_name_change):
952	Adjust.
953	(enum_type_decl::enumerator::priv::env_): Remove this pointer to
954	env.  This is because the enumerator must be copy-able.  As the
955	enumerator doesn't have an env anymore, it can't intern strings.
956	So the enumerator name and qualified name is not going to be
957	interned.  If that incurs a performance hit, we'll reconsider this
958	decision.  For now, it seems to work OK.  As it simplifies things,
959	I am keeping this for now.
960	(enum_type_decl::enumerator::priv::{name, qualified_name}): Make
961	this be string, not interned_string.
962	(enum_type_decl::enumerator::get_environment): Remove.
963	(enum_type_decl::enumerator::priv::priv): Adjust.
964	(enum_type_decl::enumerator::enumerator)
965	(enum_type_decl::enumerator::operator=)
966	(enum_type_decl::enumerator::get_name)
967	(enum_type_decl::enumerator::get_qualified_name)
968	(enum_type_decl::enumerator::set_name): Likewise.
969	(typedef_decl::typedef_decl): Adjust.
970	(var_decl::get_id, var_decl::get_qualified_name): Adjust.
971	(function_type::function_type, method_type::method_type)
972	(function_decl::get_pretty_representation_of_declarator)
973	(function_decl::set_symbol): Likewise.
974	(function_decl::get_id, function_decl::parameter::get_type)
975	(function_decl::parameter::get_type_name)
976	(function_decl::parameter::get_type_pretty_representation)
977	(function_decl::parameter::get_name_id)
978	(class_or_union::class_or_union, class_decl::class_decl)
979	(class_decl::add_base_specifier, union_decl::union_decl)
980	(union_decl::union_decl, template_decl::template_decl)
981	(class_tdecl::class_tdecl)
982	(maybe_cancel_propagated_canonical_type)
983	(dump_classes_being_compared)
984	(dump_fn_types_being_compared, copy_member_function)
985	(maybe_propagate_canonical_type, keep_type_alive)
986	(is_non_canonicalized_type, qualified_name_setter::do_update):
987	Likewise.
988	(equals): Adjust the overloads for var_decl, function_type,
989	class_or_union, class_decl, union_decl.
990	* src/abg-reader.cc (read_context::m_env): Make this be an
991	environment&, not an environment*.
992	(read_context::read_context): Adjust
993	(read_context::set_environment): Remove.
994	(read_context::{get_environment,
995	maybe_check_abixml_canonical_type_stability}): Adjust.
996	(read_corpus_from_input, read_corpus_group_from_native_xml)
997	(read_corpus_group_from_native_xml_file)
998	(read_translation_unit_from_file)
999	(read_translation_unit_from_buffer, read_translation_unit)
1000	(maybe_map_type_with_type_id, build_namespace_decl)
1001	(build_elf_symbol, build_function_parameter, build_function_decl)
1002	(build_function_type, build_enum_type_decl, build_class_decl)
1003	(build_union_decl, build_function_tdecl, build_class_tdecl)
1004	(build_type_tparameter, read_translation_unit_from_istream)
1005	(create_native_xml_read_context, read_corpus_from_native_xml):
1006	Likewise.
1007	* src/abg-symtab-reader.h (symtab::load): Likewise.
1008	* src/abg-symtab-reader.cc (symtab::load): Likewise.
1009	* tests/print-diff-tree.cc (main): Likewise.
1010	* tests/test-abidiff.cc (main): Likewise.
1011	* tests/test-diff-dwarf.cc (main): Likewise.
1012	* tests/test-ir-walker.cc (main): Likewise.
1013	* tests/test-read-ctf.cc (test_task_ctf::perform): Likewise.
1014	* tests/test-symtab.cc (read_corpus): Likewise.
1015	* tools/abicompat.cc (read_corpus, main): Likewise.
1016	* tools/abidiff.cc (main): Likewise.
1017	* tools/abidw.cc (load_corpus_and_write_abixml)
1018	(load_kernel_corpus_group_and_write_abixml, main): Likewise.
1019	* tools/abilint.cc (main): Likewise.
1020	* tools/abipkgdiff.cc (compare, compare_to_self)
1021	(compare_prepared_linux_kernel_packages,  compare_task::perform):
1022	Likewise.
1023	* tools/abisym.cc (main): Likewise.
1024	* tools/kmidiff.cc (main): Likewise.
1025
10262022-11-18  Aleksei Vetrov <vvvvvv@google.com>
1027
1028	symtab: add support for CRC values from __kcrctab
1029	* src/abg-elf-helpers.h (get_crc_for_symbol): Defined new
1030	helper function to extract CRC from ELF symbol.
1031	* src/abg-elf-helpers.cc (get_crc_for_symbol): Implemented this
1032	function with support of old and new CRC values format.
1033	* src/abg-symtab-reader.cc (symtab::load_): Used the new
1034	function when building CRC values map.
1035	Change-Id: I7de5c737d5caaef0c5b7b2ea0d448368889a16be
1036
10372022-11-08  Sam James <sam@gentoo.org>
1038
1039	Use xz as the default tarball compression format
1040	* configure.ac: add dist-xz to AM_INIT_AUTOMAKE.
1041	* Makefile.am: adjust $(TARBALL) to new extension.
1042	* Makefile.am: pass XZ_OPT="-0" for distcheck-fast.
1043
10442022-11-11  Giuliano Procida <gprocida@google.com>
1045
1046	Narrow Linux symbol CRCs to 32 bits
1047	* include/abg-ir.h (elf_symbol::elf_symbol): Change CRC type
1048	from optional<uint64_t> to optional<uint32_t>.
1049	(elf_symbol::create): Likewise.
1050	(elf_symbol::get_crc): Likewise.
1051	(elf_symbol::set_crc): Likewise.
1052	* src/abg-ir.cc (elf_symbol::priv) Change CRC type from
1053	optional<uint64_t> to optional<uint32_t>.
1054	(elf_symbol::priv::priv): Likewise.
1055	(elf_symbol::elf_symbol): Likewise.
1056	(elf_symbol::create): Likewise.
1057	(elf_symbol::get_crc): Likewise.
1058	(elf_symbol::set_crc): Likewise.
1059	* src/abg-reporter-priv.cc (maybe_report_diff_for_symbol):
1060	Change CRC type from optional<uint64_t> to
1061	optional<uint32_t>.
1062	* src/abg-symtab-reader.cc (symtab::load_): Change crc_values
1063	value type from uint64_t to uint32_t.
1064
10652022-11-08  Dodji Seketeli <dodji@redhat.com>
1066
1067	kmidiff: Fix spacing in the help string
1068	* tools/kmidiff.cc (display_usage): Fix spacing.
1069
10702022-10-14  Dodji Seketeli <dodji@redhat.com>
1071
1072	ir: Don't crash when looking at corpus-less translation units
1073	* src/abg-ir.cc ({decl,type}_topo_comp::operator()): Support types
1074	that inherits from an empty corpus.
1075
10762022-10-20  Dodji Seketeli <dodji@redhat.com>
1077
1078	rhbz2114909 - Refer to changed base classes using their non-qualified names
1079	* src/abg-comparison.cc
1080	(class_diff::ensure_lookup_tables_populated): Refer to the added
1081	or removed base class using its qualified name.
1082	* src/abg-ir.cc (class_decl::base_spec::base_spec): Set the
1083	qualified name of the base_spec.
1084	* tests/data/test-abidiff-exit/test-rhbz2114909-report-1.txt: New
1085	reference test output.
1086	* tests/data/test-abidiff-exit/test-rhbz2114909-v{0,1}.o: New
1087	input test binaries.
1088	* tests/data/test-abidiff-exit/test-rhbz2114909-v{0,1}.cc: Source
1089	code of the binaries, above.
1090	* tests/data/Makefile.am: Add the new test materials above to
1091	source distribution.
1092	* tests/test-abidiff-exit.cc (in_out_specs): Add the new tests to
1093	this harness.
1094	* 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.
1095
10962022-10-16  Xiaole He <hexiaole@kylinos.cn>
1097
1098	abg-diff-utils: fix typo in comments
1099	* src/abg-diff-utils.h: fix typo in comments
1100
11012022-10-16  Xiaole He <hexiaole@kylinos.cn>
1102
1103	abg-reader: optimize if construction
1104	* src/abg-reader.cc:
1105
11062022-10-16  Xiaole He <hexiaole@kylinos.cn>
1107
1108	abg-ir: add missing else
1109	* src/abg-ir.cc (bind_function_type_life_time): add missing
1110	else
1111	Tested-by: Xiaole He <hexiaole@kylinos.cn>
1112
11132022-10-12  Dodji Seketeli <dodji@redhat.com>
1114
1115	dwarf-reader: Fix class size setting bug
1116	* src/abg-dwarf-reader.cc (add_or_update_class_type): If we are
1117	looking at a class DIE with children node, if it's advertized as
1118	having non-zero size, then update the size.
1119	* tests/data/test-annotate/libtest23.so.abi: Adjust.
1120	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
1121	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1122	Likewise.
1123	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1124	Likewise.
1125	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1126	Likewise.
1127	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
1128	Likewise.
1129	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
1130	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
1131	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1132	Likewise.
1133	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1134	Likewise.
1135	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1136	Likewise.
1137
11382022-10-10  Dodji Seketeli <dodji@redhat.com>
1139
1140	ir: Properly indent overload of equals() for class_decl
1141	* src/abg-ir.cc (equals): Fix indentation.
1142
11432022-10-10  Dodji Seketeli <dodji@redhat.com>
1144
1145	ir: Fix a wrong comment in canonicalize()
1146	* src/abg-ir.cc (canonicalize): Fix a comment.
1147
11482022-10-10  Dodji Seketeli <dodji@redhat.com>
1149
1150	ir: remove redundant cycle detection code in equals
1151	* src/abg-ir.cc (equals):  In the overload for class_or_union
1152	remove redundant cycle detection code when comparison a decl-only
1153	class to another class.
1154
11552022-10-07  Dodji Seketeli <dodji@redhat.com>
1156
1157	Bug 29650 - Caching class comparison result potentially too early
1158	* src/abg-ir.cc (equal): In the overload of class_or_union do not
1159	cache the result comparing just the data members sub-types of of
1160	classes. In the overload for class_decl, put cycle detection
1161	management code /after/ the call to equals for class_or_union,
1162	because that called function does perform the cycle detection
1163	management as well; otherwise, that introduces an unwarranted
1164	redundancy.  In the overload of equals for union_decl, cache the
1165	result of the comparison.
1166	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
1167	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
1168	Adjust.
1169	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
1170	Adjust.
1171
11722022-10-07  Dodji Seketeli <dodji@redhat.com>
1173
1174	abidiff: add a --debug-tc option
1175	* doc/manuals/abidiff.rst: Add documentation for the new
1176	--debug-tc option.  Fix the existing documentation for
1177	--debug-self-comparison.
1178	* tools/abidiff.cc (options::do_debug_self_comparison): Renamed
1179	options::do_debug into this.
1180	(options::do_debug_type_canonicalization): Add new data member.
1181	(display_usage): Fix help string for the --debug option that is
1182	now --debug-self-comparison.  Also, add a help string for the new
1183	option --debug-tc option.
1184	(main): Adjust use options::do_debug into
1185	options::do_debug_self_comparison.  Call
1186	environment::debug_type_canonicalization() if the user provided
1187	the --debug-tc option.
1188
11892022-10-02  Dodji Seketeli <dodji@redhat.com>
1190
1191	ir: Fix documentation of canonical type propagation
1192	* src/abg-ir.cc (on-the-fly-canonicalization): Enclose the comment
1193	into <pre> html tag to make the ascii-art graph look good.
1194
11952022-10-02  Dodji Seketeli <dodji@redhat.com>
1196
1197	Update website for 2.1 release.
1198	* doc/website/mainpage.txt:
1199
12002022-09-26  Dodji Seketeli <dodji@redhat.com>
1201
1202	Bump version number to 2.2
1203	* configure.ac: Bump version number to 2.2
1204
12052022-09-25  Dodji Seketeli <dodji@redhat.com>
1206
1207	Update NEWS file for 2.1
1208	* NEWS: Update for 2.1.
1209
12102022-09-25  Dodji Seketeli <dodji@redhat.com>
1211
1212	Update ChangeLog for 2.1 release.
1213	* ChangeLog: Update by running "make update-changelog".
1214
12152022-09-24  Dodji Seketeli <dodji@redhat.com>
1216
1217	ir: Avoid cancelling a "confirmed" propagated canonical type
1218	* src/abg-ir-priv.h
1219	(type_base::priv::propagated_canonical_type_confirmed_): Define
1220	new data member.
1221	(type_base::priv::priv): Initialize it.
1222	(type_base::priv::{propagated_canonical_type_confirmed,
1223	set_propagated_canonical_type_confirmed}): Define new member
1224	functions.
1225	(type_base::priv::clear_propagated_canonical_type): Do not clear
1226	the propagated canonical type if it has been confirmed already.
1227	(type_base::priv::confirm_ct_propagation_for_types_dependant_on): Rename
1228	type_base::confirm_ct into this.  Mark the confirmed propagated
1229	types as being confirmed.
1230	(type_base::priv::confirm_ct_propagation): This is now a new member
1231	function that calls
1232	type_base::confirm_ct_propagation_for_types_dependant_on and that
1233	does the book-keeping that was being done in
1234	return_comparison_result.
1235	(type_base::priv::cancel_ct_propagation_for_types_dependant_on):
1236	Renamed type_base::priv::cancel_ct_propagation in this.
1237	(type_base::priv::cancel_ct_propagation): In this new one, call
1238	type_base::priv::cancel_ct_propagation_for_types_dependant_on. Perform here
1239	the book-keeping that was being done in return_comparison_result.
1240	Also, do not cancel a confirmed propagated canonical type.
1241	(type_base::priv::add_to_types_with_non_confirmed_propagated_ct):
1242	Define new member function.
1243	* src/abg-ir.cc (return_comparison_result): Consider only types
1244	with non-confirmed propagated canonical types for the
1245	non-confirmed type queue.  Also, only sub-types can be considered
1246	non-confirmed.  Split out some of the book-keeping into
1247	type_base::priv::{confirm_ct_propagation, cancel_ct_propagation}
1248	and call these instead.  Confirm the propagated canonical types of
1249	all types that remain after the comparison is fully done and is
1250	successful.
1251	(canonicalize): Assert the rule "The result of canonicalizing must
1252	always been a confirmed canonical type".
1253
12542022-09-22  Dodji Seketeli <dodji@redhat.com>
1255
1256	dwarf-reader: Accept SHT_PROGBITS sections in .dynamic segment
1257	* src/abg-dwarf-reader.cc (get_soname_of_elf_file): Accept
1258	SHT_PROGBITS sections in the dynamic segment.
1259
12602022-09-22  Dodji Seketeli <dodji@redhat.com>
1261
1262	ir: Support cloning data members of unions
1263	* src/abg-ir.cc (var_decl::clone): Support cloning data members
1264	for unions.
1265
12662022-09-22  Dodji Seketeli <dodji@redhat.com>
1267
1268	Better support for golang programs
1269	* src/abg-dwarf-reader.cc (die_qualified_type_name): Don't look at
1270	the underlying type unnecessarily.
1271	(build_function_type): Look for the WIP type first to avoid
1272	infinite recursion.
1273	* src/abg-ir.cc
1274	(function_decl::get_pretty_representation_of_declarator): A
1275	parameter can have a function type.
1276	* src/abg-writer.cc (write_elf_symbol_reference)
1277	(write_function_decl): Escape symbol names, function names and
1278	symbol references.
1279
12802022-07-19  Dodji Seketeli <dodji@redhat.com>
1281
1282	comparison: Ensure that fn parms with basic types can't be redundant
1283	* include/abg-comparison.h (peel_fn_parm_diff)
1284	(peel_typedef_qualified_type_or_parameter_diff): Declare ...
1285	* src/abg-comparison.cc (peel_fn_parm_diff)
1286	(peel_typedef_qualified_type_or_parameter_diff): ... new
1287	functions.
1288	(has_basic_type_change_only): Look through function parameters,
1289	typedefs and qualified types.
1290	* src/abg-default-reporter.cc (default_reporter::report): Remove
1291	the temporary removal of the redundant categorisation.
1292	Redundant-ness should have been handled by the
1293	redundancy_marking_visitor pass.
1294	* tests/data/test-diff-filter/test-PR29387-report.txt: Reference
1295	test output.
1296	* tests/data/test-diff-filter/test-PR29387-v{0,1}.c: Source of the
1297	input tests.
1298	* tests/data/test-diff-filter/test-PR29387-v{0,1}.o: Input test
1299	binaries.
1300	* tests/data/Makefile.am: Add the new test material above to the
1301	source distribution.
1302	* tests/test-diff-filter.cc (in_out_specs): Add the test binaries
1303	above to the test harness.
1304
13052022-09-21  Dodji Seketeli <dodji@redhat.com>
1306
1307	test-read-ctf: Update test output files after typedef canonicalization
1308	* tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi:
1309	Adjust.
1310	* tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi:
1311	Likewise.
1312	* tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi:
1313	Likewise.
1314	* tests/data/test-read-ctf/test-linux-module.abi: Likewise.
1315	* tests/data/test-read-ctf/test1.so.abi: Likewise.
1316	* tests/data/test-read-ctf/test1.so.hash.abi: Likewise.
1317	* tests/data/test-read-ctf/test2.so.abi: Likewise.
1318	* tests/data/test-read-ctf/test2.so.hash.abi: Likewise.
1319	* tests/data/test-read-ctf/test5.o.abi: Likewise.
1320	* tests/data/test-read-ctf/test7.o.abi: Likewise.
1321
13222022-09-13  Dodji Seketeli <dodji@redhat.com>
1323
1324	ir, writer: Go back to canonicalizing typedefs in the IR
1325	* include/abg-fwd.h (lookup_decl_only_class_types): Declare new
1326	function.
1327	* src/abg-ir-priv.h (class_or_union::priv::member_types_): Move
1328	this data member into scope_decl::priv.
1329	(class_or_union::priv::priv): Do not take member types.
1330	* include/abg-ir.h (sort_type): Likewise.
1331	(namespaces_type): Add new typedefs.
1332	(scope_decl::insert_member_decl): Make this be non-virtual.
1333	(scope_decl::{insert_member_type, add_member_type,
1334	remove_member_type, get_member_types, get_sorted_member_types,
1335	find_member_type}): Move these methods here from ...
1336	(class_or_union::{insert_member_type, add_member_type,
1337	remove_member_type, get_member_types, get_sorted_member_types,
1338	find_member_type}): ... here.
1339	(class_or_union::insert_member_decl): Make this be non-virtual.
1340	(class_decl::insert_member_decl): Make this be non-virtual.
1341	(class_or_union::get_sorted_member_types): Declare ...
1342	* src/abg-dwarf-reader.cc (add_or_update_class_type): Do not add a
1343	member type to the class type being built if it already exists
1344	there.
1345	(build_ir_node_from_die): If a scope (namespace, union or class)
1346	already has a typedef, do not create a new one to add it there
1347	again.
1348	* src/abg-ir.cc (equals): In the overload for typedefs take into
1349	account the name of typedefs again.
1350	(lookup_decl_only_class_types): Define new function.
1351	(compare_using_locations): Define new static function that has
1352	been factorized out of ...
1353	(decl_topo_comp::operator()): ... here.  Also, two decls originate
1354	from an abixml corpus, compare them only using their artificial
1355	locations, meaning make them keep the same order as the order of
1356	the original abixml file.
1357	(type_top_comp::operator()): Likewise.
1358	(sort_types): Define new function.
1359	(scope_decl::priv::member_types_): Move this here from
1360	class_or_union::priv.
1361	(scope_decl::priv::sorted_member_types_): Define new data member.
1362	(scope_decl::{get_member_types, find_member_type,
1363	insert_member_type, add_member_type, remove_member_type}): Move
1364	these methods here from class_or_union.
1365	(scope_decl::get_sorted_member_types): Define new method.
1366	(is_non_canonicalized_type): Canonicalize typedefs.
1367	(lookup_type_in_map): Allow this to look through decl-only types
1368	to get their definition.  Otherwise, if only a decl-only was
1369	found, return it.
1370	(maybe_update_types_lookup_map<class_decl>): Allow adding
1371	decl-only class types to the map of classes held per TU and per
1372	corpus.
1373	(class_or_union::{class_or_union, add_member_decl,
1374	has_no_member}): Adjust.
1375	(class_or_union::{insert_member_type, add_member_type,
1376	add_member_type, remove_member_type, get_member_types,
1377	get_sorted_member_types, find_member_type}): Move these methods to
1378	scope_decl.
1379	({class_decl, class_or_union}::insert_member_decl): Remove the
1380	"before" parameter as it was not used anymore due to the re-use of
1381	the scope_decl::add_member that handles member types.
1382	* src/abg-reader.cc (read_corpus_group_from_input)
1383	(create_native_xml_read_context): Set the corpus origin.
1384	* src/abg-writer.cc (write_context::{m_nc_type_id_map,
1385	m_emitted_non_canonicalized_type_set,
1386	m_referenced_non_canonicalized_types_set}): Remove these maps that
1387	hold stuff for non-canonicalized types.
1388	(write_context::{type_has_existing_id, get_id_for_type,
1389	clear_type_id_map, has_non_emitted_referenced_types,
1390	record_type_as_referenced, type_is_referenced,
1391	record_type_as_emitted, type_is_emitted, clear_referenced_types,
1392	write_referenced_types, write_canonical_type_ids}): Adjust these
1393	as the maps for non-canonicalized types are gone.
1394	(write_context::{get_referenced_non_canonicalized_types,
1395	get_emitted_non_canonicalized_type_set}): Remove these methods.
1396	(write_decl_in_scope)
1397	(write_class_decl_opening_tag, write_union_decl_opening_tag)
1398	(write_union_decl): Adjust comments.
1399	(write_class_decl): Sort member types.  Also, When emitting a
1400	decl-only class, get all of the decl-only classes of the same name
1401	declared in several other TUs and emit all their member types into
1402	this decl-only class just once.  This reduces redundancies and
1403	sorting instabilities because for libabigail, all decl-only
1404	classes of a given name are equal, even if they have member types.
1405	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
1406	* tests/data/test-annotate/libtest23.so.abi: Likewise.
1407	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
1408	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
1409	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
1410	Likewise.
1411	* tests/data/test-annotate/test0.abi: Likewise.
1412	* tests/data/test-annotate/test1.abi: Likewise.
1413	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
1414	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
1415	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
1416	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
1417	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1418	Likewise.
1419	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1420	Likewise.
1421	* tests/data/test-annotate/test2.so.abi: Likewise.
1422	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1423	Likewise.
1424	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
1425	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt:
1426	Likewise.
1427	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
1428	Likewise.
1429	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
1430	Likewise.
1431	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
1432	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise.
1433	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
1434	Likewise.
1435	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
1436	Likewise.
1437	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
1438	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
1439	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
1440	Likewise.
1441	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
1442	* tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise.
1443	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
1444	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
1445	Likewise.
1446	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
1447	* tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise.
1448	* tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise.
1449	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
1450	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
1451	* tests/data/test-read-dwarf/test0.abi: Likewise.
1452	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
1453	* tests/data/test-read-dwarf/test1.abi: Likewise.
1454	* tests/data/test-read-dwarf/test1.hash.abi: Likewise.
1455	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
1456	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
1457	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
1458	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
1459	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
1460	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
1461	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
1462	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
1463	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1464	Likewise.
1465	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1466	Likewise.
1467	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
1468	* tests/data/test-read-dwarf/test2.so.hash.abi: Likewise.
1469	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1470	Likewise.
1471	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
1472	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1473	Likewise.
1474	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
1475	* tests/data/test-read-write/test18.xml: Likewise.
1476	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
1477	Likewise.
1478	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
1479	Likewise.
1480
14812022-09-08  Dodji Seketeli <dodji@redhat.com>
1482
1483	Fix IR comparison result caching and canonical type propagation tracking
1484	* src/abg-ir-priv.h (environment::priv::recursive_types_): Define
1485	new data member.
1486	(environment::priv::cache_type_comparison_result): Cache results
1487	only non-recursive and not dependant types, or when the result is
1488	"false".  In all these cases, the result, once cached, will not
1489	change.
1490	(environment::priv::mark_dependant_types_compared_until): Mark
1491	types as recursive at the same time others are marked as
1492	dependant.
1493	(environment::priv::{is_recursive_type, set_is_not_recursive}):
1494	Define new member functions.
1495	(environment::priv::{confirm_ct_propagation,
1496	cancel_ct_propagation}): Confirming canonical type propagation
1497	should happen for recursive types as well as their dependant
1498	types.
1499	* src/abg-ir.cc (return_comparison_result): Keep up with the
1500	book-keeping at all time when type canonicalization process is
1501	on-going.  Whenever we expect types that depends on recursive
1502	types, expect recursive types too, obviously.
1503	(type_base::get_canonical_type_for): Do not erase the comparison
1504	result cache between the canonicalization of two different types.
1505	(is_comparison_cycle_detected)
1506	(mark_types_as_being_compared, unmark_types_as_being_compared):
1507	Define new overloads for class_decl;
1508	(equals): In the overloads for class_decl and union_decl, use
1509	RETURN_COMPARISON_RESULT and mark_types_as_being_compared without
1510	casting it to class_or_union.
1511	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
1512	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
1513	Adjust.
1514	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
1515	Adjust.
1516	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
1517	Adjust.
1518	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
1519	Adjust.
1520	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
1521	Adjust.
1522
15232022-09-02  Dodji Seketeli <dodji@redhat.com>
1524
1525	Allow restricting analyzed decls to exported symbols
1526	* doc/manuals/tools-use-libabigail.txt: New doc text.
1527	* doc/manuals/Makefile.am: Add the new tools-use-libabigail.rst
1528	tool to the source distribution.
1529	* doc/manuals/abidiff.rst: Include the new
1530	tools-use-libabigail.rst.  Document the --exported-interfaces-only
1531	and --allow-non-exported-interfaces.
1532	* doc/manuals/abidw.rst: Likewise.
1533	* doc/manuals/abipkgdiff.rst: Likewise.
1534	* doc/manuals/kmidiff.rst: Likewise.
1535	* include/abg-ir.h
1536	(environment::{user_set_analyze_exported_interfaces_only,
1537	analyze_exported_interfaces_only}): Declare new accessors.
1538	* src/abg-ir.cc
1539	(environment::{user_set_analyze_exported_interfaces_only,
1540	analyze_exported_interfaces_only}): Define new accessors.
1541	* src/abg-dwarf-reader.cc (die_is_variable_decl)
1542	(die_is_function_decl): Define new static functions.
1543	(read_context::is_decl_die_with_exported_symbol): Define new
1544	member function.
1545	(read_context::get_{function,variable}_address): Const-ify the
1546	Dwarf_Die* parameter.
1547	(build_translation_unit_and_add_to_ir): If the user asks to
1548	analyze exported interfaces only,  the analyze only interfaces
1549	that have exported ELF symbols.
1550	(read_debug_info_into_corpus): If we are looking at the Linux
1551	Kernel, then only analyze exported interfaces unless the user asks
1552	otherwise.
1553	* src/abg-ir-priv.h
1554	(environment::priv::analyze_exported_interfaces_only_): Define new
1555	data member.
1556	* tools/abidiff.cc (options::exported_interfaces_only): Define new
1557	data member.
1558	(display_usage): Add new help strings for
1559	--exported-interfaces-only and --allow-non-exported-interfaces.
1560	(parse_command_line): Parse the new options
1561	--exported-interfaces-only and --allow-non-exported-interfaces.
1562	(main): Pass the value of opts.exported_interfaces_only to the
1563	environment.
1564	* tools/abidw.cc (options::exported_interfaces_only): Define new
1565	data member.
1566	(display_usage): Add new help strings for
1567	--exported-interfaces-only and --allow-non-exported-interfaces.
1568	(parse_command_line): Parse the new options
1569	(load_corpus_and_write_abixml)
1570	(load_kernel_corpus_group_and_write_abixml): Pass the value of
1571	opts.exported_interfaces_only onto the environment.
1572	* tools/abipkgdiff.cc (options::exported_interfaces_only): Define new
1573	data member.
1574	(display_usage): Add new help strings for
1575	--exported-interfaces-only and --allow-non-exported-interfaces.
1576	(parse_command_line): Parse the new options
1577	(compare_task::perform, self_compare_task::perform): Pass the
1578	value of opts.exported_interfaces_only onto the environment.
1579	(compare_prepared_linux_kernel_packages): Likewise.
1580	* tools/kmidiff.cc(options::exported_interfaces_only): Define new
1581	data member.
1582	(display_usage): Add new help strings for
1583	--exported-interfaces-only and --allow-non-exported-interfaces.
1584	(parse_command_line): Parse the new options
1585	(main): Pass the value of opts.exported_interfaces_only onto the
1586	environment.
1587
15882022-09-01  Dodji Seketeli <dodji@redhat.com>
1589
1590	dwarf-reader: Revamp the canonical type DIE propagation algorithm
1591	* src/abg-ir-priv.h (enum comparison_result): Define new enum.
1592	* src/abg-dwarf-reader.cc (type_comparison_result_to_be_cached)
1593	(maybe_cache_type_comparison_result)
1594	(get_cached_type_comparison_result)
1595	(maybe_get_cached_type_comparison_result)
1596	(maybe_propagate_canonical_type, propagate_canonical_type)
1597	(return_comparison_result): Define new static functions.
1598	(has_offset_pair, insert_offset_pair, erase_offset_pair)
1599	(have_offset_pair_in_common): Remove static functions.
1600	(read_context::die_comparison_visits_): Remove data member.  The
1601	concept supported by this data member is now replaced by caching
1602	the results of comparing aggregate types, especially those that
1603	are not yet canonicalized.  This essentially prevents the same
1604	aggregate type pair to be compared again and again.
1605	(read_context::{die_comparison_results_, compare_count_,
1606	canonical_propagated_count_, cancelled_propagation_count_}): New
1607	data members.
1608	(read_context::initialize): Initialize the new data members
1609	compare_count_, canonical_propagated_count_,
1610	cancelled_propagation_count_ of integral type.
1611	(read_context::{erase_canonical_die_offset}): New member
1612	functions.
1613	(struct offset_pairs_stack_type): Define new type.
1614	(die_offset): Remove.
1615	(is_canon_type_to_be_propagated_tag): Add union types to the set
1616	of types for which canonical type propagation might occur.
1617	(is_type_die_to_be_canonicalized): Add function types and array
1618	types to the types to be canonicalized.
1619	(ABG_RETURN): Change this macro to consider
1620	COMPARISON_RESULT_DIFFERENT rather  than the "false" boolean.
1621	Also, it uses the new return_comparison_result function.
1622	(ABG_RETURN_FALSE): Likewise, use the new return_comparison_result
1623	function.
1624	(SET_RESULT_TO_FALSE): Make this return
1625	COMPARISON_RESULT_DIFFERENT.
1626	(SET_RESULT_TO, RETURN_IF_COMPARISON_CYCLE_DETECTED): Define new
1627	macros.
1628	(compare_dies): Make this return comparison_result rather than
1629	just a bool.  This is also the core of the overhaul of the
1630	canonical DIE propagation algorithm.  The algorithm is now similar
1631	to the one implemented in the equals function for class_or_union
1632	types in abg-ir.cc.  It's described in the comment that starts
1633	with '@defgroup OnTheFlyCanonicalization' in abg-ir.cc.  The type
1634	of the aggregates_being_compared parameter is now
1635	offset_pairs_stack_type in parameter.  No more need for the
1636	redundant_aggregates_being_compared parameter.  The new
1637	offset_type that also encapsulates the source of the offset is now
1638	used in lieu of the Dwarf_Off type.  Results of comparing
1639	aggregates being compared are now cached.  When comparing
1640	aggregates, use the RETURN_IF_COMPARISON_CYCLE_DETECTED to return
1641	early if a cycle is detected.  The invocation of the ABG_RETURN
1642	macro (especially the call to return_comparison_result) is where
1643	the book keeping for canonical types propagation takes place, so
1644	remove the explicit code that was handling that from the end of
1645	this function.
1646	(read_debug_info_into_corpus): Print statistics about the number
1647	of aggregates compared and canonical-type-propagated.
1648	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
1649	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
1650	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
1651	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1652	Likewise.
1653	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1654	Likewise.
1655	* tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt:
1656	Likewise.
1657	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
1658	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
1659	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
1660	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
1661	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
1662	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
1663	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1664	Likewise.
1665	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1666	Likewise.
1667	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1668	Likewise.
1669	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
1670
16712022-07-20  Mark Wielaard <mark@klomp.org>
1672
1673	Handle zero sh_entsize in get_soname_of_elf_file
1674	* src/abg-dwarf-reader.cc (get_soname_of_elf_file):
1675	Make sure entsize is non-zero before use.
1676	https://sourceware.org/bugzilla/show_bug.cgi?id=29346
1677
16782022-09-19  Xiaole He via Libabigail <libabigail@sourceware.org>
1679
1680	abg-reader: fix comment of function
1681	* src/abg-reader.cc (walk_xml_node_to_map_type_ids): fix comment
1682
16832022-09-20  Dodji Seketeli <dodji@redhat.com>
1684
1685	Fix butchered tests/data/Makefile.am
1686	* tests/data/Makefile.am: Fix test file paths.
1687
16882022-09-19  Dodji Seketeli <dodji@redhat.com>
1689
1690	test-annotate: Don't emit architecture data
1691	* tests/test-annotate.cc (main): Add the --no-architecture option
1692	to abidw.
1693	* tests/data/test-annotate/PR29443-missing-xx.o.annotated.abi:
1694	Adjust.
1695	* tests/data/test-annotate/libtest23.so.abi: Likewise.
1696	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
1697	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
1698	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
1699	Likewise.
1700	* tests/data/test-annotate/test0.abi: Likewise.
1701	* tests/data/test-annotate/test1.abi: Likewise.
1702	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
1703	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
1704	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
1705	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
1706	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1707	Likewise.
1708	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1709	Likewise.
1710	* tests/data/test-annotate/test2.so.abi: Likewise.
1711	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1712	Likewise.
1713	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
1714	* tests/data/test-annotate/test3.so.abi: Likewise.
1715	* tests/data/test-annotate/test4.so.abi: Likewise.
1716	* tests/data/test-annotate/test5.o.abi: Likewise.
1717	* tests/data/test-annotate/test6.so.abi: Likewise.
1718	* tests/data/test-annotate/test7.so.abi: Likewise.
1719	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi:
1720	Likewise.
1721
17222022-09-19  Dodji Seketeli <dodji@redhat.com>
1723
1724	Bug PR29443 - Global variables not emitted to abixml in some cases
1725	* src/abg-ir.cc (var_decl::get_pretty_representation): Always use
1726	qualified name of vars in an anonymous scope for internal
1727	purposes.
1728	* tests/data/test-annotate/PR29443-missing-xx.o.annotated.abi: New
1729	reference test output.
1730	* tests/test-annotate.cc (in_out_specs): Add the above to the test
1731	harness.
1732	* tests/data/test-read-dwarf/PR29443-missing-xx.cc: New source
1733	code for the test.
1734	* tests/data/test-read-dwarf/PR29443-missing-xx.o: New test input
1735	binary.
1736	* tests/data/test-read-dwarf/PR29443-missing-xx.o.abi: New test
1737	reference output.
1738	* tests/data/Makefile.am: Add the new test material to source
1739	distribution.
1740	* tests/test-read-dwarf.cc (in_out_specs): Add the above to the
1741	test harness.
1742
17432022-09-07  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
1744
1745	ctf-reader: Lookup debug info for symbols in a non default archive member
1746	* src/abg-ctf-reader.cc (lookup_symbol_in_ctf_archive): New function.
1747	(process_ctf_archive): Use `lookup_symbol_in_ctf_archive'.
1748
17492022-06-28  Ben Woodard via Libabigail <libabigail@sourceware.org>
1750
1751	Bug 28669 - Increment Library version
1752	* configure.ac: Define the variables libabigail_so_{current,
1753	revision, age}.  These are to be adjusted after each releases
1754	depending on how the compatibility status of the libabigail's
1755	code.
1756	* src/Makefile.am: Add -version-info
1757	$(LIBABIGAIL_SO_CURRENT):$(LIBABIGAIL_SO_REVISION):$(LIBABIGAIL_SO_AGE)
1758	to LDFLAGS.
1759
17602022-09-01  Dodji Seketeli <dodji@redhat.com>
1761
1762	dwarf-reader: Simplify the canonicalization decision of types added to IR
1763	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Remove
1764	the overload that takes a Dwarf_Die* parameter.
1765	(operator++(die_source& source)): Likewise.
1766	(read_context::{types_to_canonicalize_,
1767	alt_types_to_canonicalize_,
1768	type_unit_types_to_canonicalize_}): Remove these data members
1769	of type vector<Dwarf_Off>.  (read_context::initialize): Remove
1770	invocations to alt_types_to_canonicalize_.clear(),
1771	type_unit_types_to_canonicalize_.clear(), and
1772	extra_types_to_canonicalize_.clear().
1773	(read_context::extra_types_to_canonicalize_): Rename this into
1774	read_context::types_to_canonicalize_, of type
1775	vector<type_base_sptr>.
1776	(read_context::types_to_canonicalize): Remove these member
1777	functions that take a parameter of type die_source.
1778	(read_context::extra_types_to_canonicalize): Rename this
1779	function into types_to_canonicalize.  It returns a type const
1780	vector<type_base_sptr>&.
1781	(read_context::schedule_type_for_late_canonicalization):
1782	Remove this overload that takes a type const Dwarf_Die*.  In
1783	the overload that takes a parameter const type_base_sptr
1784	however, rename the invocation to
1785	extra_types_to_canonicalize_.push_back(t) into
1786	types_to_canonicalize_.push_back(t).
1787	(read_context::canonicalize_types_scheduled): This doesn't
1788	take a die_source parameter anymore.  It now only cycles
1789	through the types retrieved by types_to_canonicalize() to
1790	canonicalize them.
1791	(read_context::add_late_canonicalized_types_stats): Remove the
1792	die_source parameter.  Use types_to_canonicalize().
1793	(read_context::perform_late_type_canonicalizing): Just call
1794	read_context::canonicalize_types_scheduled().
1795	(build_ir_node_from_die): Adjust calls to maybe_canonicalize_type.
1796	Also, really canonicalize the function type when a function decl is
1797	constructed.
1798	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
1799	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
1800	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1801	Likewise.
1802	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
1803	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
1804	Likewise.
1805	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
1806	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
1807	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
1808	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
1809	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
1810	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1811	Likewise.
1812	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
1813
18142022-09-02  Dodji Seketeli <dodji@redhat.com>
1815
1816	ir: translation_unit::is_empty should work without environment.
1817	* src/abg-ir.cc (translation_unit::is_empty): If there is no
1818	global scope, then we know its empty.  No need to create one.
1819
18202022-09-01  Dodji Seketeli <dodji@redhat.com>
1821
1822	ir: Don't overdo canonical type propagation control when comparing classes
1823	* src/abg-ir.cc (equals): In the overload for const class_decl&,
1824	do not cancel the propagated canonical type if the propagation is
1825	not the result of invoking the equals overload for class_or_union.
1826
18272022-09-05  Dodji Seketeli <dodji@redhat.com>
1828
1829	Add test-abidiff-exit/ld-2.28-21{0,1}.so to source distribution
1830	* tests/data/Makefile.am: Add the new files to source
1831	distribution.  Also, add the new
1832	test-abidiff-exit/ld-2.28-21x.so.sources.txt.
1833	* tests/data/test-abidiff-exit/ld-2.28-21x.so.sources.txt: New
1834	file describing where the sources are.
1835
18362022-08-25  Giuliano Procida <gprocida@google.com>
1837
1838	abidw: resolve declaration-only enums the same as classes
1839	* src/abg-dwarf-reader.cc
1840	(read_context::resolve_declaration_only_enums): Use an ordered
1841	map to ensure TUs are always considered in the same order and
1842	so improve ABI XML stability. Given multiple possible
1843	definitions for a enum declaration, check to see if they are
1844	equal and resolve the declaration to the first definition if
1845	so.
1846
18472022-08-25  Giuliano Procida <gprocida@google.com>
1848
1849	abidw: remove always true test in resolve_declaration_only_classes
1850	* src/abg-dwarf-reader.cc
1851	(read_context::resolve_declaration_only_classes): Remove
1852	tautological conditional.
1853
18542022-08-25  Giuliano Procida <gprocida@google.com>
1855
1856	abidw: fix --stats output for resolved classes and enums
1857	* src/abg-dwarf-reader.cc
1858	(read_context::resolve_declaration_only_classes): Fix
1859	conditional logic so that showing stats includes the first
1860	unresolved type.
1861	(read_context::resolve_declaration_only_enums): Likewise.
1862
18632022-08-15  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
1864
1865	ctf-reader: looks for debug information in out-of-tree modules
1866	* src/abg-ctf-reader.cc (process_ctf_archive, read_corpus
1867	slurp_elf_info): Avoid looking for `vmlinux.ctfa' when we aren't
1868	processing a `cur_corpus_group_'. So CTF info is embedded in the
1869	`.ko' file.
1870	* tests/data/Makefile.am: Add test inputs and expected files.
1871	* tests/data/test-read-ctf/test-linux-module.{ko,c,abi}: Add new
1872	test input and reference kABI.
1873	* tests/test-read-ctf.cc: Add new testcase.
1874
18752022-08-26  Dodji Seketeli <dodji@redhat.com>
1876
1877	dwarf-reader: Better handle the absence of a die->parent map
1878	* src/abg-dwarf-reader.cc (get_scope_for_die): Consider that in
1879	the absence of the DIE->PARENT map, all decls are in the global.
1880	namespace.
1881	* tests/data/test-abidiff-exit/ld-2.28-210.so: New test.
1882	* tests/data/test-abidiff-exit/ld-2.28-211.so: Likewise.
1883	* tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt: New reference test output.
1884	* tests/test-abidiff-exit.cc (in_out_specs): Add the test above to
1885	the harness.
1886
18872022-08-29  Dodji Seketeli <dodji@redhat.com>
1888
1889	Update test-read-ctf reference output
1890	* tests/data/test-read-ctf/test-PR26568-1.o.abi: Adjust.
1891	* tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise.
1892	* tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi:
1893	Likewise.
1894	* tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi:
1895	Likewise.
1896	* tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise.
1897	* tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise.
1898	* tests/data/test-read-ctf/test-callback2.abi: Likewise.
1899	* tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi:
1900	Likewise.
1901	* tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi:
1902	Likewise.
1903	* tests/data/test-read-ctf/test-list-struct.abi: Likewise.
1904	* tests/data/test-read-ctf/test0.abi: Likewise.
1905	* tests/data/test-read-ctf/test0.hash.abi: Likewise.
1906	* tests/data/test-read-ctf/test1.so.abi: Likewise.
1907	* tests/data/test-read-ctf/test1.so.hash.abi: Likewise.
1908	* tests/data/test-read-ctf/test7.o.abi: Likewise.
1909	* tests/data/test-read-ctf/test9.o.abi: Likewise.
1910
19112022-08-19  Dodji Seketeli <dodji@redhat.com>
1912
1913	ir: Don't consider different int types of same kind and size as equivalent
1914	* src/abg-ir.cc (equals): In the overload for type_decl, do not
1915	consider int types of the same type as being equivalent by
1916	overlooking their long and short modifiers.
1917	* tests/data/test-annotate/libtest23.so.abi: Adjust.
1918	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
1919	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
1920	* tests/data/test-annotate/test0.abi: Likewise.
1921	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
1922	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1923	Likewise.
1924	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1925	Likewise.
1926	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1927	Likewise.
1928	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
1929	Likewise.
1930	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
1931	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
1932	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
1933	Likewise.
1934	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
1935	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
1936	Likewise.
1937	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
1938	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
1939	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
1940	* tests/data/test-read-dwarf/test0.abi: Likewise.
1941	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
1942	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
1943	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
1944	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
1945	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
1946	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
1947	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1948	Likewise.
1949	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1950	Likewise.
1951	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1952	Likewise.
1953	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1954	Likewise.
1955	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
1956	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
1957	Likewise.
1958	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
1959	Likewise.
1960
19612022-07-24  Dodji Seketeli <dodji@redhat.com>
1962
1963	writer: Make sorting referenced typedefs types stable in abixml
1964	* src/abg-writer.cc (read_context::type_ptr_cmp::operator()): In
1965	the less-than operator the type pointer comparison functor, use
1966	the non-internal pretty representation of types for sorting
1967	purposes.
1968	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1969	Adjust
1970	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1971	Likewise.
1972
19732022-07-22  Dodji Seketeli <dodji@redhat.com>
1974
1975	ir: Consider integral types of same kind and size as equivalent
1976	* include/abg-fwd.h (is_integral_type): Declare new function.
1977	* include/abg-ir.h (type_decl::get_qualified_name): Add a
1978	declaration of an implementation of the virtual interface
1979	get_qualified_name.
1980	* src/abg-ir-priv.h (integral_type::set_modifiers): Define a new
1981	setter.
1982	(integral_type::to_string): Add an "internal" flag.
1983	* src/abg-ir.cc (operator~, operator&=): Declare
1984	new operators.
1985	(get_internal_integral_type_name): Define new static function.
1986	(decl_base::priv::{temporary_internal_qualified_name_,
1987	internal_qualified_name_}): Define two new data members.
1988	(get_type_name): For internal name of integral types, use the new
1989	get_internal_integral_type_name function.
1990	(is_integral_type): Define new function.
1991	(integral_type::set_modifiers): Define new member function.
1992	(operator|, operator&): Fix some indentation.
1993	(operator~, operator&=): Define new operators.
1994	(parse_integral_type): Fix the logic of this function.  Namely, it
1995	wasn't handling parsing "long long" correctly.
1996	(integral_type::to_string): Add an "internal" flag.
1997	(equals): In the overload for type_decl, do not take the short,
1998	long and long long into account when comparing integral types of
1999	the same size.
2000	(type_decl::get_qualified_name): Define new method.
2001	(type_decl::get_pretty_representation): For internal name of
2002	integral types, use the new get_internal_integral_type_name
2003	function.
2004	({decl,type}_topo_comp::operator()): Use the non-internal pretty
2005	representation of decls/types for sorting purpose.
2006	* src/abg-reader.cc (build_type_decl): We don't expect the
2007	integral type name from abixml to the same as the name of the
2008	parsed integral type, as the abixml file can be old and have an
2009	old format.
2010	* tests/data/test-annotate/libtest23.so.abi: Adjust.
2011	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
2012	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust.
2013	* tests/data/test-annotate/test0.abi: Adjust.
2014	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
2015	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
2016	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
2017	Adjust.
2018	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
2019	Adjust.
2020	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
2021	Adjust.
2022	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
2023	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
2024	Adjust.
2025	* tests/data/test-diff-filter/test41-report-0.txt: Adjust.
2026	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
2027	Adjust.
2028	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
2029	Adjust.
2030	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
2031	Adjust.
2032	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
2033	Adjust.
2034	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
2035	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust.
2036	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
2037	Adjust.
2038	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
2039	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
2040	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
2041	* tests/data/test-read-dwarf/test-PR26568-1.o.abi: Adjust.
2042	* tests/data/test-read-dwarf/test-PR26568-2.o.abi: Adjust.
2043	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Adjust.
2044	* tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust.
2045	* tests/data/test-read-dwarf/test0.abi: Adjust.
2046	* tests/data/test-read-dwarf/test0.hash.abi: Adjust.
2047	* tests/data/test-read-dwarf/test1.hash.abi: Adjust.
2048	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
2049	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
2050	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
2051	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
2052	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
2053	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
2054	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
2055	Adjust.
2056	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
2057	Adjust.
2058	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
2059	Adjust.
2060	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
2061	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
2062	Adjust.
2063	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
2064	* tests/data/test-read-write/test22.xml: Adjust.
2065	* tests/data/test-read-write/test23.xml: Adjust.
2066	* tests/data/test-read-write/test28-without-std-fns-ref.xml: Adjust.
2067	* tests/data/test-read-write/test28-without-std-vars-ref.xml: Adjust.
2068
20692022-07-22  Dodji Seketeli <dodji@redhat.com>
2070
2071	dwarf-reader: Remove redundant qualifiers from qualified types
2072	* include/abg-fwd.h (strip_redundant_quals_from_underyling_types):
2073	Declare new function.
2074	* include/abg-ir.h (operator&=): Declare new binary operator for
2075	qualified_type_def::CV and ...
2076	* src/abg-ir.cc (+operator&=): ... define it here.
2077	(strip_redundant_quals_from_underyling_types): Define new function
2078	and ...
2079	* src/abg-dwarf-reader.cc (maybe_strip_qualification): ... Use it
2080	here.
2081	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt:
2082	Adjust.
2083
20842022-07-22  Dodji Seketeli <dodji@redhat.com>
2085
2086	ir: Disambiguate sorting of array element types
2087	* src/abg-ir.cc (get_type_representation): In the overload for
2088	array_type_def, use qualified names for element types.
2089	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: Adjust.
2090	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
2091	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
2092	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
2093	Adjust.
2094	* tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Adjust.
2095
20962022-07-19  Dodji Seketeli <dodji@redhat.com>
2097
2098	ir: Make pointers name stable wrt decl-only-ness of pointed-to types
2099	* src/abg-ir.cc (look_through_decl_only): New overload for
2100	type_base.
2101	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
2102
21032022-07-18  Dodji Seketeli <dodji@redhat.com>
2104
2105	tests-diff-{filter,pkg,pkg-ctf}: Fix tests broken by the previous commit
2106	* tests/data/test-diff-filter/test41-report-0.txt: Adjust.
2107	* tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt:
2108	Adjust.
2109	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
2110	Adjust.
2111	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
2112	Adjust.
2113
21142022-07-18  Dodji Seketeli <dodji@redhat.com>
2115
2116	dwarf-reader: Support DWARF incomplete class types
2117	* src/abg-dwarf-reader.cc
2118	(read_context::resolve_declaration_only_classes): Do not avoid
2119	comparing ODR-relevant classes.
2120	(add_or_update_class_type): Detect incomplete classes and treat
2121	them as decl-only types.  They'll be resolved to their proper
2122	complete types later, by
2123	read_context::resolve_declaration_only_classes.
2124	* tests/data/test-annotate/libtest23.so.abi: Adjust.
2125	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
2126	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
2127	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
2128	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
2129	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
2130	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
2131	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
2132	Likewise.
2133	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
2134	Likewise.
2135	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
2136	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
2137	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
2138	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
2139	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
2140	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
2141	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
2142	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
2143	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
2144	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
2145	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
2146	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
2147	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
2148	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
2149
21502022-07-14  Dodji Seketeli <dodji@redhat.com>
2151
2152	Better Handle naming typedefs on anonymous enums
2153	* src/abg-dwarf-reader.cc (build_typedef_type): Do not re-use
2154	typedefs.
2155	* src/abg-ir.cc	(get_function_type_name, get_method_type_name)
2156	(function_decl::get_pretty_representation_of_declarator): Strip
2157	typedefs when the function name is computed for internal purposes.
2158	(equals):  In the overload for function_decl::parameter, strip
2159	typedefs when comparing parameter types.
2160	* tests/data/test-annotate/libtest23.so.abi: Adjust.
2161	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
2162	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
2163	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
2164	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
2165	Likewise.
2166	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
2167	Likewise.
2168	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
2169	Likewise.
2170	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
2171	* tests/data/test-diff-dwarf/test2-report.txt: Likewise.
2172	* tests/data/test-diff-filter/test3-report.txt: Likewise.
2173	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise.
2174	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
2175	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
2176	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
2177	Likewise.
2178	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
2179	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
2180	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
2181	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
2182	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
2183	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
2184	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
2185	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
2186	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
2187	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
2188	Likewise.
2189	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
2190	Likewise.
2191	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
2192	Likewise.
2193	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
2194	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
2195	Likewise.
2196	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
2197
21982022-07-14  Dodji Seketeli <dodji@redhat.com>
2199
2200	dwarf-reader: Fix a thinko when building vars
2201	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Don't get out
2202	early when building vars.
2203
22042022-07-11  Dodji Seketeli <dodji@redhat.com>
2205
2206	Bug 29302 - Don't edit fn linkage name when not appropriate
2207	* src/abg-dwarf-reader.cc (build_function_decl): If the linkage
2208	name is properly set in the DWARF, do not change it.
2209	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
2210
22112022-07-08  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
2212
2213	ctf-reader: add support to looks for debug information to extract kABI
2214	* src/abg-ctf-reader.cc (find_ctfa_file): Add new function
2215	meant to locate the Linux Kernel debug information file
2216	`vmlinux.ctfa'.
2217	(ctf_reader::read_corpus): Use `find_ctfa_file' function.
2218
22192022-07-08  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
2220
2221	Add regression tests for abipkgdiff using ctf info
2222	* doc/manuals/abipkgdiff.rst: Document the fact that abipkgdiff
2223	now supports the CTF format.
2224	* tests/data/test-diff-pkg-ctf/cracklib-2.9.6-15-ol8.x86_64-report-0.txt:
2225	New test input.
2226	* tests/data/test-diff-pkg-ctf/cracklib-2.9.6-15-ol8u0.x86_64.rpm:
2227	Likewise.
2228	* tests/data/test-diff-pkg-ctf/cracklib-2.9.6-15-ol8u6.x86_64.rpm:
2229	Likewise.
2230	* tests/data/test-diff-pkg-ctf/dirpkg-0-dir1/dir.abignore:
2231	Likewise.
2232	* tests/data/test-diff-pkg-ctf/dirpkg-0-dir1/libobj-v0.so:
2233	Likewise.
2234	* tests/data/test-diff-pkg-ctf/dirpkg-0-dir1/obj-v0.c: Likewise.
2235	* tests/data/test-diff-pkg-ctf/dirpkg-0-dir2/libobj-v0.so:
2236	Likewise.
2237	* tests/data/test-diff-pkg-ctf/dirpkg-0-dir2/obj-v0.c: Likewise.
2238	* tests/data/test-diff-pkg-ctf/dirpkg-0-report-0.txt: Likewise.
2239	* tests/data/test-diff-pkg-ctf/dirpkg-1-dir1/libobj-v0.so:
2240	Likewise.
2241	* tests/data/test-diff-pkg-ctf/dirpkg-1-dir1/obj-v0.c: Likewise.
2242	* tests/data/test-diff-pkg-ctf/dirpkg-1-dir2/dir.abignore:
2243	Likewise.
2244	* tests/data/test-diff-pkg-ctf/dirpkg-1-dir2/libobj-v0.so:
2245	Likewise.
2246	* tests/data/test-diff-pkg-ctf/dirpkg-1-dir2/obj-v0.c: Likewise.
2247	* tests/data/test-diff-pkg-ctf/dirpkg-1-report-0.txt: Likewise.
2248	* tests/data/test-diff-pkg-ctf/dirpkg-1-report-1.txt: Likewise.
2249	* tests/data/test-diff-pkg-ctf/dirpkg-2-dir1/libobj-v0.so:
2250	Likewise.
2251	* tests/data/test-diff-pkg-ctf/dirpkg-2-dir1/obj-v0.c: Likewise.
2252	* tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/.abignore: Likewise.
2253	* tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/dir.abignore:
2254	Likewise.
2255	* tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/libobj-v0.so:
2256	Likewise.
2257	* tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/obj-v0.c: Likewise.
2258	* tests/data/test-diff-pkg-ctf/dirpkg-2-report-0.txt: Likewise.
2259	* tests/data/test-diff-pkg-ctf/dirpkg-3-dir1/libobj-v0.so:
2260	Likewise.
2261	* tests/data/test-diff-pkg-ctf/dirpkg-3-dir1/obj-v0.c: Likewise.
2262	* tests/data/test-diff-pkg-ctf/dirpkg-3-dir2/.abignore: Likewise.
2263	* tests/data/test-diff-pkg-ctf/dirpkg-3-dir2/libobj-v0.so:
2264	Likewise.
2265	* tests/data/test-diff-pkg-ctf/dirpkg-3-dir2/obj-v0.c: Likewise.
2266	* tests/data/test-diff-pkg-ctf/dirpkg-3-report-0.txt: Likewise.
2267	* tests/data/test-diff-pkg-ctf/dirpkg-3-report-1.txt: Likewise.
2268	* tests/data/test-diff-pkg-ctf/dirpkg-3-report-2.txt: Likewise.
2269	* tests/data/test-diff-pkg-ctf/dirpkg-3.suppr: Likewise.
2270	* tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-1.x86_64.rpm:
2271	Likewise.
2272	* tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-2.x86_64.rpm:
2273	Likewise.
2274	* tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-report-0.txt:
2275	Likewise.
2276	* tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-report-1.txt:
2277	Likewise.
2278	* tests/data/test-diff-pkg-ctf/gmp-6.1.2-8-ol8u0.x86_64.rpm:
2279	Likewise.
2280	* tests/data/test-diff-pkg-ctf/gmp-6.2.0-10-ol9u0.x86_64.rpm:
2281	Likewise.
2282	* tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt:
2283	Likewise.
2284	* tests/data/test-diff-pkg-ctf/isl-0.16.1-6.x86_64.rpm: Likewise.
2285	* tests/data/test-diff-pkg-ctf/isl-0.16.1-7.x86_64.rpm: Likewise.
2286	* tests/data/test-diff-pkg-ctf/isl-0.16.1-report-0.txt: Likewise.
2287	* tests/data/test-diff-pkg-ctf/isl-debuginfo-0.16.1-6.x86_64.rpm:
2288	Likewise.
2289	* tests/data/test-diff-pkg-ctf/isl-debuginfo-0.16.1-7.x86_64.rpm:
2290	Likewise.
2291	* tests/data/test-diff-pkg-ctf/libdwarf-20180129-4-no-ctf.x86_64.rpm:
2292	Likewise.
2293	* tests/data/test-diff-pkg-ctf/libdwarf-20180129-4.x86_64.rpm:
2294	Likewise.
2295	* tests/data/test-diff-pkg-ctf/libdwarf-20180129-5-no-ctf.x86_64.rpm:
2296	Likewise.
2297	* tests/data/test-diff-pkg-ctf/libdwarf-20180129-5.x86_64.rpm:
2298	Likewise.
2299	* tests/data/test-diff-pkg-ctf/symlink-dir-test1-report0.txt:
2300	Likewise.
2301	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/symlinks/foo.o:
2302	Likewise.
2303	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/symlinks/libfoo.so:
2304	Likewise.
2305	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/targets/foo.c:
2306	Likewise.
2307	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/targets/foo.o:
2308	Likewise.
2309	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/targets/libfoo.so:
2310	Likewise.
2311	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/symlinks/foo.o:
2312	Likewise.
2313	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/symlinks/libfoo.so:
2314	Likewise.
2315	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/targets/foo.c:
2316	Likewise.
2317	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/targets/foo.o:
2318	Likewise.
2319	* tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/targets/libfoo.so:
2320	Likewise.
2321	* tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.ta: Likewise.
2322	* tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.tar: Likewise.
2323	* tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.tar.bz2: Likewise.
2324	* tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.tar.gz: Likewise.
2325	* tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.ta: Likewise.
2326	* tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.tar: Likewise.
2327	* tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.tar.bz2: Likewise.
2328	* tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.tar.gz: Likewise.
2329	* tests/data/test-diff-pkg-ctf/tarpkg-0-report-0.txt: Likewise.
2330	* tests/data/test-diff-pkg-ctf/tarpkg-1-dir1.tar.gz: Likewise.
2331	* tests/data/test-diff-pkg-ctf/tarpkg-1-dir2.tar.gz: Likewise.
2332	* tests/data/test-diff-pkg-ctf/tarpkg-1-report-0.txt: Likewise.
2333	* tests/data/test-diff-pkg-ctf/test-rpm-report-0.txt: Likewise.
2334	* tests/data/test-diff-pkg-ctf/test-rpm-report-1.txt: Likewise.
2335	* tests/data/test-diff-pkg-ctf/test-rpm-report-2.txt: Likewise.
2336	* tests/data/test-diff-pkg-ctf/test-rpm-report-3.txt: Likewise.
2337	* tests/data/test-diff-pkg-ctf/test-rpm-report-4.txt: Likewise.
2338	* tests/data/test-diff-pkg-ctf/test-rpm-report-5.txt: Likewise.
2339	* tests/data/Makefile.am: Add the test material above to source
2340	distribution.
2341	* tests/test-diff-pkg.cc (in_out_spec): Add the test inputs above
2342	to this harness.
2343
23442022-07-08  Matthias Maennich <maennich@google.com>
2345
2346	tests: Update Catch2 library to v2.13.9
2347	* tests/lib/catch.hpp: Update to v2.13.9
2348
23492022-07-04  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
2350
2351	kmidiff: Add CTF support to comparing Kernel trees
2352	* doc/manuals/kmidiff.rst: Add documentation for the new --ctf option.
2353	* tools/kmidiff.cc (options::use_ctf): Define new data member.
2354	(display_usage): Add a help string for the --ctf option.
2355	(main): Adjust call to pass
2356	build_corpus_group_from_kernel_dist_under with origin being
2357	corpus::CTF_ORIGIN when the user provides the --ctf option.
2358
23592022-07-04  Dodji Seketeli <dodji@redhat.com>
2360
2361	dwarf-reader,ir: Don't canonicalize enums too early & too naively
2362	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Delay enum
2363	type canonicalization.
2364	* src/abg-ir.cc (type_base::get_canonical_type_for): Look through
2365	all decl-only types, not just decl-only classes.
2366	(equals): In the overload for enums, look through decl-only
2367	enums.  Also, fix redundant enumerators detection to make it more
2368	robust, otherwise, some regression tests break.
2369
23702022-06-13  Giuliano Procida <gprocida@google.com>
2371
2372	add Linux kernel symbol namespace support
2373	* include/abg-ir.h (elf_symbol::elf_symbol): Add ns argument.
2374	(elf_symbol::create): Add ns argument.
2375	(elf_symbol::get_namespace): Declare new function.
2376	(elf_symbol::set_namespace): Declare new function.
2377	and set_namespace.
2378	* src/abg-comp-filter.cc (namespace_changed): Define new
2379	helper functions.
2380	(categorize_harmful_diff_node): Also call namespace_changed().
2381	* src/abg-ir.cc (elf_symbol::priv): Add namespace_ member.
2382	(elf_symbol::priv::priv): Add namespace_ to initialisers.
2383	(elf_symbol::elf_symbol): Take new ns argument and pass it to
2384	priv constructor.
2385	(elf_symbol::create): Take new ns argument and pass it to
2386	elf_symbol constructor.
2387	(elf_symbol::get_namespace): Define new function.
2388	(elf_symbol::set_namespace): Define new function.
2389	* src/abg-reader.cc (build_elf_symbol): If namespace
2390	attribute is present, set symbol namespace.
2391	* src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): If
2392	symbol namespaces differ, report this.
2393	* src/abg-symtab-reader.cc (symtab::load): Get ELF header to
2394	distinguish vmlinux from .ko. Try to get __ksymtab_strings
2395	metadata and data. Use these to look up __kstrtabns_FOO
2396	namespace entries. Set symbol namespace where found.
2397	* src/abg-writer.cc (write_elf_symbol): Emit namespace
2398	attribute, if symbol has a namespace.
2399	* tests/data/Makefile.am: Add new test files.
2400	* tests/data/test-abidiff/test-namespace-0.xml: New test file.
2401	* tests/data/test-abidiff/test-namespace-1.xml: Likewise
2402	* tests/data/test-abidiff/test-namespace-report.txt: Likewise.
2403	* tests/test-abidiff.cc: Add new test case.
2404	Reviewed-by: Matthias Maennich <maennich@google.com>
2405
24062022-06-13  Giuliano Procida <gprocida@google.com>
2407
2408	Linux symbol CRCs: support 0 and report presence changes
2409	* include/abg-ir.h (elf_symbol::elf_symbol): Argument crc is
2410	now an optional defaulted to absent.
2411	(elf_symbol::create): Likewise.
2412	(elf_symbol::get_crc): Now returns an optional uint64_t.
2413	(elf_symbol::set_src): Now takes an optional uint64_t.
2414	* src/abg-comp-filter.cc (crc_changed): Simplify comparison.
2415	* src/abg-ir.cc (elf_symbol::priv): Member crc_ is now an
2416	optional uint64_t.
2417	(elf_symbol::priv::priv): Argument crc is now an optional
2418	uint64_t.
2419	(elf_symbol::elf_symbol): Likewise.
2420	(elf_symbol::create): Argument crc is now an optional uint64_t
2421	and defaults to absent.
2422	(textually_equals): Simplify comparison.
2423	(elf_symbol::get_crc): Now returns an optional uint64_t.
2424	(elf_symbol::set_crc): Now takes an optional uint64_t.
2425	* src/abg-reader.cc (build_elf_symbol): Treat CRC 0 the same
2426	as other CRC values.
2427	* src/abg-reporter-priv.cc (maybe_report_diff_for_symbol):
2428	Treat CRC 0 the same as other CRC values and also report
2429	changes to CRC presence.
2430	* src/abg-writer.cc (write_elf_symbol): Treat CRC 0 the same
2431	as other CRC values.
2432	* tests/data/Makefile: Remove test-abidiff/test-crc-report.txt
2433	and add test-abidiff/test-crc-report-{0-1,1-0,1-2}.txt.
2434	* tests/data/test-abidiff/test-crc-report-0-1.txt: Report
2435	showing additional of CRCs.
2436	* tests/data/test-abidiff/test-crc-report-1-0.txt: Report
2437	showing removal of CRCs.
2438	* tests/data/test-abidiff/test-crc-report-1-2.txt: Renamed
2439	from tests/data/test-abidiff/test-crc-report.txt.
2440	* tests/test-abidiff.cc: Update test cases that no longer
2441	generate empty reports.
2442	* tests/test-symtab.cc: Update KernelSymtabsWithCRC test.
2443	Reviewed-by: Matthias Maennich <maennich@google.com>
2444
24452022-06-13  Giuliano Procida <gprocida@google.com>
2446
2447	optional: minor improvements
2448	* include/abg-cxx-compat.h (optional): Add operator== and
2449	operator!=. Add noexcept decorations. Tweak operator bool.
2450	Reviewed-by: Matthias Maennich <maennich@google.com>
2451
24522022-06-13  Giuliano Procida <gprocida@google.com>
2453
2454	crc_changed: eliminate copying of shared_ptr values
2455	* src/abg-comp-filter.cc (crc_changed): Take references to
2456	avoid std::shared_ptr copying. Split declarations into one per
2457	line. Remove unnecessary return expression parentheses.
2458	Reviewed-by: Matthias Maennich <maennich@google.com>
2459
24602022-06-30  Dodji Seketeli <dodji@redhat.com>
2461
2462	ir: Add some debugging facilities for the comparison machinery
2463	* src/abg-ir-priv.h: Include iostream to access std::cerr.
2464	(environment::priv::{dump_classes_being_compared,
2465	dump_fn_types_being_compared}): Define new member functions.
2466	* src/abg-ir.cc (dump_classes_being_compared)
2467	(dump_fn_types_being_compared): Define new functions.
2468
24692022-06-30  Dodji Seketeli <dodji@redhat.com>
2470
2471	Bug 29303 - Cache the result of structural aggregate comparison
2472	* src/abg-ir-priv.h (struct uint64_t_pair_hash): Define new type.
2473	(uint64_t_pair_type, uint64_t_pairs_set_type)
2474	(type_comparison_result_type): Define new typedefs.
2475	(environment::priv::{classes_being_compared_,
2476	fn_types_being_compared_}): Use the new uint64_t_pairs_set_type
2477	type for these.
2478	(environment::priv::{type_comparison_results_cache_,
2479	allow_type_comparison_results_caching_}): Define new data members.
2480	(environment::priv::priv): Initialize the new
2481	allow_type_comparison_results_caching_ scalar data member.
2482	(environment::priv::{allow_type_comparison_results_caching,
2483	cache_type_comparison_result, is_type_comparison_cached,
2484	clear_type_comparison_results_cache}): Define new member
2485	functions.
2486	(environment::priv::{mark_as_being_compared,
2487	unmark_as_being_compared, comparison_started}): Take a pair of
2488	types.
2489	(struct function_type::priv): Move this here, from ...
2490	* src/abg-ir.cc (struct function_type::priv): ... here.
2491	(is_comparison_cycle_detected, mark_types_as_being_compared)
2492	(unmark_types_as_being_compared): Adjust call to the new
2493	environment::priv::{comparison_started, mark_as_being_compared,
2494	unmark_as_being_compared}.
2495	(type_base::get_canonical_type_for): Use aggregate types
2496	comparison result caching when doing type comparison.
2497	(equals): In the overload for function_type, class_or_union and
2498	class_decl, cache the result of aggregate type comparison and
2499	re-use that cached result when it's available.
2500	* src/abg-dwarf-reader.cc
2501	(read_context::compare_before_canonicalisation): Use aggregate
2502	types comparison result caching when doing type comparison.
2503
25042022-06-28  Dodji Seketeli <dodji@redhat.com>
2505
2506	dwarf-reader: Don't consider top-level types as private
2507	* src/abg-dwarf-reader.cc (die_is_public_decl): Only function and
2508	variable decls having the DW_AT_external, as well as non-anonymous
2509	namespaces are considered public decls.  The rest is considered
2510	private.
2511	(build_namespace_decl_and_add_to_ir): If the current namespace is
2512	private (anonymous), then its content is also private.  Otherwise,
2513	use die_is_public_decl to know if its content is public or not.
2514
25152022-06-24  Dodji Seketeli <dodji@redhat.com>
2516
2517	dwarf-reader: Avoid long comparisons when resolving C++ decl-only classes
2518	* src/abg-dwarf-reader.cc
2519	(read_context::resolve_declaration_only_classes): Don't compare
2520	same-name-types of a binary if the ODR is relevant.
2521	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
2522	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
2523	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
2524	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
2525
25262022-06-23  Dodji Seketeli <dodji@redhat.com>
2527
2528	test-alt-dwarf: Add missing dwz alt-debug file
2529	* tests/data/test-alt-dwarf-file/libstdc++/libstdc++-report-1.txt:
2530	New reference test output.
2531	* tests/data/test-alt-dwarf-file/libstdc++/usr/lib/debug/.dwz/gcc-12.1.1-1.fc37.x86_64:
2532	New dwz alt-debug info file.
2533	* tests/data/Makefile.am: Add the test material above to source
2534	distribution.
2535
25362022-06-23  Dodji Seketeli <dodji@redhat.com>
2537
2538	ir: Make canonicalization stable wrt typedefs in fn return types
2539	* src/abg-ir.cc (get_function_type_name, get_method_type_name):
2540	When the function type name is for internal purposes, strip
2541	potential typedefs off.
2542	(equal): In the overload for function_type, strip potential
2543	typedefs off of return types before comparing them.
2544	(decl_base::set_naming_typedef): Properly adjust the qualified
2545	name of the type to which a naming typedef is being set.
2546	* tests/data/test-alt-dwarf-file/libstdc++/libstdc++-report.txt:
2547	New reference test output.
2548	* tests/data/test-alt-dwarf-file/libstdc++/usr/lib/debug/usr/lib64/libstdc++.so.6.0.30-12.1.1-1.fc37.x86_64.debug:
2549	New binary test input.
2550	* tests/data/test-alt-dwarf-file/libstdc++/usr/lib64/libstdc++.so.6.0.30:
2551	New binary test input.
2552	* tests/data/Makefile.am: Add the new test material to source
2553	distribution.
2554	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
2555	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
2556	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
2557	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
2558	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
2559	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
2560	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
2561	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
2562	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
2563	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
2564
25652022-06-21  Dodji Seketeli <dodji@redhat.com>
2566
2567	Update year in copyright notice
2568	* include/abg-comp-filter.h: Update year in copyright notice.
2569	* include/abg-comparison.h: Likewise.
2570	* include/abg-config.h: Likewise.
2571	* include/abg-corpus.h: Likewise.
2572	* include/abg-ctf-reader.h: Likewise.
2573	* include/abg-cxx-compat.h: Likewise.
2574	* include/abg-diff-utils.h: Likewise.
2575	* include/abg-dwarf-reader.h: Likewise.
2576	* include/abg-elf-reader-common.h: Likewise.
2577	* include/abg-fwd.h: Likewise.
2578	* include/abg-hash.h: Likewise.
2579	* include/abg-ini.h: Likewise.
2580	* include/abg-interned-str.h: Likewise.
2581	* include/abg-ir.h: Likewise.
2582	* include/abg-libxml-utils.h: Likewise.
2583	* include/abg-reader.h: Likewise.
2584	* include/abg-regex.h: Likewise.
2585	* include/abg-reporter.h: Likewise.
2586	* include/abg-sptr-utils.h: Likewise.
2587	* include/abg-suppression.h: Likewise.
2588	* include/abg-tools-utils.h: Likewise.
2589	* include/abg-traverse.h: Likewise.
2590	* include/abg-viz-common.h: Likewise.
2591	* include/abg-viz-dot.h: Likewise.
2592	* include/abg-viz-svg.h: Likewise.
2593	* include/abg-workers.h: Likewise.
2594	* include/abg-writer.h: Likewise.
2595	* src/abg-comp-filter.cc: Likewise.
2596	* src/abg-comparison-priv.h: Likewise.
2597	* src/abg-comparison.cc: Likewise.
2598	* src/abg-config.cc: Likewise.
2599	* src/abg-corpus-priv.h: Likewise.
2600	* src/abg-corpus.cc: Likewise.
2601	* src/abg-ctf-reader.cc: Likewise.
2602	* src/abg-default-reporter.cc: Likewise.
2603	* src/abg-diff-utils.cc: Likewise.
2604	* src/abg-dwarf-reader.cc: Likewise.
2605	* src/abg-elf-helpers.cc: Likewise.
2606	* src/abg-elf-helpers.h: Likewise.
2607	* src/abg-elf-reader-common.cc: Likewise.
2608	* src/abg-hash.cc: Likewise.
2609	* src/abg-ini.cc: Likewise.
2610	* src/abg-internal.h: Likewise.
2611	* src/abg-ir-priv.h: Likewise.
2612	* src/abg-ir.cc: Likewise.
2613	* src/abg-leaf-reporter.cc: Likewise.
2614	* src/abg-libxml-utils.cc: Likewise.
2615	* src/abg-reader.cc: Likewise.
2616	* src/abg-regex.cc: Likewise.
2617	* src/abg-reporter-priv.cc: Likewise.
2618	* src/abg-reporter-priv.h: Likewise.
2619	* src/abg-suppression-priv.h: Likewise.
2620	* src/abg-suppression.cc: Likewise.
2621	* src/abg-symtab-reader.cc: Likewise.
2622	* src/abg-symtab-reader.h: Likewise.
2623	* src/abg-tools-utils.cc: Likewise.
2624	* src/abg-traverse.cc: Likewise.
2625	* src/abg-viz-common.cc: Likewise.
2626	* src/abg-viz-dot.cc: Likewise.
2627	* src/abg-viz-svg.cc: Likewise.
2628	* src/abg-workers.cc: Likewise.
2629	* src/abg-writer.cc: Likewise.
2630	* tests/print-diff-tree.cc: Likewise.
2631	* tests/test-abicompat.cc: Likewise.
2632	* tests/test-abidiff-exit.cc: Likewise.
2633	* tests/test-abidiff.cc: Likewise.
2634	* tests/test-alt-dwarf-file.cc: Likewise.
2635	* tests/test-core-diff.cc: Likewise.
2636	* tests/test-cxx-compat.cc: Likewise.
2637	* tests/test-diff-dwarf-abixml.cc: Likewise.
2638	* tests/test-diff-dwarf.cc: Likewise.
2639	* tests/test-diff-filter.cc: Likewise.
2640	* tests/test-diff-pkg.cc: Likewise.
2641	* tests/test-diff-suppr.cc: Likewise.
2642	* tests/test-diff2.cc: Likewise.
2643	* tests/test-elf-helpers.cc: Likewise.
2644	* tests/test-ini.cc: Likewise.
2645	* tests/test-ir-walker.cc: Likewise.
2646	* tests/test-kmi-whitelist.cc: Likewise.
2647	* tests/test-lookup-syms.cc: Likewise.
2648	* tests/test-read-ctf.cc: Likewise.
2649	* tests/test-read-dwarf.cc: Likewise.
2650	* tests/test-read-write.cc: Likewise.
2651	* tests/test-symtab-reader.cc: Likewise.
2652	* tests/test-symtab.cc: Likewise.
2653	* tests/test-tools-utils.cc: Likewise.
2654	* tests/test-types-stability.cc: Likewise.
2655	* tests/test-utils.cc: Likewise.
2656	* tests/test-utils.h: Likewise.
2657	* tools/abicompat.cc: Likewise.
2658	* tools/abidiff.cc: Likewise.
2659	* tools/abidw.cc: Likewise.
2660	* tools/abilint.cc: Likewise.
2661	* tools/abipkgdiff.cc: Likewise.
2662	* tools/abisym.cc: Likewise.
2663	* tools/binilint.cc: Likewise.
2664	* tools/kmidiff.cc: Likewise.
2665	* update-copyright.sh: Likewise.
2666
26672022-06-21  Dodji Seketeli <dodji@redhat.com>
2668
2669	reporter-priv: Passing a string parm by reference
2670	* src/abg-reporter-priv.h
2671	(maybe_report_data_members_replaced_by_anon_dm): Pass the string parm by ...
2672	* src/abg-reporter-priv.cc
2673	(maybe_report_data_members_replaced_by_anon_dm): ... reference.
2674
26752022-04-11  Dodji Seketeli <dodji@redhat.com>
2676
2677	dwarf-reader: Fix DWARF string comparison optimization
2678	* src/abg-dwarf-reader.cc (slowly_compare_strings)
2679	(die_char_str_attribute): Define new static functions.
2680	(compare_dies_string_attribute_value): Use the new
2681	slowly_compare_strings here.
2682	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
2683	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
2684	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
2685	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise.
2686	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
2687	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
2688	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
2689	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
2690	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
2691
26922022-04-04  Dodji Seketeli <dodji@redhat.com>
2693
2694	Canonicalize DIEs w/o assuming ODR & handle typedefs transparently
2695	* include/abg-fwd.h (peel_typedef_pointer_or_reference_type):
2696	Declare new function.
2697	* src/abg-dwarf-reader.cc (read_context::{compute_canonical_die,
2698	get_canonical_die, get_or_compute_canonical_die}): Don't
2699	special-case ODR-relevant cases.
2700	(is_canon_type_to_be_propagated_tag): Rename
2701	is_canonicalizeable_type_tag into this.
2702	(erase_offset_pair): Make this return a bool, not void.
2703	(have_offset_pair_in_common, try_canonical_die_comparison)
2704	(notify_die_comparison_failed): Define new static functions.
2705	(ABG_RETURN, ABG_RETURN_FALSE): Define new macros.
2706	(compare_dies): Handle DW_TAG_{class,unspecified}_type DIES.  Also
2707	if a comparing a DIE kind is not supported, assume the comparison
2708	yields "false" for the purpose of canonicalization.  Add a new
2709	parameter for redundant aggregates being compared.  Use the
2710	redundant aggregate set to detect if a redundant aggregate has
2711	been detected and is still being "explored"; if that's the case,
2712	then canonical DIE propagation is de-activated.  This might incur
2713	a performance hit.  Use the new ABG_RETURN and ABG_RETURN_FALSE
2714	macros.  Use the new try_canonical_die_comparison to compare
2715	canonical DIEs rather than doing it by hand.
2716	(build_typedef_type): Don't try to rely on canonical typedefs
2717	DIEs.
2718	* src/abg-ir.cc
2719	(type_topo_comp::has_artificial_or_natural_location): Define new
2720	method.
2721	(type_topo_comp::operator(const type_base*, const type_base*)): In
2722	this topological comparison operator of types, when two types have
2723	the same textual representation, if they don't have any location,
2724	if they are pointer/reference/typedef types, use the textual
2725	representation of their ultimate underlying type for sorting
2726	order.
2727	(peel_typedef_pointer_or_reference_type): Define new function.
2728	(compare_types_during_canonicalization): Perform the structural
2729	canonical comparison first.
2730	(equals): In the overload for array_type_def::subrange_type&,
2731	remove unused code. In the overload for typedef_decl& don't
2732	compare typedef names.  In the overload for class_or_union, make
2733	the RETURN macro *NOT* propagate canonical type because this equal
2734	function is used as a subroutine by overloads for class and union.
2735	That means that the class_or_union equal function can return true,
2736	and still, the caller (overload for class_decl or union_decl) can
2737	later return false; in that case, we don't want canonical type to
2738	be propagated.  In the overload for class_decl::base_spec, use the
2739	ABG_RETURN macro when returning comparing decl-bases.  In the
2740	overload for class_decl, use ABG_RETURN when returning the result
2741	of comparing class_or_union artifacts.
2742	(maybe_propagate_canonical_type):  If we are using canonical type
2743	comparison, then do not propagate the type, if
2744	WITH_DEBUG_TYPE_CANONICALIZATION is defined.
2745	(is_non_canonicalized_type): Add typedefs to the set of
2746	non-canonicalized types.
2747	* src/abg-writer.cc (struct non_canonicalized_type_hash, struct
2748	non_canonicalized_type_equal): Define new functors.
2749	(typedef nc_type_ptr_set_type): Define a new non-canonicalized set
2750	type.
2751	(typedef nc_type_ptr_istr_map_type): Define a new map of
2752	non-canonicalized types/interned string map.
2753	(write_context::{m_nc_type_id_map,
2754	m_emitted_non_canonicalized_type_set,
2755	m_referenced_non_canonicalized_types_set}): New data members.
2756	(write_context::type_has_existing_id): Look for non-canonicalized
2757	types in the m_nc_type_id_map map.
2758	(write_context::get_id_for_type): Use m_nc_type_id_map for
2759	non-canonicalized types.
2760	(write_context::clear_type_id_map): Clear m_nc_type_id_map too.
2761	(write_context::get_referenced_non_canonicalized_types): Renamed
2762	write_context::get_referenced_non_canonical_types into this.  Make
2763	it return the new
2764	write_context::m_referenced_non_canonicalized_types_set.
2765	(write_context::has_non_emitted_referenced_types): Just use
2766	write_context::type_is_emitted as it knows where to look up for
2767	non-canonicalized types.
2768	(write_context::record_type_as_referenced): Use
2769	m_referenced_non_canonicalized_types_set to store referenced
2770	non-canonicalized types.  The other types are stored in
2771	m_emitted_set as previously.
2772	(write_context::type_is_emitted): Look into
2773	m_emitted_non_canonicalized_type_set for non-canonicalized types.
2774	Other types are still in m_emitted_type_set.
2775	(write_context::{record_decl_only_type_as_emitted,
2776	decl_only_type_is_emitted, get_emitted_decl_only_types_set}):
2777	Remove methods.
2778	(write_context::get_emitted_non_canonicalized_type_set): Define
2779	new method.
2780	(write_context::clear_referenced_types): Clear
2781	m_referenced_non_canonicalized_types_set too, as
2782	m_referenced_non_canonical_types_set is no more.
2783	(write_context::referenced_type_should_be_emitted): Use only
2784	write_context::type_is_emitted as it knows how to check it all
2785	now.
2786	(write_referenced_types): Use the more compact ranged-base for
2787	loops.
2788	(write_translation_unit): Write the non-canonicalized types that
2789	are not yet emitted.
2790	(write_class_decl, write_union_decl): Adjust recording type as
2791	emitted.
2792	(write_canonical_type_ids): Adjust.
2793	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
2794	* tests/data/test-annotate/libtest23.so.abi: Likewise.
2795	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
2796	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
2797	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise.
2798	* tests/data/test-annotate/test0.abi: Likewise.
2799	* tests/data/test-annotate/test1.abi: Likewise.
2800	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
2801	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
2802	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
2803	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
2804	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
2805	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
2806	* tests/data/test-annotate/test2.so.abi: Likewise.
2807	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
2808	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
2809	* tests/data/test-annotate/test3.so.abi: Likewise.
2810	* tests/data/test-annotate/test5.o.abi: Likewise.
2811	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
2812	Likewise.
2813	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
2814	Likewise.
2815	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise.
2816	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
2817	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
2818	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
2819	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
2820	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64:
2821	Likewise.
2822	* tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64-self-check-report-0.txt:
2823	Likewise
2824	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
2825	Likewise.
2826	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
2827	Likewise.
2828	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
2829	Likewise.
2830	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
2831	Likewise.
2832	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
2833	Likewise.
2834	* tests/data/test-diff-suppr/test39-opaque-type-report-0.txt:
2835	Likewise.
2836	* tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi:
2837	Likewise.
2838	* tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi:
2839	Likewise.
2840	* tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi:
2841	Likewise.
2842	* tests/data/test-read-ctf/test-functions-declaration.abi:
2843	Likewise.
2844	* tests/data/test-read-ctf/test1.so.abi: Likewise.
2845	* tests/data/test-read-ctf/test1.so.hash.abi: Likewise.
2846	* tests/data/test-read-ctf/test2.so.abi: Likewise.
2847	* tests/data/test-read-ctf/test2.so.hash.abi: Likewise.
2848	* tests/data/test-read-ctf/test5.o.abi: Likewise.
2849	* tests/data/test-read-ctf/test7.o.abi: Likewise.
2850	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
2851	Likewise.
2852	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
2853	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi:
2854	Likewise.
2855	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
2856	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
2857	Likewise.
2858	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
2859	* tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise.
2860	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
2861	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
2862	Likewise.
2863	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
2864	* tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise.
2865	* tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise.
2866	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
2867	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
2868	* tests/data/test-read-dwarf/test-suppressed-alias.o.abi:
2869	Likewise.
2870	* tests/data/test-read-dwarf/test0.abi: Likewise.
2871	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
2872	* tests/data/test-read-dwarf/test1.abi: Likewise.
2873	* tests/data/test-read-dwarf/test1.hash.abi: Likewise.
2874	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
2875	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
2876	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
2877	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
2878	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
2879	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
2880	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
2881	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
2882	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
2883	Likewise.
2884	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
2885	Likewise.
2886	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
2887	* tests/data/test-read-dwarf/test2.so.hash.abi: Likewise.
2888	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
2889	Likewise.
2890	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
2891	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
2892	Likewise.
2893	* tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise.
2894	* tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise.
2895	* tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise.
2896	* tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise.
2897	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
2898	* tests/data/test-read-dwarf/test3.so.hash.abi: Likewise.
2899	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
2900	* tests/data/test-read-dwarf/test5.o.hash.abi: Likewise.
2901	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
2902	* tests/data/test-read-write/test18.xml: Likewise.
2903	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
2904	Likewise.
2905	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
2906	Likewise.
2907
29082022-04-14  Dodji Seketeli <dodji@redhat.com>
2909
2910	dwarf-reader: compare_dies sometimes compares empty formal parms
2911	* src/abg-dwarf-reader.cc (compare_dies): Don't try to compare
2912	formal parameters if there is none.
2913
29142022-03-31  Dodji Seketeli <dodji@redhat.com>
2915
2916	abidw, dwarf-reader: Add an option to debug DIE canonicalization
2917	* include/abg-ir.h
2918	(environment::debug_die_canonicalization_is_on): Declare new methods.
2919	* src/abg-ir.cc (environment::debug_die_canonicalization_is_on):
2920	Define them.
2921	* src/abg-dwarf-reader.cc
2922	(compare_dies_during_canonicalization): Define new static
2923	function.
2924	(read_context::{debug_die_canonicalization_is_on_,
2925	use_canonical_die_comparison_}): Declare these data members.
2926	(read_context::read_context): Initialize them.
2927	(read_context::get_canonical_die): When ODR is considered, if DIE
2928	canonicalization debugging is on, use the new
2929	compare_dies_during_canonicalization for the type comparison to be
2930	done both structurally and canonically; both comparison should
2931	yield the same result.  Also, make this method function non-const.
2932	* src/abg-ir-priv.h
2933	(environment::priv::debug_die_canonicalization_): Define new data
2934	member.
2935	(environment::priv::priv): Initialize it.
2936	* tools/abidw.cc (options::debug_die_canonicalization_): Define
2937	new data member.
2938	(options::options): Initialize it.
2939	(display_usage): Add a description for the --debug-dc option.
2940	(parse_command): Parse the new --debug-dc option.
2941	(load_corpus_and_write_abixml): Use the new
2942	environment::debug_die_canonicalization_is_on.
2943
29442022-03-31  Dodji Seketeli <dodji@redhat.com>
2945
2946	test-read-dwarf: Use abidw rather than using the library
2947	* tests/test-read-dwarf.cc (set_suppressions)
2948	(set_suppressions_from_headers): Remove these static functions.
2949	(test_task_dwarf::perform): Use abidw rather than using the
2950	library.  Remove the path and architecture from the abixml files.
2951	Also, when the test fails, display the actual command that failed.
2952
29532022-03-31  Dodji Seketeli <dodji@redhat.com>
2954
2955	Add better error messaging to several tests
2956	* tests/test-diff-filter.cc (test_task::perform): Display the
2957	failing command.
2958	* tests/test-read-common.cc (test_task::run_abidw): Likewise.
2959	* tests/test-read-common.h (test_task::run_diff): Likewise.
2960
29612022-06-13  Dodji Seketeli <dodji@redhat.com>
2962
2963	ir, test-read-ctf: Remove uncertainty in sorting anonymous types
2964	* src/abg-ir.cc ({class_decl,
2965	union_decl}::get_pretty_representation): If the anonymous class
2966	has no internal name, use its flat representation as internal
2967	representation.
2968	* tests/data/test-read-ctf/test-PR26568-1.o.abi: Likewise.
2969	* tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise.
2970	* tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise.
2971	* tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise.
2972	* tests/data/test-read-ctf/test0.hash.abi: Likewise.
2973
29742022-06-09  Giuliano Procida <gprocida@google.com>
2975
2976	limit repeated DIE comparisons
2977	* src/abg-dwarf-reader.cc (read_context): Add mutable
2978	die_comparison_visits_ member.
2979	(compare_dies): Return true if this is a self-comparison.
2980	Return true if we have visited this comparison 10000 times.
2981
29822022-06-09  Dodji Seketeli <dodji@redhat.com>
2983
2984	abicompat: Properly guard inclusion of abg-ctf-reader.h
2985	* tools/abicompat.cc: Guard inclusion of abg-ctf-reader.h with
2986	#ifdef WITH_CTF.
2987
29882022-06-03  Dodji Seketeli <dodji@redhat.com>
2989
2990	Bug 29144 - abidiff doesn't report base class re-ordering
2991	* include/abg-comparison.h (class_diff::moved_bases): Declare new
2992	method.
2993	* src/abg-comparison-priv.h (class_diff::priv::moved_bases_):
2994	Define new data member.
2995	* src/abg-reporter-priv.h (maybe_report_base_class_reordering):
2996	Declare new function.
2997	* src/abg-reporter-priv.cc (maybe_report_base_class_reordering):
2998	Define new function.
2999	* src/abg-comparison.cc
3000	(class_diff::ensure_lookup_tables_populated):  Detect that a base
3001	class moved position and record it into
3002	class_diff::priv::moved_bases_ data member.
3003	* src/abg-default-reporter.cc (default_reporter::report): Use the
3004	new maybe_report_base_class_reordering.
3005	* src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise.
3006	* tests/data/test-abidiff-exit/test-PR29144-report-2.txt: New
3007	testing input file.
3008	* tests/data/test-abidiff-exit/test-PR29144-report.txt: Likewise.
3009	* tests/data/test-abidiff-exit/test-PR29144-v0.cc: Likewise.
3010	* tests/data/test-abidiff-exit/test-PR29144-v0.o: Likewise.
3011	* tests/data/test-abidiff-exit/test-PR29144-v1.cc: Likewise.
3012	* tests/data/test-abidiff-exit/test-PR29144-v1.o: Likewise.
3013	* tests/data/Makefile.am: Add the new files to source
3014	distribution.
3015	* tests/test-abidiff-exit.cc (in_out_specs): Add the new tests to
3016	this harness.
3017
30182022-06-03  Ben Woodard via Libabigail <libabigail@sourceware.org>
3019
3020	abicompat: Support reading CTF and abixml
3021	* tools/abicompat.cc (options::{fail_no_debug_info, use_ctf}): New
3022	data members.
3023	(options::options): Initialize them.
3024	(display_usage): Add a help string for the new options
3025	--fail-no-debug-info and --ctf.
3026	(parse_command_line): Support parsing the new options
3027	--fail-no-debug-info and --ctf.
3028	(read_corpus): New static function.
3029	(main): Use the new read_corpus in lieu of using
3030	dwarf_reader::read_corpus_from_elf and/or  ctf_reader::read_corpus
3031	and/or xml::reader::read_corpus_from_input.
3032	* doc/manuals/abicompat.rst: add documentation for new options.
3033
30342022-06-03  Ben Woodard <woodard@redhat.com>
3035
3036	abidiff: Remove redundant code
3037	* tools/abidiff.cc (main): Remove redundant code.
3038
30392022-06-03  Giuliano Procida <gprocida@google.com>
3040
3041	XML writer: unify type emission tracking
3042	* src/abg-writer.cc (write_context): Remove the
3043	m_emitted_decl_only_set member.
3044	(write_context::has_non_emitted_referenced_types): Remove the
3045	calls to decl_only_type_is_emitted.
3046	(write_context::record_decl_only_type_as_emitted): Removed.
3047	(write_context::decl_only_type_is_emitted): Ditto.
3048	(write_context::get_emitted_decl_only_types_set): Ditto.
3049	(referenced_type_should_be_emitted): Remove the calls to
3050	decl_only_type_is_emitted.
3051	(write_class_decl): Just call record_type_as_emitted.
3052	(write_union_decl): Ditto.
3053	(write_enum_type_decl): Not changed, but now all 3 functions
3054	have the same behaviour.
3055	(write_canonical_type_ids): Remove the call to
3056	get_emitted_decl_only_types_set.
3057
30582022-06-03  Ben Woodard <woodard@redhat.com>
3059
3060	abicompat: Add missing space
3061	* tools/abicompat.cc (main): Add missing space in expression.
3062
30632022-06-01  Dodji Seketeli <dodji@redhat.com>
3064
3065	comparison: Fix leaf report summary
3066	* src/abg-comparison.cc (corpus_diff::priv::emit_diff_stats): In
3067	the "leaf change summary" section, add the number of removed/added
3068	symbols not described by debug info.
3069
30702022-05-30  Giuliano Procida <gprocida@google.com>
3071
3072	test-annotate.cc: ignore whitespace during diff
3073	* tests/test-annotate.cc (main): Pass diff -w option.
3074	Suggested-by: Bogdan Graur <bgraur@google.com>
3075
30762022-05-16  Mark Wielaard <mark@klomp.org>
3077
3078	symtab-reader: Setup aliases before checking ppc64 opd function entries
3079	* src/abg-elf-helpers.h (architecture_is_ppc32): Declare new
3080	function.
3081	* src/abg-elf-helpers.cc (architecture_is_ppc32): Define it.
3082	* src/abg-symtab-reader.cc
3083	(symtab::setup_symbol_lookup_tables): Rename
3084	symtab::get_symbol_value into this. Setup symbol aliases before
3085	setting up function entry address maps for ppc{32,64} ELFv1 and
3086	after fixing up arm32/64 addresses.
3087	(symtab::load_): Invoke the new setup_symbol_lookup_tables.
3088	update_function_entry_address_symbol_map after setting up aliases.
3089	No need to setup symbol aliases anymore.
3090	(symtab::add_alternative_address_lookups): Invoke the new
3091	setup_symbol_lookup_tables.
3092
30932022-05-16  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
3094
3095	ctf-reader: add support to looking debug information in external path
3096	* include/abg-ctf-reader.h (ctf_reader::create_read_context):
3097	Add `debug_info_root_paths' argument.
3098	(ctf_reader::reset_read_context): Likewise.
3099	* src/abg-ctf-reader.cc: Add `read_context::elf_{handler,fd}_dbg',
3100	data members.
3101	(read_context::read_context): Add new `debug_info_root_paths'
3102	argument.
3103	(read_context::initialize): Likewise.
3104	(ctf_reader::create_read_context): Likewise.
3105	(ctf_reader::close_elf_handler): Release
3106	`read_context::elf_{handler,fd}_dbg' members.
3107	(ctf_reader::find_alt_debuginfo): Add new function.
3108	(ctf_reader::slurp_elf_info): Add new argument `status'. Use
3109	`find_alt_debuginfo' and `elf_helpers::find_section_by_name'
3110	to read the symtab and ctf information from an external .debug
3111	file, the `status' reference is updated.
3112	(ctf_reader::read_corpus): Verify `status' after `slurp_elf_info'.
3113	(ctf_reader::reset_read_context): Add new `debug_info_root_path'
3114	argument.
3115	* src/abg-elf-helpers.cc (elf_helpers::find_section_by_name): Update
3116	comment.
3117	* src/abg-tools-utils.cc (maybe_load_vmlinux_ctf_corpus):
3118	Adjust `ctf_reader::{create,reset}_read_context'.
3119	* tests/test-read-ctf.cc: Likewise.
3120	* tools/abidiff.cc (display_usage): Add `--ctf' command line
3121	option.
3122	(main): Adjust `ctf_reader::create_read_context'.
3123	Likewise.
3124	* tools/abidw.cc (load_corpus_and_write_abixml): Adjust
3125	`ctf_reader::create_read_context'.
3126	* tools/abilint.cc (main): Likewise.
3127	* tools/abipkgdiff.cc (compare, compare_to_self): Likewise.
3128
31292022-05-16  Vanessa Sochat <sochat1@llnl.gov>
3130
3131	Adding missing newline to build-container workflow
3132	* .github/workflows/build-container.yaml: Add missing newline.
3133	Reviewed-by: Ben Woodard <woodard@redhat.com>
3134
31352022-05-16  Ben Woodard <woodard@redhat.com>
3136
3137	Add github actions to support workflows
3138	* .github/workflows/build-container.yaml: New file.
3139	* .github/workflows/libabigail.yaml: Likewise.
3140	* .github/workflows/test.yaml: Likewise.
3141	* .github/workflows/test-fedora.yaml: Likewise.
3142	* .github/README.md: Likewise.
3143	* docker/Dockerfile.fedora: Likewise.
3144	* docker/Dockerfile.ubuntu: Likewise.
3145	* docker/Dockerfile.fedora-base: Likewise.
3146	* docker/Dockerfile.test: Likewise.
3147	* README-DOCKER.md: Likewise.
3148	Reviewed-by: Ben Woodard <woodard@redhat.com>
3149
31502022-05-06  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
3151
3152	abipkgdiff: Add support to compare packages with CTF debug format
3153	* tools/abipkgdiff.cc: Include `abg-ctf-reader.h'.
3154	(options::use_ctf): Add new data member.
3155	(display_usage): Add `--ctf' usage.
3156	(compare): Add condition to use ctf-reader to extract
3157	(parse_command_line): Set `options::use_ctf' when --ctf
3158	option is provided.
3159	and build CTF corpora when `options::use_ctf' is set.
3160	(compare_to_self): Likewise.
3161
31622022-05-06  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
3163
3164	ctf-reader: CTF debug info for some symbols is not found
3165	* src/abg-ctf-reader.cc (read_context::is_elf_exec): Remove
3166	data member.
3167	(ctf_reader::process_ctf_qualified_type): Add condition to avoid
3168	use qualifier in functions.
3169	(ctf_reader::process_ctf_archive): Use `ctf_lookup_by_symbol_name'
3170	to find debug information when `ctf_lookup_variable' was not
3171	lucky iff `corpus::CTF_ORIGIN'.
3172	(ctf_reader::slurp_elf_info): Use `elf_helpers::find_section_by_name'
3173	to read .dynsym and .dynstr when {EXEC,DYN}.
3174	* src/abg-elf-helpers.h (elf_helpers::find_section_by_name): Add new
3175	declaration.
3176	* src/abg-elf-helpers.cc (elf_helpers::find_section_by_name): Add new
3177	definition.
3178
31792022-05-06  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
3180
3181	ctf-reader: shows incomplete summary changes
3182	* src/abg-ctf-reader.cc (read_context::exported_decls_builder_):
3183	Add new data member.
3184	(read_context::exported_decls_builder): Add new get/set member functions.
3185	(read_context::maybe_add_{fn,var}_to_exported_decls): Likewise.
3186	(read_context::initialize): Initialize exported_decls_builder_ member.
3187	(read_context::build_ir_node_for_variadic_parameter_type): Add new function.
3188	(read_context::process_ctf_function_type): Add additional code to handle
3189	function's variadic parameter.
3190	(read_context::process_ctf_archive): Rename variable for clarity
3191	from `ctf_var_type' to `ctf_sym_type', using new member functions
3192	`maybe_add_{fn,var}_to_exported_decls'.
3193	(read_context::read_corpus): Set `exported_decls_builder'.
3194	* tests/test-read-common.cc (test_task::run_abidw): Fix error message.
3195	* tests/data/test-read-ctf/test-PR26568-1.o.abi: Adjust test case.
3196	* tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise.
3197	* tests/data/test-read-ctf/test-anonymous-fields.o.abi Likewise.
3198	* tests/data/test-read-ctf/test5.o.abi: Likewise.
3199	* tests/data/test-read-ctf/test7.o.abi: Likewise.
3200
32012022-05-06  Frederic Cambus <fred@statdns.com>
3202
3203	Fix numbering error in the abidiff manual.
3204	* doc/manuals/abidiff.rst: Fix numbering error for the
3205	--headers-dir2 option.
3206
32072022-05-04  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
3208
3209	ctf-reader: Add support to read CTF information from the Linux Kernel
3210	* abg-elf-reader-common.h: Include ctf-api.h file.
3211	(read_and_add_corpus_to_group_from_elf, set_read_context_corpus_group)
3212	(reset_read_context, dic_type_key): Declare new member functions.
3213	* include/abg-ir.cc (types_defined_same_linux_kernel_corpus_public): Use
3214	bitwise to know the corpus `origin'.
3215	* src/abg-ctf-reader.cc: Include map, algorithms header files.
3216	(read_context::type_map): Change from unordered_map to std::map storing
3217	ctf dictionary name as part of the key.
3218	(read_context::is_elf_exec): Add new member variable.
3219	(read_context::{cur_corpus_, cur_corpus_group_}): Likewise.
3220	(read_context::unknown_types_set): Likewise.
3221	(read_context::{current_corpus_group, main_corpus_from_current_group,
3222	has_corpus_group, current_corpus_is_main_corpus_from_current_group,
3223	should_reuse_type_from_corpus_group}): Add new member functions.
3224	(read_context::{add_unknown_type, lookup_unknown_type, initialize}):
3225	Likewise.
3226	(read_context::{add_type, lookup_type}): Add new `ctf_dict_t' type
3227	argument.
3228	(ctf_reader::{process_ctf_typedef, process_ctf_base_type,
3229	process_ctf_function_type, process_ctf_forward_type,
3230	process_ctf_struct_type, process_ctf_union_type, process_ctf_array_type,
3231	process_ctf_qualified_type, process_ctf_enum_type}): Add code to `reuse'
3232	types already registered in main corpus `should_reuse_type_from_corpus_group'.
3233	Use new `lookup_type' and `add_type' operations on `read_context::types_map'.
3234	Replace function calls to the new ctf interface. Add verifier to not build
3235	types duplicated by recursive calling chain.
3236	(ctf_reader::process_ctf_type): Add code to return immediately if the
3237	ctf type is unknown. Add unknown types to `unknown_types_set'.
3238	(ctf_reader::process_ctf_archive): Change comment.
3239	Add code to iterate over global symbols, searching by symbol name in the
3240	ctf dictionary using `ctf_lookup_{variable,by_symbol_name}' depending of
3241	the ELF file type and corpus type, creating a `{var,fuc}_decl' using the
3242	return type of `ctf_type_kind'.  Also close the ctf dict and call
3243	`canonicalize_all_types'.
3244	(slurp_elf_info): Set `is_elf_exec' depending of ELF type.  Also return
3245	success if corpus origin is Linux and symbol table was read.
3246	(ctf_reader::read_corpus): Add current corpus.  Set corpus origin to
3247	`LINUX_KERNEL_BINARY_ORIGIN' if `is_linux_kernel' returns true.  Verify
3248	the ctf reader status, now the ctf archive is 'opened' using
3249	`ctf_arc{open,bufopen}' depending if the corpus origin has
3250	`corpus::LINUX_KERNEL_BINARY_ORIGIN' bit set. Use
3251	`sort_{function,variables}' calls after extract ctf information.
3252	`ctf_close' is called from `read_context' destructor.
3253	(read:context::{set_read_context_corpus_group, reset_read_context,
3254	read_and_add_corpus_to_group_from_elf, dic_type_key): Add new member
3255	function implementation.
3256	* include/abg-tools-utils.h (build_corpus_group_from_kernel_dist_under):
3257	Add `origin' parameter with default `corpus::DWARF_ORIGIN'.
3258	* src/abg-tools-utils.cc: Use `abg-ctf-reader.h' file.
3259	(maybe_load_vmlinux_dwarf_corpus): Add new function.
3260	(maybe_load_vmlinux_ctf_corpus): Likewise.
3261	(build_corpus_group_from_kernel_dist_under): Update comments.
3262	Add new `origin' argument. Use `maybe_load_vmlinux_dwarf_corpus'
3263	or `maybe_load_vmlinux_ctf_corpus' according to `origin' value.
3264	* src/abg-corpus.h (corpus::origin): Update `origin' type
3265	values in enum.
3266	* src/abg-corpus-priv.h (corpus::priv): Replace `origin' type
3267	from `corpus::origin' to `uint32_t'.
3268	* src/abg-corpus.cc (corpus::{get,set}_origin): Replace data
3269	type from `corpus::origin' to `uint32_t'.
3270	* tools/abidw.cc (main): Use of --ctf argument to set format debug.
3271	* tests/test-read-ctf.cc: Add new tests to harness.
3272	* tests/data/test-read-ctf/test-PR27700.abi: New test expected
3273	result.
3274	* tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise.
3275	* tests/data/test-read-ctf/test-enum-many-ctf.o.hash.abi: Likewise.
3276	* tests/data/test-read-ctf/test-enum-many.o.hash.abi: Likewise.
3277	* tests/data/test-read-ctf/test-enum-symbol-ctf.o.hash.abi: Likewise.
3278	* tests/data/test-read-common/test-PR26568-2.o: Adjust.
3279	* tests/data/test-read-ctf/test-PR26568-1.o.abi: Likewise.
3280	* tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise.
3281	* tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Likewise.
3282	* tests/data/test-read-ctf/test-ambiguous-struct-B.c: Likewise.
3283	* tests/data/test-read-ctf/test-ambiguous-struct-B.o: Likewise.
3284	* tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: Likewise.
3285	* tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise.
3286	* tests/data/test-read-ctf/test-callback.abi: Likewise.
3287	* tests/data/test-read-ctf/test-callback2.abi: Likewise.
3288	* tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi:
3289	Likewise.
3290	* tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi:
3291	Likewise.
3292	* tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise.
3293	* tests/data/test-read-ctf/test-enum-ctf.o.abi: Likewise.
3294	* tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise.
3295	* tests/data/test-read-ctf/test-enum.o.abi: Likewise.
3296	* tests/data/test-read-ctf/test-forward-type-decl.abi: Likewise.
3297	* tests/data/test-read-ctf/test-functions-declaration.abi: Likewise.
3298	* tests/data/test-read-ctf/test-list-struct.abi: Likewise.
3299	* tests/data/test-read-ctf/test0: Likewise.
3300	* tests/data/test-read-ctf/test0.abi: Likewise.
3301	* tests/data/test-read-ctf/test0.c: Likewise.
3302	* tests/data/test-read-ctf/test0.hash.abi: Likewise.
3303	* tests/data/test-read-ctf/test1.so.abi: Likewise.
3304	* tests/data/test-read-ctf/test1.so.hash.abi: Likewise.
3305	* tests/data/test-read-ctf/test2.so.abi: Likewise.
3306	* tests/data/test-read-ctf/test2.so.hash.abi: Likewise.
3307	* tests/data/test-read-ctf/test3.so.abi: Likewise.
3308	* tests/data/test-read-ctf/test3.so.hash.abi: Likewise.
3309	* tests/data/test-read-ctf/test4.so.abi: Likewise.
3310	* tests/data/test-read-ctf/test4.so.hash.abi: Likewise.
3311	* tests/data/test-read-ctf/test5.o.abi: Likewise.
3312	* tests/data/test-read-ctf/test7.o.abi: Likewise.
3313	* tests/data/test-read-ctf/test8.o.abi: Likewise.
3314	* tests/data/test-read-ctf/test9.o.abi: Likewise.
3315
33162022-05-04  vsoch <vsoch@users.noreply.github.com>
3317
3318	Add Logic to detect file type by extension
3319	* tools/fedabipkgdiff - add logic to detect file type by extension
3320	Reviewed-by: Ben Woodard <woodard@redhat.com>
3321
33222022-05-04  Ben Woodard <woodard@redhat.com>
3323
3324	Add an option ignore SONAME differences in libraries
3325	* doc/manuals/abicompat.rst - added new option
3326	* doc/manuals/abidiff.rst - added new option to manpage
3327	* src/abg-comparison.cc (compute_diff): don't bother comparing the
3328	sonames if you aren't going to print them.
3329	* tools/abicompat.cc (options::ignore_soname): Add new data
3330	member.
3331	(parse_command_line): Support the new --ignore-soname command line
3332	option.
3333	(display_usage): Add a description string for the new
3334	--ignore-soname command line option.
3335	(create_diff_context): Set the diff_context::show_soname_change
3336	from the new options::ignore_soname data member.
3337	* tools/abidiff.cc (options::ignore_soname): Add new data member.
3338	(display_usage): Add a description string for the new
3339	--ignore-soname command line option.
3340	(parse_command_line): Support the new --ignore-soname command line
3341	option.
3342	(set_diff_context_from_opts): Set the
3343	diff_context::show_soname_change from the new
3344	options::ignore_soname.
3345
33462022-04-07  Giuliano Procida <gprocida@google.com>
3347
3348	symtab: fix up 64-bit ARM address which may contain tags
3349	* src/abg-elf-helpers.cc: (architecture_is_arm64): Add helper.
3350	* src/abg-elf-helpers.h: Likewise.
3351	* src/abg-symtab-reader.cc: (get_symbol_value): Adjust 64-bit
3352	ARM symbol values by extending bit 55 into bits 56 to 63.
3353
33542022-04-07  Giuliano Procida <gprocida@google.com>
3355
3356	symtab: refactor ELF symbol value tweaks
3357	* src/abg-symtab-reader.cc (symtab::load_): Replace address
3358	tweaking logic with a call to get_symbol_value.
3359	(symtab::add_alternative_address_lookups): Likewise.
3360	(symtab::get_symbol_value): New function containing address
3361	tweaking logic for PPC and ARM.
3362
33632022-04-29  Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
3364
3365	ctf-reader: Fix multiple var-decl in anonymous struct/uninons
3366	* src/abg-ctf-reader.cc (process_ctf_sou_members): Remove
3367	CTF_MN_RECURSE flag.
3368	* tests/data/Makefile.am: Add new input test files.
3369	* tests/data/test-read-ctf/test-anonymous-fields.c: New
3370	test file.
3371	* tests/data/test-read-ctf/test-anonymous-fields.o: New
3372	expected test output.
3373	* tests/data/test-read-ctf/test-anonymous-fields.o.abi:
3374	Likewise.
3375	* tests/test-read-ctf.cc: Add new test.
3376
33772022-04-25  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
3378
3379	tools-utils: `entry_of_file_with_name' returns incorrect result
3380	* src/abg-tools-utils.cc (entry_of_file_with_name): Replace
3381	call `string_ends_with' by `basename'.
3382
33832022-04-19  Ben Woodard <woodard@redhat.com>
3384
3385	Fix typo in abipkgdiff manpage
3386	* doc/manuals/abipkgdiff.rst: add missing `--`
3387
33882022-03-17  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
3389
3390	ctf-reader: Add support to undefined forward declaration types
3391	* src/abg-ctf-reader.cc (process_ctf_forward_type): New
3392	function.
3393	(process_ctf_type): New CTF_K_FORWARD case.
3394	* tests/data/test-read-ctf/test-forward-undefine-type-decl.c:
3395	New testcase.
3396	* tests/data/test-read-ctf/test-forward-undefine-type-decl.abi:
3397	New expected result.
3398	* tests/data/test-read-ctf/test-forward-undefine-type-decl.o
3399	New test input.
3400	* tests/test-read-ctf.cc: Add new testcase to test harness.
3401	* tests/data/Makefile.am: Add new test input files to test harness.
3402
34032022-03-07  Dodji Seketeli <dodji@redhat.com>
3404
3405	comparison: Avoid sorting diff nodes with wrong criteria
3406	* src/abg-comparison.cc (diff::append_child_node): Do not sort
3407	children nodes here because they must have been sorted already.
3408	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
3409	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
3410	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
3411	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
3412	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
3413	* 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:
3414	Likewise.
3415
34162022-03-07  Dodji Seketeli <dodji@redhat.com>
3417
3418	comparison: Factorize the code that inserts diff nodes to the graph
3419	* include/abg-comparison.h ({distinct, var, pointer, reference,
3420	array, qualified_type, enum, class_or_union, class, union, base,
3421	scope, fn_parm, function_type, function_decl, type_decl,
3422	typedef}_diff::finish_diff_type): Remove these declarations.
3423	* src/abg-comparison.cc ({distinct, var, pointer, reference,
3424	array, qualified_type, enum, class_or_union, class, union, base,
3425	scope, fn_parm, function_type, function_decl, type_decl,
3426	typedef}_diff::finish_diff_type): Remove these definitions.
3427	(diff::finish_diff_type): Add the code to connect the children
3428	nodes to the current node, making the generic view of the diff
3429	node usable to walk the graph.
3430
34312022-03-07  Dodji Seketeli <dodji@redhat.com>
3432
3433	comparison: Describe the "generic view" of a diff node
3434	* include/abg-comparison.h (class diff): Add comments to this class.
3435	(diff::chain_into_hierarchy): Add comment to this method.
3436	* src/abg-comparison-priv.h (diff::priv): Add comment to this class.
3437	* src/abg-comparison.cc (diff::finish_diff_type): Add comment to
3438	this method.
3439	(diff::traverse): Add comment.
3440
34412022-03-03  Dodji Seketeli <dodji@redhat.com>
3442
3443	Bug 28013 - Acknowledge variadic parameter type is not canonicalized
3444	* src/abg-ir.cc (is_non_canonicalized_type): Recognize variadic
3445	parameter types.
3446	* tests/data/test-diff-filter/test-PR28013-fn-variadic.c.{0,1}.abi: New test inputs.
3447	* tests/data/test-diff-filter/test-PR28013-fn-variadic.c.report.txt: Likewise.
3448	* tests/data/Makefile.am: Add the new test files to source distribution.
3449	* tests/test-diff-filter.cc (in_out_specs): Add the new tests to
3450	this harness.
3451	* tests/data/test-annotate/libtest23.so.abi: Likewise.
3452	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
3453	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
3454	* tests/data/test-annotate/test0.abi: Likewise.
3455	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
3456	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
3457	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
3458	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
3459	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
3460	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
3461	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
3462	* tests/data/test-diff-filter/test-PR28013-fn-variadic.c.0.abi: Likewise.
3463	* tests/data/test-diff-filter/test-PR28013-fn-variadic.c.1.abi: Likewise.
3464	* tests/data/test-diff-filter/test-PR28013-fn-variadic.c.report.txt: Likewise.
3465	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
3466	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
3467	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise.
3468	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
3469	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
3470	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
3471	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
3472	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
3473	* tests/data/test-read-dwarf/test0.abi: Likewise.
3474	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
3475	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
3476	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
3477	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
3478	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
3479	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
3480	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
3481	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
3482	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
3483	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
3484	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
3485	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
3486	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
3487	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
3488
34892022-02-24  Dodji Seketeli <dodji@redhat.com>
3490
3491	dwarf-reader: Don't propagate canonical type upon aggregate redundancy
3492	* src/abg-dwarf-reader.cc (compare_dies): Do not propagate
3493	canonical type when aggregate redundancy is detected.
3494
34952022-02-10  Dodji Seketeli <dodji@redhat.com>
3496
3497	Bug 26646 - unexpected declaration-only types (part 2)
3498	* src/abg-dwarf-reader.cc (struct dwarf_offset_pair_hash)
3499	(dwarf_offset_pair_set_type): Define new type.
3500	(die_offset, has_offset_pair, insert_offset_pair)
3501	(erase_offset_pair): Define new static helper functions.
3502	(compare_dies): Use a set of DWARF offsets for the
3503	'aggregates_being_compared' data structure, rather than a set of
3504	string representation of the DIEs.  Always look at the size of the
3505	types being compared first so that we can get out quickly if they
3506	differ.  For DIEs of DW_TAG_{union,struct}_type kind, don't limit
3507	the depth of the stack of DIEs being compared to 5; so we don't
3508	consider two types as being equal just because the depth of the
3509	stack being compared is 5 and the two types have the same size and
3510	are equal.  Hopefully things don't take too long.
3511
35122022-03-01  Dodji Seketeli <dodji@redhat.com>
3513
3514	ir: Remove obsolete comment from enumerator equal operator
3515	* src/abg-ir.cc (enum_type_decl::enumerator::operator==): Remove
3516	the obsolete parts from the comment.
3517
35182022-03-01  Dodji Seketeli <dodji@redhat.com>
3519
3520	reader: Fix a compilation warning
3521	* src/abg-reader.cc (build_var_decl): Add braces to an 'if'
3522	statement.
3523
35242022-02-28  Dodji Seketeli <dodji@redhat.com>
3525
3526	abilint --show-type-use: Show results for global decls that have no symbols
3527	* include/abg-fwd.h (is_at_global_scope): Declare ...
3528	* src/abg-ir.cc (is_at_global_scope): ... new overload.
3529	* tools/abilint.cc (emit_artifact_use_trace): Emit the trace also
3530	when the decl is at global scope or has a linkage name.
3531
35322022-02-17  Dodji Seketeli <dodji@redhat.com>
3533
3534	abilint: add the --show-type-use option
3535	* configure.ac: Define the --enable-show-type-use-in-abilint
3536	configure option.  It defines the WITH_SHOW_TYPE_USE_IN_ABILINT
3537	macro.
3538	* include/abg-reader.h (read_translation_unit): Add an overload
3539	that takes the read context.
3540	(get_types_from_type_id, get_artifact_used_by_relation_map):
3541	Declare new functions.
3542	* src/abg-reader.cc (get_types_from_type_id)
3543	(get_artifact_used_by_relation_map): Declare these functions as
3544	friend of the read_context type.
3545	(read_context::m_artifact_used_by_map):
3546	(read_context::key_type_decl): Replace the shared_ptr<type_base>
3547	type of the first parm by the equivalent type_base_sptr type.
3548	(read_context::{record_artifact_as_used_by,
3549	record_artifacts_as_used_in_fn_decl,
3550	record_artifacts_as_used_in_fn_type}): Add new methods guarded by
3551	the WITH_SHOW_TYPE_USE_IN_ABILINT macro.
3552	(get_types_from_type_id, get_artifact_used_by_relation_map): Define
3553	new functions guarded by the WITH_SHOW_TYPE_USE_IN_ABILINT macro.
3554	(read_translation_unit): Define new overload.
3555	(RECORD_ARTIFACT_AS_USED_BY, RECORD_ARTIFACTS_AS_USED_IN_FN_DECL)
3556	(RECORD_ARTIFACTS_AS_USED_IN_FN_TYPE): Define new macros.
3557	(build_function_decl, build_var_decl, build_qualified_type_decl)
3558	(build_pointer_type_def, build_reference_type_def)
3559	(build_function_type, build_array_type_def, build_enum_type_decl)
3560	(build_typedef_decl, build_class_decl, build_union_decl): Use the
3561	macros above to mark the relevant sub-types as used by the
3562	artifact being built.
3563	* tools/abilint.cc (struct artifact_use_relation_tree): Define new
3564	type, guarded by the WITH_SHOW_TYPE_USE_IN_ABILINT macro.
3565	(fill_artifact_use_tree, build_type_use_tree, emit_trace)
3566	(emit_artifact_use_trace, emit_artifact_use_trace)
3567	(show_how_type_is_used): Define static functions guarded by the
3568	WITH_SHOW_TYPE_USE_IN_ABILINT macro.
3569	(display_usage): Add doc string for the --show-type-use option,
3570	guarded by the WITH_SHOW_TYPE_USE_IN_ABILINT macro.
3571	(parse_command_line): Parse the --show-type-use option, guarded by
3572	the WITH_SHOW_TYPE_USE_IN_ABILINT macro.
3573	(main): Slight re-organisation to make the abixml file reading use
3574	a read_context.  That read context is then used to analyze how a
3575	given type is used whenever the --show-type-use option is used.
3576
35772022-02-17  Dodji Seketeli <dodji@redhat.com>
3578
3579	configure: Remove use of obsolete AC_CONFIG_HEADER
3580	* configure.ac: Replace the use of the obsolete AC_CONFIG_HEADER
3581	by AC_CONFIG_HEADERS.
3582
35832022-02-08  Randy MacLeod <Randy.MacLeod@windriver.com>
3584
3585	Improve some grammar
3586	* COMPILING: Improve grammar
3587	* CONTRIBUTING: Improve grammar
3588	* README: Improve grammar
3589	* VISIBILITY: Improve grammar
3590
35912022-01-21  Giuliano Procida <gprocida@google.com>
3592
3593	XML writer: do not create extra temporary referenced type shared_ptr
3594	* src/abg-writer.cc (write_referenced_types): Create temporary
3595	shared_ptr objects within each conditional branch instead of
3596	outside the conditionals and within one of the branches.
3597	Reviewed-by: Matthias Maennich <maennich@google.com>
3598
35992022-01-21  Giuliano Procida <gprocida@google.com>
3600
3601	XML writer: improve slightly emission of top-level declarations
3602	* src/abg-writer.cc (decl_is_emitted): Make decl_base_sptr
3603	argument a const reference.
3604	(write_translation_unit): Eliminate a typedef and just use a
3605	range-for loop without the extra dynamic cast for the non-type
3606	case. Use else instead of continue to make it clear there are
3607	only two possibilities.
3608	Reviewed-by: Matthias Maennich <maennich@google.com>
3609
36102022-01-21  Giuliano Procida <gprocida@google.com>
3611
3612	XML writer: drop write_elf_symbols_table variable emitted_syms
3613	* src/abg-writer.cc (write_elf_symbols_table): Drop unused
3614	local variable emitted_syms.
3615	Reviewed-by: Matthias Maennich <maennich@google.com>
3616
36172022-01-21  Giuliano Procida <gprocida@google.com>
3618
3619	XML writer: remove type_hasher and remaining comment
3620	* src/abg-writer.cc (type_hasher): Remove this unused functor.
3621	Remove a following comment referencing it.
3622	Reviewed-by: Matthias Maennich <maennich@google.com>
3623
36242022-02-07  Dodji Seketeli <dodji@redhat.com>
3625
3626	Bug 26646 - unexpected declaration-only types
3627	* src/abg-dwarf-reader.cc (add_or_update_class_type): Do not reuse
3628	the IR for a DIE with the same textual representation as the one
3629	we are seeing now.
3630	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
3631	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
3632
36332022-02-07  Dodji Seketeli <dodji@redhat.com>
3634
3635	symtab-reader: Remove an over-agressive assertion
3636	* src/abg-symtab-reader.cc
3637	(symtab::add_alternative_address_lookups): Remove over-aggressive
3638	assert.
3639	Reviewed-by: Giuliano Procida <gprocida@google.com>
3640
36412022-01-29  David Seifert <soap@gentoo.org>
3642
3643	Find fts-standalone on musl
3644	* configure.ac: Invoke AC_CANONICAL_HOST to compute the host_cpu,
3645	host_vendor, host_os parts of the 'host" variable.  Then if the
3646	host_os ends up with "musl" then, check for the fts-standalone
3647	pkgconfig module and record the fts library into
3648	FTS_{LIBS,CFLAGS}.
3649	* src/Makefile.am: Link to $FTS_LIBS and use $FTS_CFLAGS for
3650	compilation.
3651	* tools/Makefile.am: Likewise.
3652	* tools/abisym.cc: Include libgen.h
3653	* tools/kmidiff.cc: Remove useless fts.h header file.
3654
36552022-02-07  Dodji Seketeli <dodji@redhat.com>
3656
3657	symtab-reader: Fix typo in comment
3658	* src/abg-symtab-reader.cc
3659	(symtab::update_function_entry_address_symbol_map): Fix typo in
3660	comment.
3661
36622022-01-20  Dodji Seketeli <dodji@redhat.com>
3663
3664	writer: small compilation error fix
3665	* abg-writer.cc (write_type_record): Fix const-ness in argument
3666	passing.
3667
36682021-11-26  Matthias Maennich <maennich@google.com>
3669
3670	abidiff: improve whitespace generation in symbol diff report
3671	* src/abg-reporter-priv.cc (maybe_report_diff_for_symbol):
3672	Make return void. Simplify and fix new-line emission. Remove
3673	comma emission. Tweak CRC wording.
3674	* src/abg-reporter-priv.h (maybe_report_diff_for_symbol):
3675	Return void.
3676	* tests/data/test-abidiff-exit/test-crc-report.txt: Shorten CRC
3677	wording.
3678	* tests/data/test-abidiff/test-crc-report.txt: Likewise.
3679	* tests/data/test-diff-filter/test-PR27569-report-0.txt:
3680	Likewise.
3681	Reviewed-by: Giuliano Procida <gprocida@google.com>
3682
36832022-01-19  George Rawlinson <grawlinson@archlinux.org>
3684
3685	Bug 28663 - generate man page for kmidiff
3686	* doc/manuals/conf.py: Update copyright year.  Generate man page
3687	for the kmidiff tool.
3688
36892021-12-03  Matthias Maennich <maennich@google.com>
3690
3691	XML writer: resolve declaration-only enum definitions
3692	* src/abg-writer.cc (write_enum_type_decl): Look through
3693	declaration-only types the same as for structs and unions.
3694	Reviewed-by: Giuliano Procida <gprocida@google.com>
3695
36962021-12-03  Matthias Maennich <maennich@google.com>
3697
3698	XML writer: map type ids by bare pointer
3699	* src/abg-writer.cc (type_ptr_map): use default equality on
3700	type_base pointer.
3701	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Refresh
3702	test case, as described above.
3703	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
3704	Reviewed-by: Giuliano Procida <gprocida@google.com>
3705
37062021-12-03  Matthias Maennich <maennich@google.com>
3707
3708	XML writer: track emitted types by bare pointer
3709	* src/abg-writer.cc (type_ptr_set_type): Change typedef
3710	container type to use default equality and hashing for pointer
3711	keys.
3712	(fn_type_ptr_set_type): Likewise.
3713	Reviewed-by: Giuliano Procida <gprocida@google.com>
3714
37152022-01-18  Giuliano Procida <gprocida@google.com>
3716
3717	abidiff: include ABI XML versions when reporting a mismatch cont.
3718	* tools/abidiff.cc
3719	(emit_incompatible_format_version_error_message): Fix
3720	parameter documentation.
3721	Fixes: b251bc611eb6 ("abidiff: include ABI XML versions when reporting a mismatch")
3722
37232022-01-18  Giuliano Procida <gprocida@google.com>
3724
3725	abidiff: include ABI XML versions when reporting a mismatch
3726	* tools/abidiff.cc
3727	(emit_incompatible_format_version_error_message): Add version1
3728	and version2 arguments. Add versions to error message.
3729	(main): Pass emit_incompatible_format_version_error_message
3730	mismatching versions.
3731
37322022-01-18  Mark Wielaard <mark@klomp.org>
3733
3734	DWARF reader: use size_t for DWARF expression length cont.
3735	* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
3736	Change expr_len argument type to size_t.
3737	(op_pushes_constant_value): Update ops_len and index argument
3738	types to size_t. Update next_index argument type to size_t&.
3739	(op_pushes_non_constant_value): Likewise.
3740	(op_is_arith_logic): Update expr_len and index argument types
3741	to size_t. Update next_index argument type to size_t&.
3742	(op_is_control_flow): Likewise.
3743	Fixes: 16207c4af7bc ("Bug 28191 - Interpret DWARF 5 addrx locations")
3744
37452022-01-17  Giuliano Procida <gprocida@google.com>
3746
3747	DWARF reader: use size_t for DWARF expression length
3748	* src/abg-dwarf-reader.cc (die_location_expr): Change expr_len
3749	argument type to size_t*.
3750	(op_manipulates_stack): Change expr_len and index argument
3751	types to size_t; change next_index argument type to size_t&.
3752	(eval_last_constant_dwarf_sub_expr): Change expr_len argument
3753	and local variables index and next_index types to size_t.
3754	(die_member_offset): Change local variable expr_len type to
3755	size_t.
3756	(die_location_address): Likewise.
3757	(die_virtual_function_index): Likewise.
3758	Fixes: 16207c4af7bc ("Bug 28191 - Interpret DWARF 5 addrx locations")
3759
37602022-01-11  Giuliano Procida <gprocida@google.com>
3761
3762	symtab reader: fix up alternative addresses
3763	* src/abg-symtab-reader.cc
3764	(symtab::add_alternative_address_lookups): Tweak function
3765	addresses in the same manner as done in symtab::load_.
3766
37672022-01-14  David Cantrell <dcantrell@redhat.com>
3768
3769	Include <libgen.h> in tools/abisym.cc for basename(3)
3770	* tools/abisym.cc:
3771
37722022-01-13  Giuliano Procida <gprocida@google.com>
3773
3774	Bug 28191 - Interpret DWARF 5 addrx locations
3775	* src/abg-dwarf-reader.cc (die_location_address): Use
3776	dwarf_attr_integrate, dwarf_getlocation and
3777	dwarf_getlocation_attr to decode addreses, instead of
3778	die_location_expr and eval_last_constant_dwarf_sub_expr.
3779	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
3780	Refresh test reference output; two more symbols have types.
3781
37822022-01-14  Dodji Seketeli <dodji@redhat.com>
3783
3784	Bug 28319 - re-fix of rhbz1951526 - SELF CHECK FAILED for 'gimp-2.10'
3785	* include/abg-ir.h (environment::use_enum_binary_only_equality):
3786	Remove.
3787	* src/abg-comparison.cc (compute_diff): In the overload for
3788	enum_type_decl, stop using binary-only-equality for enums.
3789	* src/abg-dwarf-reader.cc
3790	(read_context::compare_before_canonicalisation): Likewise.
3791	* src/abg-ir.cc (environment::use_enum_binary_only_equality):
3792	Remove.
3793	(enumerators_values_are_equal)
3794	(is_enumerator_value_present_in_enum)
3795	(is_enumerator_value_redundant): Define new static functions.
3796	(equals): In the overload for enum_type_decl, use the new
3797	is_enumerator_value_redundant to detect if two enums are equal
3798	modulo a redundant enumerator value.  In that case, consider they
3799	are equal.
3800	* tests/data/test-abidiff/test-enum0-report.txt: Adjust.
3801	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise.
3802	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
3803	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
3804	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise.
3805	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
3806	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
3807	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
3808
38092022-01-05  Thomas Schwinge <thomas@codesourcery.com>
3810
3811	Handle several variants of Python 'imp', 'importlib' modules
3812	* tests/mockfedabipkgdiff.in: Handle several variants of Python
3813	'imp', 'importlib' modules.
3814	Tested-by: Mark Wielaard <mark@klomp.org> (CentOS 7)
3815
38162021-12-21  Dodji Seketeli <dodji@redhat.com>
3817
3818	suppression: Fix compilation warning on el7
3819	* src/abg-suppression.cc (type_suppression::suppresses_diff):
3820	Remove the unused variable second_type_decl.
3821
38222021-12-21  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
3823
3824	ctf-reader: Assert on ir::hash_as_canonical_type_or_constant
3825	* src/abg-ctf-reader.cc (process_ctf_base_type): Add new
3826	`translation_unit_sptr' parameter. Add condition to validate
3827	success 'base_type' construction and register type object.
3828	(process_ctf_typedef): Add `lookup_type' to get a `type_base'
3829	object when this was previously created, if this is not the
3830	case, register ctf type. Add condition to validate success
3831	'base_type' construction and register type object.
3832	(process_ctf_function_type): Likewise.
3833	(process_ctf_array_type): Likewise.
3834	(process_ctf_qualified_type): Likewise.
3835	(process_ctf_pointer_type): Likewise.
3836	(process_ctf_struct_type): Add `add_decl_to_scope'.
3837	(process_ctf_union_type): Likewise.
3838	(process_ctf_type): Add `lookup_type' to get a `type_base'
3839	object when this was previously created. Delegate register
3840	type object to `process_ctf_*'.
3841	* tests/data/Makefile.am: Add tests I/O and expected files.
3842	* tests/data/test-read-ctf/test-array-of-pointers.[co]: New
3843	testcase.
3844	* tests/data/test-read-ctf/test-list-struct.[co]: Likewise.
3845	* tests/data/test-read-ctf/test-callback.[co]: Likewise.
3846	* tests/data/test-read-ctf/test-callback2.[co]: Likewise.
3847	* tests/data/test-read-ctf/test-functions-declaration.[co]: Likewise.
3848	* tests/data/test-read-ctf/test-forward-type-decl.[co]: Likewise.
3849	* tests/data/test-read-ctf/test-array-of-pointers.abi:
3850	Expected test output.
3851	* tests/data/test-read-ctf/test-callback.abi: Likewise.
3852	* tests/data/test-read-ctf/test-callback2.abi: Likewise.
3853	* tests/data/test-read-ctf/test-forward-type-decl.abi: Likewise.
3854	* tests/data/test-read-ctf/test-functions-declaration.abi: Likewise.
3855	* tests/data/test-read-ctf/test-list-struct.abi: Likewise.
3856	* tests/test-read-ctf.cc: Add testcases to CTF test harness.
3857
38582021-12-21  Thomas Schwinge <thomas@codesourcery.com>
3859
3860	Replace Python 'import importlib' with 'import importlib.machinery'
3861	* tests/mockfedabipkgdiff.in: Replace Python 'import importlib'
3862	with 'import importlib.machinery'.
3863
38642021-12-17  Thomas Schwinge <thomas@codesourcery.com>
3865
3866	fedabipkgdiff: Also accept MIME type 'application/x-redhat-package-manager' for RPM files
3867	*** 4.0.0 900
3868	900 http://ftp.de.debian.org/debian testing/main amd64 Packages
3869	900 http://ftp.de.debian.org/debian testing/main i386 Packages
3870	800 http://ftp.de.debian.org/debian unstable/main amd64 Packages
3871	800 http://ftp.de.debian.org/debian unstable/main i386 Packages
3872	100 /var/lib/dpkg/status
3873	$ awk '$2 ~ /rpm/' < /etc/mime.types
3874	application/x-redhat-package-manager            rpm
3875	$ dpkg -S /etc/mime.types
3876	mime-support: /etc/mime.types
3877	$ apt policy mime-support
3878	mime-support:
3879	Installed: 3.64ubuntu1
3880	Candidate: 3.64ubuntu1
3881	Version table:
3882	*** 3.64ubuntu1 500
3883	500 http://de.archive.ubuntu.com/ubuntu focal/main amd64 Packages
3884	500 http://de.archive.ubuntu.com/ubuntu focal/main i386 Packages
3885	100 /var/lib/dpkg/status
3886	$ awk '$2 ~ /rpm/' < /etc/mime.types
3887	application/x-redhat-package-manager		rpm
3888	$ dpkg -S /etc/mime.types
3889	mime-support: /etc/mime.types
3890	$ apt-cache policy mime-support
3891	mime-support:
3892	Installed: 3.54ubuntu1.1
3893	Candidate: 3.54ubuntu1.1
3894	Version table:
3895	*** 3.54ubuntu1.1 0
3896	500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
3897	500 http://us.archive.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
3898	100 /var/lib/dpkg/status
3899	3.54ubuntu1 0
3900	500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
3901	Otherwise, 'is_rpm_file' fails, resulting in a few test cases failing with an
3902	unhelpful 'Unknown arguments. Please refer to --help.' message (similar to what
3903	had been observed in PR22077 "runtestfedabipkgdiff.py fails on centos-x86_64").
3904	* tools/fedabipkgdiff (is_rpm_file): Also accept MIME type
3905	'application/x-redhat-package-manager' for RPM files.
3906	CC: Chenxiong Qi <cqi@redhat.com>
3907
39082021-12-17  Thomas Schwinge <thomas@codesourcery.com>
3909
3910	Replace use of deprecated Python 'imp' module with 'importlib'
3911	* tests/mockfedabipkgdiff.in: Replace use of deprecated Python
3912	'imp' module with 'importlib'.
3913	CC: Chenxiong Qi <cqi@redhat.com>
3914
39152021-12-17  Thomas Schwinge <thomas@codesourcery.com>
3916
3917	fedabipkgdiff: Enable testing without proper Koji installation
3918	* tools/fedabipkgdiff: Handle 'koji.ConfigurationError'.
3919	* configure.ac: Likewise.
3920	* CONTRIBUTING: Document "fedabipkgdiff testing".
3921	Documenting/providing a way to enable such testing, this commit can be
3922	considered a sequel to commit 90d236a03343d75ea504d53c73270e50b9000e75
3923	"Bug 22076 - Disable fedabipkgdiff for old koji clients", for Mark Wielaard's
3924	PR22076 "runtestfedabipkgdiff.py fails on debian-amd64".
3925
39262021-12-10  Thomas Schwinge <thomas@codesourcery.com>
3927
3928	abipkgdiff: Use 'convert_path_to_relative' in 'create_abi_file_path'
3929	* tools/abipkgdiff.cc (create_abi_file_path): Use
3930	'convert_path_to_relative'.
3931
39322021-12-10  Thomas Schwinge <thomas@codesourcery.com>
3933
3934	abipkgdiff: Respect 'create_abi_file_path' interface
3935	* tools/abipkgdiff.cc (compare_to_self): Respect
3936	'create_abi_file_path' interface.
3937
39382021-12-10  Thomas Schwinge <thomas@codesourcery.com>
3939
3940	configure: Instead of for rpm 4.15+ version, test actual rpm/zstd support
3941	* configure.ac: Instead of for rpm 4.15+ version, test actual
3942	rpm/zstd support.
3943	* tests/test-diff-pkg.cc: Adjust.
3944
39452021-12-14  Thomas Schwinge <thomas@codesourcery.com>
3946
3947	Further update 'make distcheck-fast'
3948	* CONTRIBUTING: Further update 'make distcheck-fast'.
3949	Suggested-by: Matthias Maennich <maennich@google.com>
3950
39512021-12-14  Thomas Schwinge <thomas@codesourcery.com>
3952
3953	Add '.mailmap'
3954	* .mailmap: New.
3955	CC: Ben Woodard <woodard@redhat.com>
3956	CC: Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
3957	CC: Jose E. Marchesi <jose.marchesi@oracle.com>
3958	CC: Matthias Maennich <maennich@google.com>
3959	CC: Xiao Jia <xiaoj@google.com>
3960
39612021-12-11  Thomas Schwinge <thomas@codesourcery.com>
3962
3963	configure: Tune fedabipkgdiff dependencies detection
3964	* configure.ac: Tune fedabipkgdiff dependencies detection.
3965
39662021-12-11  Thomas Schwinge <thomas@codesourcery.com>
3967
3968	CONTRIBUTING: Move "Coding language and style" section
3969	* CONTRIBUTING: Move "Coding language and style" section.
3970
39712021-12-15  Mark Wielaard <mark@klomp.org>
3972
3973	dwarf-reader: Workaround libdw dwarf_location_expression bug
3974	* src/abg-dwarf-reader.cc (die_constant_data_member_location):
3975	New function.
3976	(die_member_offset): Use die_constant_data_member_location
3977	before calling die_location_expr and eval_quickly.
3978
39792021-12-14  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
3980
3981	Add regression tests for ctf reading
3982	* tests/test-read-ctf.cc: New ctf reading regression test.
3983	* tests/test-read-common.cc: New library to be used with
3984	test-read-{ctf,dwarf}.cc.
3985	* tests/test-read-common.h: Likewise.
3986	* tests/test-annotate.cc (in_out_specs): Adjust path for input files.
3987	* tests/Makefile.am: Build new tests/test-read-ctf.cc file.
3988	* tests/data/Makefile.am: Add test inputs and expected files.
3989	Add libtestreadcommon.a test library and use it for test-read-{ctf,dwarf}.
3990	* tests/test-read-dwarf.cc: Adapt test to use libtestreadcommon.a in
3991	test-read-common.{cc,h}.
3992	* tests/data/test-annotate/test3.so.abi: Adjust ELF input path file
3993	location to ./tests/data/test-read-common.
3994	* tests/data/test-annotate/test4.so.abi: Likewise.
3995	* tests/data/test-read-common/PR26261: Move test harness to
3996	test-read-common directory.
3997	* tests/data/test-read-common/PR27700: Likewise.
3998	* tests/data/test-read-common/test-PR26568-*: Likewise.
3999	* tests/data/test-read-common/test3.{c,so}: Likewise.
4000	* tests/data/test-read-common/test4.{c,so}: Likewise.
4001	* tests/data/test-read-common/crti*: Helper object to export
4002	_init and _fini sysmbols.
4003	* tests/data/test-read-ctf/test-ambiguous-struct-A.c: New testcase.
4004	* tests/data/test-read-ctf/test-ambiguous-struct-B.c: Likewise.
4005	* tests/data/test-read-ctf/test-conflicting-type-syms-a.c: Likewise.
4006	* tests/data/test-read-ctf/test-conflicting-type-syms-b.c: Likewise.
4007	* tests/data/test-read-ctf/test-enum.c: Likewise.
4008	* tests/data/test-read-ctf/test-enum-many.c: Likewise.
4009	* tests/data/test-read-ctf/test-enum-symbol.c: Likewise.
4010	* tests/data/test-read-ctf/test-struct-iteration.c: Likewise.
4011	* tests/data/test-read-ctf/test-dynamic-array.c: Likewise.
4012	* tests/data/test-read-ctf/test0.c: Likewise.
4013	* tests/data/test-read-ctf/test1.c: Likewise.
4014	* tests/data/test-read-ctf/test2.c: Likewise.
4015	* tests/data/test-read-ctf/test5.c: Likewise.
4016	* tests/data/test-read-ctf/test7.{c,h}: Likewise.
4017	* tests/data/test-read-ctf/test8.c: Likewise.
4018	* tests/data/test-read-ctf/test9.c: Likewise.
4019	* tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Testcase
4020	expected result.
4021	* tests/data/test-read-ctf/PR26261/PR26261-exe.abi: Likewise.
4022	* tests/data/test-read-ctf/PR27700/test-PR27700.abi: Likewise.
4023	* tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Likewise.
4024	* tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: Likewise.
4025	* tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: Likewise.
4026	* tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: Likewise.
4027	* tests/data/test-read-ctf/test-enum.o.abi: Likewise.
4028	* tests/data/test-read-ctf/test-enum-many.o.hash.abi: Likewise.
4029	* tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise.
4030	* tests/data/test-read-ctf/test-struct-iteration.o.abi: Likewise.
4031	* tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise.
4032	* tests/data/test-read-ctf/test0: Likewise.
4033	* tests/data/test-read-ctf/test0*.abi: Likewise.
4034	* tests/data/test-read-ctf/test1.so: Likewise.
4035	* tests/data/test-read-ctf/test1*.abi: Likewise.
4036	* tests/data/test-read-ctf/test2.so: Likewise.
4037	* tests/data/test-read-ctf/test2*.abi: Likewise.
4038	* tests/data/test-read-ctf/test3.so.abi: Likewise.
4039	* tests/data/test-read-ctf/test4*.abi: Likewise.
4040	* tests/data/test-read-ctf/test5.o.abi: Likewise.
4041	* tests/data/test-read-ctf/test7.o.abi: Likewise.
4042	* tests/data/test-read-ctf/test8.o.abi: Likewise.
4043	* tests/data/test-read-ctf/test9.o.abi: Likewise.
4044	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Update
4045	expected abixml file.
4046	* tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise.
4047	* tests/data/test-read-dwarf/test-PR26568-1.*.abi: Likewise.
4048	* tests/data/test-read-dwarf/test3*.abi: Likewise.
4049	* tests/data/test-read-dwarf/test4*.abi: Likewise.
4050	* doc/api/libabigail.doxy: Add tests/test-read-common.{cc,h} to
4051	doxygen.
4052
40532021-11-27  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
4054
4055	ctf-reader: Fix length in dynamic array definition
4056	* src/abg-ctf-reader.cc (process_ctf_array_type):
4057	set subrange_type::is_infinite when `upper_bound' value
4058	is equal to `0'.
4059
40602021-12-09  Thomas Schwinge <thomas@codesourcery.com>
4061
4062	Better highlight 'make distcheck-fast'
4063	* CONTRIBUTING: Better highlight 'make distcheck-fast'.
4064
40652021-12-03  Matthias Maennich <maennich@google.com>
4066
4067	XML writer: use exemplar types for tracking referenced types
4068	* src/abg-writer.cc (record_type_as_referenced): Use exemplar
4069	type with referenced type sets.
4070	(type_is_referenced): Likewise.
4071	(tests/data/test-annotate/test14-pr18893.so.abi): Duplicate
4072	type(s) removed, as described above.
4073	(tests/data/test-read-dwarf/test14-pr18893.so.abi): Likewise.
4074	(tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi):
4075	Likewise.
4076	(tests/data/test-read-dwarf/test16-pr18904.so.abi): Likewise.
4077	(tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi):
4078	Likewise.
4079	(tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi):
4080	Likewise.
4081	(tests/data/test-read-dwarf/PR25007-sdhci.ko.abi): Some
4082	function type(s) reordered, as described above.
4083	(tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi):
4084	Likewise.
4085	(tests/data/test-annotate/test15-pr18892.so.abi):: Duplicate
4086	type(s) removed and some function type(s) reordered, as
4087	described above.
4088	(tests/data/test-read-dwarf/test15-pr18892.so.abi): Likewise.
4089	(tests/data/test-annotate/test21-pr19092.so.abi): Likewise.
4090	(tests/data/test-read-dwarf/test21-pr19092.so.abi): Likewise
4091	Reviewed-by: Giuliano Procida <gprocida@google.com>
4092
40932021-12-03  Matthias Maennich <maennich@google.com>
4094
4095	XML writer: use consistent type pointers for type ids and emission tracking
4096	* include/abg-fwd.h (get_exemplar_type): Declare new function.
4097	* src/abg-ir.cc (get_exemplar_type): Define new function.
4098	* src/abg-writer.cc (type_has_existing_id): use get_exemplar_type
4099	for resolution.
4100	(get_id_for_type): Likewise.
4101	(record_type_as_emitted): Likewise.
4102	(type_is_emitted): Likewise.
4103	Reviewed-by: Giuliano Procida <gprocida@google.com>
4104
41052021-12-06  Dodji Seketeli <dodji@redhat.com>
4106
4107	reader: Build array types with their element type "a priori"
4108	* src/abg-ir.cc (var_decl::get_pretty_representation): Assert that
4109	array element types are not empty.
4110	* src/abg-reader.cc (build_array_type_def): Set array element
4111	types a priori.
4112
41132021-12-02  Dodji Seketeli <dodji@redhat.com>
4114
4115	suppression: Fix has_data_member_inserted_between = {offset_of(), offset_of()}
4116	* doc/manuals/libabigail-concepts.rst: Update the documentation to
4117	reflect that has_data_member* properties will never suppress any
4118	type change if the change carries a data member suppression or a
4119	type size reduction.
4120	* include/abg-fwd.h (get_last_data_member)
4121	(get_next_data_member_offset): Declare new functions.
4122	* include/abg-suppression.h
4123	(insertion_range::boundary_value_is_end): Declare new static
4124	member function.
4125	(type_supression::insertion_range::eval_boundary): Make this
4126	static function take an uint64_t rather than ssize_t.
4127	(type_suppression::insertion_range::integer_boundary::{integer_boundary,
4128	as_integer, operator int}): Make these member functions and
4129	operator take or return uint64_t rather than int.
4130	* src/abg-ir.cc (get_last_data_member)
4131	(get_next_data_member_offset): Define new functions.
4132	* src/abg-suppression.cc
4133	(type_suppression::suppresses_diff): Rework logic to better handle
4134	"has_data_member_inserted_*" properties in the context of class
4135	diffs.  If the diff object carries data member removal or size
4136	reduction, the diff object is not suppressed by the current type
4137	suppression.  Also, the property "has_data_member_inserted_at =
4138	end", is now represented by an insertion range where the beginning
4139	and the end of the range are both the max possible value of
4140	insertion range boundaries; the code is made to recognize that.
4141	(type_suppression::insertion_range::eval_boundary): Make this
4142	static function take an uint64_t rather than ssize_t.  If the
4143	boundary is expressed as a "offset_after" expression, make sure
4144	the offset of the next data member is considered if it's present.
4145	(type_suppression::insertion_range::integer_boundary::{integer_boundary,
4146	as_integer, operator int}): Make these take or return uint64_t
4147	rather than int.
4148	(type_suppression::insertion_range::boundary_value_is_end): Define
4149	new member function.
4150	(type_suppression::insertion_range::integer_boundary::priv::value_):
4151	Turn the type of this into uint64_t, from int.
4152	(type_suppression::insertion_range::integer_boundary::priv::priv):
4153	The parameter of this is now uint64_t, from int.
4154	* tests/data/test-diff-suppr/PR28073/PR28073-bitfield-removed.c:
4155	New test source code.
4156	* tests/data/test-diff-suppr/PR28073/PR28073-bitfield-removed.o:
4157	New test binary.
4158	* tests/data/test-diff-suppr/PR28073/PR28073-bitfield-removed.o.abi:
4159	New test input.
4160	* tests/data/test-diff-suppr/PR28073/PR28073-output-{1,2}.txt: New
4161	test reference output.
4162	* tests/data/test-diff-suppr/PR28073/PR28073.after.o: New test
4163	binary.
4164	* tests/data/test-diff-suppr/PR28073/PR28073.after.o.abi: New test
4165	input.
4166	* tests/data/test-diff-suppr/PR28073/PR28073.before.o: New test
4167	binary.
4168	* tests/data/test-diff-suppr/PR28073/PR28073.before.o.abi: New
4169	test input.
4170	* tests/data/test-diff-suppr/PR28073/PR28073.c: New test source
4171	code.
4172	* tests/data/test-diff-suppr/PR28073/bitfield.suppr: New test
4173	input.
4174	* tests/data/Makefile.am: Add the new test material to source
4175	distribution.
4176	* tests/test-diff-suppr.cc: Add the new test input to this test
4177	harness.
4178
41792021-11-24  Matthias Maennich <maennich@google.com>
4180
4181	XML writer: adjust tracking of emitted declarations
4182	* abg-writer.cc (write_context): Replace mutable
4183	m_emitted_decls_map with plain m_emitted_decls_set.
4184	(decl_name_is_emitted): Inlined into decl_is_emitted; dropped.
4185	(decl_is_emitted): Turn the is_type check into an assert and
4186	inline decl_name_is_emitted. Look up in set instead of map.
4187	(record_decl_as_emitted): Make non-const. Insert into set
4188	instead of map.
4189	Reviewed-by: Giuliano Procida <gprocida@google.com>
4190
41912021-11-22  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
4192
4193	ctf-reader: Fix memory leak reported by valgrind
4194	* src/abg-ctf-reader.cc (process_ctf_archive): Add
4195	ctf_dict_close
4196
41972021-11-18  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
4198
4199	ctf-reader: Use ABG_ASSERT instead of assert
4200	* tools/abidiff.cc (main): Use ABG_ASSERT instead of assert.
4201	* tools/abilint.cc: Likewise.
4202
42032021-11-18  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
4204
4205	ctf-reader: Make create_read_context return a smart pointer.
4206	* include/abg-ctf-reader.h (read_context_sptr): New typedef.
4207	(create_read_context): Use read_context_sptr as return value.
4208	(read_corpus): New overload that takes a read_context_sptr.
4209	* src/abg-ctf-reader.cc (create_read_context): Use
4210	read_context_sptr as return value.
4211	(read_corpus): New overload that takes a read_context_sptr.
4212	* tools/abidiff.cc (main): Use read_context_sptr.
4213	* tools/abidw.cc (load_corpus_and_write_abixml): Adjust call to
4214	create_read_context.
4215	* tools/abilint.cc: Likewise.
4216
42172021-11-22  Dodji Seketeli <dodji@redhat.com>
4218
4219	ctf-reader: Remove useless parameter from fill_ctf_section
4220	* src/abg-ctf-reader.cc (fill_ctf_section): Remove the now useless
4221	context parameter.  Adjust the comment accordingly.
4222	(slurp_elf_info): Adjust the invocation of fill_ctf_section.
4223
42242021-11-17  Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
4225
4226	ctf-reader: Use argument by reference reading the context
4227	* include/abg-ctf-reader.h (create_read_context): Pass the string
4228	by reference.
4229	* src/abg-ctf-reader.cc (ctf_reader::read_context): Likewise.
4230	(create_read_context): Likewise.
4231
42322021-11-17  Jose E. Marchesi via Libabigail <libabigail@sourceware.org>
4233
4234	abidw: add support for CTF
4235	* tools/abidw.cc: Conditionally include abg-ctf-reader.h.
4236	(load_corpus_and_write_abixml): Do not get a
4237	dwarf_reader::read_context as an argument.
4238	(main): Adjust call to load_corpus_and_write_abixml accordingly.
4239	(struct options): New option use_ctf.
4240	(options): ... and initialize it.
4241	(display_usage): Document --ctf.
4242	(parse_command_line): Handle --ctf.
4243	* doc/manuals/abidw.rst: Document --ctf.
4244
42452021-11-16  Jose E. Marchesi via Libabigail <libabigail@sourceware.org>
4246
4247	ctf: ctf_reader::read_corpus now sets a status
4248	* include/abg-ctf-reader.h: Include abg-elf-reader-common.h.
4249	read_corpus now gets an extra argument `status'.
4250	* src/abg-ctf-reader.cc (read_corpus): Likewise, and set `status'
4251	accordingly when the debug info is not found.
4252	* tools/abilint.cc (main): Pass a status argument to
4253	ctf_reader::read_corpus.
4254	* tools/abidiff.cc (main): Likewise.
4255
42562021-11-11  tangmeng <tangmeng@uniontech.com>
4257
4258	Standardize and improve the output of several tests
4259	* tests/test-abidiff-exit.cc (main): Use
4260	abigail::tests::emit_test_{summary, status_and_update_counters}
4261	functions to ameliorate and standardize test output.
4262	* tests/test-alt-dwarf-file.cc (main): Likewise.
4263	* tests/test-annotate.cc (main): Likewise.
4264	* tests/test-diff-dwarf-abixml.cc (main): Likewise.
4265	* tests/test-ini.cc (main): Likewise.
4266	* tests/test-lookup-syms.cc (main): Likewise.
4267
42682021-11-17  Dodji Seketeli <dodji@redhat.com>
4269
4270	test-utils: Define test status reporting functions
4271	* tests/test-utils.h (emit_test_status_and_update_counters)
4272	(emit_test_summary): Declare ...
4273	* tests/test-utils.cc (emit_test_status_and_update_counters)
4274	(emit_test_summary): ... new functions.
4275
42762021-11-17  Dodji Seketeli <dodji@redhat.com>
4277
4278	test-utils: Define colors for test status messages
4279	* tests/test-utils.h (TEST_FAILURE_COLOR, TEST_SUCCESS_COLOR):
4280	Define macros.
4281
42822021-11-15  Dodji Seketeli <dodji@redhat.com>
4283
4284	Bug 28584 - Don't drop global variables that lack DW_AT_external
4285	* src/abg-dwarf-reader.cc (die_is_effectively_public_decl): Define
4286	new static function.
4287	(die_flag_attribute, die_is_public_decl): Adjust const-ness.
4288	(build_ir_node_from_die): When building an IR for a variable,
4289	consider the variable as being external if the variable is at
4290	namespace scope, even if its DIE doesn't have the DW_AT_external
4291	attribute.
4292	* tests/data/test-read-dwarf/PR28584/PR28584-smv.cc: New source
4293	code for a new clang-built binary.
4294	* tests/data/test-read-dwarf/PR28584/PR28584-smv.clang.o: New
4295	clang-built input binary for testing purposes.
4296	* tests/data/test-read-dwarf/PR28584/PR28584-smv.clang.o.abi: The
4297	reference output abixml.
4298	* tests/data/Makefile.am: Add the new test material above to
4299	source distribution.
4300	* tests/test-read-dwarf.cc (in_out_specs): Add the new test input
4301	to this test harness.
4302	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
4303	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
4304
43052021-11-12  Jose E. Marchesi via Libabigail <libabigail@sourceware.org>
4306
4307	Move dwarf_reader::status facilities to an abigail::elf_reader namespace
4308	* include/abg-reader-common.h: New file.
4309	* include/abg-dwarf-reader.h (enum status): Move to
4310	abg-reader-status.h.
4311	(status_to_diagnostic_string): Likewise.
4312	(operator|): Likewise.
4313	(operator&): Likewise.
4314	(operator|=): Likewise.
4315	(operator&=): Likewise.
4316	Include abg-reader-common.h.
4317	* include/Makefile.am (pkginclude_HEADERS): Add
4318	abg-elf-reader-common.h.
4319	* src/abg-elf-reader-status.cc: New file.
4320	* src/abg-dwarf-reader.cc (operator|): Move to
4321	abg-elf-reader-common.cc.
4322	(operator&): Likewise.
4323	(operator|): Likewise.
4324	(operator|=): Likewise.
4325	(operator&=): Likewise.
4326	(status_to_diagnostic_string): Likewise.
4327	* src/Makefile.am (libabigail_la_SOURCES): Add
4328	elf-reader-common.cc.
4329	* src/abg-tools-utils.cc: Use abigail::elf_reader instead of
4330	abigail::dwarf_reader for the status definitions.
4331	* tools/abicompat.cc: Likewise.
4332	* tools/abidiff.cc: Likewise.
4333	* tools/abidw.cc: Likewise.
4334	* tools/abilint.cc: Likewise.
4335	* tools/abipkgdiff.cc: Likewise.
4336	* tests/print-diff-tree.cc: Likewise.
4337	* tests/test-diff-dwarf.cc: Likewise.
4338	* tests/test-read-dwarf.cc: Likewise.
4339	* tests/test-symtab.cc: Likewise.
4340	* tests/test-ir-walker.cc: Likewise.
4341
43422021-11-12  Dodji Seketeli <dodji@redhat.com>
4343
4344	abg-config.{cc,h}: Misc comment cleanups
4345	* include/abg-config.h (abigail_get_library_version): Remove the
4346	comment from the header file ...
4347	* src/abg-config.cc (abigail_get_library_version): ... to put it
4348	in the definition.
4349
43502021-11-12  Dodji Seketeli <dodji@redhat.com>
4351
4352	abidw: Add --abixml-version
4353	* doc/manuals/abidw.rst: Document the --abixml-version command
4354	line option.
4355	* configure.ac (ABIXML_VERSION_MAJOR, ABIXML_VERSION_MINOR):
4356	Define these two new autoconf variables.
4357	* include/abg-config.h (abigail_get_abixml_version): Declare new
4358	function.
4359	* include/abg-tools-utils.h (get_abixml_version_string): Declare
4360	new function.
4361	* include/abg-version.h.in (ABIGAIL_ABIXML_VERSION_MAJOR)
4362	(ABIGAIL_ABIXML_VERSION_MINOR): Define new preprocessor macros.
4363	* src/abg-config.cc (config::config): Initialize
4364	config::m_format_{minor,major} using the newly defined
4365	preprocessor macros ABIGAIL_ABIXML_VERSION_M{IN,AJ}OR.
4366	* src/abg-tools-utils.cc (get_abixml_version_string): Define new
4367	function.
4368	* tools/abidw.cc (options::display_abixml_version): Define new
4369	data member.
4370	(options::options): Initialize it.
4371	(display_usage): Emit a help string for the new --abixml-version
4372	option.
4373	(parse_command_line): Parse the --abixml-version string.
4374	(main): Emit the abixml version when asked.
4375
43762021-11-04  Dodji Seketeli <dodji@redhat.com>
4377
4378	Bug 28450 - Fix cloned member function handling in DWARF
4379	* ABIXML-FORMAT-VERSIONS: New file that documents the version
4380	changes of the ABIXML-FORMAT-VERSIONS.
4381	* include/abg-fwd.h (look_through_no_op_qualified_type): Remove
4382	this function declaration.
4383	(strip_useless_const_qualification): Declare new function
4384	declaration.
4385	* src/abg-comparison.cc (compute_diff_for_types): Avoid stripping
4386	off no-op-qualified types as these beasts don't exist anymore.
4387	(redundancy_marking_visitor::visit_end): Allow a variable which
4388	type has local changes to be considered redundant if its type is
4389	itself redundant.
4390	* src/abg-config.cc (config::config): Bump the abixml version from
4391	2.0 to 2.1.
4392	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Factorize
4393	out the new strip_useless_const_qualification function from here.
4394	(build_or_get_fn_decl_if_not_suppressed): If the function is
4395	created but doesn't have an ELF symbol associated to it, then
4396	update it so that the ELF symbol can be associated.  Otherwise,
4397	potential_member_fn_should_be_dropped might later drop that
4398	function on the floor because it doesn't have any ELF symbol
4399	associated.
4400	* src/abg-ir.cc (strip_useless_const_qualification): Define this,
4401	which is has been factorized out of maybe_strip_qualification.
4402	(look_through_no_op_qualified_type): Remove this definition.
4403	(equals): In the overload for reference_type_def, do not peel
4404	typedefs off from the reference before comparison.  This is now
4405	useless as the comparison infrastructure got a lot better.  In the
4406	overload for references, stop using
4407	look_through_no_op_qualified_type as this function doesn't exist
4408	anymore.
4409	* src/abg-tools-utils.cc (abidiff_status_has_error): Detect when
4410	there is a usage error as well.
4411	* tests/data/test-types-stability/PR28450-libepetra.so.13.0: Add
4412	new testing binary to the repository.
4413	* tests/data/Makefile.am: Add the new testing binary above to
4414	source distribution.
4415	* tests/test-types-stability.cc (elf_paths): Add the new test to
4416	this test harness.
4417	* tests/test-diff-dwarf-abixml.cc (main): Add better error messages.
4418	* tests/data/test-abidiff-exit/test-member-size-report0.txt: Adjust.
4419	* tests/data/test-annotate/libtest23.so.abi: Likewise.
4420	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
4421	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
4422	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise.
4423	* tests/data/test-annotate/test0.abi: Likewise.
4424	* tests/data/test-annotate/test1.abi: Likewise.
4425	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
4426	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
4427	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
4428	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
4429	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
4430	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
4431	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
4432	* tests/data/test-annotate/test6.so.abi: Likewise.
4433	* tests/data/test-annotate/test7.so.abi: Likewise.
4434	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
4435	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Likewise.
4436	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
4437	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise.
4438	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
4439	* tests/data/test-diff-filter/test0-report.txt: Likewise.
4440	* tests/data/test-diff-filter/test01-report.txt: Likewise.
4441	* tests/data/test-diff-filter/test10-report.txt: Likewise.
4442	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
4443	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
4444	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
4445	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
4446	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
4447	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
4448	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise.
4449	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
4450	* tests/data/test-diff-filter/test9-report.txt: Likewise.
4451	* 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:
4452	Likewise.
4453	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
4454	Likewise.
4455	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
4456	Likewise.
4457	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise.
4458	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise.
4459	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
4460	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
4461	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
4462	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise.
4463	* tests/data/test-diff-suppr/test31-report-1.txt: Likewise.
4464	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
4465	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
4466	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
4467	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
4468	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
4469	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
4470	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
4471	* tests/data/test-read-dwarf/test0.abi: Likewise.
4472	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
4473	* tests/data/test-read-dwarf/test1.abi: Likewise.
4474	* tests/data/test-read-dwarf/test1.hash.abi: Likewise.
4475	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
4476	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
4477	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
4478	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
4479	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
4480	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
4481	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
4482	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
4483	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
4484	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
4485	* tests/data/test-read-dwarf/test2.so.hash.abi: Likewise.
4486	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
4487	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
4488	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
4489	* tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise.
4490	* tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise.
4491	* tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise.
4492	* tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise.
4493	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
4494	* tests/data/test-read-dwarf/test3.so.hash.abi: Likewise.
4495	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
4496	* tests/data/test-read-dwarf/test4.so.hash.abi: Likewise.
4497	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
4498	* tests/data/test-read-dwarf/test5.o.hash.abi: Likewise.
4499	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
4500	* tests/data/test-read-dwarf/test6.so.hash.abi: Likewise.
4501	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
4502	* tests/data/test-read-dwarf/test7.so.hash.abi: Likewise.
4503	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
4504	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise.
4505	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
4506	* tests/data/test-read-write/test-crc.xml: Likewise.
4507	* tests/data/test-read-write/test26.xml: Likewise.
4508	* tests/data/test-read-write/test27.xml: Likewise.
4509	* tests/data/test-read-write/test28-without-std-fns-ref.xml: Likewise.
4510	* tests/data/test-read-write/test28-without-std-vars-ref.xml: Likewise.
4511
45122021-11-10  Jose E. Marchesi via Libabigail <libabigail@sourceware.org>
4513
4514	abg-ctf-reader: use the right string table for CTF data
4515	* src/abg-ctf-reader.cc (slurp_elf_info): Use
4516	find_strtab_for_symtab_section.
4517
45182021-11-10  Jose E. Marchesi via Libabigail <libabigail@sourceware.org>
4519
4520	elf_helpers: new utility function find_strtab_for_symtab_section
4521	* src/abg-elf-helpers.h: Prototype for find_strtab_for_symtab_section.
4522	* src/abg-elf-helpers.cc (find_strtab_for_symtab_section): New function.
4523
45242021-11-09  tangmeng <tangmeng@uniontech.com>
4525
4526	test-abicompat: Make the test output more pleasant
4527	* test/test-abicompat.cc (main): make test output more pleasant.
4528
45292021-11-05  tangmeng <tangmeng@uniontech.com>
4530
4531	abicompat: Add prompt message for abnormal operation
4532	* tools/abicompat.cc (parse_command_line): Notify the user
4533	when --redundant and --no-redundant are used at the same time
4534
45352021-11-05  tangmeng <tangmeng@uniontech.com>
4536
4537	abilint: Add prompt message for abnormal operation
4538	* tools/abilint.cc (parse_command_line): Notify the user when the
4539	path to the file is ignored because the --stdin option was
4540	provided.
4541
45422021-11-03  Jose E. Marchesi via Libabigail <libabigail@sourceware.org>
4543
4544	ctf: make libabigail::ctf_reader::read_corpus reentrant
4545	* src/abg-ctf-reader.cc (class read_context): New attributes
4546	elf_handler, elf_fd, ctf_sect, symtab_sec and strtab_sect.
4547	(read_context): Do not read the CTF archive here.
4548	(slurp_elf_info): Adjust to use attributes instead of locals, and
4549	fetch the raw ELF section contents for libctf.
4550	(close_elf_handler): New function.
4551	(fill_ctf_section): Likewise.
4552	(read_corpus): Call open_elf_handler, close_elf_handler and build
4553	the CTF archive using ctf_arc_bufopen instead of ctf_open.
4554	Signed-by: Jose E. Marchesi <jose.marchesi@oracle.com>
4555
45562021-11-03  tangmeng <tangmeng@uniontech.com>
4557
4558	Fix trivial typo when printing message
4559	* tools/abilint.cc (main): End the 'FILE_TYPE_UNKNOWN' tips with a
4560	newline.
4561	* tools/abisym.cc (main): Add a newline after version string.
4562
45632021-10-29  Jose E. Marchesi via Libabigail <libabigail@sourceware.org>
4564
4565	Add support for the CTF debug format to libabigail.
4566	* configure.ac: Check for libctf.
4567	* src/abg-ctf-reader.cc: New file.
4568	* include/abg-ctf-reader.h: Likewise.
4569	* src/Makefile.am (libabigail_la_SOURCES): Add abg-ctf-reader.cc
4570	conditionally.
4571	* include/Makefile.am (pkginclude_HEADERS): Add abg-ctf-reader.h
4572	conditionally.
4573	* tools/abilint.cc (struct options): New option `use_ctf'.
4574	(display_usage): Documentation for --ctf.
4575	(parse_command_line): Handle --ctf.
4576	(main): Honour --ctf.
4577	* tools/abidiff.cc (struct options): New option `use_ctf'.
4578	(display_usage): Documentation for --ctf.
4579	(parse_command_line): Handle --ctf.
4580	(main): Honour --ctf.
4581	* doc/manuals/abidiff.rst: Document --ctf.
4582	* doc/manuals/abilint.rst: Likewise.
4583
45842021-10-29  tangmeng <tangmeng@uniontech.com>
4585
4586	abicompat: Add prompt message for abnormal operation
4587	* tools/abicompat.cc (main): Notify the user when the path to
4588	the second library is ignored because the --weak-mode option
4589	was provided.  Also, fix comment.
4590
45912021-10-29  tangmeng <tangmeng@uniontech.com>
4592
4593	abilint: fix trivial typo when using abilint
4594	* tools/abilint.cc (display_usage): Correct the errors and
4595	redundant content in the help information.
4596	(main): Add a newline after version string.
4597
45982021-10-27  tangmeng <tangmeng@uniontech.com>
4599
4600	Fix trivial typo when printing help information
4601	* tools/abicompat.cc (display_usage): End the usage message with a
4602	newline and properly indent it.
4603
46042021-10-20  Dodji Seketeli <dodji@redhat.com>
4605
4606	PR28365 - Assert on empty typedef on webkit2gtk3-jsc-2.32.3-1.fc34.x86_64
4607	* src/abg-reader.cc (build_enum_type_decl): Set the naming typedef
4608	only after the enum is created and keyed.
4609	(build_typedef_decl): Build the underlying type of the typedef
4610	first.
4611
46122021-10-11  Giuliano Procida <gprocida@google.com>
4613
4614	Tweak clang-format configuration
4615	* .clang-format: Various tweaks to Clang format configuration.
4616
46172021-10-15  Vanessa Sochat <sochat1@llnl.gov>
4618
4619	Fixing incorrect symbol
4620	* include/abg-ir.h (translation_unit::language<>LANG_PLI): Rename
4621	LANG_PL1 into this.
4622	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Rename
4623	DW_LANG_PL1 into DW_LANG_PLI.
4624	(get_default_array_lower_bound): Rename translation_unit::LANG_PL1
4625	into translation_unit::LANG_PLI.
4626	* src/abg-ir.cc (translation_unit_language_to_string): Rename
4627	translation_unit::LANG_PL1 into case translation_unit::LANG_PLI.
4628	(string_to_translation_unit_language): Rename
4629	translation_unit::LANG_PL1 into translation_unit::LANG_PLI.
4630
46312021-10-18  Dodji Seketeli <dodji@redhat.com>
4632
4633	Update licensing information on the web page after 2.0
4634	* doc/website/mainpage.txt: Libabigail is now Apache V2 + LLVM
4635	exception.
4636
46372021-10-18  Dodji Seketeli <dodji@redhat.com>
4638
4639	Add debug info package for wireshark-cli-3.4.9-1.fc36.x86_64.rpm
4640	* tests/data/test-diff-pkg/wireshark/wireshark-debuginfo-3.4.9-1.fc36.x86_64.rpm:
4641	Add new debug info package.
4642	* tests/data/Makefile.am: Add it to the source distribution.
4643	* tests/test-diff-pkg.cc: Use the new debug info package in the
4644	test harness.
4645
46462021-10-14  Dodji Seketeli <dodji@redhat.com>
4647
4648	Bug 28364 - libwiretap fails self comparison
4649	* src/abg-dwarf-reader.cc (build_function_type): Associate the DIE
4650	representation to the constructed type once it's fully built.
4651	* src/abg-reader.cc (build_function_type): Support member function of unions.
4652	* tests/data/Makefile.am: Add the new test input files to the
4653	source distribution.
4654	* tests/data/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64-self-check-report.txt:
4655	Add new test input file.
4656	* tests/data/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64.rpm:
4657	Likewise.
4658	* tests/data/test-diff-pkg/wireshark/wireshark-cli-debuginfo-3.4.9-1.fc36.x86_64.rpm:
4659	Likewise.
4660	* tests/test-diff-pkg.cc (in_out_specs): Add these new test input
4661	files to this test harness.
4662	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust.
4663
46642021-10-14  Dodji Seketeli <dodji@redhat.com>
4665
4666	writer: Don't forget that a naming typedef is referenced
4667	* src/abg-writer.cc (write_naming_typedef): Notice that the naming
4668	typedef is referenced.
4669
46702021-10-14  Dodji Seketeli <dodji@redhat.com>
4671
4672	writer: Don't forget when emitting array subrange types
4673	* src/abg-writer.cc (write_array_subrange_type): Record the type
4674	as emitted.
4675
46762021-10-14  Dodji Seketeli <dodji@redhat.com>
4677
4678	writer: Don't forget to emit types referenced by function types
4679	* src/abg-writer.cc (write_referenced_types): Factorize out of ...
4680	(write_translation_unit): ... here.  Also, use it to write the
4681	types referenced by emitted function types.
4682
46832021-10-14  Dodji Seketeli <dodji@redhat.com>
4684
4685	ir: Avoid canonicalizing types that are not meant to
4686	* src/abg-ir.cc (type_base::get_canonical_type_for): Do not
4687	canonicalize types that are not meant to.
4688	(maybe_adjust_canonical_type): Do not crash when dealing with a
4689	nil canonical type.
4690	* tests/data/test-annotate/libtest23.so.abi: Adjust.
4691	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
4692	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
4693	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise.
4694	* tests/data/test-annotate/test0.abi: Likewise.
4695	* tests/data/test-annotate/test1.abi: Likewise.
4696	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
4697	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
4698	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
4699	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
4700	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
4701	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
4702	* tests/data/test-annotate/test2.so.abi: Likewise.
4703	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
4704	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
4705	* tests/data/test-annotate/test3.so.abi: Likewise.
4706	* tests/data/test-annotate/test5.o.abi: Likewise.
4707	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
4708	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
4709	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
4710	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: Likewise.
4711	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
4712	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise.
4713	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
4714	* tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise.
4715	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
4716	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
4717	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
4718	* tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise.
4719	* tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise.
4720	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
4721	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
4722	* tests/data/test-read-dwarf/test-suppressed-alias.o.abi: Likewise.
4723	* tests/data/test-read-dwarf/test0.abi: Likewise.
4724	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
4725	* tests/data/test-read-dwarf/test1.abi: Likewise.
4726	* tests/data/test-read-dwarf/test1.hash.abi: Likewise.
4727	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
4728	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
4729	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
4730	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
4731	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
4732	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
4733	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
4734	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
4735	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
4736	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
4737	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
4738	* tests/data/test-read-dwarf/test2.so.hash.abi: Likewise.
4739	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
4740	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
4741	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
4742	* tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise.
4743	* tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise.
4744	* tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise.
4745	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
4746	* tests/data/test-read-dwarf/test3.so.hash.abi: Likewise.
4747	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
4748	* tests/data/test-read-dwarf/test5.o.hash.abi: Likewise.
4749	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
4750	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise.
4751	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
4752
47532021-10-14  Dodji Seketeli <dodji@redhat.com>
4754
4755	tests/Makefile.am: Fix warning
4756	* tests/Makefile.am: Stop referring to test-dot.cc which is no
4757	more.
4758
47592021-10-14  Dodji Seketeli <dodji@redhat.com>
4760
4761	Add --enable-debug-type-canonicalization to configure
4762	* configure.ac: Support the new
4763	--enable-debug-type-canonicalization option.  Define macro
4764	WITH_DEBUG_TYPE_CANONICALIZATION accordingly.
4765	* doc/manuals/abidw.rst: Update documentation.
4766	* include/abg-ir.h
4767	(environment::debug_type_canonicalization_is_on): Declare new
4768	member function if WITH_DEBUG_TYPE_CANONICALIZATION is defined.
4769	* src/abg-ir-priv.h
4770	(environment::priv::{use_canonical_type_comparison_,
4771	debug_type_canonicalization_}): Define new data members if
4772	WITH_DEBUG_TYPE_CANONICALIZATION is defined.
4773	(environment::priv::priv): Initialize them.
4774	* src/abg-ir.cc (try_canonical_compare): When
4775	WITH_DEBUG_TYPE_CANONICALIZATION is defined, perform comparison
4776	using either structural or canonical equality depending on the
4777	environment::priv::use_canonical_type_comparison_ flag.
4778	(environment::debug_type_canonicalization_is_on): Define member
4779	function when WITH_DEBUG_TYPE_CANONICALIZATION is defined.
4780	(compare_types_during_canonicalization): Define new function.
4781	(type_base::get_canonical_type_for): Use the new function
4782	compare_types_during_canonicalization.
4783	* tools/abidw.cc (options::debug_type_canonicalization): Define
4784	new data member.
4785	(option::option): Initialize it.
4786	(display_usage): Add help string for --debug-tc.
4787	(parse_command_line): Support new option --debug-tc or
4788	--debug-type-canonicalization.
4789	(load_corpus_and_write_abixml): Turn type canonicalization
4790	debugging on if --enable-tc is provided.
4791
47922021-10-13  Dodji Seketeli <dodji@redhat.com>
4793
4794	Improve type (de)serialization instability debugging
4795	* include/abg-fwd.h (is_non_canonicalized_type): Declare new
4796	function.
4797	* src/abg-ir-priv.h: Include abg-corpus.h
4798	(environment::priv::pointer_type_id_map_): Fix comment.
4799	(environment::priv::check_canonical_type_from_abixml_during_self_comp):
4800	Define new member function.
4801	* src/abg-ir.cc (unmark_types_as_being_compared): Factorize this
4802	from ...
4803	(return_comparison_result): ... here.  Also, add a parameter to
4804	control whether this function should perform the "canonical type
4805	propagation optimization" or not.  By default the optimization is
4806	performed.  This can be changed for debugging purposes later.
4807	(type_base::get_canonical_type_for): Re-organise the self
4808	comparison debugging process to invoke the new function
4809	environment::priv::check_canonical_type_from_abixml_during_self_comp
4810	each time a canonical type is computed, in addition to doing the
4811	previous verification that was done when no canonical type was
4812	found.  Emit better error messages.
4813	(is_non_canonicalized_type): Rename the static function
4814	is_allowed_non_canonicalized_type into this and make it
4815	non-static.
4816	(hash_as_canonical_type_or_constant): Adjust.
4817	* src/abg-reader.cc (maybe_map_type_with_type_id): Define new
4818	static function.
4819	(read_context::maybe_check_abixml_canonical_type_stability):
4820	Ignore types that were not canonicalized.
4821	(read_corpus_from_input): Set the origin of the corpus early
4822	enough so that it's available to the canonicalizer even for types
4823	being canonicalized early.
4824	(MAYBE_MAP_TYPE_WITH_TYPE_ID): Factorize this macro out of ...
4825	(build_type): ... this.  That macro is defined only when debugging
4826	self comparison.
4827	(build_array_type_def): Map the read subrange type with its
4828	type-id.
4829	(handle_{type_decl, qualified_type, pointer_type_def,
4830	reference_type_def, function_type, array_type_def,enum_type_decl,
4831	typedef_decl, class_decl, union_decl}): Map the read type with its
4832	type-id.
4833	(load_canonical_type_ids): Ignore non-canonicalized types that
4834	which ids were saved in the type-id file.
4835	* src/abg-writer.cc (write_type_record): Factorize from ...
4836	(write_canonical_type_ids): ... here.  Don't forget to write the
4837	type-ids of decl-only types.  This can be useful for eye
4838	inspection.
4839	* tools/abidw.cc (load_corpus_and_write_abixml): Wait until the
4840	end of the function before removing the type-id file.  This can be
4841	useful for eye inspection.
4842
48432021-10-05  Dodji Seketeli <dodji@redhat.com>
4844
4845	Bump to 2.1 version
4846	* configure.ac: Bump to 2.1 version.
4847
48482021-10-04  Dodji Seketeli <dodji@redhat.com>
4849
4850	Update libabigail web page for 2.0 release
4851	* doc/website/mainpage.txt: Update.
4852
48532021-10-04  Dodji Seketeli <dodji@redhat.com>
4854
4855	Fix tarball upload directory
4856	* Makefile.am: The tarball upload director is really /var/ftp.
4857
48582021-10-04  Dodji Seketeli <dodji@redhat.com>
4859
4860	Update ChangeLog for 2.0
4861	* ChangeLog: Update automatically with make update-changelog.
4862
48632021-10-04  Dodji Seketeli <dodji@redhat.com>
4864
4865	Update NEWS file for 2.0
4866	* NEWS: Update for 2.0
4867
48682021-09-23  Dodji Seketeli <dodji@redhat.com>
4869
4870	Bug 27086 - Consider all C++ virtual destructors when there are many
4871	* src/abg-dwarf-reader.c (build_or_get_fn_decl_if_not_suppressed):
4872	Do not try to re-use a virtual destructor of a class, based on its
4873	signature.  Several different of these can have the same
4874	signature, inside a given class.
4875	* tests/data/test-types-stability/PR27086-libstdc++.so.6.0.26:
4876	Add new binary test input.
4877	* tests/data/Makefile.am: Add the new test input to source
4878	distribution.
4879	* tests/test-types-stability.cc (elf_paths): Add the test input
4880	above to this harness.
4881
48822021-09-23  Dodji Seketeli <dodji@redhat.com>
4883
4884	dwarf-reader: Indent
4885	* src/abg-dwarf-reader.cc (finish_member_function_reading): Fix
4886	indentation.
4887
48882021-09-22  Dodji Seketeli <dodji@redhat.com>
4889
4890	Bug 27970 - Duplicated member functions cause spurious self comparison changes
4891	* src/abg-dwarf-reader.cc (fixup_functions_with_no_symbols): When
4892	the function decl is finally associated to its (publicly defined)
4893	ELF symbol, mark it as being exported.
4894	(finish_member_function_reading): Don't risk marking a virtual
4895	function as being non-virtual when updating its properties.
4896	(build_or_get_fn_decl_if_not_suppressed): Update comment.  If the
4897	member function is already present in the class, do not create a
4898	new one; rather, reuse the existing one.  It's going to be later
4899	updated by finish_member_function_reading.
4900	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
4901	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
4902	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
4903	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
4904	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
4905	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
4906	Likewise.
4907	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
4908	Likewise.
4909	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
4910	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
4911	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
4912	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
4913	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
4914
49152021-09-21  Dodji Seketeli <dodji@redhat.com>
4916
4917	abipkgdiff: Do not erase working dirs before we are done using them
4918	* tools/abipkgdiff.cc (compare_prepared_userspace_packages):
4919	Removing working directories "early" prevents e.g,
4920	dwarf_reader::get_soname_of_elf_file from accessing those files.
4921	So do not remove them until the very end.
4922	* tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt:
4923	Adjust.
4924
49252021-09-14  Dodji Seketeli <dodji@redhat.com>
4926
4927	Bug 28316 - Failure to represent typedef named anonymous enums
4928	* include/abg-fwd.h (scope_anonymous_or_typedef_named)
4929	(is_anonymous_or_typedef_named): Declare new functions.
4930	* include/abg-ir.h (decl_base::set_has_anonymous_parent): Remove
4931	declaration.
4932	(decl_base::{get,set}_naming_typedef): Declare new member
4933	functions.
4934	* src/abg-ir.cc (update_qualified_name): Define static function.
4935	(decl_base::priv::naming_typedef_): Define new data member.
4936	(decl_base::priv::has_anonymous_parent_): Remove data member.
4937	(decl_base::priv::priv): Adjust constructor.
4938	(decl_base::get_has_anonymous_parent): Rather than storing a flag
4939	for this, dynamically look at if the scope is anonymous.
4940	(decl_base::set_has_anonymous_parent): Remove definition.
4941	(decl_base::{get,set}_naming_typedef): Define new member
4942	functions.
4943	(scope_anonymous_or_typedef_named)
4944	(is_anonymous_or_typedef_named): Define new functions.
4945	(get_decl_name_for_comparison): Define new sub-routine for the
4946	decl_base overload of equals.
4947	(equals): In the overload for decl_base, use the new
4948	get_decl_name_for_comparison.  It helps to ensure that all
4949	anonymous decls of the same kind have the same name for the
4950	purpose of comparison.  It also ensures that non anonymous decls
4951	that are part of anonymous scopes should be compared only by
4952	looking at their non-qualified names.  In the overload for
4953	class_or_union, adjust.
4954	(scope_decl::add_member_decl): No more need to flag the fast that
4955	the parent scope is anonymous here.
4956	(get_debug_representation): Fix a thinko.
4957	(class_or_union::get_naming_typedef): Remove member function as
4958	it's now handled by decl_base::get_naming_typedef.
4959	* src/abg-dwarf-reader.cc (build_typedef_type): When a typedef is
4960	a naming typedef, then mark the named decl as being typedef-named.
4961	(maybe_canonicalize_type): Delay canonicalization of anonymous
4962	types because they can be typedef-named later.
4963	* src/abg-reader.cc (read_naming_typedef_id_string)
4964	(maybe_set_naming_typedef): Define new static function.
4965	(build_class_decl): Use it here, rather than reading the
4966	"naming-typedef-id" by hand.
4967	(build_enum_type_decl, build_union_decl): Read the
4968	"naming-typedef-id" property.
4969	* src/abg-writer.cc (write_naming_typedef): Make this accept
4970	decl_base_sptr, rather than just class_decl_sptr.
4971	(write_enum_type_decl): Write the naming-typedef-id property if
4972	needed.
4973	* tests/data/test-abidiff-exit/test-PR28316-report.txt: New test
4974	reference output.
4975	* tests/data/test-abidiff-exit/test-PR28316-v{0,1}.cc: Source code
4976	of new binary test input.
4977	* tests/data/test-abidiff-exit/test-PR28316-v{0,1}.o: New binary
4978	test input files.
4979	* tests/data/Makefile.am: Add the new test files to the source
4980	distribution.
4981	* tests/test-abidiff-exit.cc: Add the new test files above to this
4982	harness.
4983	* tests/data/test-annotate/libtest23.so.abi: Adjust.
4984	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
4985	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
4986	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
4987	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
4988	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
4989	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
4990	* tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise.
4991	* tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
4992	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
4993	Likewise.
4994	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
4995	Likewise.
4996	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
4997	Likewise.
4998	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
4999	Likewise.
5000	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise.
5001	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
5002	Likewise.
5003	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
5004	Likewise.
5005	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt:
5006	Likewise.
5007	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
5008	Likewise.
5009	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
5010	Likewise.
5011	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
5012	Likewise.
5013	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
5014	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
5015	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
5016	Likewise.
5017	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
5018	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
5019	Likewise.
5020	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
5021	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
5022	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
5023	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
5024	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
5025	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
5026	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
5027	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
5028	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
5029	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
5030	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
5031	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
5032	Likewise.
5033	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
5034
50352021-09-17  Dodji Seketeli <dodji@redhat.com>
5036
5037	abipkgdiff: Fix showing added/removed files
5038	* tools/abipkgdiff.cc (compare_prepared_userspace_packages): Do
5039	not return early if there are no binaries to compare.  Also add
5040	more verbose messages.
5041	* tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt:
5042	New reference output file.
5043	* tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt:
5044	New reference output file.
5045	* tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64.rpm: New
5046	binary input file.
5047	* tests/data/test-diff-pkg/libxcrypt-4.4.18-3.el9.x86_64.rpm: Likewise.
5048	* tests/data/test-diff-pkg/libxcrypt-compat-4.4.18-3.el9.x86_64.rpm: Likewise.
5049	* tests/data/test-diff-pkg/libxcrypt-compat-debuginfo-4.4.18-3.el9.x86_64.rpm: Likewise.
5050	* tests/data/test-diff-pkg/libxcrypt-debuginfo-4.1.1-6.el8.x86_64.rpm: Likewise.
5051	* tests/data/test-diff-pkg/libxcrypt-debuginfo-4.4.18-3.el9.x86_64.rpm: Likewise.
5052	* tests/data/Makefile.am: Add the new testing files to source
5053	distribution.
5054	* tests/test-diff-pkg.cc (in_out_specs): Add these binary packages
5055	to this testing harness.
5056
50572021-09-09  Dodji Seketeli <dodji@redhat.com>
5058
5059	RHBZ1944102 - self comparing ABI of protobuf-3.14.0-2.el9 failed
5060	* src/abg-reader.cc (read_size_and_alignment): Use atoll to read
5061	long long values, not atoi.
5062
50632021-09-08  Dodji Seketeli <dodji@redhat.com>
5064
5065	RHBZ1951496 - ir: Acknowledge that "void type" is not canonicalized
5066	* src/abg-ir.cc (is_allowed_non_canonicalized_type): Define new
5067	static function.
5068	(hash_as_canonical_type_or_constant): Use it.
5069
50702021-09-08  Dodji Seketeli <dodji@redhat.com>
5071
5072	writer: Avoid sigsev on types with no translation unit
5073	* src/abg-writer.cc (referenced_type_should_be_emitted): Don't
5074	crash on types with no associated translation unit.
5075
50762021-09-08  Dodji Seketeli <dodji@redhat.com>
5077
5078	xml-reader: Get back to original way of building qualified types
5079	* src/abg-reader.cc (build_qualified_type_decl): Create the
5080	underlying type first, then create the qualified type.
5081	This helps fix bug
5082
50832021-09-08  Dodji Seketeli <dodji@redhat.com>
5084
5085	ir: Fix canonical type propagation cancelling
5086	* src/abg-ir.cc (return_comparison_result): When the comparison of
5087	the current type sub-object fails, clear the potentially
5088	propagated canonical type and remove it from the set of types with
5089	non confirmed propagated canonical types.
5090
50912021-09-08  Dodji Seketeli <dodji@redhat.com>
5092
5093	ir: Avoid infinite loop during type canonicalization
5094	* src/abg-ir-priv.h
5095	(environment::priv::collect_types_that_depends_on): Don't try to
5096	collect a type that has already been collected.
5097
50982021-09-07  Dodji Seketeli <dodji@redhat.com>
5099
5100	writer: escape enum linkage name in abixml
5101	* src/abg-writer.cc (write_enum_type_decl): Escape linkage name.
5102
51032021-09-07  Dodji Seketeli <dodji@redhat.com>
5104
5105	RHBZ-1944096 - assertion failure during self comparison of systemd
5106	* src/abg-reader.cc (build_enum_type_decl): When strtoll detects
5107	an underflow or overflo, it sets errno to ERANGE.  So take that
5108	into account.
5109
51102021-09-03  Dodji Seketeli <dodji@redhat.com>
5111
5112	Bug 27985 - abidiff: bad array types in report
5113	* src/abg-ir.cc (array_type_def::get_qualified_name): Use the
5114	cache for temporary qualified names when the type is not yet
5115	canonicalized.  That way, the cache for (non-temporary) qualified
5116	names is used only for canonicalized types.
5117	* tests/data/test-abidiff/test-PR27985-report.txt: Reference
5118	output for the new test.
5119	* tests/data/test-abidiff/test-PR27985-v{0,1}.c: Source code for
5120	the new test binary inputs.
5121	* tests/data/test-abidiff/test-PR27985-v{0,1}.o: New test binary inputs.
5122	* tests/data/test-abidiff/test-PR27985-v{0,1}.o.abi: New test
5123	abixml input.
5124	* tests/data/Makefile.am: Add the new test materials above to
5125	source distribution.
5126	* tests/test-abidiff.cc (specs): Add the tests above to the harness.
5127	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
5128	Adjust.
5129	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt:
5130	Adjust.
5131
51322021-08-27  Giuliano Procida <gprocida@google.com>
5133
5134	abg-writer: faster referenced type emission tests
5135	* src/abg-writer.cc (write_translation_unit): Reorder
5136	referenced type emission tests for efficiency. Consolidate
5137	related comments.
5138	Reviewed-by: Matthias Maennich <maennich@google.com>
5139
51402021-08-10  Dodji Seketeli <dodji@redhat.com>
5141
5142	RHBZ 1925886 - Compare anonymous types without qualified names
5143	* include/abg-fwd.h (is_anonymous_type): Constify this function.
5144	* src/abg-ir.cc (equals): In the overload for decl_base, do not
5145	take scope of anonymous types into account.  In the overload for
5146	array_type_def do not peel of typedefs.  This is not directly
5147	related to anonymous types, but it make comparison more robust
5148	against naming typedefs used for anonymous types in array
5149	elements.
5150	(get_type_name): Do not take into account the scope of anonymous
5151	types when building internal representation of types.  Note that
5152	the internal representation is what is used for canonicalization.
5153	This means that all anonymous types are compared against each
5154	others during type canonicalization.
5155	* src/abg-reader.cc (build_class_decl): Do not try to re-use
5156	anonymous types, just like we already do for DWARF.
5157	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
5158	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
5159	Likewise.
5160	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
5161	Likewise.
5162	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
5163	Likewise.
5164	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
5165	Likewise.
5166	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
5167	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
5168	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
5169	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
5170	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
5171	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
5172	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
5173	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
5174	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
5175	Likewise.
5176	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
5177	Likewise.
5178	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
5179	Likewise.
5180	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
5181
51822021-07-29  Dodji Seketeli <dodji@redhat.com>
5183
5184	Bug 27236 - Don't forget to emit some referenced types
5185	* include/abg-writer.h (write_translation_unit): Add a new
5186	parameter that says if we are emitting the last TU.
5187	* src/abg-writer.cc (write_translation_unit::{type_is_emitted,
5188	decl_only_type_is_emitted}): Constify these methods.
5189	(write_context::has_non_emitted_referenced_types): Define new
5190	member function using the const methods above.
5191	(write_translation_unit): When emitting the last TU, emit all the
5192	referenced types.
5193	(write_corpus): Set signal when emitting the last translation
5194	unit.
5195
51962021-07-29  Dodji Seketeli <dodji@redhat.com>
5197
5198	Bug 27236 - Allow updating classes from abixml
5199	* src/abg-reader.cc (build_class_decl): Keep going when the class
5200	has already been built.  The rest of the code knows how to add new
5201	stuff.
5202	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
5203
52042021-07-29  Dodji Seketeli <dodji@redhat.com>
5205
5206	Bug 27236 - Fix the canonical type propagation optimization
5207	* include/abg-ir.h (pointer_set): This typedef is now for an
5208	unordered_set<uintptr_t> rather than an unordered_set<size_t>.
5209	(environment::priv_): Make this public so that code in free form
5210	function from abg-ir.cc can access it.
5211	* src/abg-ir-priv.h (struct type_base::priv): Move this private
5212	structure here, from abg-ir.cc.
5213	(type_base::priv::{depends_on_recursive_type_,
5214	canonical_type_propagated_}): Added these two new data members.
5215	(type_base::priv::priv): Initialize the two new data members.
5216	(type_base::priv::{depends_on_recursive_type,
5217	set_depends_on_recursive_type,
5218	set_does_not_depend_on_recursive_type, canonical_type_propagated,
5219	set_canonical_type_propagated, clear_propagated_canonical_type}):
5220	Define new member functions.
5221	(struct environment::priv): Move this struct here, from abg-ir.cc.
5222	(environment::priv::{types_with_non_confirmed_propagated_ct_,
5223	left_type_comp_operands_, right_type_comp_operands_}): New data
5224	members.
5225	(environment::priv::{mark_dependant_types,
5226	mark_dependant_types_compared_until, confirm_ct_propagation,
5227	collect_types_that_depends_on, cancel_ct_propagation,
5228	remove_from_types_with_non_confirmed_propagated_ct}): New member
5229	functions.
5230	* src/abg-ir.cc (struct environment::priv, struct)
5231	(type_base::priv, struct class_or_union::priv): Move these struct
5232	to include/abg-ir-priv.h.
5233	(push_composite_type_comparison_operands)
5234	(pop_composite_type_comparison_operands)
5235	(mark_dependant_types_compared_until)
5236	(maybe_cancel_propagated_canonical_type): Define new functions.
5237	(notify_equality_failed, mark_types_as_being_compared): Re-indent.
5238	(is_comparison_cycle_detected, return_comparison_result): Define
5239	new function templates.
5240	(RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED): Define new macro.
5241	(equals(const function_type& l, const function_type& r)): Redefine
5242	the RETURN macro using the new return_comparison_result function
5243	template.  Use the new RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED
5244	and mark_types_as_being_compared functions.
5245	(equals(const class_or_union& l, const class_or_union&, change_kind*)):
5246	Likewise.
5247	(equals(const class_decl& l, const class_decl&, change_kind*)):
5248	Likewise.  Because this uses another equal() function to compare
5249	the class_or_union part the type, ensure that no canonical type
5250	propagation occurs at that point.
5251	(types_are_being_compared): Remove as it's not used anymore.
5252	(maybe_propagate_canonical_type): Use the new
5253	environment::priv::propagate_ct() function here.
5254	(method_matches_at_least_one_in_vector): Ensure the
5255	right-hand-side operand of the equality stays on the right.  This
5256	is important because the equals() functions expect that.
5257	* src/abg-reader.cc (build_type): Ensure all types are
5258	canonicalized.
5259	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
5260	Adjust.
5261	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
5262	Likewise.
5263	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
5264	Likewise.
5265	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
5266	Likewise.
5267	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
5268	Likewise.
5269	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
5270
52712021-06-30  Dodji Seketeli <dodji@redhat.com>
5272
5273	Bug 27995 - Self comparison error from abixml file
5274	* doc/manuals/abidiff.rst: Add documentation for the --debug
5275	option.
5276	* src/abg-ir.cc (equals): In the overload for decl_base consider
5277	the internal version of qualified decl name.  In the overload for
5278	pointer_type_def do not peel typedefs off from the compared
5279	pointed-to types.  In the overload for typedef_decl compare the
5280	typedef as a decl as well.  In the overload for var_decl, compare
5281	variables that have the same ELF symbols without taking into
5282	account their qualified name, rather than their name.  Stop
5283	comparing data member without considering their names.
5284	In the overload for class_or_union, when a decl-only class that is
5285	ODR-relevant is compared against another type, assume that
5286	equality if names are equal.  This is useful in environments where
5287	some TUs are ODR-relevant and others aren't.
5288	(*::get_pretty_representation): Update doxygen comments.
5289	(enum_type_decl::get_pretty_representation): Return an internal
5290	pretty representation that is stable across all anonymous enums.
5291	(var_decl::get_anon_dm_reliable_name): Use the non-internal pretty
5292	representation for anonymous data members.
5293	(function_type::priv::temp_internal_cached_name_): New data
5294	member.
5295	(function_type::get_cached_name): Cache the internal name after
5296	the function type is canonicalized.  Make sure internal name and
5297	non-internal name are cached separately.
5298	(class_or_union::find_anonymous_data_member): Look for the anonymous
5299	data member by looking at its non-internal name.
5300	({class, union}_decl::get_pretty_representation): Use something like "class
5301	__anonymous_{union,struct}__" for all anonymous classes, so that they can
5302	all be compared against each other during type canonicalization.
5303	(type_has_sub_type_changes): Use non-internal pretty
5304	representation.
5305	(hash_type_or_decl, function_decl_is_less_than:): Use internal
5306	pretty representation for comparison here.
5307	* src/abg-reader.cc (read_context::maybe_canonicalize_type): Don't
5308	early canonicalize array types.
5309	* src/abg-writer.cc (annotate): Use non-internal pretty
5310	representation.
5311	* tests/data/test-diff-filter/test-PR27995-report-0.txt: New
5312	reference report.
5313	* tests/data/test-diff-filter/test-PR27995.abi: New test input
5314	abixml file.
5315	* tests/data/Makefile.am: Add test-PR27995.abi,
5316	test-PR27995-report-0.txt to the source distribution.
5317	* tests/data/test-annotate/libtest23.so.abi: Adjust.
5318	* tests/data/test-diff-dwarf/test6-report.txt: Adjust.
5319	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
5320	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
5321	* tests/data/test-diff-filter/test41-report-0.txt: Adjust.
5322	* tests/data/test-diff-filter/test43-decl-only-def-change-leaf-report-0.txt: Adjust.
5323	* tests/data/test-diff-filter/test8-report.txt: Adjust.
5324	* 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:
5325	Adjust.
5326	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
5327	Adjust.
5328	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
5329	Adjust.
5330	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
5331	Adjust.
5332	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
5333	Adjust.
5334	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
5335	Adjust.
5336	* tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: Adjust.
5337	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Adjust.
5338	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
5339	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
5340	* tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust.
5341	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
5342	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
5343	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
5344	* tests/test-diff-filter.cc (in_out_specs): Add the
5345	test-PR27995.abi to the test harness.
5346	* tools/abidiff.cc (options::do_debug): New data member.
5347	(options::options): Initialize it.
5348	(parse_command_line): Parse --debug.
5349	(main): Activate self comparison debug if the user provided
5350	--debug.
5351
53522021-06-25  Dodji Seketeli <dodji@redhat.com>
5353
5354	ir: Tighten type comparison optimization for Linux kernel binaries
5355	* src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public):
5356	Ensure that anonymous classes with naming typedefs have identical
5357	typedef names.
5358
53592021-06-25  Dodji Seketeli <dodji@redhat.com>
5360
5361	ir: Tighten the test for anonymous data member
5362	* src/abg-ir.cc: (is_anonymous_data_member): Consider
5363	decl_base::get_is_anonymous as well.
5364
53652021-06-24  Dodji Seketeli <dodji@redhat.com>
5366
5367	ir: Improve the debugging facilities
5368	* src/abg-ir.cc (maybe_compare_as_member_decls): Add a missing
5369	ABG_RETURN
5370	(get_debug_representation): Display the name of class and enums,
5371	not their pretty representation.
5372
53732021-07-10  Giuliano Procida <gprocida@google.com>
5374
5375	PR28060 - Invalid offset for bitfields
5376	* src/abg-dwarf-reader.cc (read_and_convert_DW_at_bit_offset):
5377	Update documentation.
5378	(die_member_offset): Treat DW_AT_bit_offset as an optional
5379	adjustment to DW_AT_data_member_location.
5380	* tests/data/test-annotate/test13-pr18894.so.abi: Update.
5381	* tests/data/test-annotate/test15-pr18892.so.abi: Update.
5382	* tests/data/test-annotate/test17-pr19027.so.abi: Update.
5383	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
5384	Update.
5385	* tests/data/test-annotate/test21-pr19092.so.abi: Update.
5386	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
5387	Regenerate.
5388	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
5389	Report now empty.
5390	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Update.
5391	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
5392	Update.
5393	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Update.
5394	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Update.
5395	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Update.
5396	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
5397	Update.
5398	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Update.
5399	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
5400	Update.
5401
54022021-07-07  Giuliano Procida <gprocida@google.com>
5403
5404	abg-ir.h: add declaration of operator<< for elf_symbol::visibility
5405	* include/abg-ir.h (operator<<(elf_symbol::visibility): Add
5406	declaration.
5407
54082021-07-06  Giuliano Procida <gprocida@google.com>
5409
5410	ir: remove "is Linux string constant" property from elf_symbol
5411	* include/abg-ir.h (elf_symbol::elf_symbol): Drop
5412	is_linux_string_cst argument.
5413	(elf_symbol::create): Likewise.
5414	(elf_symbol::get_is_linux_string_cst): Drop method.
5415	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab):
5416	Remove code that gets the index of the __ksymtab_strings
5417	section. Drop corresponding elf_symbol::create argument.
5418	(lookup_symbol_from_gnu_hash_tab): Likewise.
5419	(lookup_symbol_from_symtab): Likewise.
5420	(create_default_fn_sym): Drop false is_linux_string_cst
5421	argument to elf_symbol::create.
5422	* src/abg-ir.cc (elf_symbol::priv::is_linux_string_cst_): Drop
5423	member variable.
5424	(elf_symbol::priv default ctor): Drop initialisation of
5425	is_linux_string_cst_.
5426	(elf_symbol::priv normal ctor): Drop is_linux_string_cst
5427	argument and corresponding is_linux_string_cst_
5428	initialisation.
5429	(elf_symbol::elf_symbol ctor): Drop is_linux_string_cst
5430	argument and corresponding forwarding to priv ctor.
5431	(elf_symbol::create): Drop is_linux_string_cst argument and
5432	corresponding forwarding to ctor.
5433	(elf_symbol::get_is_linux_string_cst): Drop method.
5434	* src/abg-reader.cc (build_elf_symbol): Drop false
5435	is_linux_string_cst argument to elf_symbol::create.
5436	* src/abg-symtab-reader.cc (symtab::load): Likewise.
5437
54382021-07-05  Matthias Maennich <maennich@google.com>
5439
5440	Consistently use std::unique_ptr for private implementations (pimpl)
5441	* include/abg-comparison.h (diff_maps): use unique_ptr for priv_
5442	(diff_context): Likewise.
5443	(diff_traversable_base): Likewise.
5444	(type_diff_base): Likewise.
5445	(decl_diff_base): Likewise.
5446	(distinct_diff): Likewise.
5447	(var_diff): Likewise.
5448	(pointer_diff): Likewise.
5449	(reference_diff): Likewise.
5450	(array_diff): Likewise.
5451	(qualified_type_diff): Likewise.
5452	(enum_diff): Likewise.
5453	(class_or_union_diff): Likewise.
5454	(class_diff): Likewise.
5455	(base_diff): Likewise.
5456	(scope_diff): Likewise.
5457	(fn_parm_diff): Likewise.
5458	(function_type_diff): Likewise.
5459	(function_decl_diff): Likewise.
5460	(typedef_diff): Likewise.
5461	(translation_unit_diff): Likewise.
5462	(diff_stats): Likewise.
5463	(diff_node_visitor): Likewise.
5464	* include/abg-corpus.h (corpus): Likewise.
5465	(exported_decls_builder): Likewise.
5466	(corpus_group): Likewise.
5467	* include/abg-ini.h (property): Likewise.
5468	(property_value): Likewise.
5469	(string_property_value): Likewise.
5470	(list_property_value): Likewise.
5471	(tuple_property_value): Likewise.
5472	(simple_property): Likewise.
5473	(list_property): Likewise.
5474	(tuple_property): Likewise.
5475	(config): Likewise.
5476	(section): Likewise.
5477	(function_call_expr): Likewise.
5478	* include/abg-interned-str.h (interned_string_pool): Likewise.
5479	* include/abg-ir.h (environment): Likewise.
5480	(location_manager): Likewise.
5481	(type_maps): Likewise.
5482	(translation_unit): Likewise.
5483	(elf_symbol::version): Likewise.
5484	(type_or_decl_base): Likewise.
5485	(scope_decl): Likewise.
5486	(qualified_type_def): Likewise.
5487	(pointer_type_def): Likewise.
5488	(array_type_def): Likewise.
5489	(subrange_type): Likewise.
5490	(enum_type_decl): Likewise.
5491	(enum_type_decl::enumerator): Likewise.
5492	(typedef_decl): Likewise.
5493	(dm_context_rel): Likewise.
5494	(var_decl): Likewise.
5495	(function_decl::parameter): Likewise.
5496	(function_type): Likewise.
5497	(method_type): Likewise.
5498	(template_decl): Likewise.
5499	(template_parameter): Likewise.
5500	(type_tparameter): Likewise.
5501	(non_type_tparameter): Likewise.
5502	(template_tparameter): Likewise.
5503	(type_composition): Likewise.
5504	(function_tdecl): Likewise.
5505	(class_tdecl): Likewise.
5506	(class_decl::base_spec): Likewise.
5507	(ir_node_visitor): Likewise.
5508	* include/abg-suppression.h (suppression_base): Likewise.
5509	(type_suppression::insertion_range): Likewise.
5510	(type_suppression::insertion_range::boundary): Likewise.
5511	(type_suppression::insertion_range::integer_boundary): Likewise.
5512	(type_suppression::insertion_range::fn_call_expr_boundary): Likewise.
5513	(function_suppression): Likewise.
5514	(function_suppression::parameter_spec): Likewise.
5515	(file_suppression): Likewise.
5516	* include/abg-tools-utils.h (temp_file): Likewise.
5517	(timer): Likewise.
5518	* include/abg-traverse.h (traversable_base): Likewise.
5519	* include/abg-workers.h (queue): Likewise.
5520	* src/abg-comparison.cc (diff_context): add default destructor.
5521	(diff_maps): Likewise.
5522	(corpus_diff): Likewise.
5523	(diff_node_visitor): Likewise.
5524	(class_or_union_diff::get_priv): adjust return type.
5525	(class_diff::get_priv): adjust return type.
5526	* src/abg-corpus.cc (corpus): add default destructor.
5527	* src/abg-ir.cc (location_manager): Likewise.
5528	(type_maps): Likewise.
5529	(elf_symbol::version): Likewise.
5530	(array_type_def::subrange_type): Likewise.
5531	(enum_type_decl::enumerator): Likewise.
5532	(function_decl::parameter): Likewise.
5533	(class_decl::base_spec): Likewise.
5534	(ir_node_visitor): Likewise.
5535
55362021-06-14  Matthias Maennich <maennich@google.com>
5537
5538	symtab-reader: add support for binaries compiled with CFI
5539	* src/abg-symtab-reader.cc (symtab::load_): use new
5540	add_alternative_address_lookups method.
5541	(add_alternative_address_lookups): New method.
5542	* src/abg-symtab-reader.h (add_alternative_address_lookups): new
5543	function declaration.
5544	* tests/data/test-read-dwarf/test-libaaudio.so: New test data.
5545	* tests/data/test-read-dwarf/test-libaaudio.so.abi: New test data.
5546	* tests/data/Makefile.am: Add the two new tests input to source
5547	distribution.
5548	* tests/test-read-dwarf.cc: New test case.
5549	Reported-by: Dan Albert <danalbert@google.com>
5550	Reviewed-by: Giuliano Procida <gprocida@google.com>
5551
55522021-06-14  Matthias Maennich <maennich@google.com>
5553
5554	elf-helpers: refactor find_symbol_table_section
5555	* src/abg-elf-helpers.cc(find_section): New overload.
5556	(find_symtab_section): New function.
5557	(find_dynsym_section): New function.
5558	(find_symbol_table_section): Use new find_*_section functions.
5559	* src/abg-elf-helpers.h(find_section): New overload declaration.
5560	(find_symtab_section): New function declaration.
5561	(find_dynsym_section): New function declaration.
5562	Reviewed-by: Giuliano Procida <gprocida@google.com>
5563
55642021-06-18  Dodji Seketeli <dodji@redhat.com>
5565
5566	Bug 27980 - Fix updating of type scope upon type canonicalization
5567	* src/abg-ir.cc (canonicalize): Update the
5568	scope_decl::get_canonical_types() of canonical type of the
5569	containing type of the newly canonicalized type.
5570	* src/abg-writer.cc (write_union_decl): Write the canonical types
5571	contained in the current union scope, just like we do for classes.
5572	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
5573	* tests/data/test-types-stability/pr27980-libc.so: New binary
5574	input file.
5575	* tests/data/Makefile.am: Add the test input file above to source
5576	distribution.
5577	* tests/test-types-stability.cc (elf_paths): Add the new test
5578	input file to this test harness.
5579
55802021-05-27  Giuliano Procida <gprocida@google.com>
5581
5582	abg-reader: Create a fresh corpus object per corpus
5583	* src/abg-reader.cc (read_corpus_from_input): Always create a
5584	fresh corpus object for each abi-corpus XML element.
5585
55862021-05-27  Giuliano Procida <gprocida@google.com>
5587
5588	abg-reader: Ensure corpus always has a symtab reader
5589	* src/abg-reader.cc (read_symbol_db_from_input): Fix
5590	documentation for this function. Allow "successful parsing" to
5591	include the case where no symbols were present in the input.
5592	(read_corpus_from_input): Unconditionally set a symtab reader
5593	on the corpus object. Unconditionally parse the abi-instr of a
5594	corpus.
5595
55962021-05-27  Giuliano Procida <gprocida@google.com>
5597
5598	dwarf-reader: Create new corpus unconditionally
5599	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus):
5600	Create new corpus object unconditionally.
5601
56022021-06-09  Ben Woodard via Libabigail <libabigail@sourceware.org>
5603
5604	Fix trivial typo when printing version string
5605	* tools/abicompat.cc (main): Add a newline after version string.
5606
56072021-06-10  Dodji Seketeli <dodji@redhat.com>
5608
5609	Revert "Fix trivial typo when printing version string"
5610	* tools/abicompat.cc:
5611
56122021-06-09  Ben Woodard via Libabigail <libabigail@sourceware.org>
5613
5614	Fix trivial typo when printing version string
5615	* tools/abicompat.cc:
5616
56172021-06-10  Dodji Seketeli <dodji@redhat.com>
5618
5619	doc: Fix typo
5620	* doc/manuals/libabigail-concepts.rst: Fix typo.
5621
56222021-06-09  Dodji Seketeli <dodji@redhat.com>
5623
5624	abg-reader: Fix typo
5625	* src/abg-reader.cc
5626	(read_context::maybe_check_abixml_canonical_type_stability): Fix
5627	typo.
5628
56292021-06-09  Dodji Seketeli <dodji@redhat.com>
5630
5631	abidw: Remove temporary .typeid files when using --debug-abidiff
5632	* tools/abidw.cc (load_corpus_and_write_abixml): Remove temporary
5633	typeid file after its use.
5634
56352021-06-08  Dodji Seketeli <dodji@redhat.com>
5636
5637	Fix recursive array type definition
5638	* include/abg-ir.h (array_type_def::update_size): Declare new
5639	private member function.
5640	(array_type_def::array_type_def): Declare ...
5641	* src/abg-ir.cc (array_type_def::array_type_def): ... a new
5642	constructor that takes no element type.
5643	(array_type_def::update_size): Define this helper private member
5644	function.
5645	(array_type_def::get_subrange_representation): Adjust for this to
5646	work when there is no element type setup yet.
5647	(array_type_def::{set_element_type, append_subranges}): Update the
5648	size and name of the array.
5649	* src/abg-reader.cc (build_array_type_def): Create the array type
5650	before the element type so that the later can re-use the former.
5651
56522021-06-07  Dodji Seketeli <dodji@redhat.com>
5653
5654	rhbz1951526 - SELF CHECK FAILED for 'gimp-2.10'
5655	* include/abg-ir.h
5656	(environment::use_enum_binary_only_equality): Declare
5657	accessors.  (type_or_decl_base::{s,g}et_is_artificial):
5658	Likewise.  (decl_base::{s,g}et_is_artificial): Remove
5659	accessors.  * src/abg-ir.cc
5660	(environment::priv::use_enum_binary_only_equality): Define new
5661	data member.
5662	(environment::priv::use_enum_binary_only_equality): Define
5663	accessors.  (type_or_decl_base::priv::is_artificial_): Define
5664	new data member.  It has actually moved here from
5665	decl_base::priv::is_artificial_.
5666	(type_or_decl_base::priv::priv): Initialize it.
5667	(type_or_decl_base::{g,s}et_is_artificial): Define accessors.
5668	(decl_base::is_artificial_): Move this to
5669	type_or_decl_base::is_artificial_.
5670	(maybe_adjust_canonical_type): In a given class of equivalence
5671	of function types, if there is one non-artificial function
5672	type, then the entire class of equivalence is considered
5673	non-artificial; so flag the canonical function type as being
5674	non-artificial.  (is_enumerator_present_in_enum): Define new
5675	static function.  (equals): Re-arrange the overload for enums
5676	so the order of the enumerators doesn't count in the
5677	comparison.  Also, two enums with different numbers of
5678	enumerators can still be equal, with the right redundancy.  In
5679	the overload for var_decl, avoid taking into account the names
5680	of data members in the comparison.
5681	(enum_type_decl::enumerator::operator==): In the binary-level
5682	comparison mode, only compare the value of enumerators, not
5683	their name.  * src/abg-comparison.cc (compute_diff): In the
5684	overload for enum_type_decl, if the enums compare different
5685	using binary-level comparison, then use source-level
5686	comparison to build the diff-IR.  * src/abg-dwarf-reader.cc
5687	(read_context::compare_before_canonicalisation): Compare enums
5688	using binary-level comparison.  (add_or_update_class_type): If
5689	we are looking at the definition of an existing declaration
5690	that has been already defined then use the previous
5691	definition, in case we are going to need to update the
5692	definition.  Also, update the size only if it's needed.
5693	(build_function_type): By default, consider the newly built
5694	function type as artificial.  (build_ir_node_from_die): When
5695	looking at a DW_TAG_subroutine_type DIE, consider the built
5696	function type as non-artificial.  * src/abg-reader.cc
5697	(read_context::maybe_check_abixml_canonical_type_stability):
5698	Don't consider declaration-only classes in an ODR context
5699	because they don't have canonical types.
5700	(build_function_decl): Flag the function type of the function
5701	as artificial.  (build_class_decl): Make sure to reuse class
5702	types that were already created.  * src/abg-writer.cc
5703	(write_translation_unit): Allow emitting empty classes.  Make
5704	sure referenced types are emitting in the translation unit
5705	where they belong.  Avoid emitting artificial function types.
5706	*
5707	tests/data/test-alt-dwarf-file/rhbz1951526/rhbz1951526-report-0.txt:
5708	New test reference output.  *
5709	tests/data/test-alt-dwarf-file/rhbz1951526/usr/bin/gimp-2.10:
5710	New reference test binary input.  *
5711	tests/data/test-alt-dwarf-file/rhbz1951526/usr/lib/debug/.dwz/gimp-2.10.22-2.el9.1.aarch64:
5712	Likewise.  *
5713	tests/data/test-alt-dwarf-file/rhbz1951526/usr/lib/debug/usr/bin/gimp-2.10-2.10.22-2.el9.1.aarch64.debug:
5714	Likewise.  * tests/data/Makefile.am: Add the new test files to
5715	source directory.  * tests/test-alt-dwarf-file.cc: Add the new
5716	test inputs to this test harness.  *
5717	tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.  *
5718	tests/data/test-abidiff/test-enum0-report.txt: Likewise.  *
5719	tests/data/test-annotate/libtest23.so.abi: Likewise.  *
5720	tests/data/test-annotate/libtest24-drop-fns-2.so.abi:
5721	Likewise.  *
5722	tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
5723	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
5724	Likewise.  * tests/data/test-annotate/test13-pr18894.so.abi:
5725	Likewise.  * tests/data/test-annotate/test14-pr18893.so.abi:
5726	Likewise.  * tests/data/test-annotate/test15-pr18892.so.abi:
5727	Likewise.  * tests/data/test-annotate/test17-pr19027.so.abi:
5728	Likewise.  *
5729	tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
5730	Likewise.  *
5731	tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
5732	Likewise.  *
5733	tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
5734	Likewise.  * tests/data/test-annotate/test21-pr19092.so.abi:
5735	Likewise.  *
5736	tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
5737	Likewise.  *
5738	tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
5739	Likewise.  * tests/data/test-diff-dwarf/test6-report.txt:
5740	Likewise.  *
5741	tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
5742	Likewise.  *
5743	tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
5744	Likewise.  * tests/data/test-diff-filter/test8-report.txt:
5745	Likewise.  *
5746	tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
5747	Likewise.  *
5748	tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
5749	Likewise.  *
5750	tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
5751	Likewise.  *
5752	tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
5753	Likewise.  *
5754	tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
5755	Likewise.  *
5756	tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
5757	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
5758	*
5759	tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
5760	Likewise.  *
5761	tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
5762	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.  *
5763	tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
5764	Likewise.  *
5765	tests/data/test-read-dwarf/libtest24-drop-fns.so.abi:
5766	Likewise.  *
5767	tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
5768	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi:
5769	Likewise.  * tests/data/test-read-dwarf/test12-pr18844.so.abi:
5770	Likewise.  * tests/data/test-read-dwarf/test13-pr18894.so.abi:
5771	Likewise.  * tests/data/test-read-dwarf/test14-pr18893.so.abi:
5772	Likewise.  * tests/data/test-read-dwarf/test15-pr18892.so.abi:
5773	Likewise.  * tests/data/test-read-dwarf/test16-pr18904.so.abi:
5774	Likewise.  * tests/data/test-read-dwarf/test17-pr19027.so.abi:
5775	Likewise.  *
5776	tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
5777	Likewise.  *
5778	tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
5779	Likewise.  *
5780	tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
5781	Likewise.  * tests/data/test-read-dwarf/test21-pr19092.so.abi:
5782	Likewise.  *
5783	tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
5784	Likewise.  *
5785	tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
5786	Likewise.  *
5787	tests/data/test-read-write/test28-without-std-fns-ref.xml:
5788	Likewise.  *
5789	tests/data/test-read-write/test28-without-std-vars-ref.xml:
5790	Likewise.
5791
57922021-06-07  Dodji Seketeli <dodji@redhat.com>
5793
5794	reader: Canonicalizing a type once is enough
5795	* src/abg-reader.cc (build_type): Don't try to canonicalize the
5796	type here because all the sub-routines of this function (which
5797	actually build the type) already try to canonicalize it.
5798
57992021-06-07  Dodji Seketeli <dodji@redhat.com>
5800
5801	ir: make 'debug(artefact)' support showing enums
5802	* src/abg-ir.cc (get_debug_representation): Add support for
5803	showing details for enums.  Also show declaration-only-ness for
5804	class or unions.
5805
58062021-06-07  Dodji Seketeli <dodji@redhat.com>
5807
5808	location:expand() shouldn't crash when no location manager available
5809	* src/abg-ir.cc (location::expand): When no location manager is
5810	present, just expand to an empty location.
5811
58122021-06-07  Dodji Seketeli <dodji@redhat.com>
5813
5814	Add environment::{get_type_id_from_pointer,get_canonical_type_from_type_id}
5815	* include/abg-ir.h (environment::{get_pointer_type_id_map,
5816	get_type_id_from_pointer, get_canonical_type_from_type_id}):
5817	Declare new member functions.
5818	* src/abg-ir.cc (environment::{get_pointer_type_id_map,
5819	get_type_id_from_pointer, get_canonical_type_from_type_id}):
5820	Define member functions.
5821	(environment::priv::pointer_type_id_map_): Move
5822	this data member here from ...
5823	* src/abg-reader.cc (read_context::m_pointer_type_id_map):
5824	... here.
5825	(read_context::get_pointer_type_id_map): Remove this as it's now
5826	defined in environment::get_pointer_type_id_map.
5827	(read_context::maybe_check_abixml_canonical_type_stability):
5828	Adjust.
5829	(build_type): Likewise.
5830
58312021-06-07  Dodji Seketeli <dodji@redhat.com>
5832
5833	ir: Enable setting breakpoint on first type inequality
5834	* src/abg-ir.cc (notify_equality_failed): Define new static
5835	function if WITH_DEBUG_SELF_COMPARISON is defined.
5836	(ABG_RETURN_EQUAL, ABG_RETURN_FALSE, ABG_RETURN): Define new macros.
5837	(try_canonical_compare): Use ABG_RETURN_EQUAL rather than just
5838	returning the result of a comparison.
5839	(equals): In all the overloads, use the new ABG_RETURN* macros,
5840	rather than just returning boolean values.
5841
58422021-05-22  Dodji Seketeli <dodji@redhat.com>
5843
5844	xml reader: Fix recursive qualified & reference type definition
5845	* include/abg-ir.h (qualified_type_def::qualified_type_def):
5846	Declare a constructor with no underlying type.
5847	(reference_type_def::reference_type_def): Declare a constructor
5848	with no pointed-to type.
5849	(reference_type_def::set_pointed_to_type): Declare new method.
5850	* src/abg-ir.cc (qualified_type_def::priv::priv): Define a
5851	constructor that takes no underlying type.
5852	(qualified_type_def::build_name): Make this work even on
5853	incomplete types with no underlying type.  In that case, this
5854	behaves like if the underlying type is "void".
5855	(qualified_type_def::qualified_type_def): Define a constructor
5856	that takes no underlying type.
5857	(qualified_type_def::get_size_in_bits): Make this work on
5858	incomplete types with no underlying type.
5859	(qualified_type_def::set_underlying_type): Adjust to properly
5860	update this type when a new underlying type is set.  Particularly,
5861	its name and the lookup maps from the type scope.
5862	(reference_type_def::reference_type_def): Define a constructor
5863	that takes no pointed-to type.
5864	(reference_type_def::set_pointed_to_type): Define new function.
5865	* src/abg-reader.cc (build_qualified_type_decl): Construct the
5866	qualified type early before we try to construct its underlying
5867	type.  Associate this incomplete type with the type-id.  Then try
5868	to construct the underlying type.  During its construction, if
5869	this incomplete qualified type is needed due to recursion then it
5870	can be used, leading to just one qualified type being used as it
5871	should be.
5872	(build_reference_type_def): Likewise for building incomplete
5873	reference type first before its pointed-to type.
5874
58752021-05-21  Dodji Seketeli <dodji@redhat.com>
5876
5877	abixml reader: Fix recursive type definition handling
5878	* include/abg-ir.h (pointer_type_def::pointer_type_def): Declare a
5879	constructor with no pointed-to type.
5880	(pointer_type_def::set_pointed_to_type): Declare new method.
5881	(typedef_decl::typedef_decl): Declare a constructor with no
5882	underlying type.
5883	* src/abg-ir.cc (pointer_type_def::pointer_type_def): Define a
5884	constructor with no pointed-to type.  The pointed-to type can thus
5885	later be set when it becomes available.
5886	(pointer_type_def::set_pointed_to_type): Define new method.
5887	(pointer_type_def::get_qualified_name): Make this work on a
5888	pointer type that (momentarily) has no pointed-to type.
5889	(typedef_decl::typedef_decl): Define a constructor with no
5890	underlying type.
5891	(typedef_decl::get_size_in_bits): Make this work on a typedef that
5892	has (momentarily) no underlying type.
5893	(typedef_decl::set_underlying_type): Update the size and alignment
5894	of the typedef from its new underlying type.
5895	* src/abg-reader.cc (build_pointer_type_def): Construct the
5896	pointer type early /BEFORE/ we even try to construct its
5897	pointed-to type.  Associate this incomplete type with the type-id.
5898	Then try to construct the pointed-to type.  During the
5899	construction of the pointed-to type, if this pointer is needed
5900	(due to recursion) then the incomplete pointer type can be used,
5901	leading to just one pointer type used (recursively) as it should
5902	be.
5903	(build_typedef_decl): Likewise for building typedef type early
5904	without its underlying type so that it can used by the underlying
5905	type if needed.
5906	* tests/data/test-diff-pkg/graphviz-2.44.0-18.el9.aarch64-self-check-report-0.txt:
5907	New test reference output.
5908	* tests/data/test-diff-pkg/graphviz-2.44.0-18.el9.aarch64.rpm: New
5909	binary test input.
5910	* tests/data/test-diff-pkg/graphviz-debuginfo-2.44.0-18.el9.aarch64.rpm: Likewise.
5911	* tests/data/Makefile.am: Add the new test material above to
5912	source distribution.
5913	* tests/test-diff-pkg.cc (in_out_specs): Add the test inputs above
5914	to this test harness.
5915
59162021-05-20  Dodji Seketeli <dodji@redhat.com>
5917
5918	Introduce artificial locations
5919	* include/abg-fwd.h (get_artificial_or_natural_location): Declare
5920	new function.
5921	* include/abg-ir.h (location::location): Initialize & copy ...
5922	(location::is_artificial_): ... a new data member.
5923	(location::{g,s}et_is_artificial): New accessors.
5924	(location::{operator=}): Adjust.
5925	(type_or_decl_base::{set,get,has}_artificial_location): Declare
5926	new member functions.
5927	* src/abg-ir.cc (decl_topo_comp::operator()): In the overload for
5928	decl_base*, use artificial location for topological sort in
5929	priority.  Otherwise, use natural location.  Otherwise, sort
5930	lexicographically.
5931	(type_topo_comp::operator()): In the overload for type_base*, use
5932	lexicographical sort only for types that don't have location at
5933	all.
5934	(type_or_decl_base::priv::artificial_location_): Define new data
5935	member.
5936	(type_or_decl_base::{set,get,has}_artificial_location): Define new
5937	member functions.
5938	(decl_base::priv): Allow a constructor without location.  That one
5939	sets no natural location to the artifact.
5940	(decl_base::decl_base): Use decl_base::set_location in the
5941	constructor now.
5942	(decl_base::set_location): Adjust this to support setting a
5943	natural or an artificial location.
5944	(get_debug_representation): Emit debugging log showing the
5945	location of an artifact, using its artificial location in
5946	priority.
5947	(get_natural_or_artificial_location): Define new function.
5948	* src/abg-reader.cc (read_artificial_location)
5949	(maybe_set_artificial_location): Define new static functions.
5950	(read_location): Read artificial location when no natural location
5951	was found.
5952	(build_namespace_decl, build_function_decl, build_type_decl)
5953	(build_qualified_type_decl, build_pointer_type_def)
5954	(build_reference_type_def, build_subrange_type)
5955	(build_array_type_def, build_enum_type_decl, build_typedef_decl)
5956	(build_class_decl, build_union_decl, build_function_tdecl)
5957	(build_class_tdecl, build_type_tparameter)
5958	(build_non_type_tparameter, build_template_tparameter): Read and
5959	set artificial location.
5960	* src/abg-writer.cc (write_location): Don't serialize artificial
5961	locations.
5962	(write_namespace_decl): Topologically sort member declarations
5963	before serializing them.
5964	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
5965	Adjust.
5966	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
5967	Likewise.
5968	* tests/data/test-annotate/libtest23.so.abi: Likewise.
5969	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
5970	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
5971	* tests/data/test-annotate/test0.abi: Likewise.
5972	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
5973	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
5974	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
5975	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
5976	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
5977	Likewise.
5978	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
5979	Likewise.
5980	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
5981	Likewise.
5982	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
5983	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
5984	Likewise.
5985	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
5986	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
5987	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
5988	Likewise.
5989	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
5990	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
5991	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
5992	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
5993	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
5994	* tests/data/test-read-dwarf/test-suppressed-alias.o.abi: Likewise.
5995	* tests/data/test-read-dwarf/test0.abi: Likewise.
5996	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
5997	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
5998	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
5999	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
6000	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
6001	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
6002	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
6003	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
6004	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
6005	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
6006	Likewise.
6007	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6008	Likewise.
6009	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
6010	Likewise.
6011	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
6012	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
6013	Likewise.
6014	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
6015	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
6016	Likewise.
6017	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
6018	Likewise.
6019
60202021-05-19  Dodji Seketeli <dodji@redhat.com>
6021
6022	Detect abixml canonical type instability during abidw --debug-abidiff
6023	* include/abg-ir.h (environment::get_type_id_canonical_type_map):
6024	Declare new data member.
6025	* src/abg-ir.cc (environment::priv::type_id_canonical_type_map_):
6026	Define new data member.
6027	(environment::get_type_id_canonical_type_map): Define new method.
6028	* include/abg-reader.h (load_canonical_type_ids): Declare new
6029	function.
6030	* src/abg-reader.cc (read_context::m_pointer_type_id_map):
6031	Define new data member.
6032	(read_context::{get_pointer_type_id_map,
6033	maybe_check_abixml_canonical_type_stability}): Define new methods.
6034	(read_context::{maybe_canonicalize_type,
6035	perform_late_type_canonicalizing}): Invoke
6036	maybe_perform_self_comparison_canonical_type_check after
6037	canonicalization to perform canonicalization type stability
6038	checking.
6039	(build_type): Associate the pointer value for the newly built type
6040	with the type id string identifying it in the abixml.  Once the
6041	abixml representation is dropped from memory and we are about to
6042	perform type canonicalization, we can still know what the type id
6043	of a given type coming from abixml was; it's thus possible to
6044	verify that the canonical type associated to that type id is the
6045	same as the one stored in the typeid file.
6046	(read_type_id_string): Define new static function.
6047	(load_canonical_type_ids): Define new function.
6048	* include/abg-writer.h (write_canonical_type_ids): Likewise.
6049	* src/abg-writer.cc (write_canonical_type_ids): Define new
6050	function overloads.
6051	* tools/abidw.cc (options::type_id_file_path): New data member.
6052	(load_corpus_and_write_abixml): Write and read back the typeid
6053	file.
6054
60552021-05-18  Dodji Seketeli <dodji@redhat.com>
6056
6057	Detect failed self comparison in type canonicalization of abixml
6058	* doc/manuals/abidw.rst: Add documentation for the --debug-abidiff
6059	option.
6060	* include/abg-ir.h (environment::{set_self_comparison_debug_input,
6061	get_self_comparison_debug_inputs, self_comparison_debug_is_on}):
6062	Declare new methods.
6063	* configure.ac: Define a new --enable-debug-self-comparison option
6064	that is disabled by default.  That option defines a new
6065	WITH_DEBUG_SELF_COMPARISON preprocessor macro.
6066	* src/abg-ir.cc
6067	(environment::priv::{first_self_comparison_corpus_,
6068	second_self_comparison_corpus_, self_comparison_debug_on_}): New
6069	data members.  Also, re-indent the data members.
6070	(environment::{set_self_comparison_debug_input,
6071	get_self_comparison_debug_inputs, self_comparison_debug_is_on}):
6072	Define new method.
6073	(type_base::get_canonical_type_for): In the "debug self comparison
6074	mode", if a type coming from the second corpus compares different
6075	from its counterpart coming from the first corpus then log a debug
6076	message.
6077	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus): When
6078	loading the first corpus, if the debug self comparison mode is on,
6079	then save that corpus on the side in the environment.
6080	* src/abg-reader.cc (read_corpus_from_input): When loading the
6081	second corpus, if the debug self comparison mode is on, then save
6082	that corpus on the side in the environment.
6083	* tools/abidw.cc: Include the config.h file for preprocessor
6084	macros defined at configure
6085	(options::debug_abidiff): New data member.
6086	(parse_command_line): Parse the --debug-abidiff option.
6087	(load_corpus_and_write_abixml): Switch the self debug mode on when
6088	the --debug-abidiff option is provided.  Use a read_context for
6089	the abixml loading.  That is going to be useful for subsequent
6090	patches.
6091
60922021-05-17  Dodji Seketeli <dodji@redhat.com>
6093
6094	Add primitives callable from the command line of the debugger
6095	* include/abg-fwd.h (get_debug_representation, get_data_member)
6096	(debug, debug_equals): Declare new functions.
6097	* include/abg-ir.h (environment{get_canonical_types,
6098	get_canonical_type}): Declare new member functions.
6099	* src/abg-ir.cc (environment::{get_canonical_types,
6100	get_canonical_type}): Define new member functions.
6101	(get_debug_representation, get_data_member)
6102	(debug, debug_equals): Define new functions.
6103
61042021-05-24  Dodji Seketeli <dodji@redhat.com>
6105
6106	Peel array types when peeling pointers from a type
6107	* src/abg-ir.cc (peel_typedef_pointer_or_reference_type): In the
6108	overloads for type_base_sptr and type_base*, peel array type off
6109	as well.
6110
61112021-05-24  Dodji Seketeli <dodji@redhat.com>
6112
6113	Fix DWARF type DIE canonicalization
6114	* src/abg-dwarf-reader.cc (compare_dies): When comparing array
6115	type DIEs, take into account the type of the elements of the
6116	arrays.
6117
61182021-05-24  Dodji Seketeli <dodji@redhat.com>
6119
6120	Miscellaneous indentation and comments cleanups
6121	* src/abg-ir.cc (environment::priv::{config_, canonical_types_,
6122	sorted_canonical_types_, void_type_, variadic_marker_type_}):
6123	Re-indent these data members.
6124	(peel_typedef_pointer_or_reference_type): Fix comment.
6125	(var_decl::var_decl): Likewise.
6126	(function_decl::function_decl): Add a comment.
6127	* src/abg-reader.cc (handle_reference_type_def): Fix indentation
6128	of parameters.
6129
61302021-05-20  Dodji Seketeli <dodji@redhat.com>
6131
6132	Fix thinko in configure.ac
6133	* configure.ac: Fix a thinko I spotted while looking at something
6134	else.
6135
61362021-04-19  Dodji Seketeli <dodji@redhat.com>
6137
6138	reader: Use xmlFirstElementChild/xmlNextElementSibling to iterate over children elements
6139	* src/abg-reader.cc (walk_xml_node_to_map_type_ids)
6140	(read_translation_unit, read_translation_unit_from_input)
6141	(read_symbol_db_from_input, build_needed)
6142	(read_elf_needed_from_input, read_corpus_group_from_input)
6143	(build_namespace_decl, build_elf_symbol_db, build_function_decl)
6144	(build_function_type, build_array_type_def, build_enum_type_decl)
6145	(build_class_decl, build_union_decl, build_function_tdecl)
6146	(build_class_tdecl, build_type_composition)
6147	(build_template_tparameter): Use
6148	xmlFirstElementChild/xmlNextElementSibling rather than poking at
6149	xmlNode::children and looping over xmlNode::next by hand.
6150
61512021-04-19  Dodji Seketeli <dodji@redhat.com>
6152
6153	reader: Use xmlFirstElementChild and xmlNextElementSibling rather than xml::advance_to_next_sibling_element
6154	* include/abg-libxml-utils.h (advance_to_next_sibling_element):
6155	Remove the declaration of this function.
6156	* src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay)
6157	(advance_to_next_sibling_element): Remove definitions of these functions.
6158	* src/abg-reader.cc (read_translation_unit_from_input)
6159	(read_elf_needed_from_input, read_corpus_group_from_input): Use xmlNextElementSibling instead
6160	of xml::advance_to_next_sibling_element.
6161	(read_corpus_from_input): Likewise.  Also, use
6162	xmlFirstElementChild instead of
6163	xml::advance_to_next_sibling_element on the xmlNode::children data
6164	member.
6165	(read_corpus_group_from_input): use xmlFirstElementChild instead
6166	of xml::advance_to_next_sibling_element on the xmlNode::children
6167	data member.
6168
61692021-04-14  Dodji Seketeli <dodji@redhat.com>
6170
6171	reader: Handle 'abi-corpus' element being possibly empty
6172	* src/abg-reader.cc (read_context::get_corpus_node): Add comment
6173	to this member function.
6174	(read_translation_unit_from_input, read_symbol_db_from_input)
6175	(read_elf_needed_from_input): Start processing the current node of
6176	the corpus that needs to be processed rather than its next
6177	sibling.  Once the processing is done, set the new "current node
6178	of the corpus to be processed" properly by skipping to the next
6179	element node to be processed.
6180	(read_corpus_from_input): Don't get out early when the
6181	'abi-corpus' element is empty.  If, however, it has children node,
6182	skip to the first child element and flag it -- using
6183	read_context::set_corpus_node -- as being the element node to be
6184	processed by the processing facilities of the reader.  If we are
6185	in a mode where we called xmlTextReaderExpand ourselves to get the
6186	node to process, then it means we need to free that node
6187	indirectly by calling xmlTextReaderNext.  In that case, that node
6188	should not be flagged by read_context::set_corpus_node.  Add more
6189	comments.
6190	* src/abg-corpus.cc (corpus::is_empty): Do not crash when no
6191	symtab is around.
6192	* src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay):
6193	Fix typo in comment.
6194	(advance_to_next_sibling_element): Don't crash when given a nil
6195	node.
6196	* tests/data/test-abidiff/test-PR27616-squished-v0.abi: Add new
6197	test input.
6198	* tests/data/test-abidiff/test-PR27616-squished-v1.abi: Likewise.
6199	* tests/data/test-abidiff/test-PR27616-v0.xml: Likewise.
6200	* tests/data/test-abidiff/test-PR27616-v1.xml: Likewise.
6201	* tests/data/Makefile.am: Add the new test inputs above to source
6202	distribution.
6203	* tests/test-abidiff.cc (specs): Add the new tests inputs above to
6204	this harness.
6205	* tools/abilint.cc (main): Support writing corpus groups.
6206
62072021-04-13  Dodji Seketeli <dodji@redhat.com>
6208
6209	dwarf-reader: properly set artificial-ness in opaque types
6210	* src/abg-dwarf-reader.cc (get_opaque_version_of_type): Propagate
6211	the artificial-ness of the original type here.
6212	* tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Adjust.
6213
62142021-04-12  Dodji Seketeli <dodji@redhat.com>
6215
6216	dwarf-reader: Canonicalize opaque enums and classes
6217	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Canonicalize
6218	opaque enums and classes.
6219	* tests/data/test-read-dwarf/PR27700/include-dir/priv.h: New test
6220	header file.
6221	* tests/data/test-read-dwarf/PR27700/include-dir/pub.h: Likewise
6222	* tests/data/test-read-dwarf/PR27700/pub-incdir/inc.h: Likewise.
6223	* tests/data/test-read-dwarf/PR27700/test-PR27700.o: New binary
6224	input file.
6225	* tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Reference
6226	abi file of the binary above.
6227	* tests/data/test-read-dwarf/PR27700/test-PR27700.c: Source file
6228	of the binary above.
6229	* tests/data/Makefile.am: Add the test material above to source
6230	distribution.
6231	* tests/test-read-dwarf.cc (InOutSpec::in_public_headers_path):
6232	Add new data member.
6233	(in_out_specs): Adjust to reflect the new data member in the
6234	InOutSpec type.  Add a new test input.
6235	(set_suppressions_from_headers): Define new static function.
6236	(test_task::perform): Use the content of the new
6237	InOutSpec::in_public_headers_path to construct and add
6238	"--headers-dir <headers-dir> --drop-private-types" to the options
6239	of the abidw program run.
6240
62412020-07-01  Matthias Maennich <maennich@google.com>
6242
6243	symtab: Add support for MODVERSIONS (CRC checksums)
6244	* include/abg-ir.h (elf_symbol::elf_symbol): Add CRC parameter.
6245	(elf_symbol::create): Likewise.
6246	(elf_symbol::get_crc): New member method.
6247	(elf_symbol::set_crc): New member method.
6248	* src/abg-comp-filter.cc (crc_changed): New function.
6249	(categorize_harmful_diff_node): Also test for CRC changes.
6250	* src/abg-ir.cc (elf_symbol::priv::crc_): New data member.
6251	* src/abg-ir.cc (elf_symbol::priv::priv): Add CRC parameter.
6252	(elf_symbol::elf_symbol): Likewise.
6253	(elf_symbol::create): Likewise.
6254	(elf_symbol::textually_equals): Add CRC support.
6255	(elf_symbol::get_crc): New member method.
6256	(elf_symbol::set_crc): New member method.
6257	* src/abg-reader.cc (build_elf_symbol): Add CRC support.
6258	* src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): Likewise.
6259	* src/abg-symtab-reader.cc (symtab::load): Likewise.
6260	* src/abg-writer.cc (write_elf_symbol): Likewise.
6261	* tests/data/Makefile.am: Add new test data files.
6262	* tests/data/test-abidiff-exit/test-crc-report.txt: New test file.
6263	* tests/data/test-abidiff-exit/test-crc-v0.abi: Likewise.
6264	* tests/data/test-abidiff-exit/test-crc-v1.abi: Likewise.
6265	* tests/data/test-abidiff/empty-report.txt: New file.
6266	* tests/data/test-abidiff/test-PR18166-libtirpc.so.report.txt: Deleted.
6267	* tests/data/test-abidiff/test-PR24552-report0.txt: Deleted.
6268	* tests/data/test-abidiff/test-crc-0.xml: New test file.
6269	* tests/data/test-abidiff/test-crc-1.xml: Likewise.
6270	* tests/data/test-abidiff/test-crc-2.xml: Likewise.
6271	* tests/data/test-abidiff/test-crc-report.txt: Likewise.
6272	* tests/data/test-abidiff/test-empty-corpus-report.txt: Deleted.
6273	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Add CRC values.
6274	* tests/data/test-read-write/test-crc.xml: New test data file.
6275	* tests/data/test-symtab/kernel-modversions/Makefile: New test source.
6276	* tests/data/test-symtab/kernel-modversions/one_of_each.c: Likewise.
6277	* tests/data/test-symtab/kernel-modversions/one_of_each.ko: Likewise.
6278	* tests/test-abidiff-exit.cc: Add new test case.
6279	* tests/test-abidiff.cc: Add new test case.
6280	* tests/test-read-write.cc: Likewise.
6281	* tests/test-symtab.cc (Symtab::KernelSymtabsWithCRC): New test case.
6282	Reviewed-by: Giuliano Procida <gprocida@google.com>
6283	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6284
62852020-10-15  Giuliano Procida <gprocida@google.com>
6286
6287	abg-writer.cc: fix write_elf_symbol_reference loop
6288	* src/abg-writer.cc (write_elf_symbol_reference): Check main
6289	symbol and aliases with more care.
6290	Fixes: commmit ("dwarf-reader/writer: consider aliases when dealing with suppressions")
6291	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6292
62932020-06-28  Matthias Maennich <maennich@google.com>
6294
6295	dwarf-reader/writer: consider aliases when dealing with suppressions
6296	* src/abg-dwarf-reader.cc(function_is_suppressed): Do not suppress
6297	a function for which there is an alias that is not suppressed.
6298	(variable_is_suppressed): Likewise for variables.
6299	* src/abg-reader.cc (build_elf_symbol): Improve handling of
6300	suppressed aliased symbols when reading from XML.
6301	* src/abg-symtab-reader.cc (load): Likewise.
6302	* src/abg-writer.cc(write_elf_symbol_reference): Fall back to
6303	any aliased symbol if the main symbol is suppressed.
6304	* tests/data/Makefile.am: Add new test files.
6305	* tests/data/test-abidiff-exit/test-missing-alias-report.txt: New test file.
6306	* tests/data/test-abidiff-exit/test-missing-alias.abi: Likewise.
6307	* tests/data/test-abidiff-exit/test-missing-alias.suppr: Likewise.
6308	* tests/test-abidiff-exit.cc: Add support for whitelists and add
6309	new testcase.
6310	* tests/data/test-read-dwarf/test-suppressed-alias.c: New test file.
6311	* tests/data/test-read-dwarf/test-suppressed-alias.o: Likewise.
6312	* tests/data/test-read-dwarf/test-suppressed-alias.o.abi: Likewise.
6313	* tests/data/test-read-dwarf/test-suppressed-alias.suppr: Likewise.
6314	* tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise.
6315	* tests/data/test-read-dwarf/test3-alias-1.suppr: Likewise.
6316	* tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise.
6317	* tests/data/test-read-dwarf/test3-alias-2.suppr: Likewise.
6318	* tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise.
6319	* tests/data/test-read-dwarf/test3-alias-3.suppr: Likewise.
6320	* tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise.
6321	* tests/data/test-read-dwarf/test3-alias-4.suppr: Likewise.
6322	* tests/test-read-dwarf.cc: Add new test cases.
6323	Reviewed-by: Giuliano Procida <gprocida@google.com>
6324	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6325
63262020-06-30  Matthias Maennich <maennich@google.com>
6327
6328	symtab/dwarf-reader: allow hinting of main symbols for aliases
6329	* include/abg-ir.h (elf_symbol::update_main_symbol): New method.
6330	* include/abg-symtab-reader.h (symtab::update_main_symbol): New method.
6331	* src/abg-dwarf-reader.cc
6332	(build_var_decl): Hint symtab about main symbol discovered in DWARF.
6333	(build_function_decl): Likewise.
6334	* src/abg-ir.cc (elf_symbol::get_main_symbol): Lock the weak_ptr
6335	on access in both overloads.
6336	(update_main_symbol): New method to allow updating the main symbol.
6337	* src/abg-symtab-reader.cc (symtab::update_main_symbol): New method.
6338	* data/Makefile.am: Add new test data files.
6339	* tests/data/test-annotate/test15-pr18892.so.abi: Updated test file.
6340	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
6341	* tests/data/test-annotate/test2.so.abi: Likewise.
6342	* tests/data/test-annotate/test3.so.abi: Likewise.
6343	* tests/data/test-diff-dwarf/test12-report.txt: Likewise.
6344	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
6345	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
6346	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
6347	* 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.
6348	* 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.
6349	* tests/data/test-diff-suppr/test23-alias-filter-4.suppr: Likewise.
6350	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
6351	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise.
6352	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
6353	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
6354	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
6355	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
6356	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
6357	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
6358	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
6359	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
6360	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
6361	* tests/data/test-read-dwarf/test2.so.hash.abi: Likewise.
6362	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
6363	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
6364	* tests/data/test-read-dwarf/test3.so.hash.abi: Likewise.
6365	* tests/data/test-symtab/basic/aliases.c: New test source file.
6366	* tests/data/test-symtab/basic/aliases.so: Likewise.
6367	* tests/test-symtab.cc (Symtab::AliasedFunctionSymbols): New test case.
6368	(Symtab::AliasedVariableSymbols): Likewise.
6369	Reviewed-by: Giuliano Procida <gprocida@google.com>
6370	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6371
63722020-06-29  Matthias Maennich <maennich@google.com>
6373
6374	test-symtab: add tests for whitelisted functions
6375	* tests/data/Makefile.am: add new test files
6376	* tests/data/test-symtab/basic/one_function_one_variable_all.whitelist: New test file,
6377	* tests/data/test-symtab/basic/one_function_one_variable_function.whitelist: Likewise.
6378	* tests/data/test-symtab/basic/one_function_one_variable_irrelevant.whitelist: Likewise.
6379	* tests/data/test-symtab/basic/one_function_one_variable_variable.whitelist: Likewise.
6380	* tests/test-symtab.cc (read_corpus): Add support for whitelists.
6381	(assert_symbol_count): Likewise.
6382	(Symtab::SymtabWithWhitelist): New testcase.
6383	Reviewed-by: Giuliano Procida <gprocida@google.com>
6384	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6385
63862020-06-02  Matthias Maennich <maennich@google.com>
6387
6388	dwarf reader: drop (now) unused code related to symbol table reading
6389	* include/abg-dwarf-reader.h (set_ignore_symbol_table): Remove.
6390	(get_ignore_symbol_table): Likewise.
6391	* src/abg-dwarf-reader.cc (add_symbol_to_map): Likewise.
6392	(read_context::options_type::ignore_symbol_table): Likewise.
6393	(read_context::options_type): Adjust.
6394	(read_context::fun_addr_sym_map_): Remove.
6395	(read_context::fun_entry_addr_sym_map_): Likewise.
6396	(read_context::fun_syms_): Likewise.
6397	(read_context::var_addr_sym_map_): Likewise.
6398	(read_context::var_syms_): Likewise.
6399	(read_context::undefined_fun_syms_): Likewise.
6400	(read_context::undefined_var_syms_): Likewise.
6401	(read_context::initialize): Adjust.
6402	(read_context::lookup_elf_symbol_from_index): Remove.
6403	(read_context::fun_entry_addr_sym_map_sptr): Likewise.
6404	(read_context::fun_entry_addr_sym_map): Likewise.
6405	(read_context::fun_syms_sptr): Likewise.
6406	(read_context::fun_syms): Likewise.
6407	(read_context::var_syms_sptr): Likewise.
6408	(read_context::var_syms): Likewise.
6409	(read_context::undefined_fun_syms_sptr): Likewise.
6410	(read_context::undefined_var_syms_sptr): Likewise.
6411	(read_context::load_symbol_maps_from_symtab_section): Likewise.
6412	(read_context::load_symbol_maps): Likewise.
6413	(read_context::maybe_load_symbol_maps): Likewise.
6414	(set_ignore_symbol_table): Likewise.
6415	(get_ignore_symbol_table): Likewise.
6416	(create_default_var_sym): Likewise.
6417	(build_var_decl): Adjust.
6418	(function_is_suppressed): Likewise.
6419	(variable_is_suppressed): Likewise.
6420	(build_function_decl): Likewise.
6421	(add_symbol_to_map): Remove.
6422	(read_corpus_from_elf): Adjust.
6423	(build_corpus_group_from_kernel_dist_under): Likewise.
6424	* tools/abidw.cc (main): Likewise.
6425	Reviewed-by: Giuliano Procida <gprocida@google.com>
6426	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6427
64282020-05-21  Matthias Maennich <maennich@google.com>
6429
6430	abg-corpus: remove symbol maps and their setters
6431	* include/abg-corpus.h (corpus::set_fun_symbol_map): Remove
6432	method declaration.
6433	(corpus::set_undefined_fun_symbol_map): Likewise.
6434	(corpus::set_var_symbol_map): Likewise.
6435	(corpus::set_undefined_var_symbol_map): Likewise.
6436	(corpus::get_fun_symbol_map_sptr): Likewise.
6437	(corpus::get_undefined_fun_symbol_map_sptr): Likewise.
6438	(corpus::get_var_symbol_map_sptr): Likewise.
6439	(corpus::get_undefined_var_symbol_map_sptr): Likewise.
6440	* src/abg-corpus-priv.h (corpus::priv::var_symbol_map): make
6441	private and mutable
6442	(corpus::priv::undefined_var_symbol_map): Likewise.
6443	(corpus::priv::fun_symbol_map): Likewise.
6444	(corpus::priv::undefined_fun_symbol_map): Likewise.
6445	(corpus::priv::get_fun_symbol_map): New method declaration.
6446	(corpus::priv::get_undefined_fun_symbol_map): Likewise.
6447	(corpus::priv::get_var_symbol_map): Likewise.
6448	(corpus::priv::get_undefined_var_symbol_map): Likewise.
6449	* src/abg-corpus.cc (corpus::priv::get_fun_symbol_map): New
6450	method implementation.
6451	(corpus::priv::get_undefined_fun_symbol_map): Likewise.
6452	(corpus::priv::get_var_symbol_map): Likewise.
6453	(corpus::priv::get_undefined_var_symbol_map): Likewise.
6454	(corpus::is_empty): depend on symtab only.
6455	(corpus::set_fun_symbol_map): Remove method.
6456	(corpus::set_undefined_fun_symbol_map): Likewise.
6457	(corpus::set_var_symbol_map): Likewise.
6458	(corpus::set_undefined_var_symbol_map): Likewise.
6459	(corpus::get_fun_symbol_map_sptr): Likewise.
6460	(corpus::get_undefined_fun_symbol_map_sptr): Likewise.
6461	(corpus::get_var_symbol_map_sptr): Likewise.
6462	(corpus::get_undefined_var_symbol_map_sptr): Likewise.
6463	(corpus::get_fun_symbol_map): Use corpus::priv proxy method.
6464	(corpus::get_undefined_fun_symbol_map): Likewise.
6465	(corpus::get_var_symbol_map): Likewise.
6466	(corpus::get_undefined_var_symbol_map): Likewise.
6467	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Do not
6468	set corpus symbol maps anymore.
6469	* src/abg-reader.cc (read_corpus_from_input): Likewise.
6470	* tests/test-symtab.cc (assert_symbol_count): Do not access the
6471	corpus symbol maps through sptr anymore.
6472	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust
6473	expected test output.
6474	Reviewed-by: Giuliano Procida <gprocida@google.com>
6475	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6476
64772020-05-14  Matthias Maennich <maennich@google.com>
6478
6479	symtab_reader: add support for ppc64 ELFv1 binaries
6480	* src/abg-symtab-reader.cc (symtab::lookup_symbol): fall back to
6481	lookup the address in entry_addr_symbol_map_.
6482	(symtab::load): update the function entry address map for
6483	ppc64 targets.
6484	(symtab::update_function_entry_address_symbol_map): New
6485	function implementation.
6486	* src/abg-symtab-reader.h
6487	(symtab::entry_addr_symbol_map_): New data member.
6488	(symtab::update_function_entry_address_symbol_map): New
6489	function declaration.
6490	Reviewed-by: Giuliano Procida <gprocida@google.com>
6491	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6492
64932020-05-12  Matthias Maennich <maennich@google.com>
6494
6495	abg-elf-helpers: migrate ppc64 specific helpers
6496	* src/abg-dwarf-reader.cc (read_context::opd_section_): Delete.
6497	(read_context::find_opd_section): Delete.
6498	(read_context::read_uint64_from_array_of_bytes): Delete.
6499	(read_context::read_int_from_array_of_bytes): Delete.
6500	(read_context::lookup_ppc64_elf_fn_entry_point_address): Delete.
6501	(read_context::address_is_in_opd_section): Delete.
6502	(read_context::address_is_in_section): Delete.
6503	(read_context::load_symbol_maps_from_symtab_section): Adjust.
6504	* src/abg-elf-helpers.cc (read_int_from_array_of_bytes): New.
6505	(read_uint64_from_array_of_bytes): New.
6506	(lookup_ppc64_elf_fn_entry_point_address): New.
6507	(address_is_in_section): New.
6508	(address_is_in_opd_section): New.
6509	* src/abg-elf-helpers.h
6510	(lookup_ppc64_elf_fn_entry_point_address): New declaration.
6511	(address_is_in_opd_section): New declaration.
6512	Reviewed-by: Giuliano Procida <gprocida@google.com>
6513	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6514
65152020-05-06  Matthias Maennich <maennich@google.com>
6516
6517	Switch kernel stuff over to new symtab and drop unused code
6518	* src/abg-dwarf-reader.cc (read_context::ksymtab_format_): Delete.
6519	(read_context::ksymtab_entry_size_): Likewise.
6520	(read_context::nb_ksymtab_entries_): Likewise.
6521	(read_context::nb_ksymtab_gpl_entries_): Likewise.
6522	(read_context::ksymtab_section_): Likewise.
6523	(read_context::ksymtab_reloc_section_): Likewise.
6524	(read_context::ksymtab_gpl_section_): Likewise.
6525	(read_context::ksymtab_gpl_reloc_section_): Likewise.
6526	(read_context::ksymtab_strings_section_): Likewise.
6527	(read_context::linux_exported_fn_syms): Likewise.
6528	(read_context::linux_exported_var_syms): Likewise.
6529	(read_context::linux_exported_gpl_fn_syms): Likewise.
6530	(read_context::linux_exported_gpl_var_syms): Likewise.
6531	(read_context::initialize): Remove initializations accordingly.
6532	(read_context::find_ksymtab_section): Delete.
6533	(read_context::find_ksymtab_gpl_section): Likewise.
6534	(read_context::find_ksymtab_reloc_section): Likewise.
6535	(read_context::find_ksymtab_gpl_reloc_section): Likewise.
6536	(read_context::find_ksymtab_strings_section): Likewise.
6537	(read_context::find_any_ksymtab_section): Likewise.
6538	(read_context::find_any_ksymtab_reloc_section): Likewise.
6539	(read_context::lookup_elf_symbol_from_index): Adjust.
6540	(read_context::linux_exported_fn_syms): Delete.
6541	(read_context::create_or_get_linux_exported_fn_syms): Likewise.
6542	(read_context::linux_exported_var_syms): Likewise.
6543	(read_context::create_or_get_linux_exported_var_syms): Likewise.
6544	(read_context::linux_exported_gpl_fn_syms): Delete.
6545	(read_context::create_or_get_linux_exported_gpl_fn_syms): Likewise.
6546	(read_context::linux_exported_gpl_var_syms): Likewise.
6547	(read_context::create_or_get_linux_exported_gpl_var_syms): Likewise.
6548	(read_context::try_reading_first_ksymtab_entry): Likewise.
6549	(read_context::try_reading_first_ksymtab_entry_using_pre_v4_19_format): Likewise.
6550	(read_context::try_reading_first_ksymtab_entry_using_v4_19_format): Likewise.
6551	(read_context::get_ksymtab_format_module): Likewise.
6552	(read_context::get_ksymtab_format): Likewise.
6553	(read_context::get_ksymtab_symbol_value_size): Likewise.
6554	(read_context::get_ksymtab_entry_size): Likewise.
6555	(read_context::get_nb_ksymtab_entries): Likewise.
6556	(read_context::get_nb_ksymtab_gpl_entries): Likewise.
6557	(read_context::populate_symbol_map_from_ksymtab): Likewise.
6558	(read_context::populate_symbol_map_from_ksymtab_reloc): Likewise.
6559	(read_context::load_kernel_symbol_table): Likewise.
6560	(read_context::load_ksymtab_symbols): Likewise.
6561	(read_context::load_ksymtab_gpl_symbols): Likewise.
6562	(read_context::load_linux_specific_exported_symbol_maps): Likewise.
6563	(read_context::load_symbol_maps): Do not load kernel symbol maps.
6564	(read_context::maybe_adjust_sym_address_from_v4_19_ksymtab): Delete.
6565	(read_context::add_fn_symbols_to_map): Likewise.
6566	(read_context::add_var_symbols_to_map): Likewise.
6567	(read_context::read_debug_info_into_corpus): Fill export maps
6568	from new symtab.
6569	(read_context::lookup_elf_fn_symbol_from_address): Delete.
6570	(read_context::lookup_elf_var_symbol_from_address): Likewise.
6571	(read_context::lookup_elf_symbol_from_address): Likewise.
6572	(read_context::lookup_public_function_symbol_from_elf): Likewise.
6573	(read_context::fun_entry_addr_sym_map_sptr): Likewise.
6574	(read_context::fun_entry_addr_sym_map): Likewise.
6575	(read_context::var_addr_sym_map): Likewise.
6576	Reviewed-by: Giuliano Procida <gprocida@google.com>
6577	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6578
65792020-05-06  Matthias Maennich <maennich@google.com>
6580
6581	dwarf-reader: read_context: use new symtab in *_symbols_is_exported
6582	* src/abg-dwarf-reader.cc (function_symbol_is_exported): Use new
6583	symtab implementation.
6584	(variable_symbol_is_exported): Likewise.
6585	Reviewed-by: Giuliano Procida <gprocida@google.com>
6586	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6587
65882020-05-04  Matthias Maennich <maennich@google.com>
6589
6590	abg-reader: avoid using the (var|function)_symbol_map
6591	* src/abg-reader.cc (build_elf_symbol_from_reference): drop
6592	last parameter indicating the lookup type and use corpus
6593	symtab for the lookup
6594	(build_function_decl): Adjust accordingly.
6595	(build_var_decl): Likewise.
6596	Reviewed-by: Giuliano Procida <gprocida@google.com>
6597	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6598
65992020-05-04  Matthias Maennich <maennich@google.com>
6600
6601	corpus: make get_unreferenced_(function|variable)_symbols use the new symtab
6602	* src/abg-corpus-priv.h (corpus::priv::unrefed_var_symbols): make
6603	private, mutable and optional.
6604	(corpus::unrefed_fun_symbols): Likewise.
6605	(corpus::priv::get_unreferenced_function_symbols): New method declaration.
6606	(corpus::priv::get_unreferenced_variable_symbols): Likewise.
6607	* src/abg-corpus.cc
6608	(corpus::priv::build_unreferenced_symbols_tables): Delete method.
6609	(corpus::priv::get_unreferenced_function_symbols): New method implementation.
6610	(corpus::priv::get_unreferenced_variable_symbols): Likewise.
6611	(corpus::get_unreferenced_function_symbols): Proxy call to corpus::priv.
6612	(corpus::get_unreferenced_variable_symbols): Likewise.
6613	Reviewed-by: Giuliano Procida <gprocida@google.com>
6614	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6615
66162020-04-30  Matthias Maennich <maennich@google.com>
6617
6618	corpus: make get_(undefined_)?_(var|fun)_symbols use the new symtab
6619	* src/abg-corpus-priv.h (corpus::priv::sorted_var_symbols): make
6620	private, mutable and optional.
6621	(corpus::sorted_undefined_var_symbols): Likewise.
6622	(corpus::sorted_fun_symbols): Likewise.
6623	(corpus::sorted_undefined_fun_symbols): Likewise.
6624	(corpus::priv::get_sorted_fun_symbols): New method declaration.
6625	(corpus::priv::get_sorted_undefined_fun_symbols): Likewise.
6626	(corpus::priv::get_sorted_var_symbols): Likewise.
6627	(corpus::priv::get_sorted_undefined_var_symbols): Likewise.
6628	* src/abg-corpus.cc
6629	(corpus::elf_symbol_comp_functor): Delete struct.
6630	(corpus::priv::get_sorted_fun_symbols): New method implementation.
6631	(corpus::priv::get_sorted_undefined_fun_symbols): Likewise.
6632	(corpus::priv::get_sorted_var_symbols): Likewise.
6633	(corpus::priv::get_sorted_undefined_var_symbols): Likewise.
6634	(corpus::get_sorted_fun_symbols): Proxy call to corpus::priv.
6635	(corpus::get_sorted_undefined_fun_symbols): Likewise.
6636	(corpus::get_sorted_var_symbols): Likewise.
6637	(corpus::get_sorted_undefined_var_symbols): Likewise.
6638	* src/abg-writer.cc (write_elf_symbol_aliases): When emitting
6639	aliases for a kernel symbol, ensure to only emit exported,
6640	public aliases.
6641	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: update test
6642	data.
6643	Reviewed-by: Giuliano Procida <gprocida@google.com>
6644	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6645
66462020-05-19  Matthias Maennich <maennich@google.com>
6647
6648	Integrate new symtab reader into corpus and read_context
6649	* include/abg-corpus.h (corpus::set_symtab): New method declaration.
6650	(corpus::get_symtab): New method declaration.
6651	* include/abg-fwd.h (symtab_reader::symtab_sptr): New forward
6652	declaration.
6653	* src/abg-corpus-priv.h (corpus::priv::symtab_): New data member.
6654	* src/abg-corpus.cc
6655	(corpus::set_symtab): Likewise.
6656	(corpus::get_symtab): Likewise.
6657	* src/abg-dwarf-reader.cc (read_context::symtab_): New data member.
6658	(read_context::initialize): reset symtab_ as well
6659	(read_context::symtab): new method that loads a symtab on
6660	first access and returns it.
6661	(read_debug_info_into_corpus): also set the new symtab object
6662	on the current corpus.
6663	(read_corpus_from_elf): Also determine (i.e. load) the new
6664	symtab object and contribute to the load status.
6665	* src/abg-reader.cc (read_corpus_from_input): also set the new
6666	type symtab when reading from xml.
6667	* tests/test-symtab.cc: Add test assertions.
6668	Reviewed-by: Giuliano Procida <gprocida@google.com>
6669	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6670
66712020-04-29  Matthias Maennich <maennich@google.com>
6672
6673	Refactor ELF symbol table reading by adding a new symtab reader
6674	* src/abg-symtab-reader.h (symtab_filter): New class.
6675	(symtab_iterator): Likewise.
6676	(symtab): Likewise.
6677	(filtered_symtab): Likewise.
6678	* src/abg-symtab-reader.cc (symtab_filter::matches): New.
6679	(symtab::make_filter): Likewise.
6680	(symtab::lookup_symbol): Likewise.
6681	(symbol_sort): Likewise.
6682	(symtab::load): Likewise.
6683	(symtab::load_): Likewise.
6684	Reviewed-by: Giuliano Procida <gprocida@google.com>
6685	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
6686
66872021-03-29  Matthias Maennich <maennich@google.com>
6688
6689	clang-format: Minor correction to not break parameters on the first line
6690	* .clang-format: correct function parameter break/indentation
6691
66922021-03-31  Dodji Seketeli <dodji@redhat.com>
6693
6694	Bug 27598 - abidiff mishandles union member functions
6695	* src/abg-default-reporter.cc (default_reporter::report): Assume
6696	the parent type of the method can be either a class or a union.
6697	* tests/data/test-diff-filter/test-PR27598-report-0.txt: New
6698	reference output for the test.
6699	* tests/data/test-diff-filter/test-PR27598-v{0,1}.cc: New source
6700	code for the input binaries below.
6701	* tests/data/test-diff-filter/test-PR27598-v{0,1}.o: New input
6702	test binaries.
6703	* tests/data/Makefile.am: Add the new test material to source
6704	distribution.
6705	* tests/test-diff-filter.cc (in_out_specs): Add the test inputs
6706	above to this test harness.
6707
67082021-03-25  Dodji Seketeli <dodji@redhat.com>
6709
6710	Bug 27569 - abidiff misses a function parameter addition
6711	* include/abg-comparison.h (enum diff_category): Add a new
6712	FN_PARM_ADD_REMOVE_CHANGE_CATEGORY enumerator and adjust the
6713	following enumerator values.  Update the EVERYTHING_CATEGORY
6714	accordingly.
6715	(function_type_diff::{sorted_deleted_parms, sorted_added_parms}):
6716	Add new member functions.
6717	* src/abg-comparison.cc
6718	(function_type_diff::{sorted_deleted_parms, sorted_added_parms}):
6719	Define new accessors.
6720	(get_default_harmful_categories_bitmap):
6721	Consider changes of the category
6722	FN_PARM_ADD_REMOVE_CHANGE_CATEGORY as harmful.
6723	(operator<<(ostream& o, diff_category c)): Support the new
6724	FN_PARM_ADD_REMOVE_CHANGE_CATEGORY while serializing a category
6725	bitmap.
6726	* src/abg-comp-filter.cc
6727	(has_added_or_removed_function_parameters): Define new static
6728	function.
6729	(categorize_harmful_diff_node): Categorize diff nodes representing
6730	function parameter addition or removal as
6731	FN_PARM_ADD_REMOVE_CHANGE_CATEGORY.
6732	* tests/data/test-diff-filter/test-PR27569-report-0.txt: New test
6733	reference output.
6734	* tests/data/test-diff-filter/test-PR27569-v{0,1}.abi: New test inputs.
6735	* tests/data/Makefile.am: Add the new test inputs to the source
6736	distribution.
6737	* tests/test-diff-filter.cc (in_out_specs): Add the new test
6738	inputs to this test harness.
6739	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
6740	Adjust.
6741	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
6742	Likewise.
6743	* 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:
6744	Likewise.
6745	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
6746	Likewise.
6747	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
6748	Likewise.
6749
67502021-03-15  Giuliano Procida <gprocida@google.com>
6751
6752	dwarf-reader: Treat union members as public by default.
6753	* src/abg-dwarf-reader.cc (add_or_update_union_type): Replace
6754	"class" with "union" in comments; give union members public
6755	access by default.
6756	(finish_member_function_reading): Give union members public access
6757	by default.
6758	(maybe_set_member_type_access_specifier): Give union members
6759	public access by default.
6760	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Refresh.
6761	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Refresh.
6762	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
6763	Refresh.
6764	* tests/data/test-annotate/test13-pr18894.so.abi: Refresh.
6765	* tests/data/test-annotate/test14-pr18893.so.abi: Refresh.
6766	* tests/data/test-annotate/test15-pr18892.so.abi: Refresh.
6767	* tests/data/test-annotate/test17-pr19027.so.abi: Refresh.
6768	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
6769	Refresh.
6770	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6771	Refresh.
6772	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
6773	Refresh.
6774	* tests/data/test-annotate/test21-pr19092.so.abi: Refresh.
6775	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
6776	Refresh.
6777	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
6778	Refresh.
6779	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
6780	Refresh.
6781	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Refresh.
6782	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
6783	Refresh.
6784	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi:
6785	Refresh.
6786	* tests/data/test-read-dwarf/test-PR26568-1.o.abi: Refresh.
6787	* tests/data/test-read-dwarf/test-PR26568-2.o.abi: Refresh.
6788	* tests/data/test-read-dwarf/test-libandroid.so.abi: Refresh.
6789	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi:
6790	Refresh.
6791	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Refresh.
6792	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Refresh.
6793	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Refresh.
6794	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Refresh.
6795	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Refresh.
6796	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Refresh.
6797	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Refresh.
6798	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
6799	Refresh.
6800	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
6801	Refresh.
6802	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
6803	Refresh.
6804	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Refresh.
6805	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
6806	Refresh.
6807	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
6808	Refresh.
6809
68102021-03-12  Ben Woodard via Libabigail <libabigail@sourceware.org>
6811
6812	Bug 27512 - Remove broken zip-archive support
6813	* configure.ac: remove --enable-zip-archive option and logic
6814	associated with it.
6815	* include/abg-libzip-utils.h: Remove.
6816	* src/abg-libzip-utils.cc: Likewise.
6817	* include/Makefile.am: remove reference to include/abg-libzip-utils.h
6818	that no longer exists.
6819	* src/Makefile.am: remove reference to src/abg-libzip-utils.cc that no
6820	longer exists.
6821	* relicensing-scripts/file-licenses.orig.txt: remove references to
6822	files that no longer exist.
6823	* relicensing-scripts/files-with-lgplv3.txt: remove references to
6824	files that no longer exist.
6825	* tests/test-write-read-archive.cc: Remove because it tests code
6826	that no longer exists.
6827	* tests/Makefile.am: remove reference to tests that no longer exist.
6828	* include/abg-reader.h: remove conditionally compiled code for zip
6829	archives.
6830	* include/abg-tools-utils.h: remove conditionally compiled code for
6831	zip archives.
6832	* src/abg-corpus.cc: remove conditionally compiled code for zip
6833	archives.
6834	* src/abg-reader.cc: remove conditionally compiled code for zip
6835	archives.
6836	* src/abg-tools-utils.cc: remove conditionally compiled code for zip
6837	archives.
6838	* src/abg-writer.cc: remove conditionally compiled code for zip
6839	archives.
6840	* tools/abidiff.cc: remove conditionally compiled code for zip
6841	archives.
6842	* tools/abilint.cc: remove conditionally compiled code for zip
6843	archives.
6844	* tools/abiar.c: Remove.
6845	* tools/Makefile.am: remove references to abiar a utility that no
6846	longer has a reason for existing.
6847
68482021-03-18  Dodji Seketeli <dodji@redhat.com>
6849
6850	dwarf-reader: Support more DWARF-5 type DIEs
6851	* src/abg-dwarf-reader.cc (is_type_tag): Support
6852	DW_TAG_coarray_type, DW_TAG_atomic_type and DW_TAG_immutable_type.
6853	* tests/data/test-diff-pkg/elfutils-debuginfo-0.183-1.el9.x86_64.rpm:
6854	Add new binary test input.
6855	* tests/data/test-diff-pkg/elfutils-libs-debuginfo-0.183-1.el9.x86_64.rpm: Likewise.
6856	* tests/data/test-diff-pkg/elfutils-libs-0.183-1.el9.x86_64.rpm: Likewise.
6857	* tests/data/test-diff-pkg/elfutils-libs-debuginfo-0.183-1.el9.x86_64-self-check-report-0.txt:
6858	Add new reference test output.
6859	* tests/test-diff-pkg.cc (in_out_specs): Add the test inputs above
6860	to the harness.
6861
68622021-03-10  Giuliano Procida <gprocida@google.com>
6863
6864	DWARF reader: Comment ARM32 ELF address interpretation
6865	* src/abg-dwarf-reader.cc
6866	(read_context::load_symbol_maps_from_symtab_section): Add
6867	descriptive comment to ARM32 address handling; shorten
6868	the assignment using &=.
6869
68702021-01-27  Matthias Maennich <maennich@google.com>
6871
6872	dwarf-reader split: create abg-symtab-reader.{h,cc} and test case
6873	* src/abg-symtab-reader.h: New header file.
6874	* src/abg-symtab-reader.cc: New source file.
6875	* src/Makefile.am: Add new source files.
6876	* tests/Makefile.am: Add new test case runtestsymtabreader.
6877	* tests/test-symtab-reader.cc: New test source file.
6878	Reviewed-by: Giuliano Procida <gprocida@google.com>
6879
68802021-03-09  Giuliano Procida <gprocida@google.com>
6881
6882	DWARF reader: Interpret ARM32 ELF addresses correctly
6883	* src/abg-dwarf-reader.cc
6884	(read_context::load_symbol_maps_from_symtab_section): Clear
6885	bit zero of ARM32 function addresses.
6886	* src/abg-elf-helpers.cc (architecture_is_arm32): Add new
6887	function.
6888	* src/abg-elf-helpers.h (architecture_is_arm32): Likewise.
6889	* tests/data/test-read-dwarf/test-libandroid.so.abi: Update.
6890
68912021-01-27  Matthias Maennich <maennich@google.com>
6892
6893	abg-ir: elf_symbol: add is_suppressed field
6894	* include/abg-ir.h (elf_symbol::elf_symbol): Add is_suppressed
6895	parameter.
6896	(elf_symbol::create): Likewise.
6897	(elf_symbol::is_suppressed): New getter declaration.
6898	(elf_symbol::set_is_suppressed): New setter declaration.
6899	* src/abg-ir.cc (elf_symbol::priv::priv): Add is_suppressed
6900	parameter.
6901	(elf_symbol::priv::is_suppressed_): New field.
6902	(elf_symbol::elf_symbol): Add is_suppressed parameter.
6903	(elf_symbol::create): Likewise.
6904	(elf_symbol::is_suppressed): New getter implementation.
6905	(elf_symbol::set_is_suppressed): New setter implementation.
6906	Reviewed-by: Giuliano Procida <gprocida@google.com>
6907
69082021-01-27  Matthias Maennich <maennich@google.com>
6909
6910	abg-ir: elf_symbol: add is_in_ksymtab field
6911	* include/abg-ir.h (elf_symbol::elf_symbol): Add is_in_ksymtab
6912	parameter.
6913	(elf_symbol::create): Likewise.
6914	(elf_symbol::is_in_ksymtab): New getter declaration.
6915	(elf_symbol::set_is_in_ksymtab): New setter declaration.
6916	* src/abg-ir.cc (elf_symbol::priv::priv): Add is_in_ksymtab
6917	parameter.
6918	(elf_symbol::priv::is_in_ksymtab_): New field.
6919	(elf_symbol::elf_symbol): Add is_in_ksymtab parameter.
6920	(elf_symbol::create): Likewise.
6921	(elf_symbol::is_in_ksymtab): New getter implementation.
6922	(elf_symbol::set_is_in_ksymtab): New setter implementation.
6923	Reviewed-by: Giuliano Procida <gprocida@google.com>
6924
69252021-01-27  Matthias Maennich <maennich@google.com>
6926
6927	abg-cxx-compat: add simplified version of std::optional
6928	* include/abg-cxx-compat.h (abg_compat::optional): Add new class.
6929	* tests/tests-cxx-compat.cc: Add new test cases.
6930	Reviewed-by: Giuliano Procida <gprocida@google.com>
6931
69322021-03-02  Ben Woodard via Libabigail <libabigail@sourceware.org>
6933
6934	Fix declaratons of conditionally defined functions
6935	* include/abg-reader.h (read_corpus_from_file): Guard the
6936	declaration of these overloads with #ifdef WITH_ZIP_ARCHIVE.
6937	* tools/abilint.cc: Guard the use of
6938	abigail::xml_reader::read_corpus_from_file with #ifdef
6939	WITH_ZIP_ARCHIVE.
6940
69412021-03-08  Dodji Seketeli <dodji@redhat.com>
6942
6943	Revert "Fix declaratons of conditionally defined functions"
6944	* include/abg-reader.h:
6945	* tools/abilint.cc:
6946
69472021-03-02  Ben Woodard via Libabigail <libabigail@sourceware.org>
6948
6949	Fix declaratons of conditionally defined functions
6950	* include/abg-reader.h:
6951	* tools/abilint.cc:
6952
69532021-03-08  Dodji Seketeli <dodji@redhat.com>
6954
6955	tests/catch.hpp: Add SPDX header back
6956	* tests/lib/catch.hpp: Add SPDX header back.
6957
69582021-02-25  Dodji Seketeli <dodji@redhat.com>
6959
6960	dwarf-reader: Keep stable order when de-duplicating class definitions
6961	* src/abg-dwarf-reader.cc
6962	(read_context::resolve_declaration_only_classes): Compare the
6963	classes that have the same name across several TU, always in the
6964	same order.
6965	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
6966	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
6967
69682021-02-24  Dodji Seketeli <dodji@redhat.com>
6969
6970	Better sorting of (anonymous) types in ABIXML files
6971	* src/abg-writer.cc (type_ptr_cmp::operator()): Use the internal
6972	pretty representation of types, for comparison.
6973	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
6974	Adjust.
6975	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
6976	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
6977	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
6978	Likewise.
6979	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
6980	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
6981	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
6982	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
6983	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
6984	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
6985	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
6986	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
6987	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
6988	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
6989	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
6990	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
6991	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
6992	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
6993	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
6994	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
6995	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
6996	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
6997	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
6998	Likewise.
6999	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
7000	Likewise.
7001	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
7002	Likewise.
7003	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
7004
70052021-02-23  Dodji Seketeli <dodji@redhat.com>
7006
7007	tests: Update to catch.hpp v2.13.4 and fix #2178
7008	* tests/lib/catch.hpp: Update to v2.13.4 and initialize
7009	sigStackSize to 32768 for now, as suggested by
7010	https://github.com/catchorg/Catch2/issues/2178.
7011
70122021-02-11  Dodji Seketeli <dodji@redhat.com>
7013
7014	Don't consider type name when comparing typedefs
7015	* include/abg-ir.h (maybe_compare_as_member_decls): Declare new
7016	function.  Make it a friend of class decl_base.
7017	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Don't early
7018	canonicalize typedefs because they can be "part" of a type that is
7019	not yet completed, especially considering that class declaration
7020	resolution is part of type building, stricto sensu.
7021	* src/abg-ir.cc (maybe_compare_as_member_decls): Factorize this
7022	out of ...
7023	(equals): ... the overload for decl_base.  Use it in the overload
7024	for typedef_decl.
7025	* tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64-self-check-report-0.txt:
7026	New test reference output.
7027	* tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64.rpm: New
7028	binary input.
7029	* tests/data/test-diff-pkg/nmap-debuginfo-7.70-5.el8_testjcc.x86_64.rpm: Likewise.
7030	* tests/data/Makefile.am: Add these new testing material to source
7031	distribution.
7032	* tests/test-diff-pkg.cc (in_out_specs): Add the new test input to
7033	the harness.
7034	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
7035	Adjust.
7036	* tests/data/test-diff-suppr/test39-opaque-type-report-0.txt:
7037	Adjust.
7038
70392021-02-10  Dodji Seketeli <dodji@redhat.com>
7040
7041	Use generic internal type name to canonicalize anonymous enums
7042	* src/abg-ir.cc (has_generic_anonymous_internal_type_name) :
7043	Define new static function.
7044	(get_generic_anonymous_internal_type_name): Use it here.
7045	(decl_base::get_pretty_representation): For internal purposes,
7046	build an anonymous name that is stable.
7047	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
7048	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Adjust.
7049	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: Adjust.
7050	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
7051	* tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust.
7052	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
7053
70542021-02-08  Giuliano Procida <gprocida@google.com>
7055
7056	abg-dwarf-reader: Fix typo in compare_dies_string_attribute_value
7057	* src/abg-dwarf-reader.cc
7058	(compare_dies_string_attribute_value): Typo fix.
7059
70602021-01-27  Giuliano Procida <gprocida@google.com>
7061
7062	abidiff: do not qualify member names in diff report
7063	* src/abg-reporter-priv.cc (represent_data_member): Do not
7064	qualify member names. (represent): Do not qualify member names.
7065	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Refresh.
7066	* tests/data/test-abicompat/test0-fn-changed-report-2.txt: Refresh.
7067	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Refresh.
7068	* tests/data/test-abicompat/test5-fn-changed-report-1.txt: Refresh.
7069	* tests/data/test-abicompat/test6-var-changed-report-0.txt: Refresh.
7070	* tests/data/test-abicompat/test6-var-changed-report-1.txt: Refresh.
7071	* tests/data/test-abicompat/test7-fn-changed-report-0.txt: Refresh.
7072	* tests/data/test-abicompat/test7-fn-changed-report-1.txt: Refresh.
7073	* tests/data/test-abicompat/test7-fn-changed-report-2.txt: Refresh.
7074	* tests/data/test-abicompat/test8-fn-changed-report-0.txt: Refresh.
7075	* tests/data/test-abicompat/test9-fn-changed-report-0.txt: Refresh.
7076	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt:
7077	Refresh.
7078	* tests/data/test-abidiff-exit/test-fun-param-report.txt: Refresh.
7079	* tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-2.txt:
7080	Refresh.
7081	* tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt:
7082	Refresh.
7083	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: Refresh.
7084	* tests/data/test-abidiff-exit/test-leaf-redundant-report.txt: Refresh.
7085	* tests/data/test-abidiff-exit/test-member-size-report0.txt: Refresh.
7086	* tests/data/test-abidiff-exit/test-member-size-report1.txt: Refresh.
7087	* tests/data/test-abidiff-exit/test-net-change-report0.txt: Refresh.
7088	* tests/data/test-abidiff/test-PR18791-report0.txt: Refresh.
7089	* tests/data/test-abidiff/test-qual-type0-report.txt: Refresh.
7090	* tests/data/test-abidiff/test-struct0-report.txt: Refresh.
7091	* tests/data/test-abidiff/test-struct1-report.txt: Refresh.
7092	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
7093	Refresh.
7094	* tests/data/test-diff-dwarf/test0-report.txt: Refresh.
7095	* tests/data/test-diff-dwarf/test1-report.txt: Refresh.
7096	* tests/data/test-diff-dwarf/test10-report.txt: Refresh.
7097	* tests/data/test-diff-dwarf/test11-report.txt: Refresh.
7098	* tests/data/test-diff-dwarf/test13-report.txt: Refresh.
7099	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Refresh.
7100	* tests/data/test-diff-dwarf/test27-local-base-diff-report.txt:
7101	Refresh.
7102	* tests/data/test-diff-dwarf/test3-report.txt: Refresh.
7103	* tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt:
7104	Refresh.
7105	* tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt:
7106	Refresh.
7107	* tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt:
7108	Refresh.
7109	* tests/data/test-diff-dwarf/test37-union-report-0.txt: Refresh.
7110	* tests/data/test-diff-dwarf/test38-union-report-0.txt: Refresh.
7111	* tests/data/test-diff-dwarf/test39-union-report-0.txt: Refresh.
7112	* tests/data/test-diff-dwarf/test4-report.txt: Refresh.
7113	* tests/data/test-diff-dwarf/test40-report-0.txt: Refresh.
7114	* tests/data/test-diff-dwarf/test44-anon-struct-union-report-0.txt:
7115	Refresh.
7116	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
7117	Refresh.
7118	* tests/data/test-diff-dwarf/test46-rust-report-0.txt: Refresh.
7119	* tests/data/test-diff-dwarf/test5-report.txt: Refresh.
7120	* tests/data/test-diff-dwarf/test8-report.txt: Refresh.
7121	* tests/data/test-diff-filter/libtest45-basic-type-change-report-0.txt:
7122	Refresh.
7123	* tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Refresh.
7124	* tests/data/test-diff-filter/test0-report.txt: Refresh.
7125	* tests/data/test-diff-filter/test01-report.txt: Refresh.
7126	* tests/data/test-diff-filter/test1-report.txt: Refresh.
7127	* tests/data/test-diff-filter/test10-report.txt: Refresh.
7128	* tests/data/test-diff-filter/test11-report.txt: Refresh.
7129	* tests/data/test-diff-filter/test13-report.txt: Refresh.
7130	* tests/data/test-diff-filter/test14-0-report.txt: Refresh.
7131	* tests/data/test-diff-filter/test14-1-report.txt: Refresh.
7132	* tests/data/test-diff-filter/test15-0-report.txt: Refresh.
7133	* tests/data/test-diff-filter/test15-1-report.txt: Refresh.
7134	* tests/data/test-diff-filter/test16-report-2.txt: Refresh.
7135	* tests/data/test-diff-filter/test16-report.txt: Refresh.
7136	* tests/data/test-diff-filter/test17-0-report.txt: Refresh.
7137	* tests/data/test-diff-filter/test17-1-report.txt: Refresh.
7138	* tests/data/test-diff-filter/test18-report.txt: Refresh.
7139	* tests/data/test-diff-filter/test2-report.txt: Refresh.
7140	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Refresh.
7141	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Refresh.
7142	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt:
7143	Refresh.
7144	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt:
7145	Refresh.
7146	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt:
7147	Refresh.
7148	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt:
7149	Refresh.
7150	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt:
7151	Refresh.
7152	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt:
7153	Refresh.
7154	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt:
7155	Refresh.
7156	* tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt:
7157	Refresh.
7158	* tests/data/test-diff-filter/test3-report.txt: Refresh.
7159	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
7160	Refresh.
7161	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
7162	Refresh.
7163	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
7164	Refresh.
7165	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
7166	Refresh.
7167	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
7168	Refresh.
7169	* tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt:
7170	Refresh.
7171	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
7172	Refresh.
7173	* tests/data/test-diff-filter/test36-report-0.txt: Refresh.
7174	* tests/data/test-diff-filter/test37-report-0.txt: Refresh.
7175	* tests/data/test-diff-filter/test39/test39-report-0.txt: Refresh.
7176	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Refresh.
7177	* tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt:
7178	Refresh.
7179	* tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt:
7180	Refresh.
7181	* tests/data/test-diff-filter/test9-report.txt: Refresh.
7182	* tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt:
7183	Refresh.
7184	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Refresh.
7185	* tests/data/test-diff-pkg/dirpkg-1-report-1.txt: Refresh.
7186	* tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Refresh.
7187	* tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Refresh.
7188	* 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:
7189	Refresh.
7190	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
7191	Refresh.
7192	* 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:
7193	Refresh.
7194	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
7195	Refresh.
7196	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
7197	Refresh.
7198	* tests/data/test-diff-pkg/symlink-dir-test1-report0.txt: Refresh.
7199	* tests/data/test-diff-pkg/tarpkg-0-report-0.txt: Refresh.
7200	* tests/data/test-diff-pkg/tarpkg-1-report-0.txt: Refresh.
7201	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
7202	Refresh.
7203	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
7204	Refresh.
7205	* tests/data/test-diff-suppr/libtest48-soname-abixml-report-1.txt:
7206	Refresh.
7207	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Refresh.
7208	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Refresh.
7209	* tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Refresh.
7210	* tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Refresh.
7211	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Refresh.
7212	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Refresh.
7213	* tests/data/test-diff-suppr/test11-add-data-member-report-0.txt:
7214	Refresh.
7215	* tests/data/test-diff-suppr/test12-add-data-member-report-0.txt:
7216	Refresh.
7217	* tests/data/test-diff-suppr/test12-add-data-member-report-2.txt:
7218	Refresh.
7219	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-0.txt:
7220	Refresh.
7221	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt:
7222	Refresh.
7223	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt:
7224	Refresh.
7225	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt:
7226	Refresh.
7227	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-0.txt:
7228	Refresh.
7229	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt:
7230	Refresh.
7231	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-5.txt:
7232	Refresh.
7233	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt:
7234	Refresh.
7235	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt:
7236	Refresh.
7237	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-5.txt:
7238	Refresh.
7239	* tests/data/test-diff-suppr/test17-suppr-added-var-report-0.txt:
7240	Refresh.
7241	* tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt:
7242	Refresh.
7243	* tests/data/test-diff-suppr/test17-suppr-added-var-report-5.txt:
7244	Refresh.
7245	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-0.txt:
7246	Refresh.
7247	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-2.txt:
7248	Refresh.
7249	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-5.txt:
7250	Refresh.
7251	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Refresh.
7252	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Refresh.
7253	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Refresh.
7254	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Refresh.
7255	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Refresh.
7256	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Refresh.
7257	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Refresh.
7258	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Refresh.
7259	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Refresh.
7260	* tests/data/test-diff-suppr/test25-typedef-report-0.txt: Refresh.
7261	* tests/data/test-diff-suppr/test26-loc-suppr-report-0.txt: Refresh.
7262	* tests/data/test-diff-suppr/test26-loc-suppr-report-3.txt: Refresh.
7263	* tests/data/test-diff-suppr/test29-soname-report-3.txt: Refresh.
7264	* tests/data/test-diff-suppr/test29-soname-report-6.txt: Refresh.
7265	* tests/data/test-diff-suppr/test29-soname-report-8.txt: Refresh.
7266	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Refresh.
7267	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Refresh.
7268	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Refresh.
7269	* tests/data/test-diff-suppr/test30-report-0.txt: Refresh.
7270	* tests/data/test-diff-suppr/test31-report-1.txt: Refresh.
7271	* tests/data/test-diff-suppr/test33-report-0.txt: Refresh.
7272	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: Refresh.
7273	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Refresh.
7274	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Refresh.
7275	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Refresh.
7276	* tests/data/test-diff-suppr/test42-negative-suppr-type-report-0.txt:
7277	Refresh.
7278	* tests/data/test-diff-suppr/test42-negative-suppr-type-report-1.txt:
7279	Refresh.
7280	* tests/data/test-diff-suppr/test46-PR25128-report-1.txt: Refresh.
7281	* tests/data/test-diff-suppr/test46-PR25128-report-2.txt: Refresh.
7282	* tests/data/test-diff-suppr/test47-non-reachable-types-report-1.txt:
7283	Refresh.
7284	* tests/data/test-diff-suppr/test47-non-reachable-types-report-2.txt:
7285	Refresh.
7286	* tests/data/test-diff-suppr/test47-non-reachable-types-report-4.txt:
7287	Refresh.
7288	* tests/data/test-diff-suppr/test47-non-reachable-types-report-7.txt:
7289	Refresh.
7290	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Refresh.
7291	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Refresh.
7292	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Refresh.
7293	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Refresh.
7294	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Refresh.
7295	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Refresh.
7296	* tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Refresh.
7297	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Refresh.
7298	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Refresh.
7299	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Refresh.
7300	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Refresh.
7301	* tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt: Refresh.
7302	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Refresh.
7303	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Refresh.
7304	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Refresh.
7305	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Refresh.
7306	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Refresh.
7307	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Refresh.
7308	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Refresh.
7309	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Refresh.
7310	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Refresh.
7311
73122021-02-08  Dodji Seketeli <dodji@redhat.com>
7313
7314	dwarf-reader: Use DW_FORM_line_strp only if it's present
7315	* configure.ac: Define if HAS_DW_FORM_line_strp if the
7316	DW_FORM_line_strp enumerator is present.
7317	* src/abg-dwarf-reader.cc (form_is_DW_FORM_line_strp): Define new
7318	static function.
7319	(compare_dies_string_attribute_value): Use it.
7320
73212021-02-04  Dodji Seketeli <dodji@redhat.com>
7322
7323	Bug 27267 - Better support for opaque enum types
7324	* src/abg-dwarf-reader.cc (get_opaque_version_of_type): Do not
7325	quit early for enum types, because the code that comes a bit later
7326	can handle enums.  Add the newly built enum to its scope for
7327	proper life cycle management.
7328	* tests/data/test-diff-suppr/PR27267/include-dir-v{0,1}/include.h: New
7329	include files for the input test library.
7330	* tests/data/test-diff-suppr/PR27267/libtestpr27267-v{0,1}.so: New
7331	input test library.
7332	* tests/data/test-diff-suppr/PR27267/report-1.txt: New reference
7333	output for the comparison.
7334	* tests/data/test-diff-suppr/PR27267/v{0,1}.c: Source code for the
7335	new input test library.
7336	* tests/data/Makefile.am: Add the new test material above to
7337	source distribution.
7338	* tests/test-diff-suppr.cc (in_out_specs): Add the new test input
7339	above to the test harness.
7340
73412021-02-03  Dodji Seketeli <dodji@redhat.com>
7342
7343	Bug 27331 - Data member offset change not considered local
7344	* src/abg-ir.cc (equals): In the overload of class_or_union, when
7345	a data member changes without having its type change, then
7346	consider the data change as being local.
7347	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
7348	Adjust.
7349	* tests/data/test-diff-filter/test-PR27331-report-0.txt: New
7350	reference output.
7351	* tests/data/test-diff-filter/test-PR27331-v{0,1}.c: New test
7352	source files.
7353	* tests/data/test-diff-filter/test-PR27331-v{0,1}.o: New test
7354	binary inputs.
7355	* tests/data/Makefile.am: Add these new test material to source
7356	distribution.
7357	* tests/test-diff-filter.cc (in_out_specs): Add the tests above to
7358	the harness.
7359
73602021-02-02  Dodji Seketeli <dodji@redhat.com>
7361
7362	Bug 27165 - Better support multi-language binaries
7363	* src/abg-dwarf-reader.cc (get_scope_for_die): Get the language of
7364	the DIE from the compilation unit of the DIE itself.
7365	* tests/data/test-types-stability/PR27165-libzmq.so.5.2.3: New
7366	test input.
7367	* tests/data/test-types-stability/PR27165-libzmq.so.5.2.3.debug:
7368	Debug information for the new test input.
7369	* tests/data/Makefile.am: Add the test inputs above to the source
7370	distribution.
7371	* tests/test-types-stability.cc (elf_paths): Add the new test
7372	inputs to this test harness.
7373
73742020-10-22  Dodji Seketeli <dodji@redhat.com>
7375
7376	Bump ABIXML format version to 2.0
7377	* include/abg-corpus.h (corpus::init_format_version): Declare new
7378	private method.
7379	(corpus::set_environment): Make this non-const.
7380	(corpus::{get,set}_format_{major,minor}_version_number): Declare
7381	new accessors.
7382	* src/abg-corpus.cc (corpus::init_format_version): Define new
7383	method.
7384	(corpus::set_environment): By default, initialize the format
7385	version number of the corpus to the one supported by Libabigail.
7386	(corpus::{get,set}_format_{major,minor}_version_number): Define
7387	new accessors.
7388	* include/abg-ir.h: Include abg-config.h to use the
7389	abigail::config.
7390	(environment::get_config): Declare new accessor.
7391	* src/abg-ir.cc (environment::priv::config_): Add new data member.
7392	(environment::get_config): Define new accessor.
7393	* src/abg-config.cc (config::config): Bump the format
7394	version number to "2.0".
7395	* src/abg-corpus-priv.h
7396	(corpus::priv::format_{major,minor}_version_number_): Add new data members.
7397	* src/abg-reader.cc (handle_version_attribute): Define new static
7398	function.
7399	(read_corpus_from_input, read_corpus_group_from_input): Use it to
7400	read the value of the "version" attribute and set the format
7401	version number of the corpus and corpus group accordingly.
7402	* src/abg-writer.cc (write_context::m_config): Remove the config
7403	object because we can now get it from the environment.
7404	(write_context::get_config): Get the config object from the
7405	environment.
7406	(write_translation_unit): Do not emit the version attribute on the
7407	translation unit element anymore.
7408	(write_version_info): Define static function.
7409	(write_corpus, write_corpus_group): Use it to emit version
7410	attribute on both the corpus and corpus group elements.
7411	* tools/abidiff.cc
7412	(emit_incomptatible_format_version_error_message): Define new
7413	static function.
7414	(main): Ensure that corpora and corpus groups being compared have
7415	the same major version number.
7416	* tests/update-test-output.py: Adjust syntax for python3.
7417	* tests/data/test-annotate/libtest23.so.abi: Adjust.
7418	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
7419	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
7420	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
7421	Likewise.
7422	* tests/data/test-annotate/test0.abi: Likewise.
7423	* tests/data/test-annotate/test1.abi: Likewise.
7424	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
7425	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
7426	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
7427	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
7428	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
7429	Likewise.
7430	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
7431	Likewise.
7432	* tests/data/test-annotate/test2.so.abi: Likewise.
7433	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
7434	Likewise.
7435	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
7436	* tests/data/test-annotate/test3.so.abi: Likewise.
7437	* tests/data/test-annotate/test4.so.abi: Likewise.
7438	* tests/data/test-annotate/test5.o.abi: Likewise.
7439	* tests/data/test-annotate/test6.so.abi: Likewise.
7440	* tests/data/test-annotate/test7.so.abi: Likewise.
7441	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi:
7442	Likewise.
7443	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
7444	Likewise.
7445	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
7446	Likewise.
7447	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
7448	Likewise.
7449	* tests/data/test-diff-suppr/libtest48-soname-abixml-v0.so.abi:
7450	Likewise.
7451	* tests/data/test-diff-suppr/libtest48-soname-abixml-v1.so.abi:
7452	Likewise.
7453	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
7454	Likewise.
7455	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
7456	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi:
7457	Likewise.
7458	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
7459	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
7460	Likewise.
7461	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
7462	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
7463	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
7464	Likewise.
7465	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
7466	* tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise.
7467	* tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise.
7468	* tests/data/test-read-dwarf/test0.abi: Likewise.
7469	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
7470	* tests/data/test-read-dwarf/test1.abi: Likewise.
7471	* tests/data/test-read-dwarf/test1.hash.abi: Likewise.
7472	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
7473	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
7474	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
7475	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
7476	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
7477	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
7478	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
7479	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
7480	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
7481	Likewise.
7482	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
7483	Likewise.
7484	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
7485	* tests/data/test-read-dwarf/test2.so.hash.abi: Likewise.
7486	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
7487	Likewise.
7488	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
7489	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
7490	Likewise.
7491	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
7492	* tests/data/test-read-dwarf/test3.so.hash.abi: Likewise.
7493	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
7494	* tests/data/test-read-dwarf/test4.so.hash.abi: Likewise.
7495	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
7496	* tests/data/test-read-dwarf/test5.o.hash.abi: Likewise.
7497	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
7498	* tests/data/test-read-dwarf/test6.so.hash.abi: Likewise.
7499	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
7500	* tests/data/test-read-dwarf/test7.so.hash.abi: Likewise.
7501	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
7502	Likewise.
7503	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi:
7504	Likewise.
7505	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
7506	* tests/data/test-read-write/test0.xml: Likewise.
7507	* tests/data/test-read-write/test1.xml: Likewise.
7508	* tests/data/test-read-write/test10.xml: Likewise.
7509	* tests/data/test-read-write/test11.xml: Likewise.
7510	* tests/data/test-read-write/test12.xml: Likewise.
7511	* tests/data/test-read-write/test13.xml: Likewise.
7512	* tests/data/test-read-write/test14.xml: Likewise.
7513	* tests/data/test-read-write/test15.xml: Likewise.
7514	* tests/data/test-read-write/test16.xml: Likewise.
7515	* tests/data/test-read-write/test17.xml: Likewise.
7516	* tests/data/test-read-write/test18.xml: Likewise.
7517	* tests/data/test-read-write/test19.xml: Likewise.
7518	* tests/data/test-read-write/test2.xml: Likewise.
7519	* tests/data/test-read-write/test20.xml: Likewise.
7520	* tests/data/test-read-write/test21.xml: Likewise.
7521	* tests/data/test-read-write/test22.xml: Likewise.
7522	* tests/data/test-read-write/test23.xml: Likewise.
7523	* tests/data/test-read-write/test24.xml: Likewise.
7524	* tests/data/test-read-write/test25.xml: Likewise.
7525	* tests/data/test-read-write/test26.xml: Likewise.
7526	* tests/data/test-read-write/test27.xml: Likewise.
7527	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
7528	Likewise.
7529	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
7530	Likewise.
7531	* tests/data/test-read-write/test3.xml: Likewise.
7532	* tests/data/test-read-write/test4.xml: Likewise.
7533	* tests/data/test-read-write/test5.xml: Likewise.
7534	* tests/data/test-read-write/test6.xml: Likewise.
7535	* tests/data/test-read-write/test7.xml: Likewise.
7536	* tests/data/test-read-write/test8.xml: Likewise.
7537	* tests/data/test-read-write/test9.xml: Likewise.
7538
75392020-10-20  Dodji Seketeli <dodji@redhat.com>
7540
7541	Bug 26684 - Support DW_AT_data_bit_offset attribute
7542	* src/abg-dwarf-reader.cc (read_and_convert_DW_at_bit_offset):
7543	Define new static function.
7544	(die_member_offset): Primarily use DW_AT_data_bit_offset if its
7545	present.  Otherwise, look for DW_AT_bit_offset.  Use the new
7546	read_and_convert_DW_at_bit_offset function to properly interpret
7547	DW_AT_bit_offset if its present.  Update comment.
7548	* tests/data/test-diff-filter/test-PR26684-dwarf{4,5}.o: New
7549	binary test inputs.
7550	* tests/data/test-diff-filter/test-PR26684.c: Source code of the
7551	new binary test inputs above.
7552	* tests/data/test-diff-filter/test-PR26684-report-0.txt: New
7553	reference test output.
7554	* tests/data/Makefile.am: Add the new test material above to
7555	source distribution.
7556	* tests/test-diff-filter.cc (in_out_specs): Add the test inputs
7557	above to this test harness.
7558	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
7559	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
7560	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
7561	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
7562	Adjust.
7563	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
7564	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
7565	Adjust.
7566	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
7567	Adjust.
7568	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust.
7569	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
7570	Adjust.
7571	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
7572	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
7573	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
7574	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
7575	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
7576	Adjust.
7577	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
7578	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
7579	Adjust.
7580
75812021-01-27  Dodji Seketeli <dodji@redhat.com>
7582
7583	Bug 27255 - fedabipkgdiff fails on nfs-utils on Fedora 33
7584	* tools/fedabipkgdiff (RPMCollection::get_sibling_debuginfo):
7585	Update comment.
7586	(RPMCollection::get_matching_debuginfo): Define new function.
7587	(generate_comparison_halves): Use
7588	RPMCollection::get_matching_debuginfo instead of
7589	RPMCollection::get_sibling_debuginfo.
7590
75912021-01-26  Dodji Seketeli <dodji@redhat.com>
7592
7593	dwarf-reader: Support fast DW_FORM_line_strp string comparison
7594	* src/abg-dwarf-reader.cc (compare_dies_string_attribute_value):
7595	Support DW_FORM_line_strp.
7596	* tests/data/test-diff-pkg/sshpass-1.07-1.fc34.x86_64-self-check-report-0.txt:
7597	New reference test output.
7598	* tests/data/test-diff-pkg/sshpass-1.07-1.fc34.x86_64.rpm: New
7599	test input.
7600	* tests/data/test-diff-pkg/sshpass-debuginfo-1.07-1.fc34.x86_64.rpm:
7601	Likewise.
7602	* tests/data/Makefile.am: Add the new testing material above to
7603	source distribution.
7604	* tests/test-diff-pkg.cc (in_out_specs): Add the test input above
7605	to this harness.
7606
76072021-01-26  Dodji Seketeli <dodji@redhat.com>
7608
7609	Bug 27232 - fedabipkgdiff fails on gawk from Fedora 33
7610	* tools/abipkgdiff.cc (options::pkg{1,2}): Add new data members to
7611	store the packages to compare and have them available for the
7612	various functions that may need them down the road.
7613	(package::create_abi_file_path): Add new function.
7614	(compare_to_self): Use the new package::create_abi_file_path to
7615	create the path to the ABI file in a directory not owned by the
7616	package.  That should increase our chances of having the rights to
7617	write that one.  Make sure to emit error message when the
7618	comparison against self fails.
7619	({compare_task, self_compare_task}::perform): During the process
7620	of comparison if an internal error happens, report it.  Cleanup
7621	the existing reporting a little bit.
7622	(pkg_extraction_task::perform): Fix comment.
7623	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt:
7624	Adjust.
7625
76262021-01-26  Matthias Maennich <maennich@google.com>
7627
7628	abipkgdiff: Address operator precedence warning
7629	* tools/abipkgdiff.cc (compare_to_self): address clang warning.
7630
76312021-01-26  Dodji Seketeli <dodji@redhat.com>
7632
7633	Bug 27233 - fedabipkgdiff fails on package gnupg2 from Fedora 33
7634	* src/abg-dwarf-reader.cc
7635	(read_context::canonicalize_types_scheduled): Don't forget to
7636	canonicalize types stored in extra_types_to_canonicalize_.
7637	* src/abg-ir.cc (type_base::get_canonical_type_for): Add better
7638	comment.
7639	(hash_as_canonical_type_or_constant): Remove crutch that is
7640	useless now that we canonicalize almost all types in the system.
7641
76422021-01-25  Dodji Seketeli <dodji@redhat.com>
7643
7644	Bug 27236 - Pointer comparison wrongly fails because of typedef change
7645	* src/abg-ir.cc (equals): In the overloads for pointer_type_def,
7646	reference_type_def and array_type_def, compare the pointed-to-type
7647	modulo typedefs.
7648	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Adjust.
7649	* 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:
7650	Adjust.
7651	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
7652	Adjust.
7653
76542021-01-22  Dodji Seketeli <dodji@redhat.com>
7655
7656	Ignore duplicated functions and those not associated with ELF symbols
7657	* include/abg-ir.h (class_or_union::string_mem_fn_sptr_map_type):
7658	Add a typedef for unordered_map<string, method_decl_sptr>.
7659	(class_or_union::find_member_function_sptr): Declare new function.
7660	* src/abg-ir.cc (class_or_union::priv::mem_fns_map_): Change the
7661	type of this to string_mem_fn_sptr_map_type, so that shared
7662	pointers to functions can be stored in the map, instead of bare
7663	pointers to functions.  This is useful to implement
7664	class_or_union::find_member_function_sptr which returns a shared
7665	pointer to function.
7666	(class_or_union::find_member_function_sptr): Define new function.
7667	(class_or_union::find_member_function): Adjust.
7668	(method_decl::set_linkage_name): Use a non-deleting shared pointer
7669	to store the current instance of member function into
7670	class_or_union::priv::mem_fns_map_.
7671	(hash_as_canonical_type_or_constant): As we are seeing more
7672	function types, it appears that some function types are not
7673	canonicalized.  I am not sure why exactly, but let's loosen the
7674	assert here for now, I'll chase the root of this later.
7675	* src/abg-dwarf-reader.cc (finish_member_function_reading):
7676	Improve detection of member function 'static-ness' by handling
7677	cases where a this pointer can be const.  Also support
7678	DW_AT_object_pointer when it's present.  This fixes the occurrence
7679	of spurious change reports about loss of 'static-ness' of member
7680	functions.
7681	(potential_member_fn_should_be_dropped): Define new static
7682	function and ...
7683	(build_ir_node_from_die): ... use it here.  When a function DIE
7684	has the same linkage name as an existing function IR, do not
7685	create a new IR for it.  Rather, re-use the existing one to
7686	complete it with the properties found on the function DIE.  If a
7687	new function doesn't seem to have an associated ELF symbol and is
7688	not meant to be a virtual member function then drop its IR on the
7689	floor as well.
7690	* tests/data/test-annotate/libtest23.so.abi: Adjust.
7691	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
7692	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
7693	* tests/data/test-annotate/test0.abi: Likewise.
7694	* tests/data/test-annotate/test1.abi: Likewise.
7695	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
7696	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
7697	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
7698	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
7699	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
7700	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
7701	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
7702	* tests/data/test-annotate/test6.so.abi: Likewise.
7703	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
7704	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: Likewise.
7705	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Likewise.
7706	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
7707	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise.
7708	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
7709	* tests/data/test-diff-filter/test0-report.txt: Likewise.
7710	* tests/data/test-diff-filter/test01-report.txt: Likewise.
7711	* tests/data/test-diff-filter/test10-report.txt: Likewise.
7712	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
7713	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
7714	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
7715	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
7716	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
7717	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
7718	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise.
7719	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
7720	* tests/data/test-diff-filter/test9-report.txt: Likewise.
7721	* 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.
7722	* 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.
7723	* 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.
7724	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise.
7725	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise.
7726	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
7727	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
7728	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
7729	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise.
7730	* tests/data/test-diff-suppr/test31-report-1.txt: Likewise.
7731	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
7732	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
7733	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
7734	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
7735	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
7736	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
7737	* tests/data/test-read-dwarf/test0.abi: Likewise.
7738	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
7739	* tests/data/test-read-dwarf/test1.abi: Likewise.
7740	* tests/data/test-read-dwarf/test1.hash.abi: Likewise.
7741	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
7742	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
7743	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
7744	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
7745	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
7746	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
7747	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
7748	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
7749	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
7750	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
7751	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
7752	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
7753	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
7754	* tests/data/test-read-dwarf/test6.so.hash.abi: Likewise.
7755	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
7756	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise.
7757	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
7758
77592021-01-20  Dodji Seketeli <dodji@redhat.com>
7760
7761	Bug 27204 -  potential loss of some aliased ELF function symbols
7762	* src/abg-ir.cc (function_decl::get_id): If the elf symbol has
7763	aliases, make the function name be part of the ID so that this ID
7764	differs from the one of the other functions that share a symbol
7765	alias with this one.
7766	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
7767	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
7768	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
7769	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
7770	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
7771	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
7772	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
7773	* tests/data/test-diff-pkg/glibc-2.32-3.fc33.aarch64-self-check-report-0.txt:
7774	New test reference output.
7775	* tests/data/test-diff-pkg/glibc-2.32-3.fc33.aarch64.rpm: New test
7776	input RPM.
7777	* tests/data/test-diff-pkg/glibc-debuginfo-2.32-3.fc33.aarch64.rpm:
7778	Likewise.
7779	* tests/data/Makefile.am: Add the new test material to source
7780	distribution.
7781	* tests/test-diff-pkg.cc (in_out_specs): Add the new test input
7782	RPMs to this test harness.
7783
77842020-12-15  Matthias Maennich <maennich@google.com>
7785
7786	abg-ir: Optimize calls to std::string::find() for a single char.
7787	* src/abg-ir.cc (elf_symbol::get_name_and_version_from_id):
7788	use character literal overload for single character string::find.
7789	(parse_integral_type): Likewise.
7790	Suggested-by: Chris Kennelly <ckennelly@google.com>
7791
77922021-01-15  Dodji Seketeli <dodji@redhat.com>
7793
7794	Bug 26992 - Try harder to resolve declaration-only classes
7795	* src/abg-dwarf-reader.cc
7796	(read_context::compare_before_canonicalisation): Define new member
7797	function.
7798	(read_context::resolve_declaration_only_classes): When there are
7799	more than one definition that can resolve a given declaration, if
7800	all those definitions are equal, then resolve the declaration to
7801	those definitions.
7802	(read_context::resolve_declaration_only_enums): Add a comment to
7803	update similarly update this function (or do away with it
7804	completely) later.
7805	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
7806	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
7807	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
7808	* tests/data/test-diff-pkg/cogl-1.22.8-2.fc33.x86_64.rpm: Add new
7809	test input.
7810	* tests/data/test-diff-pkg/cogl-debuginfo-1.22.8-2.fc33.x86_64.rpm:
7811	Likewise.
7812	* tests/data/test-diff-pkg/cogl-1.22.8-2.fc33.x86_64.self-check-report-0.txt:
7813	Likewise.
7814	* tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
7815	to the test harness.
7816	* tests/data/Makefile.am: Add the new test input files to source
7817	distribution.
7818
78192021-01-11  Dodji Seketeli <dodji@redhat.com>
7820
7821	mainpage: Update web page for 1.8 release
7822	* doc/website/mainpage.txt: Update web page for 1.8 release
7823
78242020-12-14  Matthias Maennich <maennich@google.com>
7825
7826	Update catch2 testing framework: v1.12.2 -> v2.13.3
7827	* tests/lib/catch.hpp: update to v2.13.3
7828	* tests/test-symtab.cc (TEST_CASE("Symtab::SimpleSymtabs")): Use
7829	the corpus variable to avoid unused variable warnings.
7830
78312020-12-14  Matthias Maennich <maennich@google.com>
7832
7833	clang-format: define C++ standard to improve formatting
7834	* .clang-format: Set C++11 standard for formatting.
7835
78362020-12-11  Giuliano Procida <gprocida@google.com>
7837
7838	Refresh ABI cross check test files
7839	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
7840	Refreshed ABI.
7841	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
7842	File now empty.
7843
78442020-12-14  Matthias Maennich <maennich@google.com>
7845
7846	Drop unneccessary includes of abg-cxx-compat.h
7847	* include/abg-comparison.h: Remove include of abg-cxx-compat.h.
7848	* include/abg-diff-utils.h: Likewise.
7849	* include/abg-fwd.h: Likewise.
7850	* include/abg-ini.h: Likewise.
7851	* include/abg-interned-str.h: Likewise.
7852	* include/abg-ir.h: Likewise.
7853	* include/abg-libxml-utils.h: Likewise.
7854	* include/abg-libzip-utils.h: Likewise.
7855	* include/abg-regex.h: Likewise.
7856	* include/abg-reporter.h: Likewise.
7857	* include/abg-sptr-utils.h: Likewise.
7858	* include/abg-suppression.h: Likewise.
7859	* include/abg-tools-utils.h: Likewise.
7860	* include/abg-workers.h: Likewise.
7861	* src/abg-comp-filter.cc: Likewise.
7862	* src/abg-comparison-priv.h: Likewise.
7863	* src/abg-corpus.cc: Likewise.
7864	* src/abg-dwarf-reader.cc: Likewise.
7865	* src/abg-hash.cc: Likewise.
7866	* src/abg-ir.cc: Likewise.
7867	* src/abg-reader.cc: Likewise.
7868	* src/abg-suppression.cc: Likewise.
7869	* src/abg-tools-utils.cc: Likewise.
7870	* src/abg-writer.cc: Likewise.
7871	* tests/test-diff-suppr.cc: Likewise.
7872	* tests/test-read-write.cc: Likewise.
7873	* tools/abicompat.cc: Likewise.
7874	* tools/abidw.cc: Likewise.
7875	* tools/abilint.cc: Likewise.
7876	* tools/abipkgdiff.cc: Likewise.
7877
78782020-12-14  Matthias Maennich <maennich@google.com>
7879
7880	Remove <unordered_set> usages from abg_compat
7881	* include/abg-cxx-compat.h: Drop compatibility for <unordered_set>.
7882	* include/abg-comparison.h: migrate abg_compat use to std.
7883	* include/abg-interned-str.h: Likewise.
7884	* include/abg-suppression.h: Likewise.
7885	* src/abg-comparison-priv.h: Likewise.
7886	* src/abg-dwarf-reader.cc: Likewise.
7887	* tests/test-diff-suppr.cc: Likewise.
7888	* tools/abipkgdiff.cc: Likewise.
7889
78902020-12-14  Matthias Maennich <maennich@google.com>
7891
7892	Remove <unordered_map> usages from abg_compat
7893	* include/abg-cxx-compat.h: Drop compatibility layer for <unordered_map>.
7894	* include/abg-comparison.h: migrate abg_compat use to std.
7895	* include/abg-cxx-compat.h: Likewise.
7896	* include/abg-fwd.h: Likewise.
7897	* include/abg-ir.h: Likewise.
7898	* src/abg-corpus.cc: Likewise.
7899	* src/abg-dwarf-reader.cc: Likewise.
7900	* src/abg-ir.cc: Likewise.
7901	* src/abg-reader.cc: Likewise.
7902	* src/abg-writer.cc: Likewise.
7903
79042020-12-14  Matthias Maennich <maennich@google.com>
7905
7906	Remove <memory> usages from abg_compat
7907	* include/abg-cxx-compat.h: Drop compatibility layer for <memory>.
7908	* include/abg-diff-utils.h: migrate abg_compat use to std.
7909	* include/abg-fwd.h: Likewise.
7910	* include/abg-ini.h: Likewise.
7911	* include/abg-interned-str.h: Likewise.
7912	* include/abg-libxml-utils.h: Likewise.
7913	* include/abg-libzip-utils.h: Likewise.
7914	* include/abg-regex.h: Likewise.
7915	* include/abg-reporter.h: Likewise.
7916	* include/abg-sptr-utils.h: Likewise.
7917	* include/abg-tools-utils.h: Likewise.
7918	* include/abg-workers.h: Likewise.
7919	* src/abg-comp-filter.cc: Likewise.
7920	* src/abg-comparison-priv.h: Likewise.
7921	* src/abg-dwarf-reader.cc: Likewise.
7922	* src/abg-ir.cc: Likewise.
7923	* src/abg-reader.cc: Likewise.
7924	* src/abg-suppression.cc: Likewise.
7925	* src/abg-tools-utils.cc: Likewise.
7926	* src/abg-writer.cc: Likewise.
7927	* tests/test-diff-filter.cc: Likewise.
7928	* tests/test-diff-pkg.cc: Likewise.
7929	* tests/test-diff-suppr.cc: Likewise.
7930	* tests/test-read-dwarf.cc: Likewise.
7931	* tests/test-read-write.cc: Likewise.
7932	* tests/test-types-stability.cc: Likewise.
7933	* tests/test-write-read-archive.cc: Likewise.
7934	* tools/abicompat.cc: Likewise.
7935	* tools/abidiff.cc: Likewise.
7936	* tools/abidw.cc: Likewise.
7937	* tools/abilint.cc: Likewise.
7938	* tools/abipkgdiff.cc: Likewise.
7939
79402020-12-14  Matthias Maennich <maennich@google.com>
7941
7942	Remove <functional> usages from abg_compat
7943	* include/abg-cxx-compat.h: Drop compatibility layer for <functional>.
7944	* include/abg-interned-str.h: migrate abg_compat use to std.
7945	* include/abg-ir.h: Likewise.
7946	* src/abg-hash.cc: Likewise.
7947	* src/abg-ir.cc: Likewise.
7948
79492020-12-14  Matthias Maennich <maennich@google.com>
7950
7951	Drop C++03 compatibility layer
7952	* include/abg-cxx-compat.h: remove compatibility with pre C++11.
7953	* include/abg-ir.h: Remove mention of std::tr1 from comments.
7954	* include/abg-sptr-utils.h: Likewise.
7955
79562020-12-04  Giuliano Procida <gprocida@google.com>
7957
7958	Add qualifier / typedef / array / pointer test
7959	* tests/data/Makefile.am: Add new test files
7960	* tests/data/test-abidiff-exit/qualifier-typedef-array-v0.c:
7961	New test file.
7962	* tests/data/test-abidiff-exit/qualifier-typedef-array-v0.o:
7963	New test file.
7964	* tests/data/test-abidiff-exit/qualifier-typedef-array-v1.c:
7965	New test file.
7966	* tests/data/test-abidiff-exit/qualifier-typedef-array-v1.o:
7967	New test file.
7968	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-0.txt:
7969	Plain diff report.
7970	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt:
7971	Harmless diff report.
7972	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-2.txt:
7973	Leaf changes report.
7974	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-3.txt:
7975	Harmless leaf changes report.
7976	* tests/test-abidiff-exit.cc: Run new test.
7977
79782020-12-03  Giuliano Procida <gprocida@google.com>
7979
7980	ir: Arrays are indirect types for type structure similarity purposes
7981	* src/abg-ir.cc (types_have_similar_structure): When examining
7982	array types, always treat element types as being underlying types
7983	of an indirect type.
7984	* tests/data/Makefile.am: Add new test case files.
7985	* tests/data/test-abidiff-exit/test-non-leaf-array-report.txt:
7986	New test case showing correct --leaf-changes-only reporting.
7987	* tests/data/test-abidiff-exit/test-non-leaf-array-v0.c:
7988	Likewise.
7989	* tests/data/test-abidiff-exit/test-non-leaf-array-v0.o:
7990	Likewise.
7991	* tests/data/test-abidiff-exit/test-non-leaf-array-v1.c:
7992	Likewise.
7993	* tests/data/test-abidiff-exit/test-non-leaf-array-v1.o:
7994	Likewise.
7995	* tests/test-abidiff-exit.cc: Run new test case.
7996
79972020-12-04  Dodji Seketeli <dodji@redhat.com>
7998
7999	ir: Add better comments to types_have_similar_structure
8000	* src/abg-ir.cc (types_have_similar_structure): Arrays are also
8001	indirect types, just like pointers and references, for the purpose
8002	of the concept of "type similarity".  Add that to the introductory
8003	comment of the function.  Add some more misc comments throughout
8004	the code base.
8005
80062020-12-03  Giuliano Procida <gprocida@google.com>
8007
8008	abidiff: support --dump-diff-tree with --leaf-changes-only
8009	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
8010	corpus_diff override, conclude by calling
8011	maybe_dump_diff_tree.
8012
80132020-12-03  Dodji Seketeli <dodji@redhat.com>
8014
8015	Use C++11 for the code base
8016	* CONTRIBUTING: Enact use of c++11. Also, we favor those who
8017	read/debug/maintain the code as opposed to those who write it ;-)
8018	* configure.ac: Switch to c++11 unconditionally.
8019	* src/Makefile.am: Adjust.
8020	* tests/Makefile.am: Adjust.
8021
80222020-12-03  Dodji Seketeli <dodji@redhat.com>
8023
8024	CONTRIBUTING: Update instructions about regression tests
8025	* CONTRIBUTING: Update instructions about how to launch regression
8026	tests.
8027
80282020-12-02  Dodji Seketeli <dodji@redhat.com>
8029
8030	Teach Automake that COPYING* files are gone from sources
8031	* Makefile.am: Teach Automake that COPYING* files are gone and
8032	that LICENSE.txt and license-change-2020.txt were added.
8033
80342020-06-09  Dodji Seketeli <dodji@redhat.com>
8035
8036	Add a license-change-2020.txt file
8037	* license-change-2020.txt: New file.
8038
80392020-06-09  Dodji Seketeli <dodji@redhat.com>
8040
8041	Delete COPYING* files
8042	* COPYING: Delete.
8043	* COPYING-GPLV3: Likewise.
8044	* COPYING-LGPLV2: Likewise.
8045	* COPYING-LGPLV3: Likewise.
8046
80472020-06-09  Dodji Seketeli <dodji@redhat.com>
8048
8049	Add the LICENSE.txt file
8050	* LICENSE.txt: New file coming from
8051	http://llvm.org/foundation/relicensing/LICENSE.txt.
8052
80532020-05-29  Dodji Seketeli <dodji@redhat.com>
8054
8055	Re-license the project to Apache v2 With LLVM Exception
8056	* abigail.m4: Change the SPDX identifier from "GPL-3.0-or-later
8057	WITH GCC-exception-3.1" to "Apache-2.0 WITH LLVM-exception"
8058	* include/abg-cxx-compat.h: Change the SPDX identifier from
8059	"LGPL-2.0-or-later" to "Apache-2.0 WITH LLVM-exception".
8060	* .clang-format: Change the SPDX identifier from
8061	"LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception".
8062	* Makefile.am: Likewise.
8063	* bash-completion/Makefile.am: Likewise.
8064	* bash-completion/abicompat: Likewise.
8065	* bash-completion/abidiff: Likewise.
8066	* bash-completion/abidw: Likewise.
8067	* bash-completion/abilint: Likewise.
8068	* bash-completion/abinilint: Likewise.
8069	* bash-completion/abipkgdiff: Likewise.
8070	* bash-completion/abisym: Likewise.
8071	* bash-completion/fedabipkgdiff: Likewise.
8072	* configure.ac: Likewise.
8073	* default.abignore: Likewise.
8074	* doc/Makefile.am: Likewise.
8075	* doc/api/libabigail.doxy: Likewise.
8076	* doc/manuals/Makefile.am: Likewise.
8077	* doc/website/libabigail-website.doxy: Likewise.
8078	* include/Makefile.am: Likewise.
8079	* include/abg-comp-filter.h: Likewise.
8080	* include/abg-comparison.h: Likewise.
8081	* include/abg-config.h: Likewise.
8082	* include/abg-corpus.h: Likewise.
8083	* include/abg-diff-utils.h: Likewise.
8084	* include/abg-dwarf-reader.h: Likewise.
8085	* include/abg-fwd.h: Likewise.
8086	* include/abg-hash.h: Likewise.
8087	* include/abg-ini.h: Likewise.
8088	* include/abg-interned-str.h: Likewise.
8089	* include/abg-ir.h: Likewise.
8090	* include/abg-libxml-utils.h: Likewise.
8091	* include/abg-libzip-utils.h: Likewise.
8092	* include/abg-reader.h: Likewise.
8093	* include/abg-regex.h: Likewise.
8094	* include/abg-reporter.h: Likewise.
8095	* include/abg-sptr-utils.h: Likewise.
8096	* include/abg-suppression.h: Likewise.
8097	* include/abg-tools-utils.h: Likewise.
8098	* include/abg-traverse.h: Likewise.
8099	* include/abg-version.h.in: Likewise.
8100	* include/abg-viz-common.h: Likewise.
8101	* include/abg-viz-dot.h: Likewise.
8102	* include/abg-viz-svg.h: Likewise.
8103	* include/abg-workers.h: Likewise.
8104	* include/abg-writer.h: Likewise.
8105	* scripts/dot_to_png.sh: Likewise.
8106	* scripts/dot_to_svg.sh: Likewise.
8107	* scripts/make-verbose.sh: Likewise.
8108	* scripts/svg_to_plain_svg.sh: Likewise.
8109	* scripts/svg_to_png_and_pdf.sh: Likewise.
8110	* src/Makefile.am: Likewise.
8111	* src/abg-comp-filter.cc: Likewise.
8112	* src/abg-comparison-priv.h: Likewise.
8113	* src/abg-comparison.cc: Likewise.
8114	* src/abg-config.cc: Likewise.
8115	* src/abg-corpus-priv.h: Likewise.
8116	* src/abg-corpus.cc: Likewise.
8117	* src/abg-default-reporter.cc: Likewise.
8118	* src/abg-diff-utils.cc: Likewise.
8119	* src/abg-dwarf-reader.cc: Likewise.
8120	* src/abg-elf-helpers.cc: Likewise.
8121	* src/abg-elf-helpers.h: Likewise.
8122	* src/abg-hash.cc: Likewise.
8123	* src/abg-ini.cc: Likewise.
8124	* src/abg-internal.h: Likewise.
8125	* src/abg-ir-priv.h: Likewise.
8126	* src/abg-ir.cc: Likewise.
8127	* src/abg-leaf-reporter.cc: Likewise.
8128	* src/abg-libxml-utils.cc: Likewise.
8129	* src/abg-libzip-utils.cc: Likewise.
8130	* src/abg-reader.cc: Likewise.
8131	* src/abg-regex.cc: Likewise.
8132	* src/abg-reporter-priv.cc: Likewise.
8133	* src/abg-reporter-priv.h: Likewise.
8134	* src/abg-suppression-priv.h: Likewise.
8135	* src/abg-suppression.cc: Likewise.
8136	* src/abg-tools-utils.cc: Likewise.
8137	* src/abg-traverse.cc: Likewise.
8138	* src/abg-viz-common.cc: Likewise.
8139	* src/abg-viz-dot.cc: Likewise.
8140	* src/abg-viz-svg.cc: Likewise.
8141	* src/abg-workers.cc: Likewise.
8142	* src/abg-writer.cc: Likewise.
8143	* tests/Makefile.am: Likewise.
8144	* tests/data/Makefile.am: Likewise.
8145	* tests/lib/catch.cc: Likewise.
8146	* tests/mockfedabipkgdiff.in: Likewise.
8147	* tests/print-diff-tree.cc: Likewise.
8148	* tests/runtestcanonicalizetypes.sh.in: Likewise.
8149	* tests/runtestdefaultsupprs.py.in: Likewise.
8150	* tests/runtestdefaultsupprspy3.sh.in: Likewise.
8151	* tests/runtestfedabipkgdiff.py.in: Likewise.
8152	* tests/runtestfedabipkgdiffpy3.sh.in: Likewise.
8153	* tests/test-abicompat.cc: Likewise.
8154	* tests/test-abidiff-exit.cc: Likewise.
8155	* tests/test-abidiff.cc: Likewise.
8156	* tests/test-alt-dwarf-file.cc: Likewise.
8157	* tests/test-annotate.cc: Likewise.
8158	* tests/test-core-diff.cc: Likewise.
8159	* tests/test-cxx-compat.cc: Likewise.
8160	* tests/test-diff-dwarf-abixml.cc: Likewise.
8161	* tests/test-diff-dwarf.cc: Likewise.
8162	* tests/test-diff-filter.cc: Likewise.
8163	* tests/test-diff-pkg.cc: Likewise.
8164	* tests/test-diff-suppr.cc: Likewise.
8165	* tests/test-diff2.cc: Likewise.
8166	* tests/test-dot.cc: Change the SPDX identifier from
8167	"GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH
8168	LLVM-exception"
8169	* tests/test-elf-helpers.cc: Change the SPDX identifier from
8170	"LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception"
8171	* tests/test-ini.cc: Likewise.
8172	* tests/test-ir-walker.cc: Likewise.
8173	* tests/test-kmi-whitelist.cc: Likewise.
8174	* tests/test-lookup-syms.cc: Likewise.
8175	* tests/test-read-dwarf.cc: Likewise.
8176	* tests/test-read-write.cc: Likewise.
8177	* tests/test-svg.cc: Change the SPDX identifier from
8178	"GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH
8179	LLVM-exception".
8180	* tests/test-symtab.cc: Change the SPDX identifier from
8181	"LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception"
8182	* tests/test-tools-utils.cc: Likewise.
8183	* tests/test-types-stability.cc: Likewise.
8184	* tests/test-utils.cc: Likewise.
8185	* tests/test-utils.h: Likewise.
8186	* tests/test-write-read-archive.cc: Likewise.
8187	* tests/update-test-output.py: Likewise.
8188	* tools/Makefile.am: Likewise.
8189	* tools/abiar.cc: Likewise.
8190	* tools/abicompat.cc: Likewise.
8191	* tools/abidiff.cc: Likewise.
8192	* tools/abidw.cc: Likewise.
8193	* tools/abilint.cc: Likewise.
8194	* tools/abipkgdiff.cc: Likewise.
8195	* tools/abisym.cc: Likewise.
8196	* tools/binilint.cc: Likewise.
8197	* tools/fedabipkgdiff: Likewise.
8198	* tools/kmidiff.cc: Likewise.
8199	* update-copyright.sh: Likewise.
8200
82012020-05-29  Dodji Seketeli <dodji@redhat.com>
8202
8203	Add helper files to perform the re-licensing
8204	* relicensing-scripts/file-licenses.orig.txt: New file that
8205	contains the raw set of files with SPDX identifiers denoting
8206	LGPLv3+ files.  It's the result of a simple command based on
8207	"find" and "grep".
8208	* relicensing-scripts/files-with-lgplv3.txt: New file
8209	containing the same data as the file above, but massaged to be
8210	easily useable by the script below.
8211	* relicensing-scripts/do-relicensing.sh: This is a simple command
8212	which performs the re-licensing on the files listed in the file
8213	above.
8214
82152020-05-29  Dodji Seketeli <dodji@redhat.com>
8216
8217	Add replace-spdx-license.sh script
8218	* relicensing-scripts/replace-spdx-license.sh: New script.
8219
82202020-05-27  Dodji Seketeli <dodji@redhat.com>
8221
8222	Add has-spdx-header.sh script
8223	* relicensing-scripts/has-spdx-header.sh: New script.
8224
82252020-05-29  Dodji Seketeli <dodji@redhat.com>
8226
8227	Add missing SPDX headers to source files not specifying any license
8228	* Makefile.am: Add a LGPL-3.0-or-later SPDX header prefixed
8229	with '##' so that that the header doesn't get emitted in the
8230	resulting Makefile.in file.  Note that the license of Makefile.in
8231	files is "FSF All Permissible License", which virtually compatible
8232	with anything.
8233	* bash-completion/Makefile.am: Likewise.
8234	* doc/Makefile.am: Likewise
8235	* doc/manuals/Makefile.am: Likewise
8236	* include/Makefile.am: Likewise
8237	* src/Makefile.am: Likewise
8238	* tests/Makefile.am: Likewise
8239	* tests/data/Makefile.am: Likewise
8240	* tools/Makefile.am: Likewise
8241	* .clang-format: Add a LGPL-3.0-or-later SPDX header.
8242	* bash-completion/abicompat: Likewise.
8243	* bash-completion/abidiff: Likewise.
8244	* bash-completion/abidw: Likewise.
8245	* bash-completion/abilint: Likewise.
8246	* bash-completion/abinilint: Likewise.
8247	* bash-completion/abipkgdiff: Likewise.
8248	* bash-completion/abisym: Likewise.
8249	* bash-completion/fedabipkgdiff: Likewise.
8250	* configure.ac: Likewise.
8251	* default.abignore: Likewise.
8252	* doc/api/libabigail.doxy: Likewise.
8253	* doc/website/libabigail-website.doxy: Likewise.
8254	* include/abg-version.h.in: Likewise.
8255	* scripts/dot_to_png.sh: Likewise.
8256	* scripts/dot_to_svg.sh: Likewise.
8257	* scripts/make-verbose.sh: Likewise.
8258	* scripts/svg_to_plain_svg.sh: Likewise.
8259	* scripts/svg_to_png_and_pdf.sh: Likewise.
8260	* tests/runtestcanonicalizetypes.sh.in: Likewise.
8261	* tests/runtestdefaultsupprs.py.in: Likewise.
8262	* tests/runtestdefaultsupprspy3.sh.in: Likewise.
8263	* tests/runtestfedabipkgdiffpy3.sh.in: Likewise.
8264	* tests/update-test-output.py: Likewise.
8265	* update-copyright.sh: Likewise.
8266
82672020-03-07  Matthias Maennich <maennich@google.com>
8268
8269	Replace individual license references with SPDX Identifiers
8270	* abigail.m4: Replace the license header with the SPDX identifier
8271	GPL-3.0-or-later WITH GCC-exception-3.1
8272	* autoconf-archive/ax_check_python_modules.m4: Correctly set the
8273	SPDX identifier to FSFAP.
8274	* autoconf-archive/ax_compare_version.m4: Replace the license
8275	header with the SPDX identifier FSFAP.
8276	* autoconf-archive/ax_prog_python_version.m4: Likewise.
8277	header with the SPDX identifier FSFAP.
8278	* autoconf-archive/ax_valgrind_check.m4: Likewise.
8279	* gen-changelog.py: Replace the license header with the SPDX
8280	identifier LGPL-2.0-or-later.
8281	* include/abg-comp-filter.h: Replace the license header with the
8282	SPDX identifier LGPL-3.0-or-later.
8283	* include/abg-comparison.h: Likewise.
8284	* include/abg-config.h: Likewise.
8285	* include/abg-corpus.h: Likewise.
8286	* include/abg-cxx-compat.h: Replace the license header with the
8287	SPDX identifier LGPL-2.0-or-later.
8288	* include/abg-diff-utils.h: Replace the license header with the
8289	SPDX identifier LGPL-3.0-or-later
8290	* include/abg-dwarf-reader.h: Likewise.
8291	* include/abg-fwd.h: Likewise.
8292	* include/abg-hash.h: Likewise.
8293	* include/abg-ini.h: Likewise.
8294	* include/abg-interned-str.h: Likewise.
8295	* include/abg-ir.h: Likewise.
8296	* include/abg-libxml-utils.h: Likewise.
8297	* include/abg-libzip-utils.h: Likewise.
8298	* include/abg-reader.h: Likewise.
8299	* include/abg-regex.h: Likewise.
8300	* include/abg-reporter.h: Likewise.
8301	* include/abg-sptr-utils.h: Likewise.
8302	* include/abg-suppression.h: Likewise.
8303	* include/abg-tools-utils.h: Likewise.
8304	* include/abg-traverse.h: Likewise.
8305	* include/abg-viz-common.h: Likewise.
8306	* include/abg-viz-dot.h: Likewise.
8307	* include/abg-viz-svg.h: Likewise.
8308	* include/abg-workers.h: Likewise.
8309	* include/abg-writer.h: Likewise.
8310	* install-sh: Replace the license header with the SPDX identifier MIT.
8311	* ltmain.sh: Replace the license header with the SPDX identifier
8312	GPL-2.0-or-later.  Note that this file has the libtool special
8313	exception which allows us to redistribute it under the general
8314	license of the project.
8315	* src/abg-comp-filter.cc: Replace the license header with the SPDX
8316	* src/abg-comparison-priv.h: Likewise.
8317	* src/abg-comparison.cc: Likewise.
8318	* src/abg-config.cc: Likewise.
8319	* src/abg-corpus-priv.h: Likewise.
8320	* src/abg-corpus.cc: Likewise.
8321	* src/abg-default-reporter.cc: Likewise.
8322	* src/abg-diff-utils.cc: Likewise.
8323	* src/abg-dwarf-reader.cc: Likewise.
8324	* src/abg-elf-helpers.cc: Likewise.
8325	* src/abg-elf-helpers.h: Likewise.
8326	* src/abg-regex.cc: Likewise.
8327	* src/abg-hash.cc: Likewise.
8328	* src/abg-ini.cc: Likewise.
8329	* src/abg-internal.h: Likewise.
8330	* src/abg-ir-priv.h: Likewise.
8331	* src/abg-ir.cc: Likewise.
8332	* src/abg-leaf-reporter.cc: Likewise.
8333	* src/abg-libxml-utils.cc: Likewise.
8334	* src/abg-libzip-utils.cc: Likewise.
8335	* src/abg-reader.cc: Likewise.
8336	* src/abg-reporter-priv.cc: Likewise.
8337	* src/abg-reporter-priv.h: Likewise.
8338	* src/abg-sptr-utils.cc: Likewise.
8339	* src/abg-suppression-priv.h: Likewise.
8340	* src/abg-suppression.cc: Likewise.
8341	* src/abg-tools-utils.cc: Likewise.
8342	* src/abg-traverse.cc: Likewise.
8343	* src/abg-viz-common.cc: Likewise.
8344	* src/abg-viz-dot.cc: Likewise.
8345	* src/abg-viz-svg.cc: Likewise.
8346	* src/abg-workers.cc: Likewise.
8347	* src/abg-writer.cc: Likewise.
8348	* tests/lib/catch.cc: Likewise.
8349	* tests/lib/catch.hpp: Add an SPDX identifier BSL-1.0.
8350	* tests/mockfedabipkgdiff.in: Replace the license header with the
8351	SPDX identifier GPL-3.0-or-later.
8352	* tests/print-diff-tree.cc: Likewise.
8353	* tests/runtestfedabipkgdiff.py.in: Replaace the license header
8354	with the SPDW identifier GPL-3.0-or-later.
8355	* tests/test-abicompat.cc: Replace the license header with the
8356	SPDX identifier LGPL-3.0-or-later.
8357	* tests/test-abidiff-exit.cc: Likewise.
8358	* tests/test-abidiff.cc: Likewise.
8359	* tests/test-alt-dwarf-file.cc: Likewise.
8360	* tests/test-annotate.cc: Likewise.
8361	* tests/test-cxx-compat.cc: Likewise.
8362	* tests/test-core-diff.cc: Likewise.
8363	* tests/test-diff-dwarf-abixml.cc: Likewise.
8364	* tests/test-diff-dwarf.cc: Likewise.
8365	* tests/test-diff-filter.cc: Likewise.
8366	* tests/test-diff-pkg.cc: Likewise.
8367	* tests/test-diff-suppr.cc: Likewise.
8368	* tests/test-diff2.cc: Likewise.
8369	* tests/test-dot.cc: Replace the license header with the
8370	SPDX identifier GPL-3.0-with-GCC-exception.
8371	* tests/test-elf-helpers.cc: Replace the license header with the
8372	SPDX identifier LGPL-3.0-or-later.
8373	* tests/test-ini.cc: Likewise.
8374	* tests/test-ir-walker.cc: Likewise.
8375	* tests/test-kmi-whitelist.cc: Likewise.
8376	* tests/test-lookup-syms.cc: Likewise.
8377	* tests/test-read-dwarf.cc: Likewise.
8378	* tests/test-read-write.cc: Likewise.
8379	* tests/test-svg.cc: Replace the license header with the SPDX
8380	identifier GPL-3.0-with-GCC-exception.
8381	* tests/test-symtab.cc: Replace the license header with the SPDX
8382	identifier LGPL-3.0-or-later.
8383	* tests/test-tools-utils.cc: Likewise.
8384	* tests/test-types-stability.cc: Likewise.
8385	* tests/test-utils.cc: Likewise.
8386	* tests/test-utils.h: Likewise.
8387	* tests/test-write-read-archive.cc: Likewise.
8388	* tools/abiar.cc: Likewise.
8389	* tools/abicompat.cc: Likewise.
8390	* tools/abidiff.cc: Likewise.
8391	* tools/abidw.cc: Likewise.
8392	* tools/abilint.cc: Likewise.
8393	* tools/abipkgdiff.cc: Likewise.
8394	* tools/abisym.cc: Likewise.
8395	* tools/binilint.cc: Likewise.
8396	* tools/fedabipkgdiff: Replace the license header with the
8397	SPDX identifier GPL-3.0-or-later.
8398	* tools/kmidiff.cc: Likewise.
8399
84002020-12-01  Dodji Seketeli <dodji@redhat.com>
8401
8402	Bump version number to 2.0
8403	* configure.ac: Bump number version to 2.0
8404
84052020-12-01  Dodji Seketeli <dodji@redhat.com>
8406
8407	Update NEWS file for 1.8
8408	* NEWS: Update for 1.8
8409
84102020-12-01  Dodji Seketeli <dodji@redhat.com>
8411
8412	Update the Changelog for 1.8
8413	* Changelog: Update automatically with "make update-changelog'
8414
84152020-12-01  Dodji Seketeli <dodji@redhat.com>
8416
8417	Add check-self-compare to release regression testing
8418	* Makefile.am: Make 'make tarball-and-all' run the
8419	'check-self-compare' target as part of the release process.
8420
84212020-12-01  Dodji Seketeli <dodji@redhat.com>
8422
8423	configure: add --enable-rpm415 option
8424	* configure: Introduce the --{en, dis}able-rpm415 option.
8425
84262020-11-30  Dodji Seketeli <dodji@redhat.com>
8427
8428	dwarf-reader: Bug 26908 - don't crash on empty DW_TAG_partial_unit
8429	* src/abg-dwarf-reader.cc (die_has_children): Define new static
8430	function.
8431	(read_context::build_die_parent_relations_under): Do not try to
8432	instantiate an imported_unit_point type for an imported unit with
8433	no children node.
8434	(imported_unit_point::imported_unit_point): Assert that the
8435	imported die has a sub-tree.
8436	(imported_unit_point::imported_unit_point): Remove useless spaces.
8437
84382020-11-27  Dodji Seketeli <dodji@redhat.com>
8439
8440	reader: Fix off-by-one error in assert
8441	* src/abg-reader.cc (build_subrange_type): Fix off-by-one error.
8442
84432020-11-27  Dodji Seketeli <dodji@redhat.com>
8444
8445	writer: fix off-by-one error in assertion
8446	* src/abg-writer.cc (write_array_subrange_type): Fix off-by-one
8447	error in assertion.
8448	* src/abg-dwarf-reader.cc (build_subrange_type): Assert the length
8449	of the array complies with its bounds.
8450
84512020-11-27  Dodji Seketeli <dodji@redhat.com>
8452
8453	abipkgdiff: make --self-check to fail on any change against own ABIXML
8454	* tools/abipkgdiff.cc (compare_to_self): Report *any* ABI change.
8455	Not just the "net" changes.
8456
84572020-11-26  Dodji Seketeli <dodji@redhat.com>
8458
8459	abidw: make --abidiff report any change against own ABIXML
8460	* tools/abidw.cc (load_corpus_and_write_abixml): Emit an error
8461	when comparing the binary to its ABIXML representation yields any
8462	change.
8463
84642020-11-27  Dodji Seketeli <dodji@redhat.com>
8465
8466	dwarf-reader: Avoid having several functions with the same symbol
8467	* src/abg-dwarf-reader.cc
8468	(read_context::symbol_already_belongs_to_a_function): Define new
8469	member function.
8470	(read_context::fixup_functions_with_no_symbols): Use the new
8471	symbol_already_belongs_to_a_function function to avoid setting a
8472	symbol that already belongs to a function.
8473	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
8474	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
8475	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
8476	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
8477	Likewise.
8478
84792020-11-27  Dodji Seketeli <dodji@redhat.com>
8480
8481	reader: Don't lose anonymous-ness of decl-only classes
8482	* src/abg-reader.cc (build_class_decl): Set the is-anonymous flag
8483	when reading a decl-only class.
8484
84852020-11-27  Dodji Seketeli <dodji@redhat.com>
8486
8487	ir: Introduce internal pretty representation for anonymous classes
8488	* include/abg-fwd.h (get_class_or_union_flat_representation):
8489	Introduce an "internal" parameter.
8490	* src/abg-ir.cc (get_class_or_union_flat_representation):
8491	Introduce an "internal" parameter.  In the flat representation of
8492	a class for internal purposes, always use the prefix "class" even
8493	if this is a struct.
8494	(get_type_name): To build an internal name for a
8495	reference or pointer to an anonymous type, consider the namespace
8496	name of said type.
8497	(equals): In the overload for decl_base, take the namespace name
8498	of anonymous decls into account when comparing them.
8499	({var_decl, union_decl}::get_pretty_representation): Adjust calls
8500	to get_class_or_union_flat_representation to pass a proper
8501	"internal" argument.
8502	* src/abg-default-reporter.cc (default_reporter::report): Adjust
8503	the call to get_class_or_union_flat_representation to pass an
8504	"internal" argument set to 'false'.
8505	* tests/data/test-annotate/libtest23.so.abi: Adjust.
8506	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
8507	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
8508	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
8509	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
8510	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
8511	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
8512	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
8513
85142020-11-26  Dodji Seketeli <dodji@redhat.com>
8515
8516	writer: Emit definitions of declarations when they are present
8517	* src/abg-writer.cc (write_class_decl, write_union_decl): Get the
8518	definition of the declaration if it exists and emit that.
8519	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
8520	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
8521	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
8522	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
8523	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
8524	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
8525
85262020-11-26  Dodji Seketeli <dodji@redhat.com>
8527
8528	Bug 26780 - Fix array subrange bounds (de)serialization
8529	* src/abg-reader.cc (build_subrange_type): Read lower-bound
8530	attribute if present.  Then try to read upper-bound attribute as
8531	well.  If this is not an infinite subrange assert that the length
8532	must be equal to the difference between the bounds.
8533	* src/abg-writer.cc (write_array_subrange_type): Write the
8534	lower-bound if it's present and not zero.  In that case, write the
8535	upper-bound as well.
8536	* tests/data/test-diff-pkg/hdf5-1.10.6-2.fc33.x86_64.rpm: Add new
8537	binary test input.
8538	* tests/data/test-diff-pkg/hdf5-debuginfo-1.10.6-2.fc33.x86_64.rpm:
8539	Likewise.
8540	* tests/data/test-diff-pkg/hdf5-1.10.6-2.fc33.x86_64.self-check-report-0.txt:
8541	Add new reference output.
8542	* tests/data/Makefile.am: Add the new test material above to
8543	source distribution.
8544	* tests/test-diff-pkg.cc (in_out_specs): Add the binary test input
8545	to the set of --self-check tests.
8546
85472020-11-26  Dodji Seketeli <dodji@redhat.com>
8548
8549	reader: Read array subrange length into an uint64_t
8550	* src/abg-reader.cc (build_subrange_type): Change the type of
8551	length to uint64_t and read it using strtoull.
8552
85532020-11-25  Dodji Seketeli <dodji@redhat.com>
8554
8555	abipkgdiff: Avoid uncertainty when sorting worker tasks
8556	* elf_size_is_greater: Take the name of the binaries into account
8557	when their size is equal.  Also, assert that all comparison tasks
8558	have compared binaries.
8559
85602020-11-25  Dodji Seketeli <dodji@redhat.com>
8561
8562	tests/data/test-fedabipkgdiff: Update reference output
8563	* tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt:
8564	Adjust.
8565
85662020-11-24  Matthias Maennich <maennich@google.com>
8567
8568	abipkgdiff: minor cleanups
8569	* tools/abipkgdiff.cc: remove unused using statements
8570	(self_compare_task): remove shadowing members and delegate
8571	construction to base class.
8572
85732020-11-23  Dodji Seketeli <dodji@redhat.com>
8574
8575	dwarf-reader: support artificially generated translation units
8576	* configure.ac: Detect if we are running on RPM >= 4.15.  If yes,
8577	then define the preprocessor macro RPM_4_15.  If that macro is
8578	defined then test-diff-pkg.cc can support RPMs from Fedora >= 31
8579	as those are compressed with zstd.  Earlier RPM versions don't
8580	support that compression scheme.
8581	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
8582	Suffix the offset of the translation unit to its name when that
8583	name is "<artificial>".
8584	* tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.rpm:
8585	New binary test input.
8586	* tests/data/test-diff-pkg/mesa-libGLU-debuginfo-9.0.1-3.fc33.x86_64.rpm: Likewise.
8587	* tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.self-check-report-0.txt:
8588	New reference output for the binary test input above.
8589	* tests/data/Makefile.am: Add the new test inputs above to source
8590	distribution.
8591	* tests/test-diff-pkg.cc (in_out_specs): Add the binary test
8592	inputs above to source distribution if we are running on an RPM
8593	version >= 4.15.
8594
85952020-11-20  Dodji Seketeli <dodji@redhat.com>
8596
8597	fedabipkgdiff: make --self-compare use abipkgdiff --self-check
8598	* tools/fedabipkgdiff (abipkgdiff): If the user provides the
8599	--self-compare options, generate the abipkgdiff command by using
8600	the --self-check option.
8601	(run_abipkgdiff): Each return value of the abipkgidiff runs can be
8602	negative because they are unsigned values in essence, but as
8603	python doesn't seem to have a unsigned integer type.  So we need
8604	to consider the max of the absolute value of the return codes
8605	here.
8606	* tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt:
8607	Adjust.
8608
86092020-11-19  Dodji Seketeli <dodji@redhat.com>
8610
8611	abipkgdiff: Add a new --self-check option
8612	* tools/abipkgdiff.cc (options::self_check): Define new data
8613	member.
8614	(options::options): Initialize it.
8615	(display_usage): Add help string for the --self-check option.
8616	(parse_command): Parse the new --self-check option.
8617	(extract_deb): Add missing newline.
8618	(compare): Remove useless white space.
8619	(compare_to_self, self_compare_prepared_userspace_package)
8620	(self_compare_prepared_package, compare_to_self): Add new static
8621	functions.
8622	(class self_compare_task): Add new class.
8623	(prepare_package): Add a new overload that takes just one
8624	parameter.
8625	(elf_size_is_greater): Don't crash if the args are empty.
8626	(main): If the --self-check option is given, make sure we have
8627	just one package in argument.  Use the new compare_to_self
8628	function to handle the --self-check option.
8629	* doc/manuals/abipkgdiff.rst: Add documentation for the new
8630	--self-check option.
8631
86322020-11-16  Dodji Seketeli <dodji@redhat.com>
8633
8634	Bug 26769 - Fix missing types in abixml output
8635	* include/abg-corpus.h (corpus::{record_canonical_type,
8636	lookup_canonical_type}): Remove function declarations.
8637	* src/abg-corpus-priv.h (corpus::priv::canonical_types_): Remove
8638	data member.
8639	* src/abg-corpus.cc (corpus::{record_canonical_type,
8640	lookup_canonical_type}): Remove functions.
8641	* src/abg-ir.cc (type_eligible_for_odr_based_comparison): Remove
8642	static function.
8643	(type_base::get_canonical_type_for): Don't perform the ODR-based
8644	optimization for C++ anymore.
8645	* src/abg-reader.cc
8646	(read_context&::maybe_add_var_to_exported_decls): Don't add a
8647	variable that hasn't been added to its scope.  Otherwise, it means
8648	we added a variable that wasn't yet properly constructed.  Also
8649	add a new overload for var_decl_sptr&.
8650	(build_var_decl): Do not add the var to its the set of exported
8651	declaration before we are sure it has been fully constructed and
8652	added to the scope it belongs.
8653	(build_class_decl): Only add *static* data members to the list of
8654	exported declarations.
8655	(handle_var_decl): A var decl seen here is a global variable
8656	declaration.  Add it to the list of exported declarations.
8657	* src/abg-writer.cc (write_context::decl_only_type_is_emitted):
8658	Constify parameter.
8659	(write_translation_unit): Do not forget to emit referenced types
8660	that were maybe not canonicalized.  Also, avoid using noop_deleter
8661	when it's not necessary.
8662	(write_namespace_decl): Do not forget to emit canonicalized types
8663	that are present in namespaces other than the global namespace.
8664	* tests/runtestslowselfcompare.sh.in: New test that compares
8665	libabigail.so against its own ABIXML representation.
8666	* tests/Makefile.am: Add the new test runtestslowselfcompare.sh to
8667	source distribution.  This test is too slow to be run during the
8668	course of 'make check'.  It takes more than 5 minutes on my slow
8669	box here.  Rather, it can be run using 'make check-self-compare'.
8670	I plan to run this before releases now.
8671	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
8672	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
8673	* tests/data/test-annotate/test0.abi: Likewise.
8674	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
8675	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
8676	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
8677	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
8678	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
8679	Likewise.
8680	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
8681	Likewise.
8682	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
8683	Likewise.
8684	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
8685	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
8686	Likewise.
8687	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
8688	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
8689	Likewise.
8690	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
8691	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
8692	Likewise.
8693	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
8694	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
8695	* tests/data/test-read-dwarf/test0.abi: Likewise.
8696	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
8697	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
8698	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
8699	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
8700	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
8701	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
8702	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
8703	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
8704	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
8705	Likewise.
8706	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
8707	Likewise.
8708	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
8709	Likewise.
8710	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
8711	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
8712	Likewise.
8713	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
8714	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
8715	Likewise.
8716	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
8717	Likewise.
8718	* tests/data/test-read-write/test6.xml: Likewise.
8719
87202020-11-13  Dodji Seketeli <dodji@redhat.com>
8721
8722	Make sure to canonicalize all types but decl-only classes
8723	* include/abg-fwd.h (is_declaration_only_class_or_union_type):
8724	Declare new ...
8725	* src/abg-ir.cc (is_declaration_only_class_or_union_type):
8726	... function.
8727	(clone_array): Add the cloned array subrange to
8728	its scope so that it can later be canonicalized.
8729	(synthesize_type_from_translation_unit)
8730	(synthesize_function_type_from_translation_unit): Canonicalize the
8731	synthesized types.
8732	(hash_as_canonical_type_or_constant): Ensure that all types are
8733	canonicalized.
8734	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Remove
8735	useless overload.
8736	(build_ir_node_for_variadic_parameter_type)
8737	(schedule_array_tree_for_late_canonicalization): Define new static
8738	functions.
8739	(maybe_strip_qualification): Schedule type canonicalization for
8740	types cloned prior to editing.
8741	(build_function_type): Use the new
8742	build_ir_node_for_variadic_parameter_type.  It takes care of
8743	canonicalizing variadic parameter types.
8744	(build_function_decl): Canonicalize the function type that is
8745	created here.
8746	(build_ir_node_from_die): Use the overload of
8747	maybe_canonicalize_type which canonicalizes class_or_union nodes
8748	directly, rather than the one which handles DIE offsets.  The
8749	latter was used as an optimization to reduce the size of the array
8750	of types scheduled for canonicalization, as DIE offsets take less
8751	space than pointers to IR types.  Now that we have DIE
8752	de-duplication, my bet is that we can do away with the former.
8753	And that also ensures that we miss no type for canonicalization
8754	purposes.
8755	* src/abg-reader.cc (build_array_type_def): Canonicalize the
8756	subrange types of the array.
8757	(build_type): Canonicalize all types.
8758	* tests/data/test-annotate/libtest23.so.abi: Adjust.
8759	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
8760	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
8761	* tests/data/test-annotate/test0.abi: Likewise.
8762	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
8763	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
8764	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
8765	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
8766	Likewise.
8767	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
8768	Likewise.
8769	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
8770	Likewise.
8771	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
8772	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
8773	Likewise.
8774	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
8775	Likewise.
8776	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
8777	Likewise.
8778	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
8779	Likewise.
8780	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
8781	Likewise.
8782	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
8783	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
8784	Likewise.
8785	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
8786	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
8787	Likewise.
8788	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
8789	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
8790	* tests/data/test-read-dwarf/test0.abi: Likewise.
8791	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
8792	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
8793	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
8794	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
8795	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
8796	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
8797	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
8798	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
8799	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
8800	Likewise.
8801	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
8802	Likewise.
8803	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
8804	Likewise.
8805	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
8806	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
8807	Likewise.
8808	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
8809
88102020-11-13  Dodji Seketeli <dodji@redhat.com>
8811
8812	ir: Add equality op to array_type_def::subrange_type::bound_value
8813	* include/abg-ir.h
8814	(array_type_def::subrange_type::bound_value::operator==): Declare
8815	new ...
8816	* src/abg-ir.cc
8817	(array_type_def::subrange_type::bound_value::operator==):
8818	... equality operator.
8819
88202020-11-12  Dodji Seketeli <dodji@redhat.com>
8821
8822	writer: Sort decls and fix topological sorting for types
8823	* include/abg-ir.h (scope_decl::get_sorted_member_decls): Declare
8824	new member function.
8825	* src/abg-ir.cc (struct decl_topo_comp): New sorting functor.
8826	(type_topo_comp::operator()): Re-use the decl_topo_comp to sort
8827	type declarations.
8828	(scope_decl::priv::sorted_members_): Add new data member.
8829	(scope_decl::get_sorted_member_decls): Define new member function.
8830	* src/abg-writer.cc (write_translation_unit): Use the new
8831	scope_decl::get_sorted_member_decls.
8832	* tests/data/test-annotate/libtest23.so.abi: Adjust.
8833	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
8834	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
8835	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
8836	Likewise.
8837	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
8838	Likewise.
8839	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
8840	Likewise.
8841	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
8842	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
8843	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
8844	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
8845	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
8846	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
8847	Likewise.
8848	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
8849	Likewise.
8850	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
8851	Likewise.
8852	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
8853	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
8854	Likewise.
8855	* tests/data/test-read-write/test2.xml: Likewise.
8856	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
8857	Likewise.
8858	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
8859	Likewise.
8860
88612020-10-27  Dodji Seketeli <dodji@redhat.com>
8862
8863	Bug PR26739 - Handle qualified typedef array types
8864	* include/abg-fwd.h (is_typedef_of_array, clone_array)
8865	(clone_typedef, clone_qualified_type, clone_array_tree): Declare
8866	new functions.
8867	(peel_qualified_or_typedef_type): Declare new overload.
8868	(is_array_of_qualified_element): Constify the parameter.
8869	* include/abg-ir.h ({qualified_type,
8870	typedef}_def::set_underlying_type): Add new member functions.
8871	(array_type_def::subrange_type::subrange_type): Make constify the
8872	reference to the underlying type parameter.
8873	* src/abg-ir.cc (is_array_of_qualified_element): Constify the
8874	parameter.
8875	(peel_qualified_or_typedef_type): Define new
8876	overload for type_base_sptr.
8877	(clone_typedef_array_qualified_type): Define static function.
8878	(clone_array clone_typedef, clone_qualified_type)
8879	(clone_array_tree, is_typedef_of_array): Define new functions.
8880	(qualified_type_def::get_underlying_type): Rename the return type
8881	shared_ptr<type_base> into type_base_sptr.
8882	({typedef, qualified_type}_def::set_underlying_type): Define new
8883	member function.
8884	(array_type_def::subrange_type::priv::priv): Initialize the
8885	'infinite_' data member.
8886	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Handle
8887	qualified typedef of arrays.  Merge this with the handling of
8888	qualified arrays.  Note that before editing the elements of the
8889	array to make the array (or typedef) qualifier apply to the
8890	element the sub-tree is cloned to make its type nodes be
8891	'un-shared'.  This prevents us from editing type nodes that are
8892	shared by other type expressions.
8893	* tests/data/test-diff-filter/test-PR26739-report-0.txt: New
8894	reference test output.
8895	* tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Likewise.
8896	* tests/data/test-diff-filter/test-PR26739-v{0,1}.c: Source code
8897	of new binary test input.
8898	* tests/data/test-diff-filter/test-PR26739-2-v{0,1}.c: Likewise.
8899	* tests/data/test-diff-filter/test-PR26739-v{0,1}.o: New binary
8900	test inputs.
8901	* tests/data/test-diff-filter/test-PR26739-2-v{0,1}.o: Likewise.
8902	* tests/data/Makefile.am: Add the new test material above to
8903	source distribution.
8904	* tests/test-diff-filter.cc (in_out_specs): Add the test inputs
8905	above to this harness.
8906	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
8907	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
8908	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
8909	Likewise.
8910	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
8911	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
8912	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
8913	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
8914	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
8915	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
8916	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
8917	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
8918
89192020-11-03  Dodji Seketeli <dodji@redhat.com>
8920
8921	Update test-libandroid.so.abi
8922	* tests/data/test-read-dwarf/test-libandroid.so.abi: Update.
8923
89242020-10-29  Matthias Maennich <maennich@google.com>
8925
8926	dwarf-reader: Ignore zero length location expressions from DW_AT_location
8927	* src/abg-dwarf-reader.cc (die_location_expr): Ignore zero
8928	length location expressions.
8929	* tests/data/Makefile.am: Add new test files.
8930	* tests/data/test-read-dwarf/test-libandroid.so: New test file.
8931	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
8932	* tests/test-read-dwarf.cc: Add new test case.
8933	Reported-by: Dan Albert <danalbert@google.com>
8934	Reviewed-by: Giuliano Procida <gprocida@google.com>
8935	Cc: Mark Wielaard <mark@klomp.org>
8936
89372020-10-29  Giuliano Procida <gprocida@google.com>
8938
8939	Improve enum synthetic type names
8940	* src/abg-dwarf-reader.cc
8941	(build_internal_underlying_enum_type_name): Add a size
8942	argument (and don't default is_anonymous argument). Append
8943	size of type to synthetic type name.
8944	(build_enum_underlying_type): Pass type size to
8945	build_internal_underlying_enum_type_name.
8946	* tests/data/test-abidiff-exit/test-decl-enum-report-3.txt:
8947	Update. Note that there may be an issue with leaf-mode
8948	reporting of pointer type changes.
8949	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
8950	Regenerate this (catching up with various abidw updates).
8951	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
8952	Refresh with new type names.
8953	* tests/data/test-annotate/test0.abi: Likewise.
8954	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
8955	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
8956	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
8957	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
8958	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
8959	Likewise.
8960	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
8961	Likewise.
8962	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
8963	Likewise.
8964	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
8965	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
8966	Likewise.
8967	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
8968	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
8969	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
8970	Likewise.
8971	* tests/data/test-read-dwarf/test0.abi: Likewise.
8972	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
8973	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
8974	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
8975	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
8976	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
8977	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
8978	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
8979	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
8980	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
8981	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
8982	Likewise.
8983	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
8984	Likewise.
8985	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
8986	Likewise.
8987	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
8988	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
8989	Likewise.
8990	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
8991
89922020-10-29  Giuliano Procida <gprocida@google.com>
8993
8994	Improve and stabilise sort of member functions
8995	* src/abg-ir.cc
8996	(virtual_member_function_less_than::operator()): Name
8997	temporaries like offsets and symbols to reduce repetition;
8998	test each pair of elements (including symbol presence) and
8999	return immediately if there's a difference; add a comparison
9000	of linkage name just after comparing symbol names.
9001	(sort_virtual_member_functions): Use stable_sort instead of
9002	sort.
9003	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
9004	Update with new ordering of member functions.
9005	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
9006	Likewise.
9007
90082020-11-01  Dodji Seketeli <dodji@redhat.com>
9009
9010	update-test-output.py: Update syntax
9011	* tests/update-test-output.py: Update syntax for python3.
9012
90132020-10-31  Dodji Seketeli <dodji@redhat.com>
9014
9015	Bug 26770 - Spurious declaration-only-ness induces spurious type changes
9016	* src/abg-dwarf-reader.cc (add_or_update_class_type): When
9017	creating a class, set declaration-only-ness unconditionally.  When
9018	updating the class however, only set the declaration-only-ness
9019	when the current one is not consistent with the size of the class.
9020	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
9021	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
9022	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
9023	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
9024	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
9025	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
9026	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
9027
90282020-10-21  Matthias Maennich <maennich@google.com>
9029
9030	dwarf-reader: fix lookup for repeated translation unit paths
9031	* src/abg-dwarf-reader.cc(build_translation_unit_and_add_to_ir):
9032	Fix lookup for potentially already existing translation units.
9033	Reported-by: Dan Albert <danalbert@google.com>
9034
90352020-10-21  Giuliano Procida <gprocida@google.com>
9036
9037	Stabilise sort of canonical types
9038	* src/abg-ir.cc (scope_decl::get_sorted_canonical_types): Sort
9039	canonical types with std::stable_sort(..., type_topo_comp()).
9040	Reviewed-by: Matthias Maennich <maennich@google.com>
9041
90422020-10-27  Mark Wielaard <mark@klomp.org>
9043
9044	Assume subrange bounds types are unsigned if no underlying type is given.
9045	* src/abg-dwarf-reader.cc (build_subrange_type): Default
9046	is_signed to false.
9047
90482020-10-23  Mark Wielaard <mark@klomp.org>
9049
9050	dwarf-reader: get subrange_type bounds signedness from underlying type
9051	* src/abg-dwarf-reader.cc (die_attribute_has_form)
9052	(die_attribute_is_signed, die_attribute_is_unsigned)
9053	(die_attribute_has_no_signedness): Remove static functions.
9054	(die_constant_attribute): Add the 'is_signed' parameter.
9055	(die_address_attribute): Adjust comment.
9056	(build_subrange_type): Determine signedness of the bounds by
9057	looking at the DW_AT_encoding attribute of the underlying type.
9058
90592020-10-23  Dodji Seketeli <dodji@redhat.com>
9060
9061	abg-tools-utils: Fix comment
9062	* include/abg-tools-utils.h (enum abidiff_status): Fix a comment.
9063
90642020-10-13  Dodji Seketeli <dodji@redhat.com>
9065
9066	configure: Support ABIGAIL_NO_OPTIMIZATION_DEBUG environment variable
9067	* configure.ac: Set the CXXFLAGS and CFLAGS to "-g -O0 -Wall
9068	-Wextra -Werror" if the ABIGAIL_NO_OPTIMIZATION_DEBUG is set.
9069
90702020-10-13  Dodji Seketeli <dodji@redhat.com>
9071
9072	Structurally compare the few non-canonicalized types in general
9073	* include/abg-fwd.h (hash_as_canonical_type_or_constant): Remove
9074	public declaration of this function.
9075	* src/abg-hash.cc (type_base::dynamic_hash::operator()): Add a
9076	comment.
9077	* src/abg-ir.cc (hash_as_canonical_type_or_constant): Make this
9078	function static now.
9079	(hash_type_or_decl): Use hash_type for types.
9080	* src/abg-writer.cc (type_hasher::operator()): Use hash_type.
9081
90822020-10-12  Dodji Seketeli <dodji@redhat.com>
9083
9084	Fix redundancy detection in the diff graph
9085	* src/abg-comparison-priv.h
9086	(diff_context::priv::last_visited_diff_node_): Remove unnecessary
9087	data member.
9088	(class_or_union_diff::priv::sorted_{deleted,inserted}_member_functions_):
9089	Add new data members.
9090	(sort_string_member_function_sptr_map): Declare new function.
9091	* src/abg-comparison.cc (sort_string_member_function_sptr_map):
9092	Define new function.
9093	(redundancy_marking_visitor::visit_begin): If the current diff
9094	node is equivalent to another one that has been already marked
9095	redundant, then consider the current diff node as redundant as
9096	well.  Considering the fact an ancestor node has been filtered out
9097	is now useless because if that's the case then the current
9098	descendant node wouldn't even be walked at reporting time.  So
9099	remove the call to diff_has_ancestor_filtered_out.
9100	(categorize_redundancy): Remove useless call here as well.
9101	(diff_has_ancestor_filtered_out, diff_has_ancestor_filtered_out)
9102	(diff_context::{mark_last_diff_visited_per_class_of_equivalence,
9103	clear_last_diffs_visited_per_class_of_equivalence,
9104	get_last_visited_diff_of_class_of_equivalence}): Remove
9105	unnecessary functions.
9106	(redundancy_marking_visitor::visit_end): Add comment.
9107	(class_diff::ensure_lookup_tables_populated): Lexicographically
9108	sort inserted/deleted member functions.
9109	(class_or_union_diff::chain_into_hierarchy): Chain changed data
9110	members diff nodes in a sorted manner.
9111	* src/abg-default-reporter.cc (default_reporter::report): Report
9112	deleted/inserted member functions in lexicographic order.
9113	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
9114	Adjust.
9115	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
9116	Likewise.
9117	* 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:
9118	Likewise.
9119	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
9120	Likewise.
9121	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
9122	Likewise.
9123
91242020-10-08  Dodji Seketeli <dodji@redhat.com>
9125
9126	Consider the implicit 'this' parameter when comparing methods
9127	* include/abg-ir.h (function_type::get_first_parm): Declare new
9128	accessor.
9129	* src/abg-ir.cc (function_type::get_first_parm): Define new
9130	accessor.
9131	(equals): In the overload for function_type,
9132	always take the implicit "this" parameter into account in
9133	parameter comparisons.
9134	(function_type::get_first_non_implicit_parm): Adjust comment.
9135	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
9136	Avoid potential NULL pointer dereferencing.
9137	* src/abg-comparison.cc
9138	(function_type_diff::ensure_lookup_tables_populated): Always take
9139	the changes to the implicit 'this' parameter into account in the
9140	function type diff.
9141	(compute_diff): In the overload for function_type, Always compare
9142	the implicit 'this' parameter when comparing function parameters.
9143	* src/abg-default-reporter.cc (default_reporter::report): Refer to
9144	"implicit parameter" when reporting changes on parameters
9145	artificially generated by the compiler.
9146	* src/abg-suppression.cc (type_suppression::suppresses_diff): Make
9147	the 'access_through' predicate work on a qualified version of type
9148	'S', even if it was meant to work on type 'S'.  This allows it to
9149	work on 'const S', especially when S is accessed through 'pointer
9150	to const S', which happens when we consider the implicit 'this'
9151	parameter of a const member function.
9152	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust.
9153	* tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise.
9154	* tests/data/test-abidiff-exit/test1-voffset-change-report0.txt:
9155	Likewise.
9156	* tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
9157	* tests/data/test-abidiff/test-struct1-report.txt: Likewise.
9158	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
9159	Likewise.
9160	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
9161	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise.
9162	* tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt: Likewise.
9163	* tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt: Likewise.
9164	* tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt: Likewise.
9165	* tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: Likewise.
9166	* tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: Likewise.
9167	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
9168	* tests/data/test-diff-dwarf/test5-report.txt: Likewise.
9169	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
9170	* tests/data/test-diff-filter/test0-report.txt: Likewise.
9171	* tests/data/test-diff-filter/test01-report.txt: Likewise.
9172	* tests/data/test-diff-filter/test10-report.txt: Likewise.
9173	* tests/data/test-diff-filter/test13-report.txt: Likewise.
9174	* tests/data/test-diff-filter/test2-report.txt: Likewise.
9175	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt:
9176	Likewise.
9177	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt:
9178	Likewise.
9179	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
9180	Likewise.
9181	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
9182	Likewise.
9183	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
9184	Likewise.
9185	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
9186	Likewise.
9187	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
9188	Likewise.
9189	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
9190	Likewise.
9191	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
9192	Likewise.
9193	* tests/data/test-diff-filter/test4-report.txt: Likewise.
9194	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
9195	* tests/data/test-diff-filter/test9-report.txt: Likewise.
9196	* 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:
9197	Likewise.
9198	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
9199	Likewise.
9200	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
9201	Likewise.
9202	* tests/data/test-diff-suppr/test24-soname-report-0.txt: Likewise.
9203	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise.
9204	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise.
9205	* tests/data/test-diff-suppr/test24-soname-report-11.txt: Likewise.
9206	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
9207	* tests/data/test-diff-suppr/test24-soname-report-13.txt: Likewise.
9208	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
9209	* tests/data/test-diff-suppr/test24-soname-report-15.txt: Likewise.
9210	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
9211	* tests/data/test-diff-suppr/test24-soname-report-2.txt: Likewise.
9212	* tests/data/test-diff-suppr/test24-soname-report-3.txt: Likewise.
9213	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise.
9214	* tests/data/test-diff-suppr/test24-soname-report-5.txt: Likewise.
9215	* tests/data/test-diff-suppr/test24-soname-report-6.txt: Likewise.
9216	* tests/data/test-diff-suppr/test24-soname-report-7.txt: Likewise.
9217	* tests/data/test-diff-suppr/test24-soname-report-8.txt: Likewise.
9218	* tests/data/test-diff-suppr/test24-soname-report-9.txt: Likewise.
9219	* tests/data/test-diff-suppr/test31-report-1.txt: Likewise.
9220	* tests/data/test-diff-suppr/test33-report-0.txt: Likewise.
9221
92222020-08-17  Giuliano Procida <gprocida@google.com>
9223
9224	Fix two wrongs in test suppression regex
9225	* tests/data/test-diff-suppr/test38-char-class-in-ini.abignore:
9226	Don't anchor regex match to beginning of file name.
9227	Change "filename_regexp" to "file_name_regexp".
9228
92292020-08-17  Giuliano Procida <gprocida@google.com>
9230
9231	Add missing newlines to end of test files.
9232	* tests/data/test-diff-suppr/test0-type-suppr-2.suppr: Add
9233	final new line.
9234	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-4.suppr:
9235	Likewise.
9236	* tests/data/test-diff-suppr/test23-alias-filter-0.suppr:
9237	Likewise.
9238	* tests/data/test-diff-suppr/test23-alias-filter-4.suppr:
9239	Likewise.
9240	* tests/data/test-diff-suppr/test28-add-aliased-function-1.suppr:
9241	Likewise.
9242	* tests/data/test-diff-suppr/test28-add-aliased-function-2.suppr:
9243	Likewise.
9244	* tests/data/test-diff-suppr/test28-add-aliased-function-3.suppr:
9245	Likewise.
9246	* tests/data/test-diff-suppr/test28-add-aliased-function-4.suppr:
9247	Likewise.
9248	* tests/data/test-diff-suppr/test41-enumerator-changes-0.suppr:
9249	Likewise.
9250	* tests/data/test-diff-suppr/test7-var-suppr-7.suppr:
9251	Likewise.
9252	* tests/data/test-ini/test01-equal-in-property-string.abignore:
9253	Likewise.
9254
92552020-09-18  Giuliano Procida <gprocida@google.com>
9256
9257	abg-corpus.cc: report architecture discrepancies
9258	* src/abg-corpus.cc (corpus_group::add_corpus): Report
9259	architecture discrepancies.
9260
92612020-09-16  Dodji Seketeli <dodji@redhat.com>
9262
9263	Bug 26568 - Union should support more than one anonymous member
9264	* src/abg-dwarf-reader.cc (add_or_update_union_type): Don't use
9265	the empty name of anonymous members in the lookup to ensure that
9266	all data members are unique.  Rather, use the whole anonymous
9267	member itself for the lookup, just like is done to handle
9268	anonymous data member in classes/structs.
9269	* src/abg-reader.cc (build_union_decl): Likewise.
9270	* src/abg-ir.cc (get_generic_anonymous_internal_type_name): Define
9271	new static function.
9272	(get_type_name): For internal purposes, make the type name of all
9273	anonymous types of a given kind to be the same.  This allows the
9274	internal representation of anonymous types which are based on type
9275	names to all be the same, so that they can be compared among
9276	themselves during type canonicalization.
9277	* tests/data/test-read-dwarf/test-PR26568-{1,2}.c: Source code of
9278	binary test input.
9279	* tests/data/test-read-dwarf/test-PR26568-{1,2}.o: New binary test input.
9280	* tests/data/test-read-dwarf/test-PR26568-{1,2}.o.abi: New
9281	reference test ouput.
9282	* tests/data/Makefile.am: Add the new test material above to
9283	source distribution.
9284	* tests/test-read-dwarf.cc (in_out_specs): Add the new binary test
9285	input above to this test harness.
9286	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: Adjust.
9287	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
9288	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
9289
92902020-09-02  Dodji Seketeli <dodji@redhat.com>
9291
9292	Make abidiff and abidw support several --headers-dir{1,2} options
9293	* doc/manuals/abidiff.rst: Update documentation for the
9294	--headers-dir{1,2} options.
9295	* doc/manuals/abidw.rst: Likewise for the --header-dir option.
9296	* include/abg-tools-utils.h (gen_suppr_spec_from_headers): Add new
9297	overload that takes a vector of headers root dirs.
9298	* src/abg-tools-utils.cc (gen_suppr_spec_from_headers_root_dir):
9299	Define new function.
9300	(gen_suppr_spec_from_headers): Define a new overload that takes a
9301	vector of head_root_dir strings; it uses the new
9302	gen_suppr_spec_from_headers function.  Use the new overload in the
9303	previous one that takes just one head_root_dir string.
9304	* tools/abidiff.cc (options::headers_dirs{1,2}): Rename
9305	option::headers_dir{1,2} into this one and make it be a vector of
9306	strings rather than just a string.
9307	(parse_command_line): Support several --headers-dir{1,2} on the
9308	command line.
9309	(set_diff_context_from_opts, set_suppressions): Adjust.
9310	* tools/abidw.cc (options::headers_dirs): Renamed
9311	options::headers_dir into this and make it be a vector of strings
9312	rather than just a string.
9313	(parse_command_line): Support several --headers-dir on the command
9314	line.
9315	(set_suppressions): Adjust.
9316	* tests/data/test-abidiff-exit/test-headers-dirs/headers-a/header-a-v{0,1}.h:
9317	Header files of new binary test input.
9318	* tests/data/test-abidiff-exit/test-headers-dirs/headers-b/header-b-v{0,1}.h:
9319	Likewise.
9320	* tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-v{0,1}.c:
9321	Source code of new binary test input.
9322	* tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-{1,2}.txt:
9323	Reference output of new binary test input.
9324	* tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-v{0,1}.o:
9325	New binary test input.
9326	* tests/data/Makefile.am: Add the new files above to source
9327	distribution.
9328	* tests/test-abidiff-exit.cc (InOutSpec::in_elfv{0,1}_path): Add
9329	new data members.
9330	(in_out_specs): Adjust the content of this array as its type
9331	changed.  Also, add two new entries to run the test over the new
9332	binary test inputs above.
9333	(do_prefix_strings): Define new static function.
9334	(main): Use it the new do_prefix_strings here.  Make abidiff
9335	use the --header-dir{1,2} option whenever header directories are
9336	specified in an entry of the in_out_specs array.
9337
93382020-09-14  Dodji Seketeli <dodji@redhat.com>
9339
9340	Bug 26309 - Wrong leaf reporting of changes to typedef underlying type
9341	* src/abg-ir.cc (equals): In the overload for typedef_decls,
9342	report changes to the underlying type as being local of kind
9343	LOCAL_TYPE_CHANGE_KIND.
9344	* src/abg-comparison.cc
9345	(leaf_diff_node_marker_visitor::visit_begin): Do not mark typedef
9346	diff node as leaf node.
9347	(suppression_categorization_visitor::visit_end): Propagate the
9348	'suppressed' category of the underlying type to the parent typedef
9349	unless the later has a local non-type change.
9350	(redundancy_marking_visitor::visit_end): Likewise for the
9351	'redundant' category.
9352	* include/abg-reporter.h (report_non_type_typedef_changes): Rename ...
9353	* src/abg-default-reporter.cc (report_non_type_typedef_changes):
9354	... report_local_typedef_changes into this.
9355	* src/abg-leaf-reporter.cc (leaf_reporter::report): Make the leaf
9356	reporter invoke the reporting method of the default reporter for
9357	typedefs as all typedef changes are now local.
9358	* tests/data/test-diff-filter/test-PR26309-report-0.txt: Add new
9359	test reference output.
9360	* tests/data/test-diff-filter/test-PR26309-v{0,1}.o: Add new test
9361	binary input.
9362	* tests/data/test-diff-filter/test-PR26309-v{0,1}.c: Add source
9363	code for new test binary input.
9364	* tests/data/Makefile.am: Add the new text material above to
9365	source distribution.
9366	* tests/test-diff-filter.cc (in_out_specs): Add the new test input
9367	above to this test harness.
9368	* 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.
9369
93702020-09-14  Dodji Seketeli <dodji@redhat.com>
9371
9372	Fix thinko in get_vmlinux_path_from_kernel_dist
9373	* src/abg-tools-utils.cc (get_vmlinux_path_from_kernel_dist): Fix
9374	thinko.
9375
93762020-09-08  Dodji Seketeli <dodji@redhat.com>
9377
9378	writer: Avoid using dynamic hashing in type maps
9379	* include/abg-fwd.h (hash_as_canonical_type_or_constant): Declare ...
9380	* src/abg-ir.cc (hash_as_canonical_type_or_constant): ... new
9381	function.
9382	* src/abg-writer.cc (type_hasher::operator()): Use the new
9383	hash_as_canonical_type_or_constant.
9384	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
9385
93862020-09-08  Dodji Seketeli <dodji@redhat.com>
9387
9388	Use flat representation to canonicalize anonymous classes and unions
9389	* src/abg-ir.cc ({class, union}_decl::get_pretty_representation):
9390	Use the flat representation of the class or union even for
9391	internal purposes.
9392	* tests/data/test-annotate/libtest23.so.abi: Adjust.
9393	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise.
9394	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
9395	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
9396	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
9397	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
9398	* 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.
9399	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
9400	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
9401	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
9402
94032020-07-24  Giuliano Procida <gprocida@google.com>
9404
9405	DWARF: track chained DIE declaration-only status
9406	* src/abg-dwarf-reader.cc (add_or_update_class_type): Add an
9407	is_declaration_only argument. Use this in favour of the
9408	die_is_declaration_only helper function.
9409	(add_or_update_union_type): Ditto.
9410	(function_is_suppressed): Ditto.
9411	(build_or_get_fn_decl_if_not_suppressed): Ditto.
9412	(build_enum_type): Ditto.
9413	(build_ir_node_from_die): To the main overload, add
9414	is_declaration_only argument and default this to true.
9415	Update this to false if the given DIE is not declaration
9416	only and pass this on in recusrive calls and calls to
9417	build_enum_type, add_or_update_union_type,
9418	add_or_update_class_type and
9419	build_or_get_fn_decl_if_not_suppressed.
9420	* tests/data/test-annotate/test17-pr19027.so.abi: Update
9421	test. This is mostly the removal of is-declaration-only
9422	attributes, removal of unreachable parts of the type graph and
9423	type id renumbering.
9424	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9425	Likewise.
9426	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9427	Likewise.
9428	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
9429	Likewise.
9430	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
9431	Likewise.
9432	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
9433	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9434	Likewise.
9435	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9436	Likewise.
9437	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
9438	Likewise.
9439
94402020-07-24  Giuliano Procida <gprocida@google.com>
9441
9442	DWARF: look up DW_AT_declaration non-recursively
9443	* src/abg-dwarf-reader.cc (die_die_attribute): Rename
9444	'look_thru_abstract_origin' argument to 'recursively' and
9445	mention DW_AT_specification in its doc comment. Remove stale
9446	comment for non-existent argument. Simplify code with the help
9447	of the ternary operator.  (die_flag_attribute): Add
9448	recursively argument, defaulted to true. If this is false,
9449	look for attribute using dwarf_attr rather than
9450	dwarf_attr_integrate.  (die_is_declaration_only): Call
9451	die_flag_attribute specifying non-recursive attribute search.
9452	* tests/data/test-annotate/test15-pr18892.so.abi: Update
9453	tests. This is mostly the removal of unreachable parts of the type
9454	graph and type id renumbering.
9455	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9456	Likewise.
9457	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9458	Likewise.
9459	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
9460	Likewise.
9461	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
9462	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9463	Likewise.
9464	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9465	Likewise.
9466	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
9467	Likewise.
9468
94692020-07-24  Giuliano Procida <gprocida@google.com>
9470
9471	Improve documentation of abidiff --type-id-style
9472	* tools/abidw.cc (display_usage): In documentation of
9473	"--type-id-style" option, add a missing closing ')', spell
9474	"type id" without a '-', split overly long string over two
9475	lines, use "<...>" to indicate mandatory argument and improve
9476	description of formats.
9477	* doc/manuals/abidw.rst: In documentation of "--type-id-style"
9478	option, use "<...>" to indicate mandatory argument.
9479
94802020-07-23  Giuliano Procida <gprocida@google.com>
9481
9482	Fix maybe_report_data_members_replaced_by_anon_dm
9483	* src/abg-reporter-priv.cc
9484	(maybe_report_data_members_replaced_by_anon_dm): Move
9485	declarations of anonymous_data_member and
9486	dms_replaced_by_same_anon_dm into inner loop. Use
9487	anonymous_data_member for testing and reporting, allowing
9488	iterators i and j to be replaced by just iterator i. Push
9489	first decl onto dms_replaced_by_same_anon_dm unconditionally
9490	and move control flow logic into loop condition.
9491	* tests/data/Makefile.am: Add new test cases.
9492	* tests/data/test-diff-filter/test-PR25661-7-report-1.txt: New
9493	test case file.
9494	* tests/data/test-diff-filter/test-PR25661-7-report-2.txt:
9495	Likewise.
9496	* tests/data/test-diff-filter/test-PR25661-7-report-3.txt:
9497	Likewise.
9498	* tests/data/test-diff-filter/test-PR25661-7-report-4.txt:
9499	Likewise.
9500	* tests/data/test-diff-filter/test-PR25661-7-v0.c: Likewise.
9501	* tests/data/test-diff-filter/test-PR25661-7-v0.o: Likewise.
9502	* tests/data/test-diff-filter/test-PR25661-7-v1.c: Likewise.
9503	* tests/data/test-diff-filter/test-PR25661-7-v1.o: Likewise.
9504	* tests/test-diff-filter.cc: Call new test cases.
9505
95062020-07-22  Giuliano Procida <gprocida@google.com>
9507
9508	Fix decl_base comparison function
9509	* src/abg-ir.cc (equals): In the decl_base overload, note that
9510	the value returned by decl_names_equal should be negated and
9511	replace decls_are_different with decls_are_same, negating all
9512	occurrences.
9513	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
9514	Update tests, removing some spurious anonymous union name change.
9515	* tests/data/test-diff-filter/test33-report-0.txt: Diff now
9516	completely empty.
9517	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt:
9518	3 functions previously considered to have harmless changes are
9519	now deemed to have no changes.
9520	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
9521	1 struct RedStore data member previously considered to have
9522	harmless changes is now deemed to have no changes.
9523	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
9524	One instance of an anonymous struct removed and a typedef
9525	repointed at another existing instance; many type ids
9526	renumbered.
9527
95282020-07-22  Giuliano Procida <gprocida@google.com>
9529
9530	Make decl_names_equal more accurate
9531	* src/abg-tools-utils.cc (decl_names_equal): Move {l,r}_pos2
9532	declarations into the loop and make {l,r}_length const. Avoid
9533	chance of arithmetic on string::npos values. Rework
9534	logic so there is a single test for "names compare equal" and
9535	a single test for different numbers of name components.
9536	* tests/test-tools-utils.cc (main): Add nine more tests.
9537
95382020-07-30  Dodji Seketeli <dodji@redhat.com>
9539
9540	Bug 26261 - Fix logic for canonicalizing DW_TAG_subroutine_type DIEs
9541	* src/abg-dwarf-reader.cc (compare_dies): Get out early if we are
9542	are in the middle of a potential recursive comparison of function
9543	types.  Likewise if we detect that the two function types have
9544	different textual representations, linkage names, or have a the
9545	same textual representation, linkage names and are defined in the
9546	same translation unit.
9547	* tests/data/test-read-dwarf/PR26261/PR26261-exe: New test binary
9548	input file.
9549	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: New
9550	reference test output file.
9551	* tests/data/test-read-dwarf/PR26261/PR26261-main.c: Source code
9552	of the binary above.
9553	* tests/data/test-read-dwarf/PR26261/PR26261-obj{a,b}.{c,h}:
9554	Likewise.
9555	* tests/data/test-read-dwarf/PR26261/Makefile: Makefile to
9556	build the exe out of the source files.
9557	* tests/data/Makefile.am: Add the new test input files to source
9558	distribution.
9559	* tests/test-read-dwarf.cc (in_out_spec): Add the binary test
9560	input above to the test harness.
9561
95622020-07-29  Dodji Seketeli <dodji@redhat.com>
9563
9564	dwarf-reader: re-indent a block of code
9565	* src/abg-dwarf-reader.cc (compare_dies): Properly indent a
9566	sub-block of the big switch case statement in there.
9567
95682020-07-17  Giuliano Procida <gprocida@google.com>
9569
9570	abg-ir.cc: Remove duplicated line of code
9571	* src/abg-ir.cc (decl_base::set_definition_of_declaration):
9572	Remove duplicated assignment statement.
9573
95742020-07-16  Giuliano Procida <gprocida@google.com>
9575
9576	abg-writer.cc: Fix indentation of XML output
9577	* src/abg-writer.cc (write_canonical_types_of_scope): Do not
9578	add additional indentation. (write_translation_unit): Pass
9579	additional indentation to write_canonical_types_of_scope.
9580	(write_class_decl): Ensure optional annotations of base
9581	classes have the same indentation as the base classes
9582	themselves.
9583	* tests/data/test-annotate/libtest23.so.abi: Fix indentation.
9584	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Ditto.
9585	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Ditto.
9586	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
9587	Ditto.
9588	* tests/data/test-annotate/test1.abi: Ditto.
9589	* tests/data/test-annotate/test14-pr18893.so.abi: Ditto.
9590	* tests/data/test-annotate/test15-pr18892.so.abi: Ditto.
9591	* tests/data/test-annotate/test17-pr19027.so.abi: Ditto.
9592	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9593	Ditto.
9594	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9595	Ditto.
9596	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
9597	Ditto.
9598	* tests/data/test-annotate/test21-pr19092.so.abi: Ditto.
9599	* tests/data/test-diff-suppr/test45-abi-wl.xml: Ditto.
9600	* tests/data/test-diff-suppr/test45-abi.xml: Ditto.
9601	* tests/data/test-diff-suppr/test46-PR25128-base.xml: Ditto.
9602	* tests/data/test-diff-suppr/test46-PR25128-new.xml: Ditto.
9603	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
9604	Ditto.
9605	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Ditto.
9606	* tests/data/test-read-dwarf/libtest23.so.abi: Ditto.
9607	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
9608	Ditto.
9609	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Ditto.
9610	* tests/data/test-read-dwarf/test1.abi: Ditto.
9611	* tests/data/test-read-dwarf/test1.hash.abi: Ditto.
9612	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Ditto.
9613	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Ditto.
9614	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Ditto.
9615	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Ditto.
9616	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Ditto.
9617	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Ditto.
9618	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto.
9619	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9620	Ditto.
9621	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9622	Ditto.
9623	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
9624	Ditto.
9625	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Ditto.
9626	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
9627	Ditto.
9628	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Ditto.
9629	* tests/data/test-read-write/test10.xml: Ditto.
9630	* tests/data/test-read-write/test15.xml: Ditto.
9631	* tests/data/test-read-write/test21.xml: Ditto.
9632	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
9633	Ditto.
9634	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
9635	Ditto.
9636
96372020-07-16  Giuliano Procida <gprocida@google.com>
9638
9639	Remove ABI XML test data file blank lines
9640	* tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Remove
9641	blank lines.
9642	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
9643	Ditto.
9644	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
9645	Ditto.
9646	* tests/data/test-diff-suppr/test45-abi-wl.xml: Ditto.
9647	* tests/data/test-diff-suppr/test45-abi.xml: Ditto.
9648	* tests/data/test-diff-suppr/test46-PR25128-base.xml: Ditto.
9649	* tests/data/test-diff-suppr/test46-PR25128-new.xml: Ditto.
9650
96512020-07-15  Giuliano Procida <gprocida@google.com>
9652
9653	abg-ir.cc: Fix incorrect pop of compared types.
9654	* src/abg-ir.cc (equals): In the class_or_union overload,
9655	replace one instance of RETURN(false) with return false.
9656
96572020-07-09  Giuliano Procida <gprocida@google.com>
9658
9659	Enable Clang's -Werror-overloaded-virtual.
9660	* configure.ac: Remove the special clause that disabled
9661	-Werror-overloaded-virtual for Clang builds.
9662
96632020-07-09  Giuliano Procida <gprocida@google.com>
9664
9665	Fix inheritance of scope_decl::insert_member_decl
9666	* include/abg-ir.h (scope_decl::insert_member_decl): Change
9667	type of member argument from const decl_base_sptr& to plain
9668	decl_base_sptr.
9669	* src/abg-ir.cc (scope_decl::insert_member_decl): Likewise.
9670
96712020-07-27  Dodji Seketeli <dodji@redhat.com>
9672
9673	Pimpl-ify traversable_base and remove its unused traverse method
9674	* include/abg-traverse.h (traversable_base::priv): Declare new type.
9675	(traverse_base::priv_sptr): Add pointer to private data
9676	member.
9677	(traverse_base::visiting_): Move this data member definition into
9678	traverse_base::priv.
9679	(traverse_base::{visiting, traverse_base, ~traverse_base}): Move
9680	definitions out-of-oline.
9681	(traverse_base::traverse): Comment out.
9682	* src/abg-traverse.cc (struct traversable_base::priv): Define new
9683	type.
9684	(traversable_base::{traversable_base, ~traversable_base, traverse,
9685	visiting}): Move these previous inline definitions here.
9686
96872020-07-09  Giuliano Procida <gprocida@google.com>
9688
9689	Simplify peel_typedef_pointer_or_reference_type
9690	* include/abg-fwd.h (peel_qualified_or_typedef_type): Remove
9691	second argument in declarations of both overloads.
9692	* src/abg-comp-filter.cc (is_mostly_distinct_diff): Remove
9693	second argument to peel_qualified_or_typedef_type.
9694	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Likewise.
9695	* src/abg-ir.cc (peel_qualified_or_typedef_type): In both
9696	overloads, remove second argument peel_qual_type, simplify
9697	code with the assumption it was always false and remove
9698	incomplete array type peeling logic. In type_base_sptr
9699	overload, remove stray space.
9700
97012020-07-09  Giuliano Procida <gprocida@google.com>
9702
9703	Remove unused is_reference_or_pointer_diff.
9704	* include/abg-comparison.h (is_reference_or_pointer_diff):
9705	Drop function declaration.
9706	* src/abg-comparison.cc (is_reference_or_pointer_diff): Drop
9707	function definition.
9708
97092020-07-09  Giuliano Procida <gprocida@google.com>
9710
9711	abg-comparison.h: Remove stray declaration
9712	* include/abg-comparison
9713	(is_reference_or_pointer_diff_to_non_basic_distinct_types):
9714	Remove stray declaration.
9715
97162020-07-08  Giuliano Procida <gprocida@google.com>
9717
9718	abg-ir.cc: Refactor operator== methods with helper function
9719	* src/abg-ir.cc (try_canonical_compare): New template function.
9720	(type_decl::operator==): Use it here.
9721	(scope_type_decl::operator==): Likewise.
9722	(qualified_type_def::operator==): Likewise.
9723	(pointer_type_def::operator==): Likewise.
9724	(reference_type_def::operator==): Likewise.
9725	(array_type_def::subrange_type::operator==): Likewise.
9726	(array_type_def::operator==): Likewise.
9727	(enum_type_decl::operator==): Likewise.
9728	(typedef_decl::operator==): Likewise.
9729	(function_type::operator==): Likewise.
9730	(class_or_union::operator==): Likewise.
9731	(class_decl::operator==): Likewise.
9732	(union_decl::operator==): Likewise.
9733
97342020-07-01  Giuliano Procida <gprocida@google.com>
9735
9736	abg-comparison.cc: Tidy some corpus_diff code
9737	* src/abg-comparison.cc (corpus_diff::priv::emit_diff_stats):
9738	Adjust code whitespace; rename the second instance of
9739	total_nb_variable_changes to
9740	total_nb_unreachable_type_changes.
9741	(corpus_diff::has_incompatible_changes): Fix comment typo.
9742
97432020-07-06  Giuliano Procida <gprocida@google.com>
9744
9745	Fix --type-id-style hash for empty internal names.
9746	* src/abg-writer.cc (write_context::get_id_for_type): When
9747	hashing internal type names, convert to std::string rather
9748	than using the raw method directly as this will avoid a null
9749	pointer dereference in the case of an empty string; tabify
9750	code indentation.
9751
97522020-07-08  Giuliano Procida <gprocida@google.com>
9753
9754	abg-ir.cc: Tidy some operator== definitions
9755	* src/abg-irc.cc (scope_type_decl::operator==): Compare naked
9756	canonical type pointers instead of the shared pointers.
9757	(qualified_type_def::operator==): Remove excess blank line.
9758	(function_type::operator==): Do dynamic_cast and check of
9759	argument before comparing naked canonical type pointers.
9760	(class_or_union::operator==): Eliminate temporary reference.
9761	(class_decl::operator==): Likewise.
9762	(union_decl::operator==): Likewise.
9763
97642020-07-17  Giuliano Procida <gprocida@google.com>
9765
9766	Fix corpus_diff::has_net_changes for --leaf-changes-only mode
9767	* include/abg-reporter.h ({reporter_base, default_reporter,
9768	leaf_reporter}::diff_has_net_changes): Add new virtual function.
9769	This breaks binary compatibility but should conserve source
9770	compatibility.
9771	* src/abg-default-reporter.cc
9772	(default_reporter::diff_has_net_changes): Define new member
9773	function.
9774	* src/abg-leaf-reporter.cc (leaf_reporter::diff_has_net_changes):
9775	Likewise.
9776	* src/abg-comparison.cc (corpus_diff::has_net_changes): Invoke
9777	reporter_base::diff_has_net_changes on the current reporter,
9778	rather than trying to handle all the different kinds of reporters
9779	here.
9780	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Add a
9781	TODO to possibly delegate the implementation of this function to
9782	the reporters.
9783	* tests/data/Makefile.am: Add new test case files.
9784	* tests/data/test-abidiff-exit/test-net-change-report0.txt:
9785	Normal mode, nothing suppressed.
9786	* tests/data/test-abidiff-exit/test-net-change-report1.txt:
9787	Normal mode, everything suppressed.
9788	* tests/data/test-abidiff-exit/test-net-change-report2.txt:
9789	Leaf mode, nothing suppressed.
9790	* tests/data/test-abidiff-exit/test-net-change-report3.txt:
9791	Leaf mode, everything suppressions.
9792	* tests/data/test-abidiff-exit/test-net-change-v0.c: Test file
9793	* tests/data/test-abidiff-exit/test-net-change-v0.o: Test file
9794	* tests/data/test-abidiff-exit/test-net-change-v1.c: Test file
9795	* tests/data/test-abidiff-exit/test-net-change-v1.o: Test file
9796	* tests/data/test-abidiff-exit/test-net-change.abignore: This
9797	suppresses changes for all variables, functions and types in
9798	the test files, except for the 'victim' function.
9799	* tests/test-abidiff-exit.cc: Run new test cases.
9800	Reviewed-by: Matthias Maennich <maennich@google.com>
9801
98022020-07-01  Giuliano Procida <gprocida@google.com>
9803
9804	reporter: Fix report whitespace typos.
9805	* src/abg-reporter-priv.cc (represent): Add missing space to
9806	string split across two lines in certain anonymous data member
9807	diffs.
9808	* src/abg-default-reporter.cc (report): In the array_diff
9809	overload, eliminate trailing space at end of line.
9810	* tests/data/test-diff-dwarf/test10-report.txt: Delete
9811	trailing whitespace.
9812	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
9813	Ditto.
9814	* 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:
9815	Ditto.
9816	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
9817	Ditto.
9818	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
9819	Ditto.
9820	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
9821	Ditto.
9822
98232020-07-09  Giuliano Procida <gprocida@google.com>
9824
9825	abg-writer.cc: Clean up new line emission.
9826	* src/abg-writer.cc (annotate): In the
9827	function_decl::parameter_sptr overload, fix code whitespace.
9828	(write_decl_in_scope): Remove wrote_context state variable and
9829	associated logic; emit new line unconditionally after end of
9830	XML tags and nowhere else.
9831	(write_canonical_types_of_scope): Emit new line after end of
9832	XML comment and nowhere else.
9833	(write_translation_unit): Emit new line after end of XML tags
9834	and nowhere else.
9835	(write_type_decl): Likewise.
9836	(write_namespace_decl): Likewise.
9837	(write_qualified_type_def): Emit new line after end of XML tag.
9838	(write_pointer_type_def): Likewise.
9839	(write_reference_type_def): Likewise.
9840	(write_array_type_def): Emit new line after end of XML tags
9841	and nowhere else.
9842	(write_enum_type_decl): Emit new line after end of XML tag.
9843	(write_elf_symbol): Likewise.
9844	(write_elf_symbols_table): Emit no new lines.
9845	(write_elf_needed): Emit new line unconditionally after end of
9846	XML tags.
9847	(write_typedef_decl): Emit new line after end of XML tag.
9848	(write_var_decl): Emit new line after end of XML tag.
9849	(write_function_decl): Likewise.
9850	(write_function_type): Fold two output statements into
9851	one; emit new line after end of XML tag.
9852	(write_class_decl_opening_tag): Emit new line unconditionally
9853	after end of XML tags and simplify empty element tag logic.
9854	(write_union_decl_opening_tag): Likewise.
9855	(write_class_decl): Emit new line after end of XML tag and
9856	nowhere else.
9857	(write_union_decl): Likewise.
9858	(write_member_type_opening_tag): Emit new line after end of
9859	XML tag.
9860	(write_member_type): Emit new lines only after XML tags.
9861	(write_type_tparameter): Emit new line after XML tag.
9862	(write_non_type_tparameter): Likewise.
9863	(write_template_tparameter): Emit new line after XML tag and
9864	nowhere else.
9865	(write_type_composition): Likewise.
9866	(write_template_parameters): Emit no new lines.
9867	(write_function_tdecl): Emit new line after XML tag and
9868	nowhere else.
9869	(write_class_tdecl): Likewise.
9870	(write_corpus): Emit new lines only after XML tags.
9871	(dump): In the decl_base_sptr overload, don't emit final new
9872	line as this is now done by write_decl. In the var_decl_sptr
9873	overload, don't emit final new line (mistakenly done to cerr
9874	instead of o) as this is now done by write_var_decl. In the
9875	translation_unit overload, don't emit final new line as this
9876	doubles that emitted by write_translation_unit.
9877	* tests/data/test-annotate/libtest23.so.abi: Delete all blank
9878	lines.
9879	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Ditto.
9880	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Ditto.
9881	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
9882	Ditto.
9883	* tests/data/test-annotate/test1.abi: Ditto.
9884	* tests/data/test-annotate/test13-pr18894.so.abi: Ditto.
9885	* tests/data/test-annotate/test14-pr18893.so.abi: Ditto.
9886	* tests/data/test-annotate/test15-pr18892.so.abi: Ditto.
9887	* tests/data/test-annotate/test17-pr19027.so.abi: Ditto.
9888	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9889	Ditto.
9890	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9891	Ditto.
9892	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
9893	Ditto.
9894	* tests/data/test-annotate/test21-pr19092.so.abi: Ditto.
9895	* tests/data/test-annotate/test7.so.abi: Ditto.
9896	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
9897	Ditto.
9898	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Ditto.
9899	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Ditto.
9900	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
9901	Ditto.
9902	* tests/data/test-read-dwarf/libtest23.so.abi: Ditto.
9903	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
9904	Ditto.
9905	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Ditto.
9906	* tests/data/test-read-dwarf/test1.abi: Ditto.
9907	* tests/data/test-read-dwarf/test1.hash.abi: Ditto.
9908	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Ditto.
9909	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Ditto.
9910	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Ditto.
9911	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Ditto.
9912	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Ditto.
9913	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Ditto.
9914	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Ditto.
9915	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto.
9916	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
9917	Ditto.
9918	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
9919	Ditto.
9920	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
9921	Ditto.
9922	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Ditto.
9923	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
9924	Ditto.
9925	* tests/data/test-read-dwarf/test7.so.abi: Ditto.
9926	* tests/data/test-read-dwarf/test7.so.hash.abi: Ditto.
9927	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
9928	Ditto.
9929	* tests/data/test-read-write/test10.xml: Ditto.
9930	* tests/data/test-read-write/test15.xml: Ditto.
9931	* tests/data/test-read-write/test21.xml: Ditto.
9932	* tests/data/test-read-write/test25.xml: Ditto.
9933	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
9934	Ditto.
9935	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
9936	Ditto.
9937
99382020-07-09  Dodji Seketeli <dodji@redhat.com>
9939
9940	reader: Remove useless support for WIP types
9941	* src/abg-reader.cc (read_context::m_wip_types_map): Remove data
9942	member.
9943	(read_context::{clear_wip_classes_map, mark_type_as_wip,
9944	unmark_type_as_wip, is_wip_type}): Remove member functions.
9945	(read_context::maybe_canonicalize_type): Remove use of
9946	is_wip_type.
9947
99482020-06-19  Giuliano Procida <gprocida@google.com>
9949
9950	Use pointers not strings in type graph comparison.
9951	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
9952	Update.
9953	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt:
9954	Update.
9955	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
9956	Update.
9957	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
9958	Update.
9959
99602020-06-10  Giuliano Procida <gprocida@google.com>
9961
9962	Add tests for declaration-only enums.
9963	* tests/data/test-abidiff-exit/test-decl-enum-report-2.txt: Add
9964	new test reference output.
9965	* tests/data/test-abidiff-exit/test-decl-enum-report-3.txt: Likewise.
9966	* tests/data/test-abidiff-exit/test-decl-enum-report.txt: Likewise.
9967	* tests/data/test-abidiff-exit/test-decl-enum-v{0,1}.c: Add source
9968	code for the binaries below.
9969	* tests/data/test-abidiff-exit/test-decl-enum-v{0,1}.o: Add new
9970	binary test inputs.
9971	* tests/data/Makefile.am: Add the new files above to source
9972	distribution.
9973	* tests/test-abidiff-exit.cc: Add the test inputs above to the
9974	test harness.
9975
99762020-06-10  Giuliano Procida <gprocida@google.com>
9977
9978	Add declaration-only enums to XML reader/writer.
9979	* src/abg-reader.cc (build_enum_type_decl): Detect a
9980	declaration-only enum and flag it as such.
9981	(build_type_decl): Support reading the "is-declaration" attribute.
9982	(build_class_decl): Adjust.
9983	* src/abg-writer.cc (write_is_declaration_only): Renamed
9984	write_class_or_union_is_declaration_only into this.
9985	(write_enum_is_declaration_only): Remove.
9986	(write_type_decl, write_enum_type_decl)
9987	(write_class_decl_opening_tag, write_union_decl_opening_tag): Use
9988	write_is_declaration_only.
9989	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
9990	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
9991	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
9992
99932020-06-10  Dodji Seketeli <dodji@redhat.com>
9994
9995	Support declaration-only enums in DWARF reader.
9996	* src/abg-dwarf-reader.cc (string_enums_map): Define new
9997	convenience typedef.
9998	(read_context::decl_only_enums_map_): Define new data member.
9999	(read_context::{declaration_only_enums,
10000	is_decl_only_enum_scheduled_for_resolution,
10001	resolve_declaration_only_enums}): Define new member functions.
10002	(build_internal_underlying_enum_type_name)
10003	(build_enum_underlying_type): Factorize these functions out of ...
10004	(build_enum_type): ... here.  Detect a decl-only enum and flag it
10005	as such.  If the enum type is decl-only, then set its underlying
10006	type as decl-only as well.
10007	(build_enum_underlying_type): Mark the underlying type as
10008	artificial.
10009	(get_opaque_version_of_type): Make this handle enums as well.  So
10010	make its return type be type_or_decl_base_sptr, rather than just
10011	class_or_union_sptr as it used to be.
10012	(read_debug_info_into_corpus): Add logging to trace decl-only
10013	enums resolution.
10014	(build_ir_node_from_die): Detect when a suppression specification
10015	makes an enum opaque.  In that case, get an opaque version of the
10016	enum type by invoking get_opaque_version_of_type.  Note that
10017	get_opaque_version_of_type doesn't support returning opaque
10018	-- i.e, decl-only enum types -- yet, but this is going to be
10019	handled in a subsequent patch.
10020
100212020-06-10  Giuliano Procida <gprocida@google.com>
10022
10023	Support incomplete enums in core and diff code.
10024	* include/abg-comp-filter.h (has_decl_only_def_change) : Declare
10025	New function.
10026	* src/abg-comp-filter.cc (there_is_a_decl_only_enum): Define new
10027	static function and ...
10028	(type_size_changed): ... use it here.
10029	(has_decl_only_def_change): Define new function and ...
10030	(categorize_harm{less, ful}_diff_node): ... use it here.
10031	* include/abg-fwd.h (enums_type, decl_base_wptr): Declare new
10032	typedefs.
10033	(look_through_decl_only_class): Declare new overload for
10034	class_or_union*.
10035	(is_compatible_with_enum_type, is_compatible_with_enum_type)
10036	(look_through_decl_only, lookup_enum_types, lookup_enum_types):
10037	Declare new functions.
10038	* include/abg-ir.h (decl_base::{get_is_declaration_only,
10039	set_is_declaration_only, set_definition_of_declaration,
10040	get_definition_of_declaration,
10041	get_naked_definition_of_declaration}): Declare new member
10042	functions.  They were moved here from the class_or_union class.
10043	(class_or_union::{get_earlier_declaration,
10044	set_earlier_declaration, get_definition_of_declaration,
10045	set_definition_of_declaration,
10046	get_naked_definition_of_declaration, get_is_declaration_only,
10047	set_is_declaration_only}): Remove these member functions.
10048	* src/abg-ir.cc (decl_base::priv::{declaration_,
10049	definition_of_declaration_, naked_definition_of_declaration_,
10050	is_declaration_only_}): Define data members.  Moved here from
10051	class_or_union.
10052	(decl_base::priv::priv): Adjust to initialize the new data
10053	members.
10054	(decl_base::{get_earlier_declaration, set_earlier_declaration,
10055	get_definition_of_declaration,
10056	get_naked_definition_of_declaration, get_is_declaration_only,
10057	set_is_declaration_only, set_definition_of_declaration}): Define
10058	member functions.
10059	(operator|): In the overload for (change_kind, change_kind),
10060	adjust the return type of the call to
10061	decl_base::get_definition_of_declaration.
10062	(look_through_decl_only): Define new function.
10063	(look_through_decl_only_class): Adjust.
10064	(look_through_decl_only_enum): Likewise.
10065	(maybe_update_types_lookup_map<class_decl>): Adjust return type of
10066	call to decl_base::get_definition_of_declaration.
10067	(types_defined_same_linux_kernel_corpus_public): Use
10068	look_through_decl_only_class rather than open coding it.
10069	(class_or_union::priv::{declaration_, definition_of_declaration_,
10070	naked_definition_of_declaration_, is_declaration_only_}): Remove
10071	these data members.  They are now carried by decl_base::priv.
10072	(class_or_union::{g,s}et_alignment_in_bits): Adjust.
10073	(class_or_union::{g,s}et_size_in_bits): Likewise.
10074	(class_or_union::operator==): Likewise.
10075	(equals): Adjust the overload for class_or_union.
10076	(is_compatible_with_enum_type)
10077	* src/abg-comparison.cc (try_to_diff<class_decl>): Adjust the
10078	return type of decl_base::get_definition_of_declaration.
10079	(leaf_diff_node_marker_visitor::visit_begin): Use
10080	filtering::has_decl_only_def_change rather than
10081	filtering::has_class_decl_only_def_change.  Decl-only changes to
10082	enums (or any other type really) will thus not be recorded as leaf
10083	changes.
10084	* src/abg-dwarf-reader.cc (get_scope_for_die): Adjust return type
10085	of decl_base::get_definition_of_declaration.
10086	* src/abg-default-reporter.cc (default_reporter::report): Report
10087	enum decl-only <-> definition changes.
10088	* src/abg-hash.cc (class_or_union::hash::operator()): In the
10089	overload for class_or_union& adjust the return type for
10090	decl_base::get_definition_of_declaration.
10091
100922020-06-19  Giuliano Procida <gprocida@google.com>
10093
10094	abg-ir.cc: Remove unused re_canonicalize function.
10095	* include/abg-fwd.h (re_canonicalize): Remove declaration of
10096	obsolete function.
10097	* include/abg-ir.h (class {decl_base, type_base}): Remove
10098	re_canonicalize friend declarations from these classes.
10099	* src/abg-ir.cc (re_canonicalize): Remove obsolete function.
10100
101012020-06-24  Dodji Seketeli <dodji@redhat.com>
10102
10103	Bug 26135 - Wrong linkage name causes anonymous classes miscomparison
10104	* include/abg-ir.h (class_decl::class_decl): Add two overloads
10105	that take the "is_anonymous" flag.
10106	(union_decl::union_decl): Likewise.
10107	* src/abg-ir.cc (class_decl::class_decl): Define two overloads
10108	that take the "is_anonymous" flag and set the linkage name
10109	accordingly.
10110	(union_decl::union_decl): Likewise.
10111	(type_base::get_canonical_type_for): Assert that an anonymous
10112	class or union can't have a linkage name for now.
10113	* src/abg-dwarf-reader.cc (add_or_update_class_type)
10114	(add_or_update_union_type): Use a new overload for the constuctor
10115	of {class, union}_decl and set the "is_anonymous" flag.  Don't use
10116	decl_base::set_is_anonymous anymore.
10117	* src/abg-reader.cc (build_class_decl, build_union_decl):
10118	Likewise.
10119	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
10120	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
10121	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
10122
101232020-06-29  Giuliano Procida <gprocida@google.com>
10124
10125	Rename declaration-definition change category.
10126	* include/abg-comparison.h (TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY):
10127	Rename CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY into this.
10128	(EVERYTHING_CATEGORY): In the value of this enumerator, rename
10129	CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY into
10130	TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY.
10131	* src/abg-comp-filter.cc (categorize_harmless_diff_node):
10132	Likewise.
10133	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
10134	Likewise.
10135	(operator<<(ostream& o, diff_category c)): Likewise.
10136	* src/abg-default-reporter.cc (default_reporter::report): Likewise
10137	in the overload for class_or_union_diff.
10138	* src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise in
10139	the overload for class_or_union_diff.
10140
101412020-06-10  Giuliano Procida <gprocida@google.com>
10142
10143	Tidy build_enum_type state variables.
10144	* src/abg-dwarf-reader.cc (build_enum_type): Rename local
10145	variable enum_is_anonymous to is_anonymous. Move initilisation
10146	of local variable is_artificial to location corresponding to
10147	that in add_or_update_class_type and add_or_update_union_type
10148	functions.
10149
101502020-06-10  Giuliano Procida <gprocida@google.com>
10151
10152	Refactor d.context() as ctxt in report(enum_diff).
10153	* src/abg-default-reporter.cc (report): In the enum_diff
10154	overload, introduce the name ctxt to replace four occurrences
10155	of d.context().
10156
101572020-06-10  Giuliano Procida <gprocida@google.com>
10158
10159	Improve code comments and whitespace.
10160	* include/abg-fwd.h: Correct doc-comment reference to
10161	enum_type_decl.
10162	* src/abg-comp-filter.cc: Fix doc-comment syntax.
10163	* src/abg-comparison.cc (operator<<): In the diff_category
10164	overload, fix code indentation.
10165	* src/abg-default-reporter.cc (report): In the
10166	class_or_union_diff overload, adjust comment to reflect that
10167	the code is reporting changes between declaration-only and
10168	defined types, in either direction.
10169
101702020-06-17  Giuliano Procida <gprocida@google.com>
10171
10172	get_canonical_type_for: restore environment better
10173	* src/abg-ir.cc (get_canonical_type_for): Ensure the
10174	do_on_the_fly_canonicalization and
10175	decl_only_class_equals_definition flags are restored
10176	unconditionally.
10177
101782020-06-18  Dodji Seketeli <dodji@redhat.com>
10179
10180	Bug 26127 - abidw --annotate emits incomplete function types
10181	* include/abg-ir.h (decl_base::clear_qualified_name): Declare new
10182	protected member function.
10183	({pointer_type_def, reference_type_def, qualified_type_def,
10184	function_type}::on_canonical_type_set): Declare virtual member
10185	functions.
10186	* src/abg-ir.cc (decl_base::clear_qualified_name): Define new
10187	protected member function.
10188	({pointer_type_def, reference_type_def, qualified_type_def,
10189	function_type}::on_canonical_type_set): Define virtual member
10190	functions.
10191	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
10192	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
10193	Likewise.
10194	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
10195	Likewise.
10196
101972020-06-11  Giuliano Procida <gprocida@google.com>
10198
10199	Fix bug that suppressed DWARF read tests.
10200	* tests/test-read-dwarf.cc (in_out_specs): Use NULL instead of
10201	empty ABI paths for test25, test26 and test27. (perform):
10202	Check members of spec, rather than locals with same name, when
10203	deciding to terminate testing early; fix some code whitespace.
10204	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Update
10205	multidimensional array sizes.
10206	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto.
10207	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
10208	Ditto.
10209	* tests/data/test-read-dwarf/test7.so.abi: Ditto.
10210	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
10211	Update following translation unit ordering change.
10212	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Ditto.
10213	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Ditto.
10214	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Ditto.
10215	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Ditto.
10216	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto.
10217	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
10218	Ditto.
10219	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
10220	Ditto.
10221	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
10222	Ditto.
10223	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Ditto.
10224	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
10225	Ditto.
10226	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Update
10227	following code changes affecting ordering of some ABI
10228	elements.
10229	* tests/data/test-read-dwarf/test16-pr18904.so.abi
10230	Reviewed-by: Matthias Maennich <maennich@google.com>
10231	Tested-by: Matthias Maennich <maennich@google.com>
10232
102332020-06-16  Matthias Maennich <maennich@google.com>
10234
10235	cleanup: std::weak_ptr use: replace manual lock by std::weak_ptr::lock
10236	* src/abg-comparison-priv.h (diff::priv::get_context): improve
10237	weak_ptr usage.
10238	(corpus_diff:diff_stats::priv::ctxt): Likewise.
10239	* src/abg-comparison.cc (corpus_diff::priv::get_context): Likewise.
10240	(var_diff::type_diff): Likewise.
10241	* src/abg-ir.cc (elf_symbol::get_next_alias): Likewise.
10242	(elf_symbol::get_next_common_instance): Likewise.
10243	(type_base::get_canonical_type): Likewise.
10244	(qualified_type_def::get_underlying_type): Likewise.
10245	(pointer_type_def::get_pointed_to_type): Likewise.
10246	(reference_type_def::get_pointed_to_type): Likewise.
10247	(array_type_def::subrange_type::get_underlying_type): Likewise.
10248	(array_type_def::get_element_type): Likewise.
10249	(typedef_decl::get_underlying_type): Likewise.
10250	(var_decl::get_type): Likewise.
10251	(function_type::get_return_type): Likewise.
10252	(function_decl::get_type): Likewise.
10253	(function_decl::parameter::get_type): Likewise.
10254	(class_or_union::get_naming_typedef): Likewise.
10255	(class_or_union::get_definition_of_declaration): Likewise.
10256	(class_decl::base_spec::get_base_class): Likewise.
10257	(template_parameter::get_enclosing_template_decl): Likewise.
10258	(non_type_tparameter::get_type): Likewise.
10259	(type_composition::get_composed_type): Likewise.
10260
102612020-06-16  Giuliano Procida <gprocida@google.com>
10262
10263	Fix leaf-mode formatting of decl <-> defn diffs.
10264	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
10265	class_or_union_diff overload, add a terminating new line after
10266	reporting a declaration-only <-> definition difference.
10267
102682020-06-15  Giuliano Procida <gprocida@google.com>
10269
10270	abg-writer: Add support for stable hash type ids.
10271	* doc/manuals/abidw.rst: Replace stray documentation of
10272	--named-type-ids with documention of new --type-id-style
10273	option.
10274	* include/abg-writer.h (type_id_style_kind): Add new enum.
10275	(set_type_id_style): Add new write_context setter.
10276	(set_common_options): Set type id style in write context.
10277	* include/abg-hash.h (fnv_hash): Declare new 32-bit FNV-1a
10278	hash function in abigail::hashing namespace.
10279	* src/abg-hash.h (fnv_hash): Define new 32-bit FNV-1a hash
10280	function in abigail::hashing namespace.
10281	* src/abg-writer.cc (write_context): Add m_type_id_style
10282	member to record type style to use, defaulting to
10283	SEQUENCE_TYPE_ID_STYLE; add m_used_type_id_hashes to record
10284	already-used hashes.
10285	(write_context::get_type_id_style): Add new getter.
10286	(write_context::set_type_id_style): Add new setter.
10287	(get_id_for_type): Add support for HASH_TYPE_ID_STYLE style.
10288	(set_type_id_style): Add new helper function.
10289	* tools/abidw.cc (options): Add type_id_style member.
10290	(display_usage): Add description of --type-id-style option.
10291	(parse_command_line): Parse --type-id-style option.
10292	* tests/data/Makefile.am: Add new hash type id ABI files.
10293	* tests/test-read-dwarf.cc: (InOutSpec): Add type_id_style
10294	member.
10295	(in_out_specs): Set type_id_style to SEQUENCE_TYPE_ID_STYLE in
10296	existing test specifications. Duplicate first 9 test cases
10297	with type_id_style set to HASH_TYPE_ID_STYLE.
10298	* tests/data/test-read-dwarf/test0.hash.abi: New ABI XML file
10299	with hash type ids.
10300	* tests/data/test-read-dwarf/test1.hash.abi: Ditto.
10301	* tests/data/test-read-dwarf/test2.so.hash.abi: Ditto.
10302	* tests/data/test-read-dwarf/test3.so.hash.abi: Ditto.
10303	* tests/data/test-read-dwarf/test4.so.hash.abi: Ditto.
10304	* tests/data/test-read-dwarf/test5.o.hash.abi: Ditto.
10305	* tests/data/test-read-dwarf/test6.so.hash.abi: Ditto.
10306	* tests/data/test-read-dwarf/test7.so.hash.abi: Ditto.
10307	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi:
10308	Ditto.
10309
103102020-06-12  Giuliano Procida <gprocida@google.com>
10311
10312	Eliminate non-ASCII characters.
10313	* include/abg-diff-utils.h: Replace "’’" with "'".
10314	* src/abg-elf-helpers.cc: Replace "⋅" with ".".
10315	* src/abg-ini.cc: Replace "@êef" with "@ref".
10316	* src/abg-ir.cc: Ditto.
10317	* src/abg-tools-utils.cc: Replace "–" with "-".
10318
103192020-06-11  Matthias Maennich <maennich@google.com>
10320
10321	dwarf-reader: get_die_source: always initialize return value
10322	* src/abg-dwarf-reader.cc
10323	(read_context::get_die_source): Always initialize die_source.
10324	(read_context::ContainerType::get_container): Fix
10325	initialization of die_source.
10326	(read_context::compute_canonical_die): Likewise.
10327	(read_context::get_canonical_die): Likewise.
10328	(read_context::get_or_compute_canonical_die): Likewise.
10329	(read_context::associate_die_to_decl): Likewise.
10330	(read_context::set_canonical_die_offset): Likewise.
10331	(read_context::schedule_type_for_late_canonicalization): Likewise.
10332	(read_context::compare_dies): Likewise.
10333	(read_context::get_parent_die): Likewise.
10334	(read_context::get_scope_for_die): Likewise.
10335	(read_context::add_or_update_union_type): Likewise.
10336	(read_context::maybe_canonicalize_type): Likewise.
10337	(read_context::build_ir_node_from_die): Likewise.
10338
103392020-06-09  Matthias Maennich <maennich@google.com>
10340
10341	abipkgdiff: remove unused includes of elfutils/libdw.h and elf.h
10342	* tools/abipkgdiff.cc: Drop unused includes.
10343
103442020-05-29  Matthias Maennich <maennich@google.com>
10345
10346	abg-reporter: fully qualify std::string and std::ostream
10347	* include/abg-reporter.h (reporter_base::report) fully qualify
10348	std::string and std::ostream for all overloads.
10349	(default_reporter::report_local_typedef_changes): Likewise.
10350	(default_reporter::report_local_qualified_type_changes): Likewise.
10351	(default_reporter::report_local_reference_type_changes): Likewise.
10352	(default_reporter::report_local_function_type_changes): Likewise.
10353	(default_reporter::report): Likewise.
10354	(leaf_reporter::report_changes_from_diff_maps): Likewise.
10355	(leaf_reporter::report): Likewise.
10356	Suggested-by: Mark Barolak <mbar@google.com>
10357
103582020-06-05  Giuliano Procida <gprocida@google.com>
10359
10360	Fix HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY spelling
10361	* include/abg-comparison.h (enum diff_category): Rename
10362	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator to
10363	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY.
10364	* src/abg-comp-filter.cc (categorize_harmless_diff_node): Replace
10365	use of HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator with
10366	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY.
10367	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
10368	Replace use of HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator
10369	with HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY.
10370	(operator<<): In the diff_category overload, replace use of
10371	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator with
10372	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY and output correct
10373	spelling for both this and HARMLESS_UNION_CHANGE_CATEGORY.
10374	* tools/abicompat.cc (create_diff_context): Replace use of
10375	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator with
10376	HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY.
10377
103782020-05-18  Matthias Maennich <maennich@google.com>
10379
10380	dwarf-reader: read_context: drop unused symbol versioning code
10381	* src/abg-dwarf-reader.cc
10382	(read_context::versym_section_): Delete.
10383	(read_context::verdef_section_): Delete.
10384	(read_context::verneed_section_): Delete.
10385	(read_context::symbol_versionning_sections_loaded_): Delete.
10386	(read_context::symbol_versionning_sections_found_): Delete.
10387	(read_context::initialize): Remove initializations of deleted members.
10388	(read_context::get_symbol_versionning_sections): Delete.
10389	(read_context::get_version_for_symbol): Delete.
10390	(read_context::lookup_elf_symbol_from_index): Use
10391	get_version_for_symbol provided by elf_helpers.
10392
103932020-05-18  Matthias Maennich <maennich@google.com>
10394
10395	dwarf-reader: Remove unused code
10396	* src/abg-dwarf-reader.cc
10397	(lookup_public_variable_symbol_from_elf): Delete.
10398	(read_context::bss_section_): Delete.
10399	(read_context::text_section_): Delete.
10400	(read_context::rodata_section_): Delete.
10401	(read_context::data_section_): Delete.
10402	(read_context::data1_section_): Delete.
10403	(read_context::initialize): Remove initializations of deleted members.
10404	(read_context::options): Delete.
10405	(read_context::bss_section): Delete.
10406	(read_context::text_section): Delete.
10407	(read_context::rodata_section): Delete.
10408	(read_context::data_section): Delete.
10409	(read_context::data1_section): Delete.
10410	(read_context::get_elf_file_type): Delete.
10411	(read_context::lookup_symbol_from_elf): Delete.
10412	(read_context::lookup_public_variable_symbol_from_elf): Delete.
10413	(read_context::fun_addr_sym_map_sptr): Delete.
10414	(read_context::fun_addr_sym_map): Delete.
10415	(read_context::get_data_section_for_variable_address): Delete.
10416	(read_context::suppression_matches_function_sym_name): Delete.
10417	(read_context::suppression_matches_function_name): Delete.
10418	(read_context::suppression_matches_type_name): Delete.
10419
104202020-05-29  Dodji Seketeli <dodji@redhat.com>
10421
10422	abigail.m4: Fix copyright notice
10423	* abigail.m4: Mention Red Hat in the copyright and myself as author.
10424
104252020-05-18  Matthias Maennich <maennich@google.com>
10426
10427	tests: Add kernel symtab test suite
10428	* tests/data/Makefile.am: add new test data for runtestsymtab
10429	* tests/data/test-symtab/kernel-4.14/Makefile: New test case makefile.
10430	* tests/data/test-symtab/kernel-4.14/empty.c: Likewise.
10431	* tests/data/test-symtab/kernel-4.14/one_of_each.c: Likewise.
10432	* tests/data/test-symtab/kernel-4.14/single_function.c: Likewise.
10433	* tests/data/test-symtab/kernel-4.14/single_function_gpl.c: Likewise.
10434	* tests/data/test-symtab/kernel-4.14/single_variable.c: Likewise.
10435	* tests/data/test-symtab/kernel-4.14/single_variable_gpl.c: Likewise.
10436	* tests/data/test-symtab/kernel-4.14/empty.ko: New test data.
10437	* tests/data/test-symtab/kernel-4.14/one_of_each.ko: Likewise.
10438	* tests/data/test-symtab/kernel-4.14/single_function.ko: Likewise.
10439	* tests/data/test-symtab/kernel-4.14/single_function_gpl.ko: Likewise.
10440	* tests/data/test-symtab/kernel-4.14/single_variable.ko: Likewise.
10441	* tests/data/test-symtab/kernel-4.14/single_variable_gpl.ko: Likewise.
10442	* tests/data/test-symtab/kernel-4.19/Makefile: New test case makefile.
10443	* tests/data/test-symtab/kernel-4.19/empty.c: Likewise.
10444	* tests/data/test-symtab/kernel-4.19/one_of_each.c: Likewise.
10445	* tests/data/test-symtab/kernel-4.19/single_function.c: Likewise.
10446	* tests/data/test-symtab/kernel-4.19/single_function_gpl.c: Likewise.
10447	* tests/data/test-symtab/kernel-4.19/single_variable.c: Likewise.
10448	* tests/data/test-symtab/kernel-4.19/single_variable_gpl.c: Likewise.
10449	* tests/data/test-symtab/kernel-4.19/empty.ko: New test data.
10450	* tests/data/test-symtab/kernel-4.19/one_of_each.ko: Likewise.
10451	* tests/data/test-symtab/kernel-4.19/single_function.ko: Likewise.
10452	* tests/data/test-symtab/kernel-4.19/single_function_gpl.ko: Likewise.
10453	* tests/data/test-symtab/kernel-4.19/single_variable.ko: Likewise.
10454	* tests/data/test-symtab/kernel-4.19/single_variable_gpl.ko: Likewise.
10455	* tests/data/test-symtab/kernel-5.4/Makefile: New test case makefile.
10456	* tests/data/test-symtab/kernel-5.4/empty.c: Likewise.
10457	* tests/data/test-symtab/kernel-5.4/one_of_each.c: Likewise.
10458	* tests/data/test-symtab/kernel-5.4/single_function.c: Likewise.
10459	* tests/data/test-symtab/kernel-5.4/single_function_gpl.c: Likewise.
10460	* tests/data/test-symtab/kernel-5.4/single_variable.c: Likewise.
10461	* tests/data/test-symtab/kernel-5.4/single_variable_gpl.c: Likewise.
10462	* tests/data/test-symtab/kernel-5.4/empty.ko: New test data.
10463	* tests/data/test-symtab/kernel-5.4/one_of_each.ko: Likewise.
10464	* tests/data/test-symtab/kernel-5.4/single_function.ko: Likewise.
10465	* tests/data/test-symtab/kernel-5.4/single_function_gpl.ko: Likewise.
10466	* tests/data/test-symtab/kernel-5.4/single_variable.ko: Likewise.
10467	* tests/data/test-symtab/kernel-5.4/single_variable_gpl.ko: Likewise.
10468	* tests/data/test-symtab/kernel-5.6/Makefile: New test case makefile.
10469	* tests/data/test-symtab/kernel-5.6/empty.c: Likewise.
10470	* tests/data/test-symtab/kernel-5.6/one_of_each.c: Likewise.
10471	* tests/data/test-symtab/kernel-5.6/single_function.c: Likewise.
10472	* tests/data/test-symtab/kernel-5.6/single_function_gpl.c: Likewise.
10473	* tests/data/test-symtab/kernel-5.6/single_variable.c: Likewise.
10474	* tests/data/test-symtab/kernel-5.6/single_variable_gpl.c: Likewise.
10475	* tests/data/test-symtab/kernel-5.6/empty.ko: New test data.
10476	* tests/data/test-symtab/kernel-5.6/one_of_each.ko: Likewise.
10477	* tests/data/test-symtab/kernel-5.6/single_function.ko: Likewise.
10478	* tests/data/test-symtab/kernel-5.6/single_function_gpl.ko: Likewise.
10479	* tests/data/test-symtab/kernel-5.6/single_variable.ko: Likewise.
10480	* tests/data/test-symtab/kernel-5.6/single_variable_gpl.ko: Likewise.
10481	* tests/data/test-symtab/kernel/Makefile: New test case source file.
10482	* tests/data/test-symtab/kernel/empty.c: Likewise.
10483	* tests/data/test-symtab/kernel/one_of_each.c: Likewise.
10484	* tests/data/test-symtab/kernel/single_function.c: Likewise.
10485	* tests/data/test-symtab/kernel/single_function_gpl.c: Likewise.
10486	* tests/data/test-symtab/kernel/single_variable.c: Likewise.
10487	* tests/data/test-symtab/kernel/single_variable_gpl.c: Likewise.
10488	* tests/test-symtab.cc: New test case to test kernel symtabs.
10489
104902020-05-18  Matthias Maennich <maennich@google.com>
10491
10492	tests: Add symtab test suite
10493	* tests/Makefile.am: add new test runtestsymtab
10494	* tests/data/Makefile.am: add new test data for runtestsymtab
10495	* tests/data/test-symtab/Makefile: Add this to build the binaries
10496	below from their source code.
10497	* tests/data/test-symtab/basic/empty.c: New test case source.
10498	* tests/data/test-symtab/basic/link_against_me.c: Likewise.
10499	* tests/data/test-symtab/basic/no_debug_info.c: Likewise.
10500	* tests/data/test-symtab/basic/one_function_one_variable.c: Likewise.
10501	* tests/data/test-symtab/basic/one_function_one_variable_undefined.c: Likewise.
10502	* tests/data/test-symtab/basic/single_function.c: Likewise.
10503	* tests/data/test-symtab/basic/single_undefined_function.c: Likewise.
10504	* tests/data/test-symtab/basic/single_undefined_variable.c: Likewise.
10505	* tests/data/test-symtab/basic/single_variable.c: Likewise.
10506	* tests/data/test-symtab/basic/empty.so: New test data, built from
10507	the Makefile above.
10508	* tests/data/test-symtab/basic/link_against_me.so: Likewise.
10509	* tests/data/test-symtab/basic/no_debug_info.so: Likewise.
10510	* tests/data/test-symtab/basic/one_function_one_variable.so: Likewise.
10511	* tests/data/test-symtab/basic/one_function_one_variable_undefined.so: Likewise.
10512	* tests/data/test-symtab/basic/single_function.so: Likewise.
10513	* tests/data/test-symtab/basic/single_undefined_function.so: Likewise.
10514	* tests/data/test-symtab/basic/single_undefined_variable.so: Likewise.
10515	* tests/data/test-symtab/basic/single_variable.so: Likewise.
10516	* tests/test-symtab.cc: New test driver.
10517
105182020-05-19  Dodji Seketeli <dodji@redhat.com>
10519
10520	Bug 25989 - type_topo_comp doesn't meet irreflexive requirements
10521	* src/abg-ir.cc (type_topo_comp::operator()): In the comparison
10522	operator consider two equivalent empty-qualified types as being
10523	topologically equivalent.
10524
105252020-05-07  Dodji Seketeli <dodji@redhat.com>
10526
10527	Bug 25661 - Support data member replacement by anonymous data member
10528	* include/abg-comp-filter.h (has_data_member_replaced_by_anon_dm):
10529	Declare new function.
10530	* include/abg-comparison.h (changed_var_sptr)
10531	(changed_var_sptrs_type): Declare new typedefs.
10532	(HARMLESS_DATA_MEMBER_CHANGE_CATEGORY): Add a new enumerator to
10533	the diff_category enum.
10534	(EVERYTHING_CATEGORY): In the diff_category, adjust this
10535	enumerator to OR the new HARMLESS_DATA_MEMBER_CHANGE_CATEGORY into
10536	it.
10537	(SUPPRESSED_CATEGORY, PRIVATE_TYPE_CATEGORY)
10538	(SIZE_OR_OFFSET_CHANGE_CATEGORY, VIRTUAL_MEMBER_CHANGE_CATEGORY)
10539	(CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY)
10540	(FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY)
10541	(FN_RETURN_TYPE_CV_CHANGE_CATEGORY, VAR_TYPE_CV_CHANGE_CATEGORY)
10542	(VOID_PTR_TO_PTR_CHANGE_CATEGORY)
10543	(BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY): Adjust the value of these
10544	enumerators of the diff_category enum.
10545	(class_or_union_diff::{data_members_replaced_by_adms,
10546	ordered_data_members_replaced_by_adms}): Declare new member
10547	functions.
10548	* include/abg-fwd.h (var_decl_wptr): Declare new typedef.
10549	(get_next_data_member, get_first_non_anonymous_data_member)
10550	(find_data_member_from_anonymous_data_member)
10551	(get_absolute_data_member_offset): Declare new functions.
10552	* include/abg-ir.h (struct anonymous_dm_hash): Declare new type.
10553	(anonymous_data_member_sptr_set_type): Declare new typedef.
10554	(class decl_base): Befriend class class_or_union.
10555	(class dm_context_rel): Pimpl-ify this class.
10556	(dm_context_rel::{g,s}et_anonymous_data_member_types): Declare new
10557	member functions.
10558	(var_decl::get_anon_dm_reliable_name): Declare new member
10559	function.
10560	(class var_decl): Make get_absolute_data_member_offset,
10561	get_absolute_data_member_offset be friends of this.
10562	(class_or_union::maybe_fixup_members_of_anon_data_member): Declare
10563	new protected member function.
10564	* src/abg-comp-filter.cc (has_data_member_replaced_by_anon_dm):
10565	Define new function.
10566	(categorize_harmless_diff_node): Use the above.
10567	* src/abg-comparison-priv.h
10568	(class_or_union_diff::priv::{dms_replaced_by_adms_,
10569	changed_var_sptrs_type dms_replaced_by_adms_ordered_}): Add new
10570	data members.
10571	(data_member_comp::compare_data_members): Factorize this out of ...
10572	(data_member_comp::operator()(decl_base_sptr&, decl_base_sptr&)):
10573	... this.
10574	(data_member_comp::operator()(changed_var_sptr&,
10575	changed_var_sptr&)): Add new member function.
10576	(sort_changed_data_members): Declare ...
10577	* src/abg-comparison.cc (sort_changed_data_members): ... new
10578	function.
10579	(get_default_harmless_categories_bitmap): Adjust to take the new
10580	abigail::comparison::HARMLESS_DATA_MEMBER_CHANGE_CATEGORY into
10581	account.
10582	(operator<<(ostream& o, diff_category c)): Likewise.
10583	(class_or_union_diff::ensure_lookup_tables_populated): Handle
10584	Handle the insertion of anonymous data members to replace existing
10585	data members.
10586	(class_or_union_diff::{data_members_replaced_by_adms,
10587	ordered_data_members_replaced_by_adms}): Define new accessors.
10588	(suppression_categorization_visitor::visit_end): Propagate the
10589	SUPPRESSION_CATEGORIZATION_VISITOR from changes to the type of the
10590	data member if the data member doesn't have real local changes.
10591	* src/abg-default-reporter.cc (default_reporter::report): Report
10592	about anonymous data members that replace data members.
10593	* src/abg-ir.cc (struct dm_context_rel::priv): Define new data
10594	structure.
10595	(dm_context_rel::{dm_context_rel, get_is_laid_out,
10596	set_is_laid_out, get_offset_in_bits, set_offset_in_bits,
10597	operator==, operator!=, get_anonymous_data_member,
10598	set_anonymous_data_member}): Define the member functions here as
10599	they are not inline anymore.
10600	(class_or_union::maybe_fixup_members_of_anon_data_member): Define
10601	new member function.
10602	(class_or_union::add_data_member): Use it.
10603	(get_first_non_anonymous_data_member, get_next_data_member)
10604	(get_absolute_data_member_offset)
10605	(find_data_member_from_anonymous_data_member): Define new
10606	functions.
10607	* src/abg-reporter-priv.h
10608	(maybe_report_data_members_replaced_by_anon_dm): Declare ...
10609	* src/abg-reporter-priv.cc
10610	(maybe_report_data_members_replaced_by_anon_dm): ... new function.
10611	* src/abg-leaf-reporter.cc (leaf_reporter::report): Report data
10612	members replaced by anonymous data members.
10613	* tests/data/test-diff-filter/test-PR25661-[1-6]-report-[1-4].txt: New
10614	test reference outputs.
10615	* tests/data/test-diff-filter/test-PR25661-[1-6]-v{0,1}.c: Test
10616	source code files.
10617	* tests/data/test-diff-filter/test-PR25661-[1-6]-v{0,1}.o: Test
10618	binary input files.
10619	* tests/data/Makefile.am: Add the new test files above to source
10620	distribution.
10621	* tests/test-diff-filter.cc (in_out_specs): Add the binary test
10622	inputs above to this test harness.
10623	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
10624	Adjust.
10625
106262020-05-07  Dodji Seketeli <dodji@redhat.com>
10627
10628	dwarf-reader: support several anonymous data members in a given class
10629	* include/abg-ir.h (class_or_union::find_anonymous_data_member):
10630	Declare a new member function.
10631	(class_or_union::find_data_member): Declare a new overload.
10632	(var_decl::get_anon_dm_reliable_name): Declare new member
10633	function.
10634	* src/abg-ir.cc (var_decl::get_pretty_representation): Make this
10635	work on a var_decl is going to be used to represent an anonymous
10636	data member even before the var_decl has been added to its finale
10637	scope.  This is useful to make class_or_union::find_data_member
10638	work on a var_decl that is to be used as an anonymous data member.
10639	(var_decl::get_anon_dm_reliable_name): Define new member function.
10640	(class_or_union::find_data_member): In the existing overload that
10641	takes a string, look for the named data member inside the
10642	anonymous data members.  Define a new overload that takes a
10643	var_decl_sptr, to look for anonymous data members.
10644	(class_or_union::find_anonymous_data_member): Define a new member
10645	function.
10646	(lookup_data_member): Use the existing
10647	class_or_union::find_data_member.
10648	* src/abg-reader.cc: (build_class_decl): Use the full anonymous
10649	variable for lookup, rather than its name which is empty and will
10650	thus give false positives.
10651	* src/abg-dwarf-reader.cc (add_or_update_class_type): Likewise.
10652	* src/abg-comparison.cc
10653	(class_or_union_diff::ensure_lookup_tables_populated): Name
10654	anonymous data members properly - as opposed to wrongly using
10655	their empty name.
10656	* src/abg-reporter-priv.cc (represent): In the overload for
10657	var_diff_sptr, make sure that changes to the /type/ of a variable
10658	declaration are always reported.
10659	* tests/data/test-abidiff-exit/test-member-size-report0.txt:
10660	Adjust as we now emit more detailed changes about anonymous data
10661	members.
10662	* tests/data/test-abidiff-exit/test-member-size-report1.txt:
10663	Likewise.
10664	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Adjust
10665	to reflect the fact that a class can now have several anonymous
10666	data members.
10667	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
10668	Likewise.
10669	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
10670	Likewise.
10671	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
10672	Likewise.
10673	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
10674	Likewise.
10675
106762020-05-07  Dodji Seketeli <dodji@redhat.com>
10677
10678	{default,leaf}-reporter: group data members changes reports together
10679	* include/abg-comparison.h
10680	(class_or_union_diff::{sorted_changed_data_members,
10681	count_filtered_changed_data_members,
10682	sorted_subtype_changed_data_members,
10683	count_filtered_subtype_changed_data_members}): Declare ...
10684	* src/abg-comparison.cc
10685	(class_or_union_diff::{sorted_changed_data_members,
10686	count_filtered_changed_data_members,
10687	sorted_subtype_changed_data_members,
10688	count_filtered_subtype_changed_data_members}): ... accessors for
10689	existing private data members.
10690	* src/abg-default-reporter.cc (default_reporter::report): In the
10691	class_or_union_diff& overload, group the reporting of the changes
10692	to data member sub-types with the replacement of data members.
10693	These are just data member changes after all.  Use the newly
10694	declared accessors for better measure.
10695	* src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise.
10696	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt: Adjust.
10697	* src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise.
10698	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
10699	Likewise.
10700
107012020-05-18  Dodji Seketeli <dodji@redhat.com>
10702
10703	Add -g back to ABIGAIL_DEVEL
10704	* configure.ac: Don't forget to set -g when ABIGAIL_DEVEL is set.
10705
107062020-05-15  Giuliano Procida <gprocida@google.com>
10707
10708	clang-format: set continuation indentation to 2
10709	* .clang-format: Set ContinuationIndentWidth to 2.
10710
107112020-05-15  Matthias Maennich <maennich@google.com>
10712
10713	configure: add more diagnostic options when ABIGAIL_DEVEL is set
10714	* configure.ac: add -D_FORTIFY_SOURCE=2 and -D_GLIBCXX_DEBUG
10715	compilation defines if ABIGAIL_DEVEL is set.  Note that with GCC 4.8.5,
10716	-D_FORTIFY_SOURCE=2 requires options to be set.  So I am setting
10717	the optimization level to -Og.
10718	* src/abg-dwarf-reader.cc (read_context::{compute_canonical_die,
10719	get_or_compute_canonical_die, associate_die_to_decl,
10720	set_canonical_die_offset, schedule_type_for_late_canonicalization,
10721	compare_dies}, get_scope_for_die, add_or_update_union_type)
10722	(read_debug_info_into_corpus, build_ir_node_from_die): Initialize
10723	the 'source' variable.
10724	* tests/test-diff-filter.cc (main): Check the return value of the
10725	system function.
10726	* tests/test-diff-pkg.cc (main): Likewise.
10727	* tests/test-read-write.cc (main): Likewise.
10728
107292020-05-15  Matthias Maennich <maennich@google.com>
10730
10731	configure: add ABIGAIL_DEBUG options
10732	* configure.ac: add ABIGAIL_DEBUG environment variable for
10733	improved debugging capabilities
10734
107352020-05-05  Giuliano Procida <gprocida@google.com>
10736
10737	Tidy get_pretty_representation qualified_name.
10738	* include/abg-ir.h (type_decl::get_pretty_representation)
10739	Change default for qualified_name parameter to true.
10740
107412020-05-13  Dodji Seketeli <dodji@redhat.com>
10742
10743	Bug 25986 - Wrong name of function type used in change report
10744	* src/abg-ir.cc (function_type::get_cached_name): Don't cache
10745	names for non-canonicalized types.
10746	* tests/data/test-abidiff-exit/test-fun-param-report.txt: Add
10747	reference output for new test.
10748	* tests/data/test-abidiff-exit/test-fun-param-v{0,1}.abi: Add new test
10749	input files.
10750	* tests/data/test-abidiff-exit/test-fun-param-v{0,1}.c: Add source
10751	files for the above.
10752	* tests/data/test-abidiff-exit/test-fun-param-v{0,1}.o: Add
10753	binaries for the above.
10754
107552020-05-11  Mark Wielaard <mark@klomp.org>
10756
10757	Don't iterate before the start of a RandomAccessOutputIterator.
10758	* include/abg-diff-utils.h (compute_diff): Put brackets around
10759	p[ux].[xy]() + 1 calculation.
10760
107612020-05-12  Giuliano Procida <gprocida@google.com>
10762
10763	doc: Fix sufficient suppression property lists.
10764	* doc/manuals/libabigail-concepts.rst: Add missing
10765	sufficient properties for suppress_file, suppress_function and
10766	suppress_variable. Use consistent language about what will
10767	happen when no property in the list in provided.
10768
107692020-05-11  Matthias Maennich <maennich@google.com>
10770
10771	cxx-compat: add test suite for cxx-compat
10772	* tests/Makefile.am: Add new test case runtestcxxcompat.
10773	* tests/test-cxx-compat.cc: New test source file.
10774	Reviewed-by: Giuliano Procida <gprocida@google.com>
10775
107762020-05-11  Matthias Maennich <maennich@google.com>
10777
10778	dwarf-reader: read_context: drop some unused accessor methods
10779	* src/abg-dwarf-reader.cc (read_context::fun_syms_sptr): Delete method.
10780	(read_context::fun_syms): Likewise.
10781	(read_context::var_syms_sptr): Likewise.
10782	(read_context::var_syms): Likewise.
10783	(read_context::undefined_fun_syms_sptr): Likewise.
10784	(read_context::undefined_fun_syms): Likewise. Both overloads.
10785	(read_context::undefined_var_syms_sptr): Likewise.
10786	(read_context::undefined_var_syms): Likewise. Both overloads.
10787	Reviewed-by: Giuliano Procida <gprocida@google.com>
10788
107892020-05-11  Matthias Maennich <maennich@google.com>
10790
10791	tests/.gitignore: ignore all files starting with runtest*
10792	* tests/.gitignore: gitignore all files named runtest*
10793	Reviewed-by: Giuliano Procida <gprocida@google.com>
10794
107952020-05-11  Matthias Maennich <maennich@google.com>
10796
10797	configure: set -Wno-error-overloaded-virtual for clang builds
10798	* configure.ac: set -Wno-error-overloaded-virtual for clang++
10799
108002020-05-05  Giuliano Procida <gprocida@google.com>
10801
10802	Let std::unordered_map::operator[] insert keys.
10803	* src/abg-reader.cc (read_context::key_type_decl): Rely on
10804	std::unordered_map::operator[] to create map entries if they
10805	are missing. (build_elf_symbol_db): Ditto.
10806
108072020-05-05  Giuliano Procida <gprocida@google.com>
10808
10809	abg-reader.cc: Remove key_replacement_type_map.
10810	* src/abg-reader.cc (key_replacement_type_map): Drop unused
10811	function.
10812
108132020-05-04  Giuliano Procida <gprocida@google.com>
10814
10815	Refactor read_parameter_spec_from_string logic.
10816	* src/abg-suppression.cc (read_parameter_spec_from_string):
10817	Use separate string and regex variables to simplify the
10818	creation of returned parameter specification.
10819	Reviewed-by: Matthias Maennich <maennich@google.com>
10820
108212020-05-04  Giuliano Procida <gprocida@google.com>
10822
10823	Use regex::match wrapper instead of regexec.
10824	* src/abg-corpus-priv.h: Mechanically substitute use of
10825	regexec with regex::match wrapper.
10826	* src/abg-suppression-priv.h: Ditto.
10827	* src/abg-suppression.cc: Ditto.
10828	Reviewed-by: Matthias Maennich <maennich@google.com>
10829
108302020-05-12  Giuliano Procida <gprocida@google.com>
10831
10832	Tidy checks for sufficient suppression properties.
10833	* src/abg-suppression.cc (check_sufficient_props): New helper
10834	function to check for sufficient properties in a section.
10835	(read_type_suppression): Replace conditional logic with call
10836	to check_sufficient_props.
10837	(read_function_suppression): Ditto.
10838	(read_variable_suppression): Ditto.
10839	(read_file_suppression): Ditto.
10840	* tests/data/test-diff-suppr/test15-suppr-added-fn-4.suppr:
10841	Explain why the suppression will be ignored.
10842	* tests/data/test-diff-suppr/test16-suppr-removed-fn-4.suppr:
10843	Ditto.
10844	* tests/data/test-diff-suppr/test17-suppr-added-var-4.suppr:
10845	Ditto.
10846	* tests/data/test-diff-suppr/test18-suppr-removed-var-4.suppr:
10847	Ditto.
10848
108492020-05-12  Dodji Seketeli <dodji@redhat.com>
10850
10851	Bug 25977 - runtestabidiffexit regression on EL7
10852	* abg-comparison.cc:
10853	(suppression_categorization_visitor::visit_end): Don't suppress
10854	the entire class of equivalence of a function diff node if that
10855	function diff node itself was not suppressed.
10856
108572020-05-04  Giuliano Procida <gprocida@google.com>
10858
10859	Use regex::compile wrapper instead of regcomp.
10860	* src/abg-corpus-priv.h: Mechanically substitute use of
10861	regcomp with regex::compile wrapper.
10862	* src/abg-suppression-priv.h: Ditto.
10863	There are no behavioural changes.
10864	Reviewed-by: Matthias Maennich <maennich@google.com>
10865
108662020-05-04  Giuliano Procida <gprocida@google.com>
10867
10868	Add POSIX regex wrapper functions.
10869	* include/abg-regex.h (compile): Declare new function.
10870	(match): Declare new function.
10871	* src/abg-regex.cc (compile): Add new function wrapping
10872	regcomp. (match): Add new function wrapping regexec.
10873	Reviewed-by: Matthias Maennich <maennich@google.com>
10874
108752020-05-04  Giuliano Procida <gprocida@google.com>
10876
10877	abg-suppression.cc: More uniform variable naming.
10878	* src/abg-suppression.cc (read_type_suppression): Rename "nil"
10879	variable to "result" and reset it instead of introducing
10880	"suppr" later on. (read_function_suppression): Rename "nil"
10881	variable to "result" and reset it instead of introducing
10882	"result" later on.
10883	Reviewed-by: Matthias Maennich <maennich@google.com>
10884
108852020-05-04  Giuliano Procida <gprocida@google.com>
10886
10887	Escape names used in symbol whitelisting regex.
10888	* include/regex.h (escape): New string reference holder
10889	class. (operator<<): Declaration of std::ostream,
10890	regex::escape overload.
10891	* include/regex.cc (operator<<): New std::ostream,
10892	regex::escape overload that outputs regex-escaped strings.
10893	* src/abg-tools-utils.cc
10894	(gen_suppr_spec_from_kernel_abi_whitelists): Make sure any
10895	special regex characters in symbol names are escaped.
10896	Reviewed-by: Matthias Maennich <maennich@google.com>
10897
108982020-05-04  Giuliano Procida <gprocida@google.com>
10899
10900	Document ^_^ regex in generate_from_strings.
10901	* src/abg-regex.cc (generate_from_strings): Document ^_^
10902	regex.
10903
109042020-05-04  Giuliano Procida <gprocida@google.com>
10905
10906	Tidy #includes in a few files.
10907	* src/abg-corpus-priv.h: Separate and sort #include
10908	directives.
10909	* src/abg-corpus.cc: Ditto.
10910	* src/abg-regex.cc: Ditto.
10911	* src/abg-suppression-priv.h: Ditto.
10912	* src/abg-suppression.cc: Ditto.
10913
109142020-05-01  Giuliano Procida <gprocida@google.com>
10915
10916	Hoist some common expressions evaluating offsets.
10917	* src/abg-suppression.cc (type_suppression::suppresses_diff):
10918	Hoist some constant expressions out of loops.
10919	Reviewed-by: Matthias Maennich <maennich@google.com>
10920
109212020-05-01  Giuliano Procida <gprocida@google.com>
10922
10923	Make set_drops_artifact_from_ir non-const.
10924	* include/abg-suppression.h
10925	(suppression_base::set_drops_artifact_from_ir):
10926	Drop const qualifier.
10927	* src/abg-suppression.cc
10928	(suppression_base::set_drops_artifact_from_ir):
10929	Drop const qualifier.
10930	Reviewed-by: Matthias Maennich <maennich@google.com>
10931
109322020-05-01  Giuliano Procida <gprocida@google.com>
10933
10934	Eliminate redundant conditional operators.
10935	* src/abg-corpus.cc (corpus::priv::build_unreferenced_symbols_tables):
10936	Eliminate redundant conditional operator.
10937	* src/abg-dwarf-reader.cc (build_reference_type): Ditto.
10938	* src/abg-reader.cc (read_static): Ditto.
10939	(read_is_artificial): Ditto. (build_function_parameter):
10940	Ditto. (build_function_decl): Ditto.
10941	(build_qualified_type_decl): Ditto.
10942	(build_reference_type_def): Ditto.
10943	Reviewed-by: Matthias Maennich <maennich@google.com>
10944
109452020-05-01  Giuliano Procida <gprocida@google.com>
10946
10947	Remove stray semicolons.
10948	* include/abg-diff-utils.h (display_edit_script): Remove
10949	redundant semicolon.
10950	* include/abg-fwd.h (lookup_basic_type): Ditto.
10951	* src/abg-comparison.cc (mark_diff_as_visited):
10952	Ditto.	(array_diff::has_local_changes): Ditto.
10953	(class_diff::ensure_lookup_tables_populated): Ditto.
10954	* src/abg-corpus.cc
10955	(corpus::priv::build_unreferenced_symbols_tables): Ditto.
10956	* src/abg-default-reporter.cc (default_reporter::report):
10957	Ditto.
10958	* src/abg-dwarf-reader.cc (finish_member_function_reading):
10959	Ditto.
10960	* src/abg-ir.cc (is_compatible_with_class_type): Ditto.
10961	(enum_type_decl::enumerator::set_name): Ditto.
10962	* src/abg-reader.cc (read_corpus_from_input): Ditto.
10963	(build_function_type): Ditto.
10964	* src/abg-suppression.cc (type_suppression::suppresses_type):
10965	Ditto.
10966	Reviewed-by: Matthias Maennich <maennich@google.com>
10967
109682020-05-01  Giuliano Procida <gprocida@google.com>
10969
10970	Remove excess whitespace.
10971	* src/abg-suppression.cc: Eliminate double blank lines.
10972	(read_parameter_spec_from_string): Eliminate space between
10973	++ operator and its operand.
10974	Reviewed-by: Matthias Maennich <maennich@google.com>
10975
109762020-01-12  Matthias Maennich <maennich@google.com>
10977
10978	corpus/writer: sort emitted translation units by path name
10979	* include/abg-fwd.h: remove translation_units fwd declaration.
10980	* include/abg-ir.h (struct shared_translation_unit_comparator):
10981	Define new class.
10982	(translation_units): Define new typedef.
10983	* src/abg-corpus.cc (corpus::add): do checked insert into the
10984	translation_units set (rather than vector::push_back)
10985	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust test data.
10986	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
10987	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
10988	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
10989	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
10990	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
10991	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
10992	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
10993
109942020-04-29  Matthias Maennich <maennich@google.com>
10995
10996	tests: reorder test execution to optimize 'make check' runtime
10997	* tests/Makefile.am(TESTS): split up in expensive and non
10998	expensive tests, sort the expensive ones by runime, the cheap
10999	ones alphabetically
11000
110012020-04-29  Matthias Maennich <maennich@google.com>
11002
11003	test-types-stability: parallelize test case alternatives
11004	* tests/test-types-stability.cc (test_task): add field no_default_sizes
11005	(test_task::perform) Switch on the new flag to test a different
11006	behaviour.
11007	(main): Schedule an additional test case to test with the new flag.
11008	Cc: Mark Wielaard <mark@klomp.org>
11009
110102020-05-04  Dodji Seketeli <dodji@redhat.com>
11011
11012	Fix compilation with g++ 4.8.5 on el7
11013	* include/abg-libxml-utils.h (build_sptr<xmlTextReader>): Wrap
11014	this specialization in the namespace sptr_utils and do away with
11015	the sptr_utils qualifier.
11016	* include/abg-regex.h (build_sptr<regex_t>): Likewise.
11017
110182020-04-24  Giuliano Procida <gprocida@google.com>
11019
11020	Simplify generation of symbol whitelist regex.
11021	* include/abg-regex.h (generate_from_strings): Declare new
11022	function to build a regex from some strings, representing a
11023	membership test.
11024	* src/abg-regex.cc (generate_from_strings): Implement new
11025	function to build a regex from some strings, representing a
11026	membership test, in a straightfoward fashion.
11027	* src/abg-tools-utils.cc
11028	(gen_suppr_spec_from_kernel_abi_whitelists): Replace
11029	regex-building code with a call to generate_from_strings.
11030	* tests/test-kmi-whitelist.cc: Update regexes in test.
11031
110322020-04-24  Giuliano Procida <gprocida@google.com>
11033
11034	Move libxml bits out of abg-sptr-utils.h.
11035	* include/abg-sptr-utils.h: Remove reader_sptr and
11036	xml_char_sptr typedefs, from namespace
11037	sptr_utils. (build_sptr): Remove corresponding template
11038	function specialisations for these types.
11039	* include/abg-libxml-utils.h: Add reader_sptr and
11040	xml_char_sptr typedefs, to namespace xml. (build_sptr): Add
11041	corresponding template function specialisations for these
11042	types.
11043
110442020-04-24  Giuliano Procida <gprocida@google.com>
11045
11046	Move regex definitions to own files.
11047	* include/Makefile.am: Add abg-regex.h.
11048	* src/Makefile.am: Remove abg-sptr-utils.h, add abg-regex.cc
11049	* include/abg-sptr-utils.h (regex_t_sptr): Remove this
11050	typedef, from namespace abigail::sptr_utils.
11051	(regex_t_deleter): Remove this struct, from namespace
11052	abigail::sptr_utils. (build_sptr): Remove these template
11053	specialisations, in duplicate, for regex_t_sptr.
11054	* include/abg-regex.h: New file, introduces namespace
11055	abigail::regex. (regex_t_sptr): Add this typedef, to namespace
11056	abigail::regex. (regex_t_deleter): Add this struct, to
11057	namespace abigail::regex. (build_sptr): Add these template
11058	specialisations for regex_t_sptr
11059	* src/abg-sptr-utils.cc: Remove this file.
11060	* src/abg-regex.cc: Add new file with contents effectively
11061	the same as abg-sptr-utils.cc.
11062	* src/abg-corpus-priv.h: Update regex_t_sptr namespace
11063	qualification.
11064	* src/abg-corpus.cc: Ditto.
11065	* src/abg-suppression-priv.h: Ditto.
11066	* src/abg-suppression.cc: Ditto.
11067
110682020-04-27  Mark Wielaard <mark@klomp.org>
11069
11070	Add --no-write-default-sizes option.
11071	* doc/manuals/abidw.rst: Document --no-write-default-sizes.
11072	* include/abg-writer.h (set_write_default_sizes): New function
11073	declaration.
11074	(set_common_options): Call set_write_default_sizes.
11075	* src/abg-reader.cc (build_function_decl): Get default size.
11076	(build_pointer_type_def): Likewise.
11077	(build_reference_type_def): Likewise.
11078	(build_function_type): Likewise.
11079	* src/abg-writer.cc (write_context): Add m_write_default_sizes
11080	bool.
11081	(get_write_default_sizes): New method.
11082	(set_write_default_sizes): Likewise.
11083	(write_size_and_alignment): Add default size and alignment
11084	parameters.
11085	(set_write_default_sizes): New function.
11086	(write_type_decl): Set default size and alignment.
11087	(write_pointer_type_def): Likewise.
11088	(write_reference_type_def): Likewise.
11089	(write_function_decl): Likewise.
11090	(write_function_type): Likewise.
11091	(write_class_decl_opening_tag): Likewise.
11092	(write_union_decl_opening_tag): Likewise.
11093	* tests/test-types-stability.cc (perform): Also test --abidiff
11094	with --no-write-default-sizes.
11095	* tools/abidw.cc (option): Add default_sizes bool.
11096	(parse_command_line): Parse --no-write-default-sizes.
11097	(display_usage): Add doc string for --no-write-default-sizes.
11098
110992020-04-26  Mark Wielaard <mark@klomp.org>
11100
11101	Rename read_elf_symbol_binding to read_elf_symbol_visibility.
11102	* src/abg-reader.cc (read_elf_symbol_binding): Renamed to...
11103	(read_elf_symbol_visibility): ...this.
11104
111052020-04-22  Giuliano Procida <gprocida@google.com>
11106
11107	abidiff: Omit declaration-only type size 0 diffs.
11108	* src/abg-reporter-priv.cc (report_size_and_alignment_changes):
11109	Filter out declaration-only / defined type size changes
11110	unconditionally.
11111	* tests/data/test-abidiff-exit/test-decl-struct-report.txt:
11112	Update test.
11113
111142020-04-22  Giuliano Procida <gprocida@google.com>
11115
11116	abidiff: Blank line after declaration-only diff.
11117	* src/abg-default-reporter.cc (default_reporter::report): In
11118	the class_or_union_diff overload, emit a new line at the end
11119	of the declaration-only reporting path.
11120	* tests/data/test-abidiff-exit/test-decl-struct-report.txt:
11121	Add missing blank lines.
11122
111232020-04-22  Giuliano Procida <gprocida@google.com>
11124
11125	Add tests for declaration-only struct diffs.
11126	* tests/data/Makefile.am: Add new test case files.
11127	* tests/data/test-abidiff-exit/test-decl-struct-report.txt:
11128	New test case generating "declaration-only" output.
11129	* tests/data/test-abidiff-exit/test-decl-struct-v0.c: Ditto.
11130	* tests/data/test-abidiff-exit/test-decl-struct-v0.o: Ditto.
11131	* tests/data/test-abidiff-exit/test-decl-struct-v1.c: Ditto.
11132	* tests/data/test-abidiff-exit/test-decl-struct-v1.o: Ditto.
11133	* tests/test-abidiff-exit.cc: Run new test case.
11134
111352020-04-24  Mark Wielaard <mark@klomp.org>
11136
11137	Add --no-elf-needed option to drop DT_NEEDED list from corpus.
11138	* doc/manuals/abidw.rst: Document --no-elf-needed.
11139	* include/abg-writer.h (set_write_elf_needed): New function.
11140	(set_common_options): Call it.
11141	* src/abg-writer.cc (write_context::m_write_elf_needed): New data
11142	member.
11143	(write_context::{g,s}et_write_elf_needed): Add new accessors.
11144	(set_write_elf_needed): New function.
11145	(write_context::write_corpus): Check write_elf_needed.
11146	* tools/abidw.cc (options): Add write_elf_needed bool.
11147	(display_usage): Describe --no-elf-needed.
11148	(parse_command_line): Parse --no-elf-needed.
11149
111502020-04-21  Mark Wielaard <mark@klomp.org>
11151
11152	Add no-parameter-names to drop function parameter names.
11153	* doc/manuals/abidw.rst: Add documentation for --no-parameter-names.
11154	* include/abg-writer.h (set_write_parameter_names): New function.
11155	(set_write_parameter_names): Call it.
11156	* src/abg-writer.cc (write_context): Add m_write_parameter_names
11157	bool, get_write_parameter_names and set_write_parameter_names
11158	functions.
11159	(write_context::write_function_decl): Check write_parameter_names.
11160	* tools/abidw.cc (options): Add write_parameter_names.
11161	(display_usage): Describe --no-parameter-names.
11162	(parse_command_line): Parse --no-parameter-names.
11163
111642020-04-24  Dodji Seketeli <dodji@redhat.com>
11165
11166	abipkgdiff: Fix race condition while using private types suppr specs
11167	* tools/abipkgdiff.cc (compare_args::private_types_suppr{1,2}):
11168	Make these data member *not* be a reference anymore.
11169	(maybe_create_private_types_suppressions): Rename this into ...
11170	(create_private_types_suppressions): ... this.  Also, make this
11171	function return a copy of the vector of suppression specifications
11172	for private types created.
11173	(compare_prepared_userspace_packages): Use the new
11174	create_private_types_suppressions to create a copy of private
11175	types suppression specifications, rather than sharing it from
11176	package::private_types_suppressions_.
11177	(extract_package_and_map_its_content): Adjust to avoid creating
11178	the shared suppression specifications for private types.
11179	(package::private_types_suppressions_): Remove this data member
11180	that was holding the shared suppressions for private types.
11181	(package::private_types_suppressions): Remove these accessors.
11182
111832020-04-22  Giuliano Procida <gprocida@google.com>
11184
11185	test24-soname-suppr*txt: Fix suppression syntax.
11186	* tests/data/test-diff-suppr/test24-soname-suppr-0.txt: Fix
11187	typo, change "reached_through" to "accessed_through".
11188	* tests/data/test-diff-suppr/test24-soname-suppr-1.txt: Ditto.
11189	* tests/data/test-diff-suppr/test24-soname-suppr-2.txt: Ditto.
11190	* tests/data/test-diff-suppr/test24-soname-suppr-3.txt: Ditto.
11191	* tests/data/test-diff-suppr/test24-soname-suppr-4.txt: Ditto.
11192
111932020-04-20  Giuliano Procida <gprocida@google.com>
11194
11195	test35-leaf.suppr: fix regex typo.
11196	* tests/data/test-diff-suppr/test35-leaf.suppr: Fix typo in
11197	regex, "*." -> ".*".
11198
111992020-04-21  Matthias Maennich <maennich@google.com>
11200
11201	abg-elf-helpers: migrate maybe_adjust_et_rel_sym_addr_to_abs_addr
11202	* src/abg-dwarf-reader.cc
11203	(maybe_adjust_et_rel_sym_addr_to_abs_addr)
11204	(drop the wrapped overload completely): Move out functions.
11205	* src/abg-elf-helpers.cc
11206	(maybe_adjust_et_rel_sym_addr_to_abs_addr): New function.
11207	* src/abg-elf-helpers.h
11208	(maybe_adjust_et_rel_sym_addr_to_abs_addr): New function
11209	declaration.
11210	Reviewed-by: Giuliano Procida <gprocida@google.com>
11211
112122020-04-21  Matthias Maennich <maennich@google.com>
11213
11214	abg-elf-helpers: migrate more elf helpers (architecture specific helpers)
11215	* src/abg-dwarf-reader.cc (elf_architecture_is_ppc64): Move
11216	function out and adjust callers to call the migrated
11217	functions.
11218	(elf_architecture_is_big_endian): Likewise.
11219	(architecture_word_size): Likewise.
11220	(current_elf_file_is_executable): Likewise.
11221	(current_elf_file_is_dso): Likewise.
11222	* src/abg-elf-helpers.cc (architecture_is_ppc64): Add new function.
11223	(architecture_is_big_endian): Likewise.
11224	(get_architecture_word_size): Likewise.
11225	(is_executable): Likewise.
11226	(is_dso): Likewise.
11227	* src/abg-elf-helpers.h (architecture_is_ppc64): Add new declaration.
11228	(architecture_is_big_endian): Likewise.
11229	(get_architecture_word_size): Likewise.
11230	(is_executable): Likewise.
11231	(is_dso): Likewise.
11232	Reviewed-by: Giuliano Procida <gprocida@google.com>
11233
112342020-04-21  Matthias Maennich <maennich@google.com>
11235
11236	abg-dwarf-reader: migrate more ELF helpers to elf-helpers
11237	* src/abg-dwarf-reader.cc (read_context::{opd_section_,
11238	ksymtab_section_, ksymtab_reloc_section_, ksymtab_gpl_section_,
11239	ksymtab_gpl_reloc_section_, ksymtab_strings_section_}): Make these
11240	data members mutable as they are set by their getter member
11241	functions, as an implementation detail.
11242	(read_context::find_symbol_table_section):
11243	adjust to new interface of elf_helpers::find_symbol_table_section.
11244	(find_opd_section): use elf_helpers::find_opd_section for lookup.
11245	(find_ksymtab_section): use elf_helpers::find_ksymtab_section.
11246	(find_ksymtab_gpl_section): use elf_helpers::find_ksymtab_gpl_section.
11247	(find_relocation_section): Move out function.
11248	(get_binary_load_address): Move out function.
11249	(find_ksymtab_reloc_section): use elf_helpers::find_relocation_section
11250	(find_ksymtab_gpl_reloc_section): use
11251	elf_helpers::find_relocation_section
11252	* src/elf-helpers.cc (find_symbol_table_section): change
11253	interface to match other find_*_section functions.
11254	(find_symbol_table_section_index): Adjust for the new interface of
11255	find_symbol_table_section.
11256	(find_opd_section): New function.
11257	(find_ksymtab_section): New function.
11258	(find_ksymtab_gpl_section): New function.
11259	(find_relocation_section): New function.
11260	(get_binary_load_address): New function.
11261	* src/elf-helpers.h (find_symbol_table_section): Change declaration.
11262	(find_opd_section): New function declaration.
11263	(find_ksymtab_section): New function declaration.
11264	(find_ksymtab_gpl_section): New function declaration.
11265	(find_relocation_section): New function declaration.
11266	(get_binary_load_address): New function declaration.
11267
112682020-04-21  Matthias Maennich <maennich@google.com>
11269
11270	abg-elf-helpers: consolidate the is_linux_kernel* helpers
11271	* src/abg-dwarf-reader.cc
11272	(read_context::function_symbol_is_exported): use is_linux_kernel
11273	from elf_helpers.
11274	(read_context::variable_is_exported): Likewise.
11275	(read_context::get_symtab_format): Likewise.
11276	(read_context::load_symbol_maps): Likewise.
11277	(read_debug_info_into_corpus): Likewise.
11278	(read_context::is_linux_kernel_binary): Drop function.
11279	(read_context::is_linux_kernel_module): Drop function.
11280	* src/abg-elf-helpers.cc (binary_is_linux_kernel): rename to
11281	is_linux_kernel
11282	(binary_is_linux_kernel_module): rename to is_linux_kernel_module
11283	(find_ksymtab_strings_section): Adjust to function renames.
11284	* src/abg-elf-helpers.h (binary_is_linux_kernel): rename to
11285	is_linux_kernel
11286	(binary_is_linux_kernel_module): rename to is_linux_kernel_module
11287	Reviewed-by: Giuliano Procida <gprocida@google.com>
11288
112892020-04-21  Matthias Maennich <maennich@google.com>
11290
11291	abg-elf-helpers: move some kernel helpers from abg-dwarf-reader
11292	* abg-dwarf-reader.cc (binary_is_linux_kernel): Move function out.
11293	(binary_is_linux_kernel_module): Likewise.
11294	(find_ksymtab_strings_section): Likewise.
11295	* abg-elf-helpers.cc (binary_is_linux_kernel): Move function in.
11296	(binary_is_linux_kernel_module): Likewise.
11297	(find_ksymtab_strings_section): Likewise.
11298	* abg-elf-helpers.h (binary_is_linux_kernel): Add declaration.
11299	(binary_is_linux_kernel_module): Likewise.
11300	(find_ksymtab_strings_section): Likewise.
11301	Reviewed-by: Giuliano Procida <gprocida@google.com>
11302
113032020-04-21  Matthias Maennich <maennich@google.com>
11304
11305	abg-elf-helpers: move some versioning helpers from abg-dwarf-reader
11306	* abg-dwarf-reader.cc (get_symbol_versionning_sections): Move function out.
11307	(get_version_definition_for_versym): Likewise.
11308	(get_version_needed_for_versym): Likewise.
11309	(get_version_for_symbol): Likewise.
11310	* abg-elf-helpers.cc (get_symbol_versionning_sections): Move function in.
11311	(get_version_definition_for_versym): Likewise.
11312	(get_version_needed_for_versym): Likewise.
11313	(get_version_for_symbol): Likewise.
11314	* abg-elf-helpers.h (get_symbol_versionning_sections): Add declaration.
11315	(get_version_definition_for_versym): Likewise.
11316	(get_version_needed_for_versym): Likewise.
11317	(get_version_for_symbol): Likewise.
11318	Reviewed-by: Giuliano Procida <gprocida@google.com>
11319
113202020-04-21  Matthias Maennich <maennich@google.com>
11321
11322	abg-elf-helpers: move some elf helpers from abg-dwarf-reader
11323	* abg-dwarf-reader.cc (stt_to_elf_symbol_type): Move function out.
11324	(stb_to_elf_symbol_binding): Likewise.
11325	(stv_to_elf_symbol_visibility): Likewise.
11326	(e_machine_to_string): Likewise.
11327	(find_section): Likewise.
11328	(find_symbol_table_section): Likewise.
11329	(find_symbol_table_section_index): Likewise.
11330	(enum hash_table_kind): Likewise.
11331	(find_hash_table_section_index): Likewise.
11332	(get_symbol_versionning_sections): Likewise.
11333	(find_text_section): Likewise.
11334	(find_bss_section): Likewise.
11335	(find_rodata_section): Likewise.
11336	(find_data_section): Likewise.
11337	(find_data1_section): Likewise.
11338	* abg-elf-helpers.cc (stt_to_elf_symbol_type): Move function in.
11339	(stb_to_elf_symbol_binding): Likewise.
11340	(stv_to_elf_symbol_visibility): Likewise.
11341	(e_machine_to_string): Likewise.
11342	(find_section): Likewise.
11343	(find_symbol_table_section): Likewise.
11344	(find_symbol_table_section_index): Likewise.
11345	(enum hash_table_kind): Likewise.
11346	(find_hash_table_section_index): Likewise.
11347	(get_symbol_versionning_sections): Likewise.
11348	(find_text_section): Likewise.
11349	(find_bss_section): Likewise.
11350	(find_rodata_section): Likewise.
11351	(find_data_section): Likewise.
11352	(find_data1_section): Likewise.
11353	* abg-elf-helpers.h (stt_to_elf_symbol_type): Add declaration.
11354	(stb_to_elf_symbol_binding): Likewise.
11355	(stv_to_elf_symbol_visibility): Likewise.
11356	(e_machine_to_string): Likewise.
11357	(find_section): Likewise.
11358	(find_symbol_table_section): Likewise.
11359	(find_symbol_table_section_index): Likewise.
11360	(enum hash_table_kind): Likewise.
11361	(find_hash_table_section_index): Likewise.
11362	(get_symbol_versionning_sections): Likewise.
11363	(find_text_section): Likewise.
11364	(find_bss_section): Likewise.
11365	(find_rodata_section): Likewise.
11366	(find_data_section): Likewise.
11367	(find_data1_section): Likewise.
11368	Reviewed-by: Giuliano Procida <gprocida@google.com>
11369
113702020-04-21  Matthias Maennich <maennich@google.com>
11371
11372	abg-dwarf-reader split: create abg-elf-helpers.{h,cc} and test case
11373	* src/Makefile.am: Add new source files abg-elf-helpers.{h,cc}.
11374	* src/abg-elf-helpers.cc: New source file.
11375	* src/abg-elf-helpers.h: New header file.
11376	* tests/.gitignore: Exclude runtestelfhelpers from being committed.
11377	* tests/Makefile.am: Add new test case runtestelfhelpers.
11378	* tests/test-elf-helpers.cc: New test source file.
11379	Reviewed-by: Giuliano Procida <gprocida@google.com>
11380
113812020-04-20  Matthias Maennich <maennich@google.com>
11382
11383	tests: parallelize diff-suppr test
11384	* tests/test-diff-suppr.cc(main): parallelize test execution.
11385	(test_task) new abigail::workers::task implementation to run
11386	test cases in this test as separate worker tasks.
11387
113882020-04-20  Matthias Maennich <maennich@google.com>
11389
11390	abg-dwarf-reader: simplify symbol map update
11391	* src/abg-dwarf-reader.cc
11392	(read_context::load_symbol_maps_from_symtab_section): simplify
11393	symbol map update for fun_syms_, undefined_fun_syms_, var_syms_,
11394	undefined_var_syms_.
11395
113962020-04-20  Matthias Maennich <maennich@google.com>
11397
11398	make: add distcheck-fast target
11399	* Makefile.am: add distcheck-fast make target
11400
114012020-04-14  Giuliano Procida <gprocida@google.com>
11402
11403	Fix variable suppression name_not_regex.
11404	* src/abg-suppression-priv.h: In get_symbol_name_not_regex
11405	method of variable_suppression::priv, fix typo causing
11406	miscompilation of regex.
11407
114082020-04-13  Mark Wielaard <mark@klomp.org>
11409
11410	Add --drop-undefined-syms to abidw.
11411	* include/abg-dwarf-reader.h (set_drop_undefined_syms):
11412	New declaration.
11413	* src/abg-dwarf-reader.cc (class read_context): Add private
11414	bool drop_undefined_syms_.
11415	(drop_undefined_syms): New getter and setter method.
11416	(set_drop_undefined_syms): New function.
11417	(function_is_suppressed): Check drop_undefined_syms on
11418	read_context.
11419	(variable_is_suppressed): Likewise.
11420	* src/abg-reader.cc (read_context): Add private bool
11421	m_drop_undefined_syms.
11422	(drop_undefined_syms): New getter and setter method.
11423	* tools/abidw.cc (struct options): Add drop_undefined_syms.
11424	(display_usage): Print --drop-undefined-syms.
11425	(parse_command_line): Parse --drop-undefined-syms.
11426	(main): Call set_drop_undefined_syms.
11427
114282020-04-12  Mark Wielaard <mark@klomp.org>
11429
11430	Add --drop-private-types to abidw.
11431	* tools/abidw.cc (options): Add drop_private_types bool.
11432	(display_usage): Add --drop-private-types.
11433	(parse_command_line): Parse --drop-private-types, set opts.
11434	(set_suppressions): Call set_drops_artifact_from_ir when
11435	drop_private_types set.
11436	* doc/manuals/abidw.rst: Document --drop-private-types.
11437
114382020-04-12  Mark Wielaard <mark@klomp.org>
11439
11440	Add --header-file option to add individual public header files.
11441	* include/abg-tools-utils.h (gen_suppr_spec_from_headers): Add
11442	hdr_files string vector argument.
11443	* src/abg-tools-utils.cc (handle_file_entry): New function that
11444	adds one specific file to the type_suppression. Implementation
11445	lifted from...
11446	(handle_fts_entry): ...here. Call handle_file_entry for each file.
11447	(gen_suppr_spec_from_headers): Also takes a header_files string
11448	vector as argument. Call handle_file_entry for each file entry.
11449	* tools/abidiff.cc (options): Add header_files1 and header_files2
11450	string vectors.
11451	(display_usage): Print --header-file1 and --header-file2 usage.
11452	(parse_command_line): Handle --header-file1, --hf1 and
11453	--header-file2, --hf2.
11454	(set_diff_context_from_opts): Call gen_suppr_spec_from_headers
11455	with header_files1 and header_files2.
11456	(set_suppressions): Likewise.
11457	* tools/abidw.cc (options): Add header_files string vector.
11458	(display_usage): Print --header-file usage.
11459	(parse_command_line): Handle --header-file1, --hf1.
11460	(maybe_check_header_files): New function.
11461	(set_suppressions): Call gen_suppr_spec_from_headers with
11462	header_files.
11463	(main): Call maybe_check_header_files.
11464	* tools/abilint.cc (options): Add header_files string vector.
11465	(display_usage): Print --header-file usage.
11466	(parse_command_line): Handle --header-file1, --hf1.
11467	(set_suppressions): Call gen_suppr_spec_from_headers with
11468	header_files.
11469	* doc/manuals/abidiff.rst: Document --header-file1, --hf1 and
11470	--header-file2, --hf2. Add new options to documentation of
11471	--drop-private-types.
11472	* doc/manuals/abidw.rst: Document --header-file, --hf.
11473	* doc/manuals/abilint.rst: Likewise.
11474
114752020-04-08  Giuliano Procida <gprocida@google.com>
11476
11477	abidiff: Document and refresh tests.
11478	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.cc:
11479	Comment test. Reorder members of ops to get better coverage.
11480	* tests/data/test-abidiff-exit/test-leaf-fun-type-v1.cc:
11481	Comment test.
11482	* tests/data/test-abidiff-exit/test-leaf-more-v1.cc: Ditto.
11483	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.cc:
11484	Comment test. Update comment on ops2.
11485	* tests/data/test-abidiff-exit/test-leaf-redundant-v1.c:
11486	Comment test.
11487	* tests/data/test-abidiff-exit/test-leaf-stats-v1.cc: Ditto.
11488	* tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt:
11489	Update locations. Update report to reflect deletion,
11490	insertion and changed members (was previously changed only).:
11491	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
11492	Update locations.
11493	* tests/data/test-abidiff-exit/test-leaf-redundant-report.txt:
11494	Ditto.:
11495	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.cc:
11496	Added one line comment referring to -v1 source file.
11497	* tests/data/test-abidiff-exit/test-leaf-fun-type-v0.cc: Ditto.
11498	* tests/data/test-abidiff-exit/test-leaf-more-v0.cc: Ditto.
11499	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.cc: Ditto.
11500	* tests/data/test-abidiff-exit/test-leaf-redundant-v0.c: Ditto.
11501	* tests/data/test-abidiff-exit/test-leaf-stats-v0.cc: Ditto.
11502	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.o: Recompiled.
11503	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.o: Ditto.
11504	* tests/data/test-abidiff-exit/test-leaf-fun-type-v0.o: Ditto.
11505	* tests/data/test-abidiff-exit/test-leaf-fun-type-v1.o: Ditto.
11506	* tests/data/test-abidiff-exit/test-leaf-more-v0.o: Ditto.
11507	* tests/data/test-abidiff-exit/test-leaf-more-v1.o: Ditto.
11508	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.o: Ditto.
11509	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.o: Ditto.
11510	* tests/data/test-abidiff-exit/test-leaf-redundant-v0.o: Ditto.
11511	* tests/data/test-abidiff-exit/test-leaf-redundant-v1.o: Ditto.
11512	* tests/data/test-abidiff-exit/test-leaf-stats-v0.o: Ditto.
11513	* tests/data/test-abidiff-exit/test-leaf-stats-v1.o: Ditto.
11514
115152020-04-14  Giuliano Procida <gprocida@google.com>
11516
11517	abg-reporter-priv.cc: Improve readability of represent helper function.
11518	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
11519	overload, rename pretty_representation to o_pretty_representation,
11520	introduce n_pretty_representation where needed and replace the
11521	duplicate tr1 and tr2 with these; rename all other variables foo1
11522	and foo2 to o_foo and n_foo respectively, using _type instead of
11523	_t; introduce o_anon and n_anon and use them to make the local
11524	variable is_strict_anonymous_data_member_change const, make
11525	ABG_ASSERT in anonymous data member handling more obvious in the
11526	case where anonymity has changed and allow simplification of
11527	formatting in this case; move declarations of const local
11528	variables above those of the non-const, state-tracking, variables.
11529
115302020-04-07  Giuliano Procida <gprocida@google.com>
11531
11532	abg-reporter-priv.cc: Fix anonymous member size change reports.
11533	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
11534	overload, factor out some expressions as local variables, rely
11535	on diff_to_be_reported to decide whether to emit a change,
11536	fold together local/non-local change reporting using
11537	local_changes to preserve current name formatting differences,
11538	keep track explicitly of whether size information has been
11539	emitted and ensure it happens if needed, make offset and size
11540	change reporting for anonymous data members more meaningful.
11541	* tests/test-abidiff-exit.cc: Run new test cases.
11542	* tests/data/Makefile.am: Add new test files.
11543	* tests/data/test-abidiff-exit/test-member-size-v0.cc: New
11544	test.
11545	* tests/data/test-abidiff-exit/test-member-size-v0.o: Ditto.
11546	* tests/data/test-abidiff-exit/test-member-size-v1.cc: Ditto.
11547	* tests/data/test-abidiff-exit/test-member-size-v1.o: Ditto.
11548	* tests/data/test-abidiff-exit/test-member-size-report0.txt:
11549	New test, default mode.
11550	* tests/data/test-abidiff-exit/test-member-size-report1.txt:
11551	New test, --leaf-changes-only mode.
11552	* tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt:
11553	Eliminate duplicate reporting of member sizes.
11554	* tests/data/test-abidiff-exit/test-leaf-more-report.txt: Ditto.
11555	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
11556	Ditto.
11557	* tests/data/test-abidiff-exit/test-no-stray-comma-report.txt:
11558	Ditto.
11559	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
11560	Add size report for anonymous data member.
11561	* tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt:
11562	Ditto.
11563	* 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:
11564	Add missing size change report.
11565	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Remove
11566	size change report for previously reported type.
11567	* tests/data/test-diff-suppr/test46-PR25128-report-1.txt:
11568	Eliminate duplicate reporting of member size change.
11569	* tests/data/test-diff-suppr/test46-PR25128-report-2.txt:
11570	Ditto.
11571
115722020-04-07  Giuliano Procida <gprocida@google.com>
11573
11574	abidiff: More compact references to prior diffs.
11575	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
11576	overload, use consistent punctuation and keep to a single line
11577	of output when referring back to an existing type diff report.
11578	Remove unnecessary braces around single line conditional
11579	blocks.
11580	* src/abg-reporter-priv.h: In the macro
11581	RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use
11582	consistent punctuation when referring back to an existing type
11583	diff report.
11584	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust
11585	formatting of back references to existing type diff reports.
11586	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
11587	Ditto.
11588	* tests/data/test-diff-filter/test16-report-2.txt: Ditto.
11589	* tests/data/test-diff-filter/test17-1-report.txt: Ditto.
11590	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt:
11591	Ditto.
11592	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
11593	Ditto.
11594	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto.
11595
115962020-04-06  Giuliano Procida <gprocida@google.com>
11597
11598	test-abidiff-exit.cc: Drop redundant --redundant.
11599	* tests/test-abidiff-exit.cc: Drop obsolete --redundant flag
11600	and comment as --redundant is now implied by
11601	--leaf-changes-only.
11602
116032020-04-06  Giuliano Procida <gprocida@google.com>
11604
11605	Rename test-abidiff-exit/test-leaf[0-3] files.
11606	* tests/data/Makefile.am: Rename test files.
11607	* tests/test-abidiff-exit.cc: Rename test files.
11608	* tests/data/test-abidiff-exit/test-leaf-fun-type-report.txt:
11609	Renamed from test-leaf2-report.txt.
11610	* tests/data/test-abidiff-exit/test-leaf-fun-type-v0.cc:
11611	Renamed from test-leaf2-v0.cc.
11612	* tests/data/test-abidiff-exit/test-leaf-fun-type-v0.o:
11613	Renamed from test-leaf2-v0.o.
11614	* tests/data/test-abidiff-exit/test-leaf-fun-type-v1.cc:
11615	Renamed from test-leaf2-v1.cc.
11616	* tests/data/test-abidiff-exit/test-leaf-fun-type-v1.o:
11617	Renamed from test-leaf2-v1.o.
11618	* tests/data/test-abidiff-exit/test-leaf-more-report.txt:
11619	Renamed from test-leaf1-report.txt.
11620	* tests/data/test-abidiff-exit/test-leaf-more-v0.cc: Renamed
11621	from test-leaf1-v0.cc.
11622	* tests/data/test-abidiff-exit/test-leaf-more-v0.o: Renamed
11623	from test-leaf1-v0.o.
11624	* tests/data/test-abidiff-exit/test-leaf-more-v1.cc: Renamed
11625	from test-leaf1-v1.cc.
11626	* tests/data/test-abidiff-exit/test-leaf-more-v1.o: Renamed
11627	from test-leaf1-v1.o.
11628	* tests/data/test-abidiff-exit/test-leaf-redundant-report.txt:
11629	Renamed from test-leaf3-report.txt.
11630	* tests/data/test-abidiff-exit/test-leaf-redundant-v0.c:
11631	Renamed from test-leaf3-v0.c.
11632	* tests/data/test-abidiff-exit/test-leaf-redundant-v0.o:
11633	Renamed from test-leaf3-v0.o.
11634	* tests/data/test-abidiff-exit/test-leaf-redundant-v1.c:
11635	Renamed from test-leaf3-v1.c.
11636	* tests/data/test-abidiff-exit/test-leaf-redundant-v1.o:
11637	Renamed from test-leaf3-v1.o.
11638	* tests/data/test-abidiff-exit/test-leaf-stats-report.txt:
11639	Renamed from test-leaf0-report.txt.
11640	* tests/data/test-abidiff-exit/test-leaf-stats-v0.cc: Renamed
11641	from test-leaf0-v0.cc.
11642	* tests/data/test-abidiff-exit/test-leaf-stats-v0.o: Renamed
11643	from test-leaf0-v0.o.
11644	* tests/data/test-abidiff-exit/test-leaf-stats-v1.cc: Renamed
11645	from test-leaf0-v1.cc.
11646	* tests/data/test-abidiff-exit/test-leaf-stats-v1.o: Renamed
11647	from test-leaf0-v1.o.
11648
116492020-04-07  Dodji Seketeli <dodji@redhat.com>
11650
11651	Update the mailing list registration form on the web page
11652	* doc/website/mainpage.txt: Use the form at
11653	https://sourceware.org/mailman/listinfo/libabigail to register to
11654	the mailing list.
11655
116562020-03-30  Giuliano Procida <gprocida@google.com>
11657
11658	abg-dwarf-reader.cc: Avoid division by zero.
11659	* src/abg-dwarf-reader.cc (perform_late_type_canonicalizing):
11660	If total is zero, don't try to output percentages using it as
11661	a divisor.
11662
116632020-03-29  Giuliano Procida <gprocida@google.com>
11664
11665	abidiffpkg: Remove stray test report file.
11666	* tests/data/Makefile.am: Removed
11667	tests/data/test-diff-pkg/dirpkg-2-report-1.txt.
11668	* tests/data/test-diff-pkg/dirpkg-2-report-1.txt: Removed.
11669
116702020-03-29  Giuliano Procida <gprocida@google.com>
11671
11672	test-diff-suppr.cc: Add missing tests.
11673	* tests/test-diff-suppr.cc: Add stanzas for
11674	test6-fn-suppr-report-4, test16-suppr-removed-fn-report-5 and
11675	test22-suppr-removed-var-sym-report-5 and
11676	test23-alias-filter-report-4 tests.
11677	* tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt:
11678	Number parameters from 1 and update expected output to current
11679	formatting.
11680	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-5.txt:
11681	Update expected output to current formatting.
11682	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-5.txt:
11683	Update expected output to current formatting.
11684
116852020-03-29  Giuliano Procida <gprocida@google.com>
11686
11687	abidiff: Remove blank line after typedef changes.
11688	* include/abg-reporter.h
11689	(default_reporter::report_local_typedef_changes): Change
11690	return type to void.
11691	* src/abg-default-reporter.cc:
11692	(default_reporter::report_local_typedef_changes): Change
11693	return type to void, remove emit_nl state variable and logic.
11694	* tests/data/test-abidiff/test-PR18791-report0.txt: Remove
11695	blank lines.
11696	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt:
11697	Ditto.
11698	* tests/data/test-diff-suppr/test39-opaque-type-report-0.txt:
11699	Ditto.
11700
117012020-03-26  Giuliano Procida <gprocida@google.com>
11702
11703	Fix size calculations for multidimensional arrays.
11704	* include/abg-ir.h (array_type_def::append_subrange): Remove
11705	this function.
11706	* src/abg-ir.cc (array_type_def::set_element_type): Add a note
11707	about safe usage.
11708	(array_type_def::append_subrange): Inline this function into
11709	its only caller append_subranges and remove it.
11710	(array_type_def::append_subranges): Do correct multiplicative
11711	calculation of multidimensional array sizes.
11712	* src/abg-reader.cc (build_array_type_def): When checking
11713	calculated against read array sizes, warn once if value
11714	matches old behaviour rather than raising an assertion.
11715	Otherwise, before raising an assertion, emit an informative
11716	error message.
11717	* tests/data/test-annotate/test14-pr18893.so.abi: Correct
11718	array sizes.
11719	* tests/data/test-annotate/test17-pr19027.so.abi: Ditto.
11720	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
11721	Ditto.
11722	* tests/data/test-annotate/test7.so.abi: Ditto.
11723	* tests/data/test-diff-dwarf/test10-report.txt: Ditto.
11724	* tests/data/test-diff-dwarf/test11-report.txt: Ditto.
11725	* tests/data/test-read-write/test25.xml: Ditto.
11726	Reviewed-by: Matthias Maennich <maennich@google.com>
11727
117282020-03-27  Giuliano Procida <gprocida@google.com>
11729
11730	abidiff: Remove new lines after parameter diffs.
11731	* src/abg-default-reporter.cc: (report_local_function_type_changes):
11732	Remove unnecessary blank lines after lists of parameter changes.
11733	* tests/data/test-*/test*report*.txt: Remove blank lines after
11734	parameter change lists in 12 files.
11735	Reviewed-by: Matthias Maennich <maennich@google.com>
11736
117372020-03-27  Giuliano Procida <gprocida@google.com>
11738
11739	abidiff: Eliminate leaf mode double blank lines.
11740	* src/abg-leaf-reporter.cc: (report_diffs) Emit 1 instead of 2
11741	new lines between sections.
11742	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
11743	Replace double blank lines with single ones.
11744	* tests/data/test-diff-filter/libtest45-basic-type-change-report-1.txt:
11745	Ditto.
11746	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto.
11747	* tests/data/test-*/test*report*.txt:: Ditto.
11748	Reviewed-by: Matthias Maennich <maennich@google.com>
11749
117502020-03-27  Giuliano Procida <gprocida@google.com>
11751
11752	abidiff: Fix variable declaration formatting.
11753	* src/abg-reporter-priv.cc: (represent) In the var_diff_sptr
11754	overload, make sure the state variables begin_with_and and
11755	emitted are updated consistently; add a TODO for one case
11756	which may result in the end of the function being reached
11757	without having emitted a report; add missing new lines
11758	following reporting of anonymous member changes; only emit a
11759	final new line if begin_with_and hasn't tracked one already;
11760	document state variables.
11761	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
11762	Add missing blank line after anonymous member change text.
11763	* tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt:
11764	Add missing "and " continuation.
11765	Reviewed-by: Matthias Maennich <maennich@google.com>
11766
117672020-03-27  Giuliano Procida <gprocida@google.com>
11768
11769	abidiff: Remove member function diff blank lines.
11770	* src/abg-default-reporter.cc (report): In the
11771	class_or_union_diff overload, don't emit a new line after each
11772	list of member function, member type, template member
11773	function and template member class changes.
11774	* src/abg-leaf-reporter.cc (report): : In the
11775	class_or_union_diff overload, don't emit a new line after each
11776	list of member function changes.
11777	* tests/data/Makefile.am: Add new test case files.
11778	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.cc:
11779	New test case for --leaf-changes-only member function diffs.
11780	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.o:
11781	Ditto.
11782	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.cc:
11783	Ditto. Also add a TODO regarding a potentially bad diff.
11784	* tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.o:
11785	Ditto.
11786	* tests/data/test-abidiff/test-struct1-report.txt: Remove
11787	blank lines after member function changes lists.
11788	* tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt:
11789	Ditto.
11790	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
11791	Ditto.
11792	* tests/test-abidiff-exit.cc: Add new test case.
11793	Reviewed-by: Matthias Maennich <maennich@google.com>
11794
117952020-03-26  Giuliano Procida <gprocida@google.com>
11796
11797	abidiff: Fix enum impacted interfaces blank line.
11798	* src/abg-default-reporter.cc (report): In the enum_diff
11799	overload, don't emit a blank line before a possible "impacted
11800	interfaces" stanza. In the class_or_union overload, change a
11801	stray conditional to use the emitted state variable for
11802	consistency.
11803	* tests/data/test*report*.txt: Remove blank lines after enum
11804	diffs in 17 files.
11805	Reviewed-by: Matthias Maennich <maennich@google.com>
11806
118072020-03-26  Giuliano Procida <gprocida@google.com>
11808
11809	abidiff: Remove blank line after base class diffs.
11810	* src/abg-default-reporter.cc (report): In the class_diff
11811	overload, eliminate the extra blank line after base class
11812	changes and remove unneeded new line logic.
11813	* tests/data/test*report*.txt: Remove blank lines after base
11814	class diffs in 9 files.
11815	Reviewed-by: Matthias Maennich <maennich@google.com>
11816
118172020-03-26  Giuliano Procida <gprocida@google.com>
11818
11819	abidiff: Clean up new lines between sections.
11820	* src/abg-default-reporter.cc (report): In the corpus_diff
11821	override, add back the extra blank line per changed function
11822	but remove the extra one after all changed changed functions
11823	and variables; comment these.
11824	* src/abg-leaf-reporter.cc (report): In the corpus_diff
11825	override, add back the extra blank line per changed function
11826	but remove the extra one after all changed changed functions
11827	and variables; comment these.
11828	* src/abg-reporter-priv.cc
11829	(maybe_report_unreachable_type_changes): Remove extra blank
11830	line emitted after all unreachable type changes; comment
11831	this.
11832	* tests/data/test*report*.txt: Remove/add blank lines.
11833	Reviewed-by: Matthias Maennich <maennich@google.com>
11834
118352020-03-26  Giuliano Procida <gprocida@google.com>
11836
11837	abg-ir.cc: Add types_have_similar_structure tests.
11838	* src/abg-ir.cc (types_have_similar_structure): Update TODO
11839	regarding structure of arrays - multidimensional arrays are
11840	the issue.
11841	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
11842	Updated following changes.
11843	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.cc: Add
11844	more cases (see below).
11845	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.o:
11846	Updated.
11847	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.cc: Add
11848	comment about a potential change to local-change semantics;
11849	add test cases to demonstrate that * and & and * and *** are
11850	structurally different; add a TODO regarding multidimensional
11851	arrays where changes are sometimes missed in leaf mode.
11852	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.o
11853
118542020-03-28  Giuliano Procida <gprocida@google.com>
11855
11856	abg-reader.cc: Fix code indentation and tabify.
11857	* src/abg-reader.cc (build_elf_symbol_db): Fix code
11858	indentation.
11859	(build_array_type_def): Tabify.
11860
118612020-03-26  Dodji Seketeli <dodji@redhat.com>
11862
11863	Update tests/data/test-abidiff-exit/test-leaf-peeling-report.txt
11864	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
11865	Update output.
11866
118672020-03-25  Giuliano Procida <gprocida@google.com>
11868
11869	abidiff: Remove some more unnecessary blank lines.
11870	* src/abg-default-reporter.cc (report) In the
11871	class_or_union_diff overload, don't emit a new line after
11872	calls to represent. In the union_diff overload, emit a new
11873	line after a from/to change; fix indentation. In the
11874	corpus_diff overload, don't emit an extra new line after
11875	reporting a diff.
11876	* src/abg-leaf-reporter.cc (report_diffs) Don't emit a new
11877	line after reporting a canonical diff. In the
11878	class_or_union_diff overload, don't emit a new line after
11879	calls to represent. In the corpus_diff overload, don't emit an
11880	extra new line after reporting a diff.
11881	* src/abg-reporter-priv.cc (represent): Emit a final new line,
11882	but only if needed.
11883	(maybe_report_interfaces_impacted_by_diff): Emit a new line
11884	after the last impacted interface.
11885	* tests/data/test-*/*report*.txt: Remove blank lines (and add
11886	a missing one) to 77 test cases.
11887
118882020-03-25  Giuliano Procida <gprocida@google.com>
11889
11890	abg-ir.cc: Improve types_have_similar_structure.
11891	* include/abg-fwd.h (types_have_similar_structure): In both
11892	overloads, add an indirect_type argument, defaulting to
11893	false.
11894	* src/abg-ir.cc (reference_type_def constructor): Tabify.
11895	(types_have_similar_structure): In both overloads, add an
11896	indirect_type argument and update documentation text. In the
11897	type_base_sptr overload, pass indirect_type in the tail
11898	call. In the type_base* overload, replace was_indirect_type
11899	with indirect_type; peel CV qualifiers and typedefs without
11900	testing as the peel function does this; replace the
11901	indiscriminate peeling of qualifier/pointer/reference/array
11902	type components with code that checks the same
11903	pointer/reference/array type component is used on each side
11904	and makes recursive calls with indirect_type set to true; pass
11905	the indirect_type argument recursively when comparing other
11906	subtypes; move the typeid check earlier, document its purpose
11907	and remove unneccessary checks after later dynamic casts;
11908	remove an always-true conditional; add a TODO for comparing
11909	array types more accurately.
11910	* tests/data/Makefile.am: Add new test case files.
11911	* tests/data/test-abidiff-exit/test-leaf-peeling-v0.cc: New
11912	test case.
11913	* tests/data/test-abidiff-exit/test-leaf-peeling-v1.cc: Ditto.
11914	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt:
11915	Ditto.
11916	* tests/test-abidiff-exit.cc: Run new test case.
11917
119182020-03-19  Giuliano Procida <gprocida@google.com>
11919
11920	abg-ir.cc: Remove always-true check.
11921	* src/abg-ir.cc (types_have_similar_structure): Remove
11922	identical nested conditional.
11923	(reference_type_def::reference_type_def): Tabify.
11924	Reviewed-by: Matthias Maennich <maennich@google.com>
11925
119262020-03-19  Giuliano Procida <gprocida@google.com>
11927
11928	abg-ir.cc: Fix peel_typedef_type(const type_base*).
11929	* src/abg-ir.cc (peel_typedef_type): In the const type_base*
11930	overload, return the original argument rather than null if the
11931	type isn't actually a typedef.
11932
119332020-03-18  Giuliano Procida <gprocida@google.com>
11934
11935	Eliminate redundancy in representation of local change kinds.
11936	* include/abg-ir.h (change_kind): Remove redundant
11937	LOCAL_CHANGE_KIND member, renumber members and update
11938	comments.
11939	* src/abg-comparison.cc (distinct_diff::has_local_changes):
11940	Remove redundant LOCAL_CHANGE_KIND.
11941	(var_diff::has_local_changes
11942	* src/abg-ir.cc (equals): In the type_base,
11943	qualified_type_def, pointer_type_def, reference_type_def,
11944	array_type_def::subrange_type, array_type_def, enum_type_decl,
11945	typedef_decl, var_decl, function_type, function_decl,
11946	function_decl::parameter, class_or_union,
11947	class_decl::base_spec, class_decl, decl_base and scope_decl
11948	overloads, remove redundant LOCAL_CHANGE_KIND.
11949	(enum_has_non_name_change): Remove redundant
11950	LOCAL_CHANGE_KIND.
11951
119522020-03-20  Dodji Seketeli <dodji@redhat.com>
11953
11954	dwarf-reader: Fix bloom filter access in GNU_HASH section
11955	* src/abg-dwarf-reader.cc (bloom_word_at): Properly read an
11956	element from the bloom bitmasks array of 32-bits values as a
11957	64-bits value in a portable way.  Always return a 64 bits value.
11958	(lookup_symbol_from_gnu_hash_tab): Use a 64-bits value to store
11959	the bloom bitmask.
11960	* tests/data/test-lookup-syms/test1-32bits.so: New test input,
11961	compiled as a 32bits binary to test for ELFCLASS32 binaries.
11962	* tests/data/test-lookup-syms/test1.c.compiling.txt: Documentation
11963	about how to compile the test1[-21bits].so files.
11964	* tests/data/Makefile.am: Add the new test material above to
11965	source distribution.
11966	* tests/test-lookup-syms.cc (in_out_specs): Add the
11967	test1-32bits.so test case to this test harness.
11968
119692020-03-18  Giuliano Procida <gprocida@google.com>
11970
11971	Ensure change_kind enum values are used consistently.
11972	* src/abg-comparison.cc (distinct_diff::has_local_changes):
11973	Remove unnecessary parentheses around return expression.
11974	* src/abg-default-reporter.cc (report): In the reference_diff
11975	overload, replace test against LOCAL_CHANGE_KIND with test
11976	against ALL_LOCAL_CHANGES_MASK.
11977	* src/abg-ir.cc (equals): In the array_type_def and class_decl
11978	overloads, add missing LOCAL_TYPE_CHANGE_KIND. In the
11979	class_decl overload, also add missing LOCAL_CHANGE_KIND. In
11980	the enum_type_decl and function_decl::parameter overloads
11981	clarify pairing of LOCAL*CHANGE_KIND bits.
11982	(enum_has_non_name_change): Clarify pairing of
11983	LOCAL*CHANGE_KIND bits.
11984
119852020-03-18  Giuliano Procida <gprocida@google.com>
11986
11987	dwarf-reader: Use all bits of Bloom filter words.
11988	* src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab):
11989	Don't narrow calculated Bloom word to 8 bits before using it
11990	to mask the fetched Bloom word.
11991
119922020-03-15  Matthias Maennich <maennich@google.com>
11993
11994	dwarf-reader: remove superfluous ABG_ASSERT
11995	* src/abg-dwarf-reader.cc
11996	(maybe_adjust_et_rel_sym_addr_to_abs_addr): improve NULL check,
11997	remove superfluous ABG_ASSERT
11998	* tests/data/Makefile.am: Add new test case to the distribution.
11999	* tests/test-read-dwarf.cc: Likewise.
12000	* tests/data/test-read-dwarf/test27-bogus-binary.elf: New test case.
12001
120022020-03-15  Matthias Maennich <maennich@google.com>
12003
12004	test-read-dwarf: ensure in_elf_path exists and add missing test files
12005	* tests/data/Makefile.am: add missing test case files
12006	* tests/test-read-dwarf.cc (test_task::perform): assert the
12007	input elf file exists.
12008
120092020-03-18  Matthias Maennich <maennich@google.com>
12010
12011	configure: add support for memory sanitizer (--enable-msan)
12012	* configure.ac: Add configure options for -fsanitize=memory
12013
120142020-03-18  Dodji Seketeli <dodji@redhat.com>
12015
12016	abipkgdiff: fix documentation of --impacted-interface
12017	* tools/abipkgdiff.cc (display_usage): Use the same help string
12018	for the --impacted-interface option as abidiff does.
12019
120202020-03-15  Matthias Maennich <maennich@google.com>
12021
12022	abidiff: fix documentation of --impacted-interfaces
12023	* tools/abidiff.cc(display_usage): Fix doc string for
12024	--impacted-interfaces.
12025	Reported-by: Saravana Kannan <saravanak@google.com>
12026
120272020-03-17  Giuliano Procida <gprocida@google.com>
12028
12029	Tag add/remove/change lines unconditionally with [A], [D], [C].
12030	* src/abg-default-reporter.cc (report): In the corpus_diff
12031	override, remove calculations of number of changes (total) and
12032	comparisons against arbitrary threshold (large_num); emit [A],
12033	[D], [C] tags unconditionally.
12034	* src/abg-reporter-priv.cc
12035	(maybe_report_unreachable_type_changes): Remove comparisons of
12036	number of changes against arbitrary threshold (large_num);
12037	emit [A], [D], [C] tags unconditionally; fix quoting of
12038	deleted unreachable types; fix indentation of changed
12039	unreachable types.
12040	* tools/abipkgdiff.cc (compare_prepared_userspace_packages):
12041	Emit [D] and [A] tags for removed and added binaries.
12042	* tests/data/test-*/*report*.txt: In 109 report files, add
12043	tags [A], [D], [C] tags and correct some indentation and
12044	quoting.
12045
120462020-03-12  Matthias Maennich <maennich@google.com>
12047
12048	abg-workers: guard bring_workers_down to avoid dead lock
12049	* src/abg-workers.cc(do_bring_workers_down): keep
12050	task_todo_mutex locked while writing bring_workers_down,
12051	(wait_to_execute_a_task): rewrite the loop condition to ensure
12052	safe access to bring_workers_down.
12053
120542020-03-12  Matthias Maennich <maennich@google.com>
12055
12056	configure: add support for thread sanitizer (--enable-tsan)
12057	* configure.ac: Add configure options for -fsanitize=thread
12058
120592020-03-13  Matthias Maennich <maennich@google.com>
12060
12061	dwarf-reader: gnu_hash_tab lookup: fix overflow in bloom hash calculation
12062	* src/abg-dwarf-reader.cc(lookup_symbol_from_gnu_hash_tab): Fix
12063	signed integer overflow.
12064
120652020-03-12  Giuliano Procida <gprocida@google.com>
12066
12067	Treat function type changes as local.
12068	* src/abg-ir.cc (types_have_similar_structure): Always compare
12069	function types (instead of just returning true) regardless of
12070	whether they are components of pointer-to-function or
12071	reference-to-function types.
12072	* tests/data/Makefile.am: Add new test case files.
12073	* tests/data/test-abidiff-exit/test-leaf2-report.txt: New test
12074	case.
12075	* tests/data/test-abidiff-exit/test-leaf2-v0.cc: Ditto.
12076	* tests/data/test-abidiff-exit/test-leaf2-v0.o: Ditto.
12077	* tests/data/test-abidiff-exit/test-leaf2-v1.cc: Ditto.
12078	* tests/data/test-abidiff-exit/test-leaf2-v1.o: Ditto.
12079	* tests/test-abidiff-exit.cc: Run new test case.
12080
120812020-03-13  Giuliano Procida <gprocida@google.com>
12082
12083	Output 2-space indentation consistently.
12084	* src/abg-default-reporter.cc (report): In the
12085	class_or_union_diff override, use 2-space indentation when
12086	listing changed members. In the var_diff override, do the same
12087	for variable type changes.
12088	* src/abg-leaf-reporter.cc: Ditto.
12089	* tests/data/test-*/*report*.txt: Update many test cases.
12090
120912020-03-16  Giuliano Procida <gprocida@google.com>
12092
12093	Eliminate some unnecessary blank lines in diff output.
12094	* src/abg-default-reporter.cc (report): In the type_decl_diff,
12095	enum_diff, array_diff, class_diff, union_diff and var_diff
12096	overrides, simplify new line logic which no longer needs to be
12097	threaded through report_name_size_and_alignment_changes. In
12098	the distinct_diff override, simplify new line logic which no
12099	longer needs to be threaded through
12100	report_size_and_alignment_changes. In the enum_diff override,
12101	emit just one blank line after each enum. In the array_diff
12102	override, remove stray location reporting which doesn't appear
12103	to ever trigger; fix new line logic. In the
12104	class_or_union_diff override, simplify new line logic for
12105	deleted members; pass indentation to represent_data_member.
12106	* src/abg-leaf-reporter.cc (report): In the array_diff,
12107	class_diff, union_diff and var_diff overrides, simplify new
12108	line logic which no longer needs to be threaded through
12109	report_name_size_and_alignment_changes. In the distinct_diff
12110	override, simplify new line logic which no longer needs to be
12111	threaded through report_size_and_alignment_changes. In the
12112	array_diff override, remove stray location reporting which
12113	doesn't appear to ever trigger; fix new line handling. In the
12114	class_or_union_diff override, simplify new line logic for
12115	deleted members; pass indentation to represent_data_member.
12116	In the corpus_diff override, tabify source indentation.
12117	* src/abg-reporter-priv.cc (represent_data_member): Handle
12118	indentation; fix new line logic.
12119	(report_size_and_alignment_changes): Fix new line logic
12120	for "type size hasn't changed" message; simplify new line
12121	logic and replace local bool n with argument bool nl for
12122	clarity.
12123	(report_size_and_alignment_changes): Remove bool nl argument
12124	and associated code as it had become always false; take
12125	responsibility for emitting terminating new lines and change
12126	return type to void.
12127	(report_name_size_and_alignment_changes): Fix new line logic;
12128	remove bool nl argument and associated code as it had become
12129	always false; take responsibility for emitting terminating new
12130	lines and change return type to void.
12131	(maybe_report_interfaces_impacted_by_diff) In both overrides,
12132	remove new line prefix code and new_line_prefix argument.
12133	* src/abg-reporter-priv.h (represent_data_member): Add indent
12134	argument.
12135	(report_size_and_alignment_changes) Remove bool nl argument;
12136	change return type to void.
12137	(report_name_size_and_alignment_changes) Remove bool nl
12138	argument; change return type to void.
12139	(maybe_report_interfaces_impacted_by_diff) In both overrides,
12140	remove new_line_prefix argument.
12141	* tests/data/test-*/*report*.txt: Remove some blank lines.
12142
121432020-03-12  Giuliano Procida <gprocida@google.com>
12144
12145	abg-leaf-reporter.cc: Fix indentation of function parameter diffs.
12146	* src/abg-leaf-reporter.cc (report): In the fn_parm_diff
12147	override, indent the lines of detail by 2 spaces.
12148	* tests/data/test-abidiff-exit/test-leaf3-report.txt: Update
12149	report with correct indentation.
12150
121512020-03-12  Giuliano Procida <gprocida@google.com>
12152
12153	Fix interaction of --redundant and --leaf-changes-only options.
12154	* src/abg-comparison.cc (diff_context::show_leaf_changes_only):
12155	Remove "--leaf-changes-only implies --redundant" logic.
12156	* tools/abidiff.cc (display_usage): Mention that
12157	--leaf-changes-only implies --redundant.
12158	(set_diff_context_from_opts): Make --leaf-changes-only imply
12159	--redundant; document this behaviour in a comment.
12160	* tools/abipkgdiff.cc: Ditto.
12161	* tests/data/Makefile.am: Add new test case files.
12162	* tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new
12163	test case, to show --leaf-changes-only implies --redundant.
12164	* tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto.
12165	* tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto.
12166	* tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto.
12167	* tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto.
12168	* tests/test-abidiff-exit.cc: Run new test case.
12169	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
12170	Update abipkgdiff report with --redundant output.
12171	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt:
12172	Ditto.
12173	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
12174	Ditto.
12175
121762020-03-13  Giuliano Procida <gprocida@google.com>
12177
12178	Add more leaf change reporting.
12179	* doc/manuals/abidiff.rst: Update the documentation for
12180	--leaf-changes-only.
12181	* doc/manuals/abipkgdiff.rst: Likewise.
12182	* src/abg-comparison.cc (emit_diff_stats): Exclude non-leaf
12183	changes to variables from the reported total of leaf changes.
12184	* src/abg-default-reporter.cc (report): In the corpus_diff
12185	override, move some code and comments for clarity.
12186	* src/abg-leaf-reporter.cc (report): In the corpus_diff
12187	override, additionally report removed/added/changed variables
12188	and removed/added symbols absent from debug info.
12189	* tests/data/Makefile.am: Add new test case files.
12190	* tests/data/test-abidiff-exit/test-leaf0-report.txt: Update
12191	to include reporting of variable diff (change of type).
12192	* tests/data/test-abidiff-exit/test-leaf1-report.txt: New test
12193	case with added/removed variables/functions and changed
12194	variables (both local and non-local type changes).
12195	* tests/data/test-abidiff-exit/test-leaf1-v0.cc: Ditto.
12196	* tests/data/test-abidiff-exit/test-leaf1-v0.o: Ditto.
12197	* tests/data/test-abidiff-exit/test-leaf1-v1.cc: Ditto.
12198	* tests/data/test-abidiff-exit/test-leaf1-v1.o: Ditto.
12199	* tests/test-abidiff-exit.cc: Run new test case. Supply
12200	--redundant otherwise the test isn't meaningful.
12201
122022020-03-12  Dodji Seketeli <dodji@redhat.com>
12203
12204	Update fedabipkgdiff tests according to commit b602f46c
12205	* tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt:
12206	Adjust for useless whitespace removal.
12207	* tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt: Likewise.
12208	* tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt: Likewise.
12209	* tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt: Likewise.
12210	* 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.
12211
122122020-03-11  Giuliano Procida <gprocida@google.com>
12213
12214	Fix spurious new lines after diff sections.
12215	* src/abg-default-reporter.cc (report): In the corpus_diff
12216	overload, just use a local boolean emitted state variable
12217	within each section to determine whether or not to follow the
12218	section with an extra new line.
12219	* src/abg-leaf-reporter.cc: Ditto.
12220	* tests/data/test-*/*report*.txt: Remove unwanted new lines
12221	from 27 files.
12222
122232020-03-10  Giuliano Procida <gprocida@google.com>
12224
12225	abg-comparison.cc: Remove stray function declaration.
12226	* src/abg-comparison.cc (show_relative_offset_changes): Remove
12227	this stray function declaration.
12228
122292020-03-10  Giuliano Procida <gprocida@google.com>
12230
12231	abisym: Remove leading space in output.
12232	* tools/abisym.cc (main): Remove leading space from output.
12233	* tests/data/test-lookup-syms/test0-report.txt: Remove leading
12234	space from expected output.
12235	* tests/data/test-lookup-syms/test01-report.txt: Ditto.
12236	* tests/data/test-lookup-syms/test02-report.txt: Ditto.
12237	* tests/data/test-lookup-syms/test1-1-report.txt: Ditto.
12238
122392020-03-09  Giuliano Procida <gprocida@google.com>
12240
12241	Fix the reporting of leaf change statistics.
12242	* src/abg-comparison.cc
12243	(apply_filters_and_compute_diff_stats):	Increment the correct
12244	counter for leaf variable changes.
12245	* tests/data/Makefile.am: Add new test case files.
12246	* tests/data/test-abidiff-exit/test-leaf0-report.txt: New test
12247	case.
12248	* tests/data/test-abidiff-exit/test-leaf0-v0.cc: Ditto.
12249	* tests/data/test-abidiff-exit/test-leaf0-v0.o: Ditto.
12250	* tests/data/test-abidiff-exit/test-leaf0-v1.cc: Ditto.
12251	* tests/data/test-abidiff-exit/test-leaf0-v1.o: Ditto.
12252	* tests/test-abidiff-exit.cc: Run new test case.
12253	Reviewed-by: Matthias Maennich <maennich@google.com>
12254
122552020-03-05  Giuliano Procida <gprocida@google.com>
12256
12257	Add space missing between "[C]" tag and description of changed item.
12258	* src/abg-default-reporter.cc (report): In the overload for
12259	corpus_diff, output space after "[C]".
12260	* src/abg-leaf-reporter.cc (report): Likewise.
12261	* tests/data/test-*/*report*.txt: Update all the test
12262	reports.
12263
122642020-03-05  Giuliano Procida <gprocida@google.com>
12265
12266	Correct various inconsequential typos.
12267	* src/abg-leaf-reporter.cc (report): In the class_or_union_diff
12268	overoad, swap calls to report_mem_header to match the rest of the
12269	code.
12270	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
12271	overload, add some missing whitespace; remember we've emitted the
12272	pretty representation in 2 cases where this was omitted (though 1
12273	of these is the last case where it makes no difference).
12274	maybe_report_diff_for_symbol Add some missing whitespace; remember
12275	we've reported a diff (and need a trailing newline) in 1 case
12276	where this was omitted, also affecting the return value of the
12277	function (but no caller cares).
12278
122792020-03-05  Giuliano Procida <gprocida@google.com>
12280
12281	Correct spelling of "alignment".
12282	* src/abg-reporter-priv.cc: s/alignement/alignment/
12283	* tests/data/test-abidiff/test-struct0-report.txt: Ditto..
12284	* tests/data/test-abidiff/test-struct1-report.txt: Ditto.
12285	* tests/data/test-abidiff/test-var0-report.txt: Ditto.
12286
122872020-02-27  Dodji Seketeli <dodji@redhat.com>
12288
12289	Bump version number to 1.8
12290	* configure.ac: Update version number to 1.8
12291
122922020-02-26  Dodji Seketeli <dodji@redhat.com>
12293
12294	Update website for 1.7
12295	* doc/website/mainpage.txt: Update for 1.7
12296
122972020-02-25  Dodji Seketeli <dodji@redhat.com>
12298
12299	Update ChangeLog
12300	* ChangeLog: Automatically update by running:
12301	'make update-changelog'.
12302
123032020-02-25  Dodji Seketeli <dodji@redhat.com>
12304
12305	Update NEWS file for 1.7
12306	* NEWS: update for 1.7
12307
123082020-02-25  Dodji Seketeli <dodji@redhat.com>
12309
12310	gen-changelog.py: Update the script for python3
12311	* gen-changelog.py (process_commit): Use the functional notation
12312	for the print function invocation required by python3.
12313	(output_commits, get_rel_tags, ): Specify that the output stream
12314	of the subprocess running the git command is in the text format.
12315
123162020-02-26  Dodji Seketeli <dodji@redhat.com>
12317
12318	tools-utils: Drop redefinition of fopen when BAD_FTS is defined
12319	* src/abg-tools-utils.cc: Do not remap fopen to fopen64 as we
12320	don't use fopen explicitly anymore.
12321
123222020-02-21  Dodji Seketeli <dodji@redhat.com>
12323
12324	Update copyright year to 2020
12325	* include/abg-comp-filter.h: Update copyright year to 2020.
12326	* include/abg-comparison.h: Likewise.
12327	* include/abg-config.h: Likewise.
12328	* include/abg-corpus.h: Likewise.
12329	* include/abg-cxx-compat.h: Likewise.
12330	* include/abg-diff-utils.h: Likewise.
12331	* include/abg-dwarf-reader.h: Likewise.
12332	* include/abg-fwd.h: Likewise.
12333	* include/abg-hash.h: Likewise.
12334	* include/abg-ini.h: Likewise.
12335	* include/abg-interned-str.h: Likewise.
12336	* include/abg-ir.h: Likewise.
12337	* include/abg-libxml-utils.h: Likewise.
12338	* include/abg-libzip-utils.h: Likewise.
12339	* include/abg-reader.h: Likewise.
12340	* include/abg-reporter.h: Likewise.
12341	* include/abg-sptr-utils.h: Likewise.
12342	* include/abg-suppression.h: Likewise.
12343	* include/abg-tools-utils.h: Likewise.
12344	* include/abg-traverse.h: Likewise.
12345	* include/abg-viz-common.h: Likewise.
12346	* include/abg-viz-dot.h: Likewise.
12347	* include/abg-viz-svg.h: Likewise.
12348	* include/abg-workers.h: Likewise.
12349	* include/abg-writer.h: Likewise.
12350	* src/abg-comp-filter.cc: Likewise.
12351	* src/abg-comparison-priv.h: Likewise.
12352	* src/abg-comparison.cc: Likewise.
12353	* src/abg-config.cc: Likewise.
12354	* src/abg-corpus-priv.h: Likewise.
12355	* src/abg-corpus.cc: Likewise.
12356	* src/abg-default-reporter.cc: Likewise.
12357	* src/abg-diff-utils.cc: Likewise.
12358	* src/abg-dwarf-reader.cc: Likewise.
12359	* src/abg-hash.cc: Likewise.
12360	* src/abg-ini.cc: Likewise.
12361	* src/abg-internal.h: Likewise.
12362	* src/abg-ir-priv.h: Likewise.
12363	* src/abg-ir.cc: Likewise.
12364	* src/abg-leaf-reporter.cc: Likewise.
12365	* src/abg-libxml-utils.cc: Likewise.
12366	* src/abg-libzip-utils.cc: Likewise.
12367	* src/abg-reader.cc: Likewise.
12368	* src/abg-reporter-priv.cc: Likewise.
12369	* src/abg-reporter-priv.h: Likewise.
12370	* src/abg-sptr-utils.cc: Likewise.
12371	* src/abg-suppression-priv.h: Likewise.
12372	* src/abg-suppression.cc: Likewise.
12373	* src/abg-tools-utils.cc: Likewise.
12374	* src/abg-traverse.cc: Likewise.
12375	* src/abg-viz-common.cc: Likewise.
12376	* src/abg-viz-dot.cc: Likewise.
12377	* src/abg-viz-svg.cc: Likewise.
12378	* src/abg-workers.cc: Likewise.
12379	* src/abg-writer.cc: Likewise.
12380	* tests/print-diff-tree.cc: Likewise.
12381	* tests/test-abicompat.cc: Likewise.
12382	* tests/test-abidiff-exit.cc: Likewise.
12383	* tests/test-abidiff.cc: Likewise.
12384	* tests/test-alt-dwarf-file.cc: Likewise.
12385	* tests/test-core-diff.cc: Likewise.
12386	* tests/test-diff-dwarf-abixml.cc: Likewise.
12387	* tests/test-diff-dwarf.cc: Likewise.
12388	* tests/test-diff-filter.cc: Likewise.
12389	* tests/test-diff-pkg.cc: Likewise.
12390	* tests/test-diff-suppr.cc: Likewise.
12391	* tests/test-diff2.cc: Likewise.
12392	* tests/test-dot.cc: Likewise.
12393	* tests/test-ini.cc: Likewise.
12394	* tests/test-ir-walker.cc: Likewise.
12395	* tests/test-lookup-syms.cc: Likewise.
12396	* tests/test-read-dwarf.cc: Likewise.
12397	* tests/test-read-write.cc: Likewise.
12398	* tests/test-svg.cc: Likewise.
12399	* tests/test-tools-utils.cc: Likewise.
12400	* tests/test-types-stability.cc: Likewise.
12401	* tests/test-utils.cc: Likewise.
12402	* tests/test-utils.h: Likewise.
12403	* tests/test-write-read-archive.cc: Likewise.
12404	* tools/abiar.cc: Likewise.
12405	* tools/abicompat.cc: Likewise.
12406	* tools/abidiff.cc: Likewise.
12407	* tools/abidw.cc: Likewise.
12408	* tools/abilint.cc: Likewise.
12409	* tools/abipkgdiff.cc: Likewise.
12410	* tools/abisym.cc: Likewise.
12411	* tools/binilint.cc: Likewise.
12412	* tools/kmidiff.cc: Likewise.
12413	* update-copyright.sh: Fix the updating script to handle not just
12414	"Red Hat, Inc."
12415
124162020-02-21  Dodji Seketeli <dodji@redhat.com>
12417
12418	abixml-reader: Support SONAME related properties on file suppression
12419	* doc/manuals/libabigail-concepts.rst: Update the documentation to
12420	mention soname_regexp and soname_not_regexp is supported in the
12421	[suppress_file] section.
12422	* include/abg-suppression.h (suppression_matches_soname)
12423	(suppression_matches_soname_or_filename): Declare new functions.
12424	Make them be friends of class suppression_base.
12425	* src/abg-reader.cc
12426	(read_context::corpus_is_suppressed_by_soname_or_filename): Define
12427	new member function.
12428	(read_corpus_from_input): Apply file suppression.
12429	* src/abg-suppression.cc (read_file_suppression): Support
12430	"soname_regexp" and "soname_not_regexp" in the [suppress_file]
12431	section.
12432	(suppression_matches_soname)
12433	(suppression_matches_soname_or_filename): Define new functions.
12434	* tests/data/test-diff-suppr/libtest48-soname-abixml-report-{1,2}.txt:
12435	New test reference output files.
12436	Likewise.
12437	* tests/data/test-diff-suppr/libtest48-soname-abixml-suppr.txt:
12438	New test suppression file.
12439	* tests/data/test-diff-suppr/libtest48-soname-abixml-suppr-{2,3,4}.txt::
12440	Likewise.
12441	* tests/data/test-diff-suppr/libtest48-soname-abixml-v{0,1}.so: New
12442	test binary input files.
12443	* tests/data/test-diff-suppr/libtest48-soname-abixml-v{0,1}.so.abi:
12444	New abixml for the binary input files above.
12445	* tests/data/test-diff-suppr/test48-soname-abixml-v{0,1}.c: Source
12446	code of the binary input files above.
12447	* tests/data/Makefile.am: Add the above test material to source
12448	distribution.
12449	* tests/test-diff-suppr.cc (in_out_specs): Add the test input
12450	above to this test harness.
12451
124522020-02-21  Dodji Seketeli <dodji@redhat.com>
12453
12454	suppression: Better handle soname/filename properties evaluation
12455	* include/abg-suppression.h
12456	(suppression_base::has_{soname,file_name}_related_property): Add
12457	new member functions.
12458	* src/abg-dwarf-reader.cc (read_context::suppression_can_match):
12459	Fix the logic to make a difference between the case where the
12460	suppression doesn't have any soname/filename property and the case
12461	where the suppression does have a soname/filename property that
12462	does not match the current binary.
12463	* src/abg-reader.cc (read_context::suppression_can_match):
12464	Likewise.
12465	* src/abg-suppression-priv.h
12466	(suppression_base::priv::matches_soname): If the suppression does
12467	not have any soname related property then it doesn't match the
12468	soname we are looking at.
12469	(suppression_base::priv::matches_binary_name): If the suppression
12470	does not have any filename related property then it doesn't match
12471	the filename we are looking at.
12472	* src/abg-suppression.cc
12473	(suppression_base::has_{soname,file_name}_related_property):
12474	Define new member functions.
12475	(sonames_of_binaries_match): If the suppression does not have any
12476	soname related property then it doesn't match the corpora of the
12477	diff we are looking at.
12478	(names_of_binaries_match): If the suppression does not have any
12479	filename related property then it doesn't match the corpora of the
12480	diff we are looking at.
12481	(type_suppression::suppresses_type): Fix the logic to make a
12482	difference between the case where the suppression doesn't have any
12483	soname/filename property and the case where the suppression does
12484	have a soname/filename property that does not match the current
12485	binary.
12486	(function_suppression::suppresses_{function, function_symbol}):
12487	Likewise.
12488	(variable_suppression::suppresses_{variable, variable_symbol}):
12489	Likewise.
12490	(file_suppression::suppresses_file): Likewise.
12491
124922020-02-05  Giuliano Procida <gprocida@google.com>
12493
12494	Fix stray comma in leaf-changes-only mode.
12495	* src/abg-reporter-priv.cc (represent): Don't try to follow
12496	output of indented pretty representation with a comma, just
12497	emit "and" unconditionally; remove unnecessary intermediate
12498	ostringstream.
12499	* tests/data/Makefile.am: Add new test case files.
12500	* tests/data/test-abidiff-exit/test-no-stray-comma-*: New test
12501	cases.
12502	* tests/data/test-diff-suppr/test46-PR25128-report-?.txt:
12503	Replace unindented comma with indented "and".
12504	* tests/test-abidiff-exit.cc: Add no-stray-comma test case.
12505	Reviewed-by: Matthias Maennich <maennich@google.com>
12506
125072020-02-04  Giuliano Procida <gprocida@google.com>
12508
12509	Sort kernel module object files before processing them.
12510	* src/abg-tools-utils.cc (get_binary_paths_from_kernel_dist):
12511	Sort module_paths.
12512
125132020-02-04  Matthias Maennich <maennich@google.com>
12514
12515	abg-workers: Rework the worker queue to improve concurrent behaviour
12516	* include/abg-workers.h (workers::task): move entire
12517	implementation to header and drop superfluous forward declaration.
12518	* src/abg-workers.cc (workers::task):: Likewise.
12519	(workers::queue::priv): Drop queue_cond_mutex, rename queue_cond
12520	to tasks_todo_cond, add task_done_cond, make default_notify
12521	static.
12522	(workers::queue::priv::priv): Add default arguments to fully
12523	qualified constructor, drop the remaining ones.
12524	(workers::queue:prive::more_tasks_to_execute): Drop method.
12525	(workers::queue:prive::schedule_task): Do not synchronize access
12526	to the queue condition variable, but only on the mutex.
12527	(do_bring_workers_down): Likewise. Also await tasks_done to be
12528	empty.
12529	(workers::queue:prive::worker::wait_to_execute_a_task): Await
12530	tasks on the tasks_todo with tasks_todo_(cond|mutex) and signal
12531	task completion to tasks_done_cond.
12532
125332020-02-03  Matthias Maennich <maennich@google.com>
12534
12535	abg-dwarf-reader: zero initialize local Dwarf_Addr values
12536	* src/abg-dwarf-reader.cc
12537	(read_context::get_first_exported_fn_address_from_DW_AT_ranges):
12538	initialize local Dwarf_Addr variables.
12539	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12540
125412020-01-29  Matthias Maennich <maennich@google.com>
12542
12543	abg-comparison: prefer .empty() over implicit bool conversion of .size()
12544	* src/abg-comparison.cc (corpus_diff::has_changes): prefer
12545	!container.empty() over bool(container.size())
12546	[1] https://clang.llvm.org/extra/clang-tidy/checks/readability-container-size-empty.html
12547	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12548
125492020-01-29  Matthias Maennich <maennich@google.com>
12550
12551	Fix some parameter name inconsistencies
12552	* src/abg-comparison-priv.h
12553	(corpus_diff::priv::count_unreachable_types): use consistent
12554	parameter naming.
12555	* tools/abidiff.cc(main): Likewise.
12556	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12557
125582020-02-03  Giuliano Procida <gprocida@google.com>
12559
12560	Don't ignore options when diffing translation units (.bi files).
12561	* tests/data/Makefile.am: Add test case files.
12562	* tests/data/test-abidiff-exit/test-loc-*: New test cases.
12563	* tests/test-abidiff-exit.cc (in_out_specs): Add new test cases.
12564	* tools/abidiff.cc (main): Use populated ctxt for translation unit
12565	diff.
12566
125672020-01-29  Giuliano Procida <gprocida@google.com>
12568
12569	Fix typo in COMPILING.
12570	* COMPILING:
12571
125722020-01-29  Giuliano Procida <gprocida@google.com>
12573
12574	Remove redundant mention of libtool in COMPILING documentation.
12575	* COMPILING: Remove redundant mention of libtool.
12576
125772020-01-26  Matthias Maennich <maennich@google.com>
12578
12579	Testing: add Catch Unit test framework
12580	* tests/.gitignore: Add entry for .dirstamp
12581	* tests/Makefile.am: Add libcatch test library and use it for
12582	runtestkmiwhitelist.
12583	* tests/lib/catch.cc: New test driver implementation.
12584	* tests/lib/catch.hpp: Add Catch v1.12.2 header only test library.
12585	* tests/test-kmi-whitelist.cc: Migrate to use Catch test framework.
12586	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12587
125882020-01-25  Matthias Maennich <maennich@google.com>
12589
12590	abg-fwd: drop duplicate forward declaration for corpus_sptr
12591	* include/abg-fwd.h: drop superfluous forward declaration.
12592
125932020-01-25  Matthias Maennich <maennich@google.com>
12594
12595	Fix / add include guards
12596	* include/abg-dwarf-reader.h: Move include guard to the beginning.
12597	* include/abg-reporter-priv.h: Likewise.
12598	* include/abg-libxml-utils.h: Add include guard.
12599	* include/abg-libzip-utils.h: Likewise.
12600
126012020-01-25  Matthias Maennich <maennich@google.com>
12602
12603	dwarf-reader: handle binaries with missing symtab
12604	* src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section):
12605	Handle elf file with missing symtab.
12606	* tests/test-read-dwarf.cc (InOutSpec): add test case.
12607	* tests/data/test-read-dwarf/test26-bogus-binary.elf: new test data.
12608
126092020-01-24  Matthias Maennich <maennich@google.com>
12610
12611	dwarf-reader: handle symtab.section_header.sh_entsize == 0
12612	* src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section):
12613	Handle elf file with invalid sh_entsize.
12614	* tests/test-read-dwarf.cc (test_task::perform): handle empty
12615	in_abi_path and out_abi_path as 'read only' test.
12616	(InOutSpec): add test case.
12617	* tests/data/test-read-dwarf/test25-bogus-binary.elf: new test data.
12618
126192020-01-21  Matthias Maennich <maennich@google.com>
12620
12621	clang-format: Better approximation for binary operators and assignments
12622	* .clang-format: Add BreakBeforeBinaryOperators option.
12623
126242020-01-14  Matthias Maennich <maennich@google.com>
12625
12626	KMI Whitelists: Drop old whitelist extraction methods
12627	* include/abg-tools-utils.h
12628	(gen_suppr_spec_from_kernel_abi_whitelist): Delete declaration.
12629	* src/abg-tools-utils.cc
12630	(gen_suppr_spec_from_kernel_abi_whitelist): Delete definition
12631	and migrate users to gen_suppr_spec_from_kernel_abi_whitelists.
12632	* tools/abidiff.cc (set_suppressions): Migrate from using
12633	gen_suppr_spec_from_kernel_abi_whitelist to
12634	gen_suppr_spec_from_kernel_abi_whitelists.
12635	* tools/abidw.cc (set_suppressions): Likewise.
12636	* tools/abipkgdiff.cc: Drop unused using definition.
12637	* tools/kmidiff.cc: Likewise.
12638	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12639
126402020-01-14  Matthias Maennich <maennich@google.com>
12641
12642	KMI Whitelists: Add functionality to make whitelists additive
12643	* include/abg-tools-utils.h
12644	(gen_suppr_spec_from_kernel_abi_whitelists): New function.
12645	* src/abg-tools-utils.cc
12646	(gen_suppr_spec_from_kernel_abi_whitelists): Likewise.
12647	* tests/.gitignore: Ignore new test executable.
12648	* tests/Makefile.am: Add new test executable.
12649	* tests/data/test-kmi-whitelist/whitelist-with-another-single-entry:
12650	New test input file.
12651	* tests/data/test-kmi-whitelist/whitelist-with-duplicate-entry:
12652	Likewise.
12653	* tests/data/test-kmi-whitelist/whitelist-with-single-entry:
12654	Likewise.
12655	* tests/data/test-kmi-whitelist/whitelist-with-two-sections:
12656	Likewise.
12657	* tests/data/Makefile.am: Add above test material.
12658	* tests/test-kmi-whitelist.cc: Add new test executable.
12659	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12660
126612020-01-13  Matthias Maennich <maennich@google.com>
12662
12663	writer: completely skip over empty corpora
12664	* src/abg-writer.cc (write_corpus): completely skip empty
12665	corpora rather than creating an empty entry for them.
12666	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12667
126682020-01-13  Matthias Maennich <maennich@google.com>
12669
12670	corpus: is_empty: consider actual translation unit contents
12671	* src/abg-corpus.cc (corpus::is_empty): consider a list of
12672	empty members to be empty.
12673	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12674
126752020-01-13  Matthias Maennich <maennich@google.com>
12676
12677	abg-reader: handle empty corpus nodes in xml representation
12678	* src/abg-reader.cc (read_corpus_from_input): when assigning a
12679	corpus node, assure the node actually has children.
12680	* tests/test-abidiff.cc (main): Add test for variants of empty
12681	xml nodes to the test harness.
12682	* tests/data/test-abidiff/test-empty-corpus-0.xml: Test input
12683	containing an empty xml node that closes immediately.
12684	* tests/data/test-abidiff/test-empty-corpus-0.xml: Test input
12685	containing an empty xml node that closes immediately with a tag.
12686	* tests/data/test-abidiff/test-empty-corpus-0.xml: Test input
12687	containing an empty xml node that closes with a tag on a new line.
12688	* tests/data/test-abidiff/test-empty-corpus-report.txt:
12689	Expected test output (empty abidiff) for diffing xml with itself.
12690	* tests/data/Makefile.am: Add the new test input material above
12691	to source distribution.
12692	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12693
126942020-01-17  Dodji Seketeli <dodji@redhat.com>
12695
12696	Bug 25409 - Fix reading layout-offset-in-bits attribute of data-member
12697	* src/abg-reader.cc (read_offset_in_bits): Fix comment.  Use
12698	stroull rather than atoi.
12699	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0:
12700	Add new binary test input.
12701	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0-report-0.txt:
12702	Add new reference output.
12703	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
12704	Add new abixml representation for the binary test input above.
12705	* tests/data/Makefile.am: Add the new test material above to
12706	source distribution.
12707	* tests/test-diff-dwarf-abixml.cc (in_out_specs): Add the test
12708	input above to the test harness.
12709
127102020-01-13  Matthias Maennich <maennich@google.com>
12711
12712	abidiff/kmidiff: do not default-suppress added symbols
12713	* tools/abidiff.cc (adjust_diff_context_for_kmidiff): Drop
12714	default suppression of added symbols.
12715	* tools/kmidiff.cc (set_diff_context): Likewise.
12716	* tests/data/test-diff-suppr/test46-PR25128-report-1.txt: Adjust
12717	test expectation.
12718	* tests/data/test-diff-suppr/test46-PR25128-report-2.txt: Add
12719	test case for abidiff with flag --no-added-syms.
12720	* tests/data/Makefile.am: add new testcase.
12721	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12722
127232019-12-15  Matthias Maennich <maennich@google.com>
12724
12725	Add (undocumented) support for version suffixes
12726	* configure.ac: add substitution for VERSION_SUFFIX
12727	* include/abg-version.h.in: add define for ABIGAIL_VERSION_SUFFIX
12728	* include/abg-config.h(abigail_get_library_version): add support
12729	for a version suffix
12730	* src/abg-config.cc(abigail_get_library_version): Likewise.
12731	* src/abg-tools-utils.cc(get_library_version_string): Likewise.
12732	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12733
127342019-11-13  Matthias Maennich <maennich@google.com>
12735
12736	dwarf-reader: relax restriction about relocation sections in try_reading_first_ksymtab_entry
12737	* src/abg-dwarf-reader.cc (try_reading_first_ksymtab_entry):
12738	remove assertion and update documentation
12739	Fixes: 43679a610316 ("dwarf-reader: refactor try_reading_first_ksymtab_entry_using{pre,}_v4_19_format")
12740	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12741
127422019-11-11  Matthias Maennich <maennich@google.com>
12743
12744	abg-dwarf-reader: resolve relocation sections by index
12745	* src/abg-dwarf-reader.cc (find_relocation_section): New function.
12746	(find_ksymtab_reloc_section): Use find_relocation_section to
12747	resolve the ksymtab's relocation section.
12748	(find_ksymtab_gpl_reloc_section): Likewise.
12749	Fixes: e6870326e01a ("Support pre and post v4.19 ksymtabs for Linux kernel modules")
12750	Cc: Jessica Yu <jeyu@kernel.org>
12751	Cc: Android Kernel Team <kernel-team@android.com>
12752	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
12753
127542019-12-03  Dodji Seketeli <dodji@redhat.com>
12755
12756	Misc typo fixes
12757	* src/abg-comparison.cc
12758	(leaf_diff_node_marker_visitor::visit_begin): Fix typo in
12759	comments.
12760	* src/abg-corpus.cc
12761	(corpus::get_types_not_reachable_from_public_interfaces):
12762	Likewise.
12763	* src/abg-ir.cc (decl_base::set_has_anonymous_parent): Likewise.
12764	* src/abg-reader.cc (add_read_context_suppressions): Likewise.
12765
127662019-11-13  Dodji Seketeli <dodji@redhat.com>
12767
12768	Bug 24690 - Support comparing non-reachable types of a binary
12769	* include/abg-comparison.h (string_type_base_sptr_map): Define new
12770	typedef.
12771	(diff_context::show_unreachable_types): Declare new member
12772	functions.
12773	(corpus_diff::{deleted_unreachable_types,
12774	deleted_unreachable_types_sorted, added_unreachable_types,
12775	added_unreachable_types_sorted, changed_unreachable_types,
12776	changed_unreachable_types_sorted}): Likewise.
12777	(maybe_report_unreachable_type_changes): Declare this function a
12778	friend of class corpus_diff.
12779	(corpus_diff::diff_stats::{num_added_unreachable_types,
12780	num_added_unreachable_types_filtered_out,
12781	net_num_added_unreachable_types, num_removed_unreachable_types,
12782	num_removed_unreachable_types_filtered_out,
12783	net_num_removed_unreachable_types, num_changed_unreachable_types,
12784	num_changed_unreachable_types_filtered_out,
12785	net_num_changed_unreachable_types}): Likewise.
12786	* src/abg-comparison-priv.h
12787	(diff_context::priv::show_unreachable_types_): Define new data
12788	member.
12789	(diff_context::priv::priv): Initialize the new data member.
12790	(diff_comp::operator()): Use pretty representation of diff
12791	subjects to sort them, rather than just their name.  Also, add
12792	comment to the other member functions of diff_comp.
12793	(corpus_diff::{unreachable_types_edit_script_,
12794	deleted_unreachable_types_, deleted_unreachable_types_sorted_,
12795	suppressed_deleted_unreachable_types_, added_unreachable_types_,
12796	added_unreachable_types_sorted_,
12797	suppressed_added_unreachable_types_, changed_unreachable_types_,
12798	changed_unreachable_types_sorted_}): Define new data members.
12799	(corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types):
12800	Changed the name of
12801	corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars into
12802	this.
12803	(corpus_diff::priv::{added_unreachable_type_is_suppressed,
12804	deleted_unreachable_type_is_suppressed,
12805	changed_unreachable_types_sorted, count_unreachable_types}):
12806	Declare new member functions.
12807	(corpus_diff::diff_stats::priv::{num_added_unreachable_types,
12808	num_added_unreachable_types_filtered_out,
12809	num_removed_unreachable_types,
12810	num_removed_unreachable_types_filtered_out,
12811	num_changed_unreachable_types,
12812	num_changed_unreachable_types_filtered_out}): Define new data
12813	members.
12814	(sort_string_type_base_sptr_map): Declare new function.
12815	* src/abg-comparison.cc (sort_string_type_base_sptr_map)
12816	(diff_context::show_unreachable_types): Define new functions.
12817	(corpus_diff::diff_stats::{num_added_unreachable_types,
12818	num_added_unreachable_types_filtered_out,
12819	net_num_added_unreachable_types,
12820	net_num_removed_unreachable_types,
12821	num_removed_unreachable_types_filtered_out,
12822	num_removed_unreachable_types}): Define new member functions.
12823	(diff_maps::insert_diff_node): Do not update the map "diff ->
12824	impacted interfaces" if the current impacted interface is nil.
12825	This happens if we are looking at a diff node for a change on a
12826	type that is not reachable from any interfaces.
12827	(corpus_diff::priv::ensure_lookup_tables_populated): Handle the
12828	edit script for unreachable types.
12829	(corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types):
12830	Rename
12831	corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars
12832	into this.  Apply suppression specifications to added and removed
12833	unreachable types as well.
12834	(corpus_diff::priv::{added,deleted}_unreachable_type_is_suppressed):
12835	Define new member functions.
12836	(corpus_diff::priv::{count_unreachable_types,
12837	changed_unreachable_types_sorted}): Likewise.
12838	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Update
12839	statistics (including walking changed unreachable types to apply
12840	categorization and redundancy filters to them) related to
12841	unreachable types.
12842	(corpus_diff::priv::emit_diff_stats): Emit diff stats related to
12843	unreachable types.
12844	(corpus_diff::priv::maybe_dump_diff_tree): Dump diff tree nodes
12845	related to unreachable types.
12846	(corpus_diff::{deleted_unreachable_types,
12847	deleted_unreachable_types_sorted, added_unreachable_types,
12848	added_unreachable_types_sorted, changed_unreachable_types,
12849	changed_unreachable_types_sorted): Define new member functions.
12850	(corpus_diff::has_changes): Take deleted/added/changed unreachable
12851	types into account.
12852	(corpus_diff::has_incompatible_changes): Take net removed/changed
12853	unreachable types into account.
12854	(corpus_diff::has_net_subtype_changes): Take net removed and
12855	changed unreachable types into account.
12856	(corpus_diff::has_net_changes): Take net removed/added/changed
12857	unreachable types into account.
12858	(corpus_diff::traverse): When traversing the components of a
12859	corpus_diff node, make sure to traverse the changed unreachable
12860	types of the corpus.
12861	(leaf_diff_node_marker_visitor::visit_begin): Arrange for the fact
12862	that the current topmost interface can be nil if we are looking at
12863	types not reachable from global functions/variables.  Also, make
12864	sure that only leaf nodes that are reachable from a global
12865	function/variable are recorded as leaf nodes.
12866	(compute_diff): In the overload for corpus_sptr, compute the
12867	changes between types not reachable from global functions and
12868	variables, if the user wishes that we do so.  Also, add more
12869	comments.
12870	(apply_suppressions): Update for the name change of the function
12871	apply_suppressions_to_added_removed_fns_vars to
12872	apply_supprs_to_added_removed_fns_vars_unreachable_types.
12873	* include/abg-corpus.h
12874	(corpus::{record_type_as_reachable_from_public_interfaces,
12875	type_is_reachable_from_public_interfaces,
12876	get_types_not_reachable_from_public_interfaces}): Declare new
12877	member functions.
12878	(corpus::recording_types_reachable_from_public_interface_supported):
12879	Declare new virtual member function.
12880	(corpus_group::get_public_types_pretty_representations): Declare
12881	new member functons.
12882	(corpus_group::recording_types_reachable_from_public_interface_supported):
12883	Declare new virtual member function.
12884	* src/abg-corpus-priv.h
12885	(corpus::priv::{types_not_reachable_from_pub_ifaces_,
12886	pub_type_pretty_reprs_}): Define new data members.
12887	(corpus::priv::priv): Initialize the pub_type_pretty_reprs_ data
12888	member because it's a pointer.
12889	(corpus::priv::get_public_types_pretty_representations): Declare
12890	new member function.
12891	(corpus::priv::~priv): Declare a destructor.
12892	* src/abg-corpus.cc
12893	(corpus::priv::get_public_types_pretty_representations): Define
12894	new member function.
12895	(corpus::priv::~priv): Define new destructor to delete the new
12896	pub_type_pretty_reprs_ member pointer.
12897	(corpus::{record_type_as_reachable_from_public_interfaces,
12898	type_is_reachable_from_public_interfaces,
12899	get_types_not_reachable_from_public_interfaces,
12900	recording_types_reachable_from_public_interface_supported}):
12901	Define new member functions
12902	(corpus_group::get_public_types_pretty_representations): Likewise.
12903	* include/abg-diff-utils.h (struct deep_ptr_eq_functor): Document
12904	the equality operator.  Also, add an overload to the equality
12905	operator, for weak_ptr<T>.  The existing equality operator
12906	overload was just for shared_ptr<T>.
12907	* include/abg-fwd.h (is_user_defined_type): Declare function.
12908	* include/abg-ir.h (operator!=(const decl_base_sptr&, const
12909	decl_base_sptr&)): Declare new operator.
12910	(type_maps::get_types_sorted_by_name): Declare
12911	new member function.
12912	(decl_base::{g,s}et_is_artificial): Declare new member function.
12913	(function_decl::parameter::{g,s}et_artificial): Remove these
12914	member functions.
12915	* src/abg-ir.cc (operator!=(const decl_base_sptr&, const
12916	decl_base_sptr&)): Define new operator.
12917	(decl_base::priv::is_artificial_): Define new data
12918	member.
12919	(type_maps::priv::sorted_types_): Define new data member.
12920	(struct type_name_comp): Define new comparison functor to sort
12921	types based on their pretty representations.
12922	(decl_base::priv::priv): Initialize it.
12923	(decl_base::{g,s}et_is_artificial): Define new member functions.
12924	(type_maps::get_types_sorted_by_name): Define new member function.
12925	(is_user_defined_type): Define new function overloads.
12926	(strip_typedef, function_type::{function_type, set_parameters}):
12927	Adjust using decl_base::get_is_artificial rather than
12928	function_decl::parameter::get_artificial.
12929	(function_decl::parameter::priv::artificial_): Remove this data
12930	member.
12931	(function_decl::parameter::priv::priv): Adjust to the removal of
12932	function_decl::parameter::priv::artificial_.  This constructor
12933	does not take an "is_artificial" flag anymore.
12934	(function_decl::parameter::parameter): Adjust to the removal of
12935	the is_artificial flag from the arguments of the constructor of
12936	function_decl::parameter::parameter::priv.
12937	(function_decl::parameter::get_artificial): Remove this member
12938	function.
12939	* src/abg-reporter-priv.h (maybe_report_unreachable_type_changes):
12940	Declare new function.
12941	* src/abg-reporter-priv.cc
12942	(maybe_report_unreachable_type_changes): Define new function.
12943	* src/abg-default-reporter.cc (default_reporter::report): In the
12944	overload for corpus_diff&, report added/removed/changed types that
12945	are not reachable from global functions and variables using the
12946	new function maybe_report_unreachable_type_changes.
12947	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
12948	overload for corpus_diff, report changes to types unreachable from
12949	global functions or variables, using the new function
12950	maybe_report_unreachable_type_changes.
12951	* src/abg-dwarf-reader.cc (build_ir_node_from_die): When the user
12952	requests that all types be loaded, record relevant types as
12953	reachable from global functions and variables.
12954	(build_enum_type, add_or_update_class_type)
12955	(add_or_update_union_type): Read the 'is-artificial' DWARF
12956	attribute and set the corresponding decl_base property
12957	accordingly.
12958	(finish_member_function_reading, strip_typedef)
12959	(function_type::function_type): Adjust using
12960	decl_base::get_is_artificial, rather than
12961	function_decl::parameter::get_artificial.
12962	* include/abg-reader.h
12963	(consider_types_not_reachable_from_public_interfaces): Declare new
12964	function.
12965	* src/abg-reader.cc
12966	(read_context::m_tracking_non_reachable_types): Add new data
12967	member.
12968	(read_context::read_context): Initialize it.
12969	(read_context::tracking_non_reachable_types): Define accessors for
12970	the new data member above.
12971	(read_is_declaration_only): Re-indent.
12972	(read_is_artificial): Define new helper function.
12973	(build_function_parameter): Use the new read_is_artificial
12974	function here, rather than open-coding it.
12975	(build_enum_type_decl, build_class_decl, build_union_decl):
12976	Support reading the 'is-artificial' property by using the new
12977	read_is_artificial function.
12978	(read_corpus_from_input): If the user wants us to take
12979	non-reachable types into account, then make sure we do so.
12980	(read_tracking_non_reachable_types, read_is_non_reachable_type):
12981	Define new static functions.
12982	(handle_element_node, build_type): Read the "is-non-reachable"
12983	attribute on type element nodes if the user wants us to track
12984	non-reachable types.
12985	(consider_types_not_reachable_from_public_interfaces): Define new
12986	function.
12987	* src/abg-writer.cc (write_is_artificial): Define new static
12988	helper function.
12989	(annotate): Adjust using decl_base::get_is_artificial rather than
12990	function_decl::parameter::get_artificial.
12991	(write_enum_type_decl, write_class_decl_opening_tag)
12992	(write_union_decl_opening_tag): Support writing the
12993	"is-artificial" property, using the new write_is_artificial
12994	function.
12995	(write_function_type): Adjust this to use the new
12996	write_is_artificial rather than open-coding writing the
12997	'is-artificial' attribute.
12998	(write_is_non_reachable)
12999	(write_tracking_non_reachable_types): Define new static functions.
13000	(write_enum_type_decl, write_class_decl_opening_tag)
13001	(write_union_decl_opening_tag): Write the 'is-no-reachable'
13002	attribute when applicable.
13003	(write_corpus, write_corpus_group): Write the
13004	'tracking-non-reachable-types' attribute when applicable.
13005	* tools/abidiff.cc (options::options): Initialize ...
13006	(options::show_all_types): ... new data member.
13007	(display_usage): Add help string from the new
13008	--non-reachable-types option.
13009	(parse_command_line): Parse the new --non-reachable-types option.
13010	(set_diff_context_from_opts): Set the
13011	dwarf_reader::read_context::show_unreachable_types property.
13012	(set_native_xml_reader_options): Define new
13013	static function.
13014	(main): Load all types when analyzing the DWARF or the ABIXML
13015	files, if the user wants us to do so.
13016	* tools/abipkgdiff.cc (options::show_all_types): Define new data
13017	member.
13018	(options::options): Initialize it.
13019	(parse_command_line): Parse the --non-reachable-types option to
13020	set the options::show_all_types data member.
13021	(display_usage): Add a help string for the new
13022	--non-reachable-types option.
13023	(set_diff_context_from_opts): Set the
13024	dwarf_reader::read_context::show_unreachable_types property based
13025	on the options::show_all_type data member.
13026	(compare): Configure the read context to load all types while
13027	analyzing the DWARF info, depending on the options::show_all_type
13028	data member.
13029	* doc/manuals/abidiff.rst: Document the new --non-reachable-types
13030	option added to abidiff above.
13031	* doc/manuals/abipkgdiff.rst: Add documentation for the
13032	--non-reachable-types option.
13033	* tests/data/test-diff-suppr/test47-non-reachable-types-v{0,1}.c:
13034	Source code files of test binary input.
13035	* tests/data/test-diff-suppr/test47-non-reachable-types-suppr-{1,2,3,4,5}.txt:
13036	New test input files.
13037	* tests/data/test-diff-suppr/test47-non-reachable-types-report-{1,2,3,4,5,6,7,8,9,10}.txt:
13038	New test reference output files.
13039	* tests/data/test-diff-suppr/test47-non-reachable-types-v{0,1}.o.alltypes.abixml:
13040	New test input abixml.
13041	* tests/data/Makefile.am: Add the new test material to source
13042	distribution.
13043	* tests/test-diff-suppr.cc (in_out_specs): Add the new tests above
13044	to this test harness.
13045	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.
13046	* tests/data/test-diff-pkg/PR24690/flatpak-debuginfo-1.2.4-3.fc30.x86_64.rpm:
13047	New input binary RPM.
13048	* tests/data/test-diff-pkg/PR24690/flatpak-debuginfo-1.4.0-1.fc30.x86_64.rpm:
13049	Likewise.
13050	* tests/data/test-diff-pkg/PR24690/flatpak-devel-1.2.4-3.fc30.x86_64.rpm:
13051	Likewise.
13052	* tests/data/test-diff-pkg/PR24690/flatpak-devel-1.4.0-1.fc30.x86_64.rpm:
13053	Likewise.
13054	* tests/data/test-diff-pkg/PR24690/flatpak-libs-1.2.4-3.fc30.x86_64.rpm:
13055	Likewise.
13056	* tests/data/test-diff-pkg/PR24690/flatpak-libs-1.4.0-1.fc30.x86_64.rpm:
13057	Likewise.
13058	* tests/data/test-diff-pkg/PR24690/flatpak-libs-debuginfo-1.2.4-3.fc30.x86_64.rpm:
13059	Likewise.
13060	* tests/data/test-diff-pkg/PR24690/flatpak-libs-debuginfo-1.4.0-1.fc30.x86_64.rpm:
13061	Likewise.
13062	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: New test
13063	reference output.
13064	* tests/data/Makefile.am: Add the new test material above to
13065	source distribution.
13066	* tests/test-diff-pkg.cc (in_out_specs): Add the new test material
13067	above to this test harness.
13068
130692019-11-26  Dodji Seketeli <dodji@redhat.com>
13070
13071	Small style fix in abg-default-reporter.cc
13072	* src/abg-default-reporter.cc (default_reporter::report): In the
13073	overload for corpus_diff, break a line longer than 80 characters.
13074
130752019-10-21  Matthias Maennich <maennich@google.com>
13076
13077	dwarf-reader: add support for symbol namespaces in ksymtab entries
13078	* src/abg-dwarf-reader.cc
13079	(read_context::try_reading_first_ksymtab_entry): Add
13080	symbol_offset parameter.
13081	(read_context::get_ksymtab_entry_size): Add support for variable
13082	size ksymtab entries due to symbol namespaces.
13083	(load_kernel_symbol_table): only load nb_entries when needed
13084	[1] https://lore.kernel.org/lkml/20190906103235.197072-1-maennich@google.com/
13085
130862019-10-21  Matthias Maennich <maennich@google.com>
13087
13088	dwarf-reader: refactor try_reading_first_ksymtab_entry_using{pre,}_v4_19_format
13089	* src/abg-dwarf-reader.cc(try_reading_first_ksymtab_entry):
13090	New function to consolidate functionality for
13091	try_reading_first_ksymtab_entry_using_{pre,}v4_19_format functions.
13092	(try_reading_first_ksymtab_entry_using_v4_19_format,
13093	try_reading_first_ksymtab_entry_using_pre_v4_19_format):
13094	refactor to use try_reading_first_ksymtab_entry
13095
130962019-10-28  Dodji Seketeli <dodji@redhat.com>
13097
13098	Bug 25128 - Handle decl-only classes that differ only in size
13099	* include/abg-comp-filter.h (is_decl_only_class_with_size_change):
13100	Declare an overload.
13101	* include/abg-fwd.h (look_through_decl_only_class): Declare an
13102	overload.
13103	* src/abg-comp-filter.cc (is_decl_only_class_with_size_change):
13104	Define an overload that takes class_or_union& type. Re-write the
13105	previous overload in terms of this new one.
13106	* src/abg-ir.cc (look_through_decl_only_class): Define a new
13107	overload that takes a class_or_union&.  Rewrite the previous
13108	overload in terms of this one.
13109	(equals): In the overload for class_or_union&, use
13110	is_decl_only_class_with_size_change to detect cases of decl-only
13111	classes that differ only by their size attribute and avoid
13112	comparing them.
13113	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
13114	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
13115	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
13116
131172019-10-24  Dodji Seketeli <dodji@redhat.com>
13118
13119	Bug 25128 - Leaf diff reporter shouldn't compare decl-only classes
13120	* include/abg-comp-filter.h (is_decl_only_class_with_size_change):
13121	Declare new function.
13122	* src/abg-comp-filter.cc (is_decl_only_class_with_size_change):
13123	Define new function.
13124	* src/abg-comparison.cc
13125	(leaf_diff_node_marker_visitor::visit_begin): Use the newly
13126	defined is_decl_only_class_with_size_change above to ignore bogus
13127	decl-only classes with a size change.
13128	* tests/data/test-diff-suppr/test45-abi-report-1.txt: New test input.
13129	* tests/data/test-diff-suppr/test45-abi-wl.xml: Likewise.
13130	* tests/data/test-diff-suppr/test45-abi.xml: Likewise.
13131	* tests/data/test-diff-suppr/test45-abi.suppr.txt: New reference
13132	output for the test input above.
13133	* tests/data/test-diff-suppr/test46-PR25128-base.xml: New test input.
13134	* tests/data/test-diff-suppr/test46-PR25128-new.xml: Likewise.
13135	* tests/data/test-diff-suppr/test46-PR25128-report-1.txt: New
13136	reference input for the test input above.
13137	* tests/data/Makefile.am: Add the new test material to source distribution.
13138	* tests/test-diff-suppr.cc (in_out_spec): Add the new test input
13139	above to this test harness.
13140
131412019-10-18  Dodji Seketeli <dodji@redhat.com>
13142
13143	Bug 25095 - Apply symbol white lists to ELF symbols
13144	* src/abg-tools-utils.cc (gen_suppr_spec_from_kernel_abi_whitelist):
13145	Generate a suppression specification which considers the name of
13146	the symbol associated to a function/variable, rather than just the
13147	name of said function/variable.
13148
131492019-10-18  Dodji Seketeli <dodji@redhat.com>
13150
13151	Support symbol_name_not_regexp in [suppress_{function, variable}]
13152	* doc/manuals/libabigail-concepts.rst: Document the new
13153	symbol_name_not_regexp properties for the
13154	suppress_{function,variable} directives.
13155	* include/abg-suppression.h
13156	({function,variable}_suppression::{g,s}et_symbol_name_not_regex_str):
13157	Declare new member functions.
13158	* src/abg-dwarf-reader.cc
13159	(read_context::is_elf_symbol_suppressed): Define new member functions.
13160	(read_context::{load_symbol_maps_from_symtab_section,
13161	populate_symbol_map_from_ksymtab,
13162	populate_symbol_map_from_ksymtab_reloc}): Drop suppressed symbols
13163	when reading symbol tables.
13164	({function,variable}_is_suppressed): Consider that in C, the
13165	linkage name is _by default_ the same as the function/variable
13166	name. Remove local variable.
13167	* include/abg-ir.h (elf_symbol_is_{function,variable}): Add ...
13168	* src/abg-ir.cc (elf_symbol_is_{function,variable}): ... new
13169	functions.
13170	* src/abg-reader.cc (build_elf_symbol): Take an additional boolean
13171	to detect and drop suppressed symbols.
13172	(build_elf_symbol_db): Adjust the call to build_elf_symbol to make
13173	it detect and drop suppressed symbols.
13174	(read_corpus_from_input): Be mindful that the set of symbols for a
13175	given corpus can be empty because of suppression specifications.
13176	* src/abg-suppression-priv.h
13177	({function,variable}_suppression::priv::symbol_name_not_regex[_str_]):
13178	Add new data members.
13179	(function,variable}_suppression::priv::get_symbol_name_not_regex):
13180	Add new member functions.
13181	({function,variable}_is_suppressed): Guard against empty name.
13182	(is_elf_symbol_suppressed): Define new function template.
13183	* src/abg-suppression.cc
13184	({function,variable}_suppression::{g,s}et_symbol_name_not_regex_str):
13185	Define new member functions.
13186	({function,variable}_suppression::suppresses_function)
13187	(suppression_matches_{function,variable}_sym_name)
13188	(read_{function,variable}_suppression): Support the new
13189	"symbol_name_not_regex" property.
13190	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-1.txt:
13191	New test reference report.
13192	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-2.txt:
13193	Likewise.
13194	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v{0,1}.c:
13195	Sources of the new test input.
13196	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v{0,1}.o:
13197	New test input binaries.
13198	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v{0,1}.o.abi:
13199	New test input abixml files.
13200	* tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp.suppr.txt:
13201	Next test suppression specification.
13202	* tests/data/Makefile.am: Add the new test material above to
13203	source distribution.
13204	* tests/test-diff-suppr.cc (in_out_specs): Add the input tests
13205	above to the test harness.
13206
132072019-10-24  Dodji Seketeli <dodji@redhat.com>
13208
13209	[abg-comparison.cc] Fix comments typo
13210	* src/abg-comparison.cc
13211	(leaf_diff_node_marker_visitor::visit_begin): Fix typo in comment.
13212
132132019-10-04  Matthias Maennich <maennich@google.com>
13214
13215	kmidiff: fix help message
13216	* tools/kmidiff.c (display_usage): add missing line breaks to
13217	help text
13218
132192019-10-04  Matthias Maennich <maennich@google.com>
13220
13221	dwarf-reader: read_corpus_from_elf: unconditionally load elf properties
13222	* src/abg-dwarf-reader.cc (read_corpus_from_elf):
13223	unconditionally load elf properties into context
13224
132252019-10-04  Dodji Seketeli <dodji@redhat.com>
13226
13227	PR25058 - Better support fn DIEs referring to symbols using DW_AT_ranges
13228	* src/abg-dwarf-reader.cc
13229	(read_context::get_first_exported_fn_address_from_DW_AT_ranges):
13230	Rename read_context::get_first_address_from_DW_AT_ranges into
13231	this.  Walk through the addresses referred to by the DW_AT_ranges
13232	attribute until we find one that is for an exported function
13233	symbol, rather than just picking the first address of the set.
13234	(read_context::get_function_address): Adjust.
13235
132362019-10-03  Dodji Seketeli <dodji@redhat.com>
13237
13238	PR25058 - Support decl DIEs referring to symbols using DW_AT_ranges
13239	* src/abg-dwarf-reader.cc
13240	(read_context::get_first_address_from_DW_AT_ranges): Define new
13241	member function.
13242	(read_context::get_function_address): Use the new
13243	read_context::get_first_address_from_DW_AT_ranges here.
13244	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
13245	New reference test output.
13246	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl.so: New test
13247	input binary.
13248	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl2.10.so: New test
13249	input binary.
13250	* tests/data/Makefile.am: Add the new test materials above to
13251	source distribution.
13252	* tests/test-diff-dwarf.cc (in_out_specs): Add the new input test
13253	input binary files to this test harness.
13254
132552019-10-01  Dodji Seketeli <dodji@redhat.com>
13256
13257	Fix thinkos in DW_FORM_strx detection in configure.ac
13258	* configure.ac: Fix thinko when setting the HAVE_DW_FORM_strx
13259	macro.
13260
132612019-10-01  Dodji Seketeli <dodji@redhat.com>
13262
13263	Fix a typo in a comment of abg-dwar-reader.cc
13264	* src/abg-dwarf-reader.cc (compare_dies_string_attribute_value):
13265	Fix a typo in the comment of this function.
13266
132672019-09-30  Dodji Seketeli <dodji@redhat.com>
13268
13269	PR25042 - Support string form DW_FORM_strx{1,4} from DWARF 5
13270	* configure.ac: Detect the presence of the DW_FORM_strx{1,4}
13271	enumerators.
13272	* src/abg-dwarf-reader.cc (form_is_DW_FORM_strx): Define new
13273	function.
13274	(compare_dies_string_attribute_value): Use the new
13275	form_is_DW_FORM_strx here.
13276	* tests/data/Makefile.am: Add the new test input files below to
13277	source distribution.
13278	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0:
13279	New binary test input file.
13280	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
13281	Reference output of the new binary test input file.
13282	* tests/test-read-dwarf.cc (in_out_specs): Add the input test
13283	files above to the test harness, for platforms that support the
13284	DW_FORM_strx form.
13285
132862019-09-04  Dodji Seketeli <dodji@redhat.com>
13287
13288	Support the "name_not_regexp" property in the [suppress_type] section
13289	* doc/manuals/libabigail-concepts.rst: Update this to document the
13290	new name_not_regexp property of the suppress_type directive.
13291	* include/abg-suppression.h
13292	(type_suppression::{g,s}et_type_name_not_regex_str): Declare new accessors.
13293	* src/abg-suppression-priv.h
13294	(type_suppression::priv::{type_name_not_regex_str_,
13295	type_name_not_regex_}): Define new data members.
13296	(type_suppression::priv::{get_type_name_not_regex,
13297	set_type_name_not_regex, get_type_name_not_regex_str,
13298	set_type_name_not_regex_str}): Define new member functions.
13299	* src/abg-suppression.cc
13300	(type_suppression::get_type_name_regex_str): Fix comments.
13301	(type_suppression::{set_type_name_not_regex_str,
13302	get_type_name_not_regex_str}): Define new data members.
13303	(suppression_matches_type_name): Adapt to support the new
13304	type_name_not_regex property.
13305	(read_type_suppression): Support parsing the type_name_not_regexp
13306	property.
13307	* tests/data/test-diff-suppr/test42-negative-suppr-type-report-0.txt:
13308	New test reference output.
13309	* tests/data/test-diff-suppr/test42-negative-suppr-type-report-1.txt: Likewise.
13310	* tests/data/test-diff-suppr/test42-negative-suppr-type-suppr-1.txt:
13311	New test input.
13312	* tests/data/test-diff-suppr/test42-negative-suppr-type-suppr-2.txt: Likewise.
13313	* tests/data/test-diff-suppr/test42-negative-suppr-type-v0.{cc, o}: Likewise.
13314	* tests/data/test-diff-suppr/test42-negative-suppr-type-v1.{cc,
13315	o}: Likewise.
13316	* tests/data/Makefile.am: Add the test files above to source
13317	distribution.
13318	* tests/test-diff-suppr.cc (int_out_specs): Add the new tests to
13319	the harness.
13320
133212019-09-04  Dodji Seketeli <dodji@redhat.com>
13322
13323	Better propagation of suppressed-ness to function types
13324	* src/abg-comparison.cc
13325	(suppression_categorization_visitor::visit_end): Propagate
13326	suppression-ness from suppressed function type diff node to its
13327	parent function node if the latter doesn't have any local non-type
13328	change.
13329	* tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt:
13330	New test reference output.
13331	* tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-suppr-1.txt:
13332	New test input suppression file.
13333	* tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-v{0,1}.cc:
13334	Source code of input binary file.
13335	* tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-v{0,1}.o:
13336	Input binary files.
13337	* tests/data/Makefile.am: Add the new test input files above to
13338	source distribution.
13339	* tests/test-diff-suppr.cc (in_out_specs): Add the test input to
13340	test harness.
13341
133422019-09-04  Dodji Seketeli <dodji@redhat.com>
13343
13344	[has_type_change] Better detect type size changes
13345	* src/abg-comp-filter.cc (has_type_change): Support function
13346	parameters.
13347
133482019-09-23  Dodji Seketeli <dodji@redhat.com>
13349
13350	Fix reading of relocation sections when endianness mismatches
13351	* src/abg-dwarf-reader.cc
13352	(read_context::{get_ksymtab_format_module,
13353	populate_symbol_map_from_ksymtab_reloc}): Use elf_getdata rather
13354	than elf_rawdata.
13355
133562019-09-20  Dodji Seketeli <dodji@redhat.com>
13357
13358	Guard testing v4.19+ AARCH64 kernel module loading for EL6 support
13359	* tests/test-read-dwarf.cc: Do not run the test on
13360	PR25007-sdhci.ko if the macros R_AARCH64_PREL32 and
13361	R_AARCH64_ABS64 are not defined.
13362
133632019-09-19  Dodji Seketeli <dodji@redhat.com>
13364
13365	Remove the elf_symbol::get_value property
13366	* include/abg-ir.h (elf_symbol::{elf_symbol, create}): Remove the
13367	'val' parameter.
13368	* src/abg-dwarf-reader.cc (elf_symbol::get_value): Remove this
13369	member function declaration.
13370	(lookup_symbol_from_sysv_hash_tab)
13371	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
13372	(create_default_var_sym, create_default_fn_sym)
13373	(read_context::lookup_elf_symbol_from_index): Adjust calls to
13374	creating elf_symbol instances.
13375	* src/abg-ir.cc (elf_symbol::priv::value_): Remove this data
13376	member.
13377	(elf_symbol::{priv::priv, elf_symbol, create): Adjust.
13378	* src/abg-reader.cc (build_elf_symbol): Likewise.
13379
133802019-09-19  Dodji Seketeli <dodji@redhat.com>
13381
13382	Bug 25007 - Don't use section-relative symbol values on ET_REL binaries
13383	* src/abg-dwarf-reader.cc
13384	(read_context::{lookup_native_elf_symbol_from_index,
13385	maybe_adjust_et_rel_sym_addr_to_abs_addr}): Define new member
13386	functions.
13387	(read_context::lookup_elf_symbol_from_index): Add a new overload.
13388	Write the old overloads in terms of the new one.
13389	(read_context::{load_symbol_maps_from_symtab_section,
13390	populate_symbol_map_from_ksymtab_reloc}): Use the new
13391	maybe_adjust_et_rel_sym_addr_to_abs_addr function to translate the
13392	symbol value/address into a binary-relative address before adding
13393	it to the addr->sym maps.
13394	(read_context::maybe_adjust_{fn, var}_sym_address): Do not adjust
13395	DWARF-referred-to addresses of ET_REL symbols anymore.
13396	* tests/data/test-read-dwarf/PR25007-sdhci.ko: New binary test input.
13397	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: ABI
13398	representation of the above.
13399	* tests/test-read-dwarf.cc: Add the new test input to the harness.
13400	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
13401	* tests/data/test-diff-filter/test20-inline-report-0.txt: Likewise.
13402	* tests/data/test-diff-filter/test20-inline-report-1.txt: Likewise.
13403	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
13404	* tests/data/test-diff-filter/test9-report.txt: Likewise.
13405
134062019-09-18  Dodji Seketeli <dodji@redhat.com>
13407
13408	Detect the presence of R_AARCH64_{ABS64, PREL32} macros
13409	* configure.ac: Define macros HAVE_R_AARCH64_{ABS64, PREL32}_MACRO
13410	if the macros R_AARCH64_{ABS64, PREL32} are present.
13411	* src/abg-dwarf-reader.cc
13412	(read_context::get_ksymtab_format_module): Conditionalize the use
13413	of R_AARCH64_{ABS64, PREL32} using HAVE_R_AARCH64_{ABS64, PREL32}_MACRO.
13414
134152019-09-03  Jessica Yu <jeyu@kernel.org>
13416
13417	Support pre and post v4.19 ksymtabs for Linux kernel modules
13418	* include/abg-ir.h (elf_symbol::{elf_symbol, create}): Take new
13419	symbol value and shndx parameters.
13420	(elf_symbol::{get_value, get_shndx}): Declare new accessors.
13421	* src/abg-ir.cc (elf_symbol::priv::{value_, shndx_}): New data
13422	members.
13423	(elf_symbol::priv::priv): Adjust.
13424	(elf_symbol::elf_symbol): Take new value and is_linux_string_cst
13425	parameters.
13426	(elf_symbol::create): Likewise.
13427	(elf_symbol::{get_value, get_is_linux_string_cst}): Define new
13428	accessors.
13429	* src/abg-reader.cc (build_elf_symbol): Adjust.
13430	* src/abg-dwarf-reader.cc (binary_is_linux_kernel)
13431	(binary_is_linux_kernel): New static functions.
13432	(lookup_symbol_from_sysv_hash_tab)
13433	(lookup_symbol_from_gnu_hash_tab)
13434	(lookup_symbol_from_symtab): Adjust.
13435	(read_context::{ksymtab_reloc_section_,
13436	ksymtab_gpl_reloc_section_, ksymtab_strings_section_}): New data
13437	members.
13438	(read_context::read_context): Initialize ksymtab_reloc_section_,
13439	ksymtab_gpl_reloc_section_, ksymtab_strings_section_.
13440	(read_context::{find_ksymtab_reloc_section,
13441	find_ksymtab_gpl_reloc_section, find_ksymtab_strings_section,
13442	find_any_ksymtab_reloc_section, get_ksymtab_format_module,
13443	populate_symbol_map_from_ksymtab,
13444	populate_symbol_map_from_ksymtab_reloc, is_linux_kernel_module}):
13445	New member functions.
13446	(read_context::load_kernel_symbol_table): Adjust to call either
13447	populate_symbol_map_from_ksymtab{_reloc,} depending on ksymtab
13448	format.
13449	(read_context::get_ksymtab_format): Adjust to call
13450	get_ksymtab_format_module for linux kernel modules.
13451	(read_context::lookup_elf_symbol_from_index): Adjust.
13452	(create_default_var_sym, create_default_fn_sym): Adjust.
13453
134542019-08-02  Dodji Seketeli <dodji@redhat.com>
13455
13456	Serialize canonical types to avoid testing if types have been emitted
13457	* include/abg-fwd.h (is_decl_slow)
13458	(peel_pointer_or_reference_type): Declare new functions.
13459	* include/abg-ir.h (struct canonical_type_hash): Define new type.
13460	(type_base_ptr_set_type, type_base_ptrs_type)
13461	(type_base_sptrs_type, canonical_type_sptr_set_type): Define new
13462	typedefs.
13463	(environment::get_canonical_types_map): Declare new member
13464	function.
13465	(scope_decl::{get_canonical_types, get_sorted_canonical_types}):
13466	Declare new member functions.
13467	* src/abg-ir.cc (is_ptr_ref_or_qual_type)
13468	(peel_pointer_or_reference_type, is_decl_slow): Define new
13469	functions.
13470	(environment::{get_canonical_types_map}): Define new member
13471	functions.
13472	(canonical_type_hash::operator()): Likewise.
13473	(scope_decl::{get_canonical_types, get_sorted_canonical_types}):
13474	Likewise.
13475	(struct type_topo_comp): Define new comparison functor type.
13476	(environment::{sorted_canonical_types_}): Define new data member.
13477	(scope_decl::priv::{canonical_types_, sorted_canonical_types_}):
13478	Likewise.
13479	(scope_decl::is_empty): Take the presence of canonical types into
13480	account when determining if a scope is empty or not.
13481	(is_decl): Make this work for cases where the artifact at hand is
13482	a type which has a declaration, as opposed to being a pure
13483	declaration like a variable or a function.
13484	(canonicalize): Add the canonical type the list of canonical types
13485	of its scope.
13486	* src/abg-dwarf-reader.cc (read_context::die_is_in_cplus_plus):
13487	Define new member function.
13488	* src/abg-writer.cc (write_type, write_canonical_types_of_scope):
13489	Define new static functions.
13490	(fn_type_ptr_set_type): Define new typedef.
13491	(write_context::{m_referenced_fn_types_set,
13492	m_referenced_non_canonical_types_set}): Add new data members.
13493	(write_context::m_referenced_types_set): Renamed
13494	m_referenced_types_map into this.
13495	(write_context::get_referenced_types): Adjust.
13496	(write_context::get_referenced_{function_types,
13497	non_canonical_types}):
13498	(write_context::record_type_as_referenced): Adjust to add the
13499	referenced type in the proper set which would be one of the three
13500	following: write_context::{get_referenced_types,
13501	get_referenced_function_types,
13502	get_referenced_non_canonical_types}.
13503	(write_context::{type_is_referenced, clear_referenced}): Adjust.
13504	(write_translation_unit): Use the new
13505	write_canonical_types_of_scope.  Also emit declaration-only
13506	classes that have member types.  Do not test if a given type of a
13507	given scope has been emitted, in general, as this was super slow
13508	given the number of types.  Emit referenced function types (as
13509	these don't belong to any scope).  Rather than using the expensive
13510	"is_function_type" on *all* the referenced types, just walk the
13511	set write_context::get_referenced_function_types.  Likewise,
13512	rather than using type_base::get_naked_canonical_type on
13513	*all* the referenced types, just walk the set
13514	write_context::get_referenced_non_canonical_types
13515	(write_class): Use write_canonical_types_of_scope here.
13516	* tools/abilint.cc (main): Support linting corpus group abixml
13517	files.
13518	* tests/data/test-annotate/libtest23.so.abi: Adjust.
13519	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
13520	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
13521	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise.
13522	* tests/data/test-annotate/test0.abi: Likewise.
13523	* tests/data/test-annotate/test1.abi: Likewise.
13524	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
13525	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
13526	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
13527	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
13528	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
13529	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
13530	* tests/data/test-annotate/test2.so.abi: Likewise.
13531	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
13532	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
13533	* tests/data/test-annotate/test4.so.abi: Likewise.
13534	* tests/data/test-annotate/test6.so.abi: Likewise.
13535	* tests/data/test-annotate/test7.so.abi: Likewise.
13536	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
13537	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
13538	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
13539	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: Likewise.
13540	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
13541	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
13542	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
13543	* tests/data/test-read-dwarf/test0.abi: Likewise.
13544	* tests/data/test-read-dwarf/test1.abi: Likewise.
13545	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
13546	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
13547	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
13548	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
13549	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
13550	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
13551	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
13552	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
13553	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
13554	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
13555	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
13556	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
13557	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
13558	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
13559	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
13560	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
13561	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
13562	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
13563	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
13564	* tests/data/test-read-write/test10.xml: Likewise.
13565	* tests/data/test-read-write/test14.xml: Likewise.
13566	* tests/data/test-read-write/test15.xml: Likewise.
13567	* tests/data/test-read-write/test17.xml: Likewise.
13568	* tests/data/test-read-write/test18.xml: Likewise.
13569	* tests/data/test-read-write/test19.xml: Likewise.
13570	* tests/data/test-read-write/test2.xml: Likewise.
13571	* tests/data/test-read-write/test20.xml: Likewise.
13572	* tests/data/test-read-write/test21.xml: Likewise.
13573	* tests/data/test-read-write/test22.xml: Likewise.
13574	* tests/data/test-read-write/test23.xml: Likewise.
13575	* tests/data/test-read-write/test24.xml: Likewise.
13576	* tests/data/test-read-write/test25.xml: Likewise.
13577	* tests/data/test-read-write/test26.xml: Likewise.
13578	* tests/data/test-read-write/test27.xml: Likewise.
13579	* tests/data/test-read-write/test28-without-std-fns-ref.xml: Likewise.
13580	* tests/data/test-read-write/test28-without-std-vars-ref.xml: Likewise.
13581	* tests/data/test-read-write/test3.xml: Likewise.
13582	* tests/data/test-read-write/test6.xml: Likewise.
13583
135842019-07-24  Matthias Maennich <maennich@google.com>
13585
13586	abg-dwarf-reader: detect kernel modules without exports as such
13587	* src/abg-dwarf-reader.cc(is_linux_kernel_binary): consider
13588	binaries only having a .modinfo section to be kernel binaries
13589	Co-developed-by: Alessio Balsini <balsini@android.com>
13590
135912019-07-22  Matthias Maennich <maennich@google.com>
13592
13593	Ensure a consistent C++ standard use
13594	* configure.ac: add -std=c++11 flag to CXXFLAGS when compiling
13595	for C++11
13596	* src/Makefile.am: drop now obsolete setting of the -std flag
13597	* tests/Makefile.am: likewise
13598	Reported-by: Chun-Hung Wu <Chun-hung.Wu@mediatek.com>
13599
136002019-07-19  Dodji Seketeli <dodji@redhat.com>
13601
13602	Bug 24787 - Filter out enum changes into compatible integer types
13603	* include/abg-comparison.h (peel_typedef_or_qualified_type_diff):
13604	Declare new function.
13605	(peel_pointer_or_qualified_type_diff): Rename
13606	peel_pointer_or_qualified_type into this.
13607	* include/abg-fwd.h (is_enum_type): Declare a new overload for
13608	type_or_decl_base*.
13609	* src/abg-comp-filter.cc (has_harmless_enum_to_int_change): Define
13610	new static function.
13611	* src/abg-comparison.cc (categorize_harmless_diff_node): Use the
13612	new has_harmless_enum_to_int_change here.
13613	(peel_pointer_or_qualified_type_diff): Renamed
13614	peel_pointer_or_qualified_type into this.
13615	(is_diff_of_basic_type): Adjust.
13616	(peel_typedef_or_qualified_type_diff): Define new function.
13617	* test-diff-filter/PR24787-lib{one, two}.so: New test input
13618	binaries.
13619	* test-diff-filter/PR24787-{one, two}.c: Source files of the test
13620	input binaries above.
13621	* test-diff-filter/PR24787-report-0.txt: Test output reference.
13622	* tests/data/Makefile.am: Add the new testing material to source
13623	distribution.
13624	* tests/test-diff-filter.cc (in_out_specs): Add the new test to
13625	the test harness.
13626
136272019-07-19  Dodji Seketeli <dodji@redhat.com>
13628
13629	Add timing to the verbose logs of abidw
13630	* include/abg-tools-utils.h (class timer): Declare new type.
13631	(operator<<(ostream&, const timer&)): Declare new streaming
13632	operator for the new timer type.
13633	* src/abg-tools-utils.cc (struct timer::priv): Define new type.
13634	(timer::{timer, start, stop, value_in_seconds, value,
13635	value_as_string, ~timer}): Define member functions.
13636	(operator<<(ostream& o, const timer& t)): Define streaming
13637	operator.
13638	(build_corpus_group_from_kernel_dist_under): Add timing logs to
13639	the linux kernel reading process.
13640	* src/abg-dwarf-reader.cc
13641	(read_context::canonicalize_types_scheduled): Add timing logs to
13642	type canonicalization.
13643	(read_debug_info_into_corpus): Add timing logs for the whole debug
13644	info loading and internal representation building process.
13645	* tools/abidw.cc (load_corpus_and_write_abixml): Add timing logs
13646	for the binary loading and serizalization process.
13647	(load_kernel_corpus_group_and_write_abixml): Add timing logs the
13648	Linux Kernel binary loading and writing process.
13649
136502019-07-18  Dodji Seketeli <dodji@redhat.com>
13651
13652	[ir] Fix indentation and add comments
13653	* src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public):
13654	Fix indentation and add comments.
13655
136562019-07-15  Dodji Seketeli <dodji@redhat.com>
13657
13658	Implement fast comparison of Linux Kernel types when applicable
13659	* include/abg-corpus.h (corpus::origin): Add a new
13660	LINUX_KERNEL_BINARY_ORIGIN enumerator.
13661	(corpus::{s,g}et_group): Declare new member
13662	functions.
13663	(class corpus): Make the corpus_group class friend of this one.
13664	(corpus_group::get_main_corpus): Declare new member function.
13665	* src/abg-corpus-priv.h (corpus::priv::group): Define new data
13666	member.
13667	(corpus::priv::priv): Initialize the new corpus::priv::group data
13668	member.
13669	* src/abg-corpus.cc (corpus::{g,s}et_group): Define new member
13670	functions.
13671	(corpus_group::get_main_corpus): Likewise.
13672	(corpus_group::add_corpus): Use the new corpus::set_group() here
13673	to to make the corpus be aware of the group it belongs to.
13674	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Set the
13675	current corpus origin to the corpus::LINUX_KERNEL_BINARY_ORIGIN if
13676	we are looking at a Linux Kernel binary.
13677	(read_context::main_corpus_from_current_group): Use the
13678	corpus_group::get_main_corpus method.
13679	(should_reuse_type_from_corpus_group): Return the corpus group,
13680	rather than the main corpus.
13681	(read_debug_info_into_corpus): Add the current corpus to the
13682	current corpus group before the debug info reading is done.  That
13683	way, the corpus group will be accessible from the current corpus
13684	during the construction of the internal representation.
13685	(read_and_add_corpus_to_group_from_elf): Add the corpus to the
13686	group only if it wasn't added to it before.
13687	* include/abg-ir.h (operator{==,!=}): Declare new deep equality
13688	and inequality operators for class_or_union_sptr and
13689	union_decl_sptr.
13690	* src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public):
13691	Define a new static function.
13692	(type_base::get_canonical_type_for): Use the new
13693	types_defined_same_linux_kernel_corpus_public here to speed up
13694	type comparison.
13695	(equals): In the overload of class_or_union, use the new
13696	types_defined_same_linux_kernel_corpus_public as well, to speed up
13697	type comparison.
13698	(operator{==,!=}): Define new deep equality and inequality
13699	operators for class_or_union_sptr and union_decl_sptr.
13700	(maybe_update_types_lookup_map): In the overload function for
13701	type_decl_sptr, class_decl_sptr, union_decl_sptr,
13702	enum_type_decl_sptr, typedef_decl_sptr, qualified_type_def_sptr,
13703	reference_type_def_sptr, array_type_def_sptr,
13704	array_type_def::subrange_sptr, and function_type_sptr, update the
13705	type lookup maps of the containing corpus group as well, not just
13706	the ones of the current corpus.
13707	* src/abg-reader.cc (build_enum_type_decl): Forgot to set the
13708	"is-anonymous" flag.  Oops, fix this.
13709	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
13710	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
13711	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
13712	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
13713	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
13714
137152019-07-09  Matthias Maennich <maennich@google.com>
13716
13717	abg-tools-utils: add missing header include guards
13718	* include/abg-tools-utils.h: add header include guards
13719
137202019-07-05  Matthias Maennich <maennich@google.com>
13721
13722	Add compatibility layer for C++11 mode
13723	* include/abg-cxx-compat.h: new file introducing the abg_compat
13724	namespace to provide C++11 functionality from either std::tr1
13725	or std::
13726	* include/Makefile.am: Add the new abg-cxx-compat.h to source
13727	distribution.
13728	* include/abg-comparison.h: replace std::tr1 usage by abg_compat
13729	and adjust includes accordingly: likewise
13730	* include/abg-diff-utils.h: likewise
13731	* include/abg-fwd.h: likewise
13732	* include/abg-ini.h: likewise
13733	* include/abg-interned-str.h: likewise
13734	* include/abg-ir.h: likewise
13735	* include/abg-libxml-utils.h: likewise
13736	* include/abg-libzip-utils.h: likewise
13737	* include/abg-reporter.h: likewise
13738	* include/abg-sptr-utils.h: likewise
13739	* include/abg-suppression.h: likewise
13740	* include/abg-tools-utils.h: likewise
13741	* include/abg-workers.h: likewise
13742	* src/abg-comp-filter.cc: likewise
13743	* src/abg-comparison-priv.h: likewise
13744	* src/abg-corpus.cc: likewise
13745	* src/abg-dwarf-reader.cc: likewise
13746	* src/abg-hash.cc: likewise
13747	* src/abg-ir.cc: likewise
13748	* src/abg-reader.cc: likewise
13749	* src/abg-suppression.cc: likewise
13750	* src/abg-tools-utils.cc: likewise
13751	* src/abg-writer.cc: likewise
13752	* tests/test-diff-filter.cc: likewise
13753	* tests/test-diff-pkg.cc: likewise
13754	* tests/test-read-dwarf.cc: likewise
13755	* tests/test-read-write.cc: likewise
13756	* tests/test-types-stability.cc: likewise
13757	* tests/test-write-read-archive.cc: likewise
13758	* tools/abicompat.cc: likewise
13759	* tools/abidiff.cc: likewise
13760	* tools/abidw.cc: likewise
13761	* tools/abilint.cc: likewise
13762	* tools/abipkgdiff.cc: likewise
13763
137642019-07-05  Matthias Maennich <maennich@google.com>
13765
13766	Update tests/.gitignore to ignore runtesttoolsutils
13767	* tests/.gitignore: ignore runtesttoolsutils
13768
137692019-07-05  Matthias Maennich <maennich@google.com>
13770
13771	Drop requirement to compile with GNU extensions
13772	* include/abg-tools-utils.h (get_stream): Change return type to
13773	std::fstream
13774	* src/abg-corpus.cc: remove unused #include of ext/stdio_filebuf.h
13775	* src/abg-tools-utils (temp_file::priv): remove filebuf_ member,
13776	and replace iostream_ by fstream_ with changing the shared_ptr
13777	type accordingly
13778	(temp_file::priv::priv): initialize fstream_ based on
13779	temporary file name
13780	(temp_file::priv::~priv): adjust destruction accordingly
13781	(temp_file::is_good): test the fstream rather than the fd
13782	(temp_file::get_stream): adjust return type to std::fstream
13783	and adjust implementation based on the changes in temp_file::priv
13784	* src/Makefile.am: remove gnu extension from c++ standard flag
13785	* tests/Makefile.am: likewise
13786
137872019-07-09  Dodji Seketeli <dodji@redhat.com>
13788
13789	Misc indent cleanup
13790	* src/abg-dwarf-reader.cc (addr_elf_symbol_sptr_map_sptr): Fix a
13791	typo in the comment of this typedef.
13792	* src/abg-ir.cc (hash_type_or_decl): Fix typo in a comment.
13793	* src/abg-writer.cc (write_translation_unit): Remove useless
13794	vertical space.
13795
137962019-07-08  Dodji Seketeli <dodji@redhat.com>
13797
13798	[xml-writer] Remove a useless kludge
13799	* src/abg-writer.cc (write_context::type_is_emitted): Remove
13800	useless kludge from here.
13801
138022019-07-08  Dodji Seketeli <dodji@redhat.com>
13803
13804	[xml-writter] Speedup function_type::get_cached_name
13805	* src/abg-ir.cc (function_type::get_cached_name): Really cache the
13806	computed name of function_type instances.
13807
138082019-07-08  Dodji Seketeli <dodji@redhat.com>
13809
13810	[xml-writter] Avoid using RTTI when dynamically hashing types
13811	* include/abg-fwd.h (hash_type): Declare new function.
13812	* src/abg-ir.cc (hash_type): Define new function.
13813	* src/abg-writer.cc (type_hasher::operator()): Use the new
13814	hash_type rather than the old hash_type_or_decl.
13815
138162019-07-08  Dodji Seketeli <dodji@redhat.com>
13817
13818	Implement a poor-man's RTTI for performance
13819	* include/abg-fwd.h (is_type_decl): Replace the overloads
13820	that takes a type_base* and/or a decl_base* by one that takes a
13821	type_or_decl_base*.
13822	* include/abg-ir.h (type_or_decl_base::type_or_decl_kind): Define
13823	new enum.
13824	(type_or_decl_base::{kind, runtime_type_instance,
13825	type_or_decl_base_pointer}): Declare new accessors.
13826	(operator{|,|=,&,&=): Declare new operators for the new
13827	type_or_decl_base::type_or_decl_kind enum.
13828	(global_scope::global_scope): Move the definition of this
13829	constructor to ...
13830	* src/abg-ir.cc (global_scope::global_scope): ... here.
13831	(type_or_decl_base::priv::{kind_, rtti_, type_or_decl_ptr_}):
13832	Add new data members.
13833	(type_or_decl_base::priv::priv): Take a
13834	type_or_decl_base::type_or_decl_kind enum.
13835	(type_or_decl_base::priv::kind): Define new accessors.
13836	(operator{|,|=,&,&=): Define new operators for the new
13837	type_or_decl_base::type_or_decl_kind enum.
13838	(type_or_decl_base::type_or_decl_base): Take a
13839	type_or_decl_base::type_or_decl_kind enum.
13840	(type_or_decl_base::{kind, runtime_type_instance,
13841	type_or_decl_base_pointer}): Define new accessors.
13842	(decl_base::decl_base, scope_decl::scope_decl)
13843	(type_base::type_base, scope_type_decl::scope_type_decl)
13844	(class_or_union::class_or_union) : Adjust to set the runtime type
13845	identifier of the instances of these types.
13846	(global_scope::global_scope, type_decl::type_decl)
13847	(qualified_type_def::qualified_type_def)
13848	(pointer_type_def::pointer_type_def)
13849	(reference_type_def::reference_type_def
13850	array_type_def::subrange_type::subrange_type)
13851	(array_type_def::array_type_def, enum_type_decl::enum_type_decl)
13852	(typedef_decl::typedef_decl, var_decl::var_decl)
13853	(function_type::function_type, method_type::method_type)
13854	(function_decl::function_decl)
13855	(function_decl::parameter::parameter, method_decl::method_decl)
13856	(class_decl::class_decl, class_decl::base_spec::base_spec)
13857	(union_decl::union_decl, template_decl::template_decl)
13858	(type_tparameter::type_tparameter)
13859	(non_type_tparameter::non_type_tparameter)
13860	(template_tparameter::template_tparameter)
13861	(type_composition::type_composition)
13862	(function_tdecl::function_tdecl, function_tdecl::function_tdecl)
13863	(class_tdecl::class_tdecl):
13864	Likewise and call runtime_type_instance() here to set the runtime
13865	type instance pointers of the current instance.
13866	(is_decl, is_type, is_class_type, is_pointer_type): Adjust to use
13867	the new poor-man's rtti machinery.
13868	(is_type_decl): Replace the overloads that takes a type_base*
13869	and/or a decl_base* by one that takes a type_or_decl_base*.
13870	(pointer_type_def::operator==, class_decl::operator==): Use the
13871	poor-man's rtti machinery to replace dynamic_cast.
13872	hash_type_or_decl: Replace dynamic_cast<const type_base> by
13873	is_type() and dynamic_cast<const decl_base*> by is_decl().
13874
138752019-07-05  Dodji Seketeli <dodji@redhat.com>
13876
13877	[dwarf-reader] Make sure to canonicalize anonymous types
13878	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Add two new
13879	overloads.  One that takes type_base_sptr, one that takes a
13880	Dwarf_Die* and type_base_sptr.  These force canonicalization for
13881	anonymous types.
13882	(build_function_type): Schedule function types for
13883	canonicalization.
13884	(build_ir_node_from_die): For struct/classes and unions, use the
13885	new overload of maybe_canonicalize_type to schedule
13886	canonicalization.
13887	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
13888	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
13889	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
13890	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
13891	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
13892
138932019-07-04  Dodji Seketeli <dodji@redhat.com>
13894
13895	[dwarf-reader] Constify the first parameter of maybe_canonicalize_type
13896	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Make the
13897	first parameter const.
13898	(read_context::{get_canonical_die, lookup_artifact_from_die,
13899	lookup_type_from_die, schedule_type_for_late_canonicalization}):
13900	Adjust.
13901
139022019-06-26  Dodji Seketeli <dodji@redhat.com>
13903
13904	Make abidiff --harmless show harmless changes in unions
13905	* include/abg-fwd.h (get_class_or_union_flat_representation): Add
13906	a "qualified_name" boolean parameter.
13907	* include/abg-ir.h ({type_or_decl_base, decl_base, type_decl,
13908	namespace_decl, array_type_def::subrange_type, array_type_def,
13909	enum_type_decl, typedef_decl, var_decl, function_decl,
13910	function_decl::parameter, function_type, method_type, class_decl,
13911	union_decl}::get_pretty_representation): Likewise.
13912	* src/abg-ir.cc ({type_or_decl_base, decl_base, type_decl,
13913	namespace_decl, array_type_def::subrange_type, array_type_def, enum_type_decl,
13914	typedef_decl, var_decl, function_decl, function_decl::parameter,
13915	function_type, method_type, class_decl, union_decl,
13916	}::get_pretty_representation): Adjust the code to emit qualified
13917	or non-qualified names depending on the new "qualified_name"
13918	boolean parameter.
13919	(get_class_or_union_flat_representation): Likewise.
13920	* src/abg-default-reporter.cc (default_reporter::report): Use
13921	get_class_or_union_flat_representation with the new
13922	"qualified_name" boolean set to false.
13923	* tests/data/test-diff-dwarf/test38-union-report-0.txt: Adjust.
13924	* tests/test-diff-filter.cc (in_out_specs): Run the test harness
13925	on test-PR24731-v{0,1}.o make abidiff use the --harmless option.
13926
139272019-06-26  Dodji Seketeli <dodji@redhat.com>
13928
13929	Bug 24731 - Wrongly reporting union members order change
13930	* include/abg-comp-filter.h (union_diff_has_harmless_changes):
13931	Declare new function and ...
13932	* src/abg-comp-filter.cc (union_diff_has_harmless_changes):
13933	... define it here.
13934	(categorize_harmless_diff_node): Use the new
13935	union_diff_has_harmless_changes here.
13936	* include/abg-comparison.h (HARMLESS_UNION_CHANGE_CATEGORY): Add a
13937	new enumerator to diff_category enum.  Adjust the value of the
13938	other enumerators.
13939	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
13940	Add the new HARMLESS_UNION_CHANGE_CATEGORY in here.
13941	(operator<<(ostream& o, diff_category c)): Support the new
13942	HARMLESS_UNION_CHANGE_CATEGORY.
13943	* tests/data/test-diff-filter/test-PR24731-report-0.txt: Likewise.
13944	* tests/data/test-diff-filter/test-PR24731-report-1.txt: Likewise.
13945	* tests/data/test-diff-filter/test-PR24731-v0.c: Likewise.
13946	* tests/data/test-diff-filter/test-PR24731-v0.o: Likewise.
13947	* tests/data/test-diff-filter/test-PR24731-v1.c: Likewise.
13948	* tests/data/test-diff-filter/test-PR24731-v1.o: Likewise.
13949	* tests/data/Makefile.am: Add the new test material above to
13950	source distribution.
13951	* tests/test-diff-filter.cc (in_out_spec): Add the new test input
13952	to this test harness.
13953
139542019-06-20  Dodji Seketeli <dodji@redhat.com>
13955
13956	Fully account for anonymous-ness of scopes when comparing decl names
13957	* include/abg-ir.h (decl_base::{get_has_anonymous_parent,
13958	set_has_anonymous_parent,
13959	get_is_anonymous_or_has_anonymous_parent}): Declare new member
13960	functions.
13961	* src/abg-ir.cc (decl_base::priv::has_anonymous_parent_): Define
13962	new data member.
13963	(decl_base::priv): Initialize the new data member.
13964	(decl_base::{get_has_anonymous_parent, set_has_anonymous_parent,
13965	get_is_anonymous_or_has_anonymous_parent}): Define new member
13966	functions.
13967	(equals): In the overload for decl_base, use the new
13968	decl_names_equal for decls that have anonymous scopes.
13969	(scope_decl::add_member_decl): Propagate the
13970	decl_base::has_anonymous_parent_ property.
13971	* include/abg-tools-utils.h
13972	(get_anonymous_struct_internal_name_prefix)
13973	(get_anonymous_union_internal_name_prefix)
13974	(get_anonymous_enum_internal_name_prefix, decl_names_equal):
13975	Declare new functions.
13976	* src/abg-comp-filter.cc (has_harmless_name_change): Handle the
13977	case where the name change is actually from an anonymous name to
13978	another one, using the new decl_names_equal function.
13979	* src/abg-dwarf-reader.cc
13980	(get_internal_anonymous_die_prefix_name): Renamed
13981	get_internal_anonynous_die_base_name into this.  Use the new
13982	get_anonymous_{struct, union, enum}_internal_name_prefix functions
13983	here.
13984	(get_internal_anonymous_die_name, die_qualified_type_name)
13985	(build_enum_type, add_or_update_class_type)
13986	(add_or_update_union_type): Adjust.
13987	* src/abg-tools-utils.cc (get_anonymous_struct_internal_name_prefix)
13988	(get_anonymous_union_internal_name_prefix)
13989	(get_anonymous_enum_internal_name_prefix, decl_names_equal):
13990	Define new functions.
13991	* tests/test-tools-utils.cc: New test file.
13992	* tests/Makefile.am: Add new runtesttoolsutils test, built from
13993	test-tools-utils.cc.
13994	* tests/data/test-diff-dwarf/test46-rust-report-0.txt: Adjust.
13995	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
13996	Likewise.
13997	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
13998
139992019-06-12  Matthias Maennich <maennich@google.com>
14000
14001	abg-reporter.h: add missing includes / using declarations
14002	* include/abg-reporter.h: fix includes and using declarations
14003
140042019-06-17  Dodji Seketeli <dodji@redhat.com>
14005
14006	[dwarf-reader] Fix indentation in compare_dies_string_attribute_value
14007	* src/abg-dwarf-reader.cc (compare_dies_string_attribute_value):
14008	Fix indentation.
14009
140102019-06-17  Dodji Seketeli <dodji@redhat.com>
14011
14012	[dwarf-reader] Optimize speed of compare_as_decl_dies
14013	* src/abg-dwarf-reader.cc (die_is_class_type): Take a const
14014	pointer to Dwarf_Die.
14015	(compare_as_decl_dies): For classes/structs, call
14016	compare_dies_string_attribute_value just once to compare the
14017	DW_AT_name attribute values.
14018
140192019-06-13  Dodji Seketeli <dodji@redhat.com>
14020
14021	[dwarf-reader] Better use of linkage name for fn decl de-duplication
14022	* src/abg-dwarf-reader.cc (read_context::{die_is_in_c,
14023	die_is_in_c_or_cplusplus}): Define new member functions.
14024	(fn_die_equal_by_linkage_name): Define new static function.
14025	(compare_dies): In the case for for DW_TAG_subprogram, use the new
14026	fn_die_equal_by_linkage_name.
14027	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
14028	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
14029	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
14030	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
14031
140322019-06-13  Dodji Seketeli <dodji@redhat.com>
14033
14034	[dwarf-reader] Re-use function types inside a given TU
14035	* src/abg-dwarf-reader.cc (istring_fn_type_map_type): Declare new
14036	typedef.
14037	(die_is_function_type): Define new static function.
14038	(read_context::per_tu_repr_to_fn_type_maps_): Define new data
14039	member ...
14040	(read_context::per_tu_repr_to_fn_type_maps): ... and its accessor.
14041	(read_context::{associate_die_repr_to_fn_type_per_tu,
14042	lookup_fn_type_from_die_repr_per_tu}): Define new member
14043	functions.
14044	(build_function_type): Use the new
14045	read_context::lookup_fn_type_from_die_repr_per_tu and
14046	read_context::associate_die_repr_to_fn_type_per_tu functions,
14047	instead of read_context::lookup_type_from_die.
14048	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
14049	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
14050	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
14051	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
14052	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
14053	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
14054	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
14055
140562019-06-03  Dodji Seketeli <dodji@redhat.com>
14057
14058	[dwarf-reader] const-ify Dwarf_Die* use in many places
14059	* src/abg-dwarf-reader.cc (get_parent_die, get_scope_die)
14060	(die_is_anonymous, die_is_type, die_is_decl, die_is_namespace)
14061	(die_is_pointer_type, pointer_or_qual_die_of_anonymous_class_type)
14062	(die_is_reference_type, die_is_pointer_or_reference_type)
14063	(die_is_qualified_type, die_has_object_pointer)
14064	(die_is_at_class_scope, die_unsigned_constant_attribute)
14065	(die_signed_constant_attribute, die_attribute_is_signed)
14066	(die_attribute_is_unsigned, die_attribute_has_no_signedness)
14067	(die_name, die_location, die_qualified_type_name)
14068	(die_qualified_decl_name, die_qualified_name)
14069	(die_qualified_type_name_empty)
14070	(die_return_and_parm_names_from_fn_type_die)
14071	(die_function_signature, die_function_type_is_method_type)
14072	(die_pretty_print_type, die_pretty_print_decl, die_pretty_print)
14073	(maybe_canonicalize_type, build_subrange_type)
14074	(build_subranges_from_array_type_die, compare_dies)
14075	(read_context::get_container)
14076	(read_context::compute_canonical_die_offset)
14077	(read_context::get_or_compute_canonical_die)
14078	(read_context::get_die_source)
14079	(read_context::get_die_qualified_type_name)
14080	(read_context::get_die_pretty_representation)
14081	(read_context::get_die_language, read_context::odr_is_relevant)
14082	(read_context::set_canonical_die_offset)
14083	(read_context::associate_die_to_type, die_is_anonymous)
14084	(die_string_attribute, die_constant_attribute)
14085	(die_attribute_has_form, die_linkage_name)
14086	(die_decl_file_attribute, die_die_attribute, die_size_in_bits)
14087	(die_is_decl, die_is_namespace)
14088	(pointer_or_qual_die_of_anonymous_class_type, die_is_array_type)
14089	(die_is_pointer_reference_or_typedef_type)
14090	(die_peel_pointer_and_typedef, die_function_type_is_method_type)
14091	(die_virtuality, die_is_virtual)
14092	(compare_dies_string_attribute_value, compare_dies_cu_decl_file)
14093	(die_location_expr, die_member_offset)
14094	(get_internal_anonynous_die_base_name, compare_as_decl_dies)
14095	(compare_as_type_dies): Const-ify the Dwarf_Die* parameter(s) of
14096	these functions.
14097
140982019-06-05  Dodji Seketeli <dodji@redhat.com>
14099
14100	Take anonymous scopes into account when comparing decls
14101	* include/abg-interned-str.h (interned_string::clear): Add new
14102	member function.
14103	* src/abg-ir.cc (equals): In the overload for decl_base, consider
14104	the scope of the current (anonymous) decl.  If that scope is
14105	anonymous then take that into account as well.
14106	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
14107	Adjust.
14108	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
14109
141102019-05-21  Matthias Maennich <maennich@google.com>
14111
14112	.clang-format: Add more options for match existing coding style
14113	* .clang-format: Add options for ConstructorInitializers
14114	Set SortUsingDeclarations=false
14115	Set AlignConsecutiveDeclarations=true
14116
141172019-05-21  Matthias Maennich <maennich@google.com>
14118
14119	.gitignore: Add libabigail-?.* *.orig files
14120	* .gitignore: add entries for distribution artifacts
14121	* .gitignore: add *.orig files
14122
141232019-05-21  Matthias Maennich <maennich@google.com>
14124
14125	abg-writer: drop deprecated API
14126	* include/abg-fwd.h (ABG_DEPRECATED): Remove this macro.
14127	* include/abg-writer.h (write_translation_unit, write_corpus)
14128	(write_corpus_group): Drop the deprecated overloads of these
14129	declarations.
14130	* src/abg-writer.cc (write_translation_unit, write_corpus)
14131	(write_corpus_group): Drop the deprecated overloads of these
14132	definitions.
14133
141342019-05-21  Matthias Maennich <maennich@google.com>
14135
14136	abidw: add option to only emit file names (--short-locs)
14137	* include/abg-writer.h (set_short_locs): Declare new function.
14138	(set_common_options): Use it.
14139	set_opts
14140	* src/abg-writer.cc (write_context::m_short_locs): New data
14141	member.
14142	(write_context::write_context): Initialize it.
14143	(write_context::{g,s}et_short_locs): Define new accessors.
14144	(write_location, write_translation_unit, write_corpus): Honour the
14145	new write_context::get_short_locs property.
14146	(set_short_locs): Define new function.
14147	* tools/abidw.cc (options::short_locs): New data member.
14148	(display_usage): Help string for the new --no-show-locs option.
14149	(parse_command_line): Parse the new --no-show-locs option.
14150
141512019-05-21  Matthias Maennich <maennich@google.com>
14152
14153	abidw: add option to omit the compilation directory
14154	* include/abg-writer.h (set_write_comp_dir): Declare new function.
14155	(set_common_options): Use it.
14156	* src/abg-writer.cc (write_context::m_write_comp_dir): Define new
14157	data member.
14158	(write_context::write_context): Initialize it.
14159	(write_context::{g,s}et_write_comp_dir): Define new member
14160	accessors.
14161	(set_write_comp_dir): Define new free-form getter.
14162	(write_translation_unit): Teach to respect write_comp_dir flag of
14163	write_context.
14164	* tools/abidw.cc (options::write_corpus_path): Define new data
14165	member.
14166	(options::options): Initialize it.
14167	(display_usage): Add doc string for a new command line option: --no-comp-dir-path.
14168	(parse_command_line): Parse the new command line option --no-comp-dir-path.
14169
141702019-05-21  Matthias Maennich <maennich@google.com>
14171
14172	Make write_architecture and write_corpus_path flags in the write_context
14173	* include/abg-writer.h (set_write_architecture)
14174	(set_write_corpus_path): Declare new getter functions.
14175	(write_corpus): Take a new "member_of_group" argument.
14176	(set_common_options): Use set_write_{architecture, corpus_path}
14177	here.
14178	* src/abg-writer.cc (write_context::m_write_{architecture,
14179	corpus_path}}): Add new data members.
14180	(write_context::write_context): Initialize the new data members.
14181	(write_context::{s,g}et_write_{architecture, corpus}): Define new
14182	accessors.
14183	(set_write_{architecture, corpus}): Define new free-form getter
14184	functions.
14185	(write_corpus): Add flag to make aware if written as part of a
14186	group.
14187	* tools/abidw.cc (load_corpus_and_write_abixml)
14188	(load_kernel_corpus_group_and_write_abixml): Drop obsolete option
14189	handling as xml_writer::set_common_options now takes care of it.
14190	ldiff --git a/include/abg-writer.h b/include/abg-writer.h
14191	index 200b5f7..729b455 100644
14192	--- a/include/abg-writer.h
14193	+++ b/include/abg-writer.h
14194	@@ -53,6 +53,11 @@ set_show_locs(write_context& ctxt, bool flag);
14195	void
14196	set_annotate(write_context& ctxt, bool flag);
14197	+void
14198	+set_write_architecture(write_context& ctxt, bool flag);
14199	+
14200	+void
14201	+set_write_corpus_path(write_context& ctxt, bool flag);
14202	/// A convenience generic function to set common options (usually used
14203	/// by Libabigail tools) from a generic options carrying-object, into
14204	@@ -69,6 +74,8 @@ set_common_options(write_context& ctxt, const OPTS& opts)
14205	{
14206	set_annotate(ctxt, opts.annotate);
14207	set_show_locs(ctxt, opts.show_locs);
14208	+  set_write_architecture(ctxt, opts.write_architecture);
14209	+  set_write_corpus_path(ctxt, opts.write_corpus_path);
14210	}
14211	void
14212	@@ -105,7 +112,10 @@ write_corpus_to_archive(const corpus_sptr corp,
14213	const bool annotate = false);
14214	bool
14215	-write_corpus(write_context& ctxt, const corpus_sptr& corpus, unsigned indent);
14216	+write_corpus(write_context&	ctxt,
14217	+	     const corpus_sptr& corpus,
14218	+	     unsigned		indent,
14219	+	     bool		member_of_group = false);
14220	bool ABG_DEPRECATED
14221	write_corpus(const corpus_sptr& corpus, unsigned indent, write_context& ctxt);
14222
142232019-05-21  Matthias Maennich <maennich@google.com>
14224
14225	abidw: Consolidate setting options
14226	* include/abg-writer.h (set_common_option): Declare new function.
14227	* tools/abidw.cc (load_corpus_and_write_abixml)
14228	(load_kernel_corpus_group_and_write_abixml): Use the newly
14229	introduced set_common_option.
14230
142312019-05-21  Matthias Maennich <maennich@google.com>
14232
14233	write_context: allow mutating the ostream used
14234	* include/abg-writer.h (set_ostream): Declare new function.
14235	* src/abg-writer.cc (write_context::m_ostream): Make this data
14236	member be a pointer rather than a reference.
14237	(write_context::{write_context, get_ostream): Adjust.  member.
14238	(write_context::set_ostream): Define new member function.
14239	(set_ostream): Define new free-form function.
14240	* tools/abidw.cc (load_corpus_and_write_abixml)
14241	(load_kernel_corpus_group_and_write_abixml): Use the feature of
14242	mutating the ostream and reuse the write_context in most cases.
14243
142442019-05-21  Matthias Maennich <maennich@google.com>
14245
14246	abg-writer: Refactor write_corpus_group API
14247	* include/abg-writer.h (write_corpus_group): Introduce new
14248	overload write_corpus_group(ctxt, corpus_group, indent) and
14249	deprecate all others.
14250	* src/abg-writer.cc (write_corpus_group): Likewise for the
14251	definitions and adjust.
14252	* tools/abidw.cc (load_kernel_corpus_group_and_write_abixml):
14253	Migrate to new API of write_corpus_group()
14254
142552019-05-21  Matthias Maennich <maennich@google.com>
14256
14257	abg-writer: Refactor write_corpus API
14258	* include/abg-writer.h (write_corpus): Introduce new overload
14259	write_corpus(ctxt, corpus, indent) and deprecate all others.
14260	* src/abg-writer.cc (write_corpus): Likewise for the definitions
14261	and adjust.
14262	* tests/test-read-dwarf.cc (test_task::perform): Use the new
14263	write_corpus which requires a write_context.
14264	* tools/abidw.cc (load_corpus_and_write_abixml, ): Likewise.
14265	* tools/abilint.cc (main): Likewise. Also simplify logic around the
14266	locations as they now can be expressed with less code.
14267
142682019-05-21  Matthias Maennich <maennich@google.com>
14269
14270	abg-writer: Refactor write_translation_unit API
14271	* include/abg-writer.h (write_translation_unit): Declare a new
14272	overload write_translation_unit(ctxt, tu, indent) and deprecate
14273	all others.
14274	* src/abg-writer.cc (write_translation_unit): Likewise in the
14275	definitions.
14276	(write_corpus, dump, write_translation_unit): Adjust.
14277	* tools/abilint.cc (main): use new write_translation_unit() API
14278
142792019-05-21  Matthias Maennich <maennich@google.com>
14280
14281	Add deprecation facilities
14282	* include/abg-fwd.h: Introduce deprecation macro ABG_DEPRECATED
14283
142842019-05-21  Matthias Maennich <maennich@google.com>
14285
14286	abg-writer: Simplify 'annotate' propagation
14287	* src/abg-writer.cc (write_context::write_context): remove
14288	'annotate' parameter.
14289	(write_translation_unit, write_corpus, write_corpus_group, dump): Adjust.
14290
142912019-05-15  Matthias Maennich <maennich@google.com>
14292
14293	Add .clang-format approximation
14294	* .clang-format: New File.
14295
142962019-05-16  Dodji Seketeli <dodji@redhat.com>
14297
14298	Bug 24552 - abidiff fails comparing a corpus against a corpus group
14299	* include/abg-corpus.h (corpus{_group}::get_{fun,
14300	var}_symbol_map): Make these member functions virtual.
14301	* src/abg-corpus.cc (corpus::lookup_{function, variable}_symbol):
14302	Use the virtual corpus::get_{fun, var}_symbol_map() member
14303	function to get the symbols of the current corpus or corpus_group.
14304	* tests/data/Makefile.am: Add the new test input material below to
14305	source distribution.
14306	* tests/data/test-abidiff/test-PR24552-report0.txt: New test input.
14307	* tests/data/test-abidiff/test-PR24552-v0.abi: Likewise.
14308	* tests/data/test-abidiff/test-PR24552-v1.abi: Likewise.
14309	* tests/test-abidiff.cc (main): Support comparing corpus groups.
14310	(specs): Add the new test inputs to the harness.
14311
143122019-05-15  Dodji Seketeli <dodji@redhat.com>
14313
14314	Bug 24560 - Assertion failure on an abixml with an anonymous type
14315	* src/abg-reader.cc (read_context::maybe_canonicalize_type): Delay
14316	canonicalization of union types too.
14317	(build_class_decl, build_union_decl): Do not try to re-use
14318	anonymous types.
14319
143202019-05-13  Dodji Seketeli <dodji@redhat.com>
14321
14322	Handle Linux kernel binaries with no __ksymtab section
14323	* src/abg-dwarf-reader.cc (find_section): Use elf_getshdrstrndx
14324	rather than poking at the elf header on our own.
14325	(read_context::find_any_ksymtab_section): Define new member
14326	function.
14327	(read_context::{get_symtab_format,
14328	try_reading_first_ksymtab_entry_using_pre_v4_19_format}): Use the
14329	new find_any_ksymtab_section rather than find_ksymtab_section.
14330	(read_context::get_nb_ksymtab_entries): Handle the absence of
14331	__ksymtab.
14332	(read_context::get_nb_ksymtab_gpl_entries): Handle the absence of
14333	__ksymtab_gpl.
14334	(read_context::load_kernel_symbol_table): Handle the case of zero
14335	ksymtab entries.
14336	(read_context::{maybe_adjust_address_for_exec_or_dyn,
14337	maybe_adjust_fn_sym_address, load_kernel_symbol_table}): Handle an
14338	address that is zero.
14339
143402019-05-10  Dodji Seketeli <dodji@redhat.com>
14341
14342	Fix logic of get_binary_load_address
14343	* src/abg-dwarf-reader.cc (get_binary_load_address): Consider the
14344	load address pointed to by the program header pointer returned by
14345	gelf_getphdr rather than the program header itself.
14346
143472019-05-10  maennich@google.com <maennich@google.com>
14348
14349	Bug 24431 Treat __ksymtab as int32_t for v4.19+ kernels
14350	* src/abg-dwarf-reader.cc (maybe_adjust_sym_address_from_v4_19_ksymtab):
14351	treat passed addr as 32bit signed offset in case of v4.19+ __ksymtabs
14352
143532019-05-10  maennich@google.com <maennich@google.com>
14354
14355	Bug 24431 Read 32bit values when testing for the v4.19 symbol table format
14356	* src/abg-dwarf-reader.cc
14357	(try_reading_first_ksymtab_entry_using_v4_19_format): attempt to
14358	read first __ksymtab entry into int32_t to preserve sign
14359
143602019-05-10  maennich@google.com <maennich@google.com>
14361
14362	dwarf-reader: templatize read_int_from_array_of_bytes
14363	* src/abg-dwarf-reader.cc (read_int_from_array_of_bytes):
14364	templatize return type to allow passing of signed integer references
14365
143662019-05-10  maennich@google.com <maennich@google.com>
14367
14368	dwarf-reader: Fix comments for try_reading_first_ksymtab_entry_using_{pre_,}v4_19_format
14369	* src/abg-dwarf-reader.cc: swap the comments of
14370	try_reading_first_ksymtab_entry_using_{pre_,}v4_19_format
14371
143722019-05-09  Dodji Seketeli <dodji@redhat.com>
14373
14374	Better handle several anonymous types of the same kind
14375	*unqualified* name of its scope.  Unlike for qualified names, the
14376	scoped name won't have a "__anonymous_*__" string in its name if its
14377	directly containing scope is not anonymous; a qualified name might
14378	still have that string in its name because the decl has a parent scope
14379	(not necessarily its directly containing scope though) that is
14380	anonymous.
14381	The patch goes on to update the logic for comparison of decls that are
14382	anonymous.  For a decl which direct scope is *NOT* anonymous, the
14383	scoped name is what's used in the comparison.  Otherwise, only the
14384	name of the decl is used.
14385	The patch also updates how we detect changes in data members and
14386	member types, in the comparison engine.  It now uses the names of the
14387	data members, rather than their qualified name.  This is in the scope
14388	of the current class/union anyway.  The improvement is that the fact
14389	that the class/union itself is anonymous (even if its anonymous name
14390	changes to another anonymous name) won't have any spurious impact on
14391	the detection of name change of the members.
14392	The patch considers the change of an anonymous decl name which
14393	anonymous name changes to another anonymous name as being harmless.
14394	The patch updates the logic of category propagation in the comparison
14395	engine.  Although a public typedef to private underlying type needs to
14396	stay public and thus not propagate the PRIVATE_TYPE_CATEGORY from its
14397	child diff node to himself, it still needs to suppress the changes to
14398	the private underlying diff node that were suppressed (because of the
14399	private-ness), unless that typedef has local changes.
14400	* include/abg-ir.h (decl_base::get_scoped_name): Declare new
14401	member function.
14402	(scope_decl::get_num_anonymous_member_{classes, unions, enums}):
14403	Declare new virtual member functions.
14404	(class_decl::get_num_anonymous_member_{classes, unions, enums}):
14405	Adjust to make these virtual.  It's not necessary but I feel
14406	redundancy is a kind of self-documentation here.
14407	* src/abg-comp-filter.cc (has_harmless_name_change): Consider
14408	anonymous name changes as harmless.
14409	* src/abg-comparison.cc
14410	(class_or_union_diff::ensure_lookup_tables_populated): Consider
14411	the names of the members rather than their qualified names.
14412	(suppression_categorization_visitor::visit_end): Suppress the
14413	changes to the private underlying diff node that were suppressed
14414	because of the private-ness, unless that typedef has local
14415	changes.
14416	* src/abg-dwarf-reader.cc (build_enum_type)
14417	(add_or_update_class_type, add_or_update_union_type): Handle
14418	anonymous types in namespaces as well, not just in class/unions.
14419	* src/abg-ir.cc (decl_base::priv::scoped_name_): Define new data
14420	member.
14421	(decl_base::get_scoped_name): Define new member function.
14422	(equals): For the decl_base overload, use scoped name in the
14423	comparison, unless the decl belongs to an anonymous type.  For the
14424	class_or_union_diff, only consider scoped_name during comparison.
14425	Avoid name comparison between anonymous types.
14426	(scope_decl::get_num_anonymous_member_{classes, unions, enums}):
14427	Define new member functions.
14428	(types_have_similar_structure): Do not compare names between
14429	anonymous types.
14430	(qualified_name_setter::do_update): Update scoped names too.
14431	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
14432	* tests/data/test-annotate/libtest23.so.abi: Likewise.
14433	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
14434	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
14435	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
14436	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
14437	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt:
14438	Likewise.
14439	* tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise.
14440	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
14441	Likewise.
14442	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
14443	Likewise.
14444	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
14445	Likewise.
14446	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
14447	Likewise.
14448	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
14449	Likewise.
14450	* tests/data/test-diff-filter/test33-report-0.txt: Likewise.
14451	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
14452	Likewise.
14453	* tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt:
14454	Likewise.
14455	* 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:
14456	Likewise.
14457	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
14458	Likewise.
14459	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
14460	Likewise.
14461	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt:
14462	Likewise.
14463	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
14464	Likewise.
14465	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
14466	Likewise.
14467	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
14468	Likewise.
14469	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
14470	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
14471	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
14472	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
14473	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
14474	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
14475	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
14476	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
14477	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
14478	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
14479	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
14480	Likewise.
14481	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
14482
144832019-05-07  Dodji Seketeli <dodji@redhat.com>
14484
14485	Handle several member anonymous types of the same kind
14486	* include/abg-ir.h
14487	(class_or_union::get_num_anonymous_member_{classes, unions,
14488	enums}): Declare new member functions.
14489	* src/abg-dwarf-reader.cc (get_internal_anonynous_die_base_name)
14490	(build_internal_anonymous_die_name)
14491	(get_internal_anonymous_die_name, is_anonymous_type_die): Define
14492	new static functions.
14493	(die_qualified_type_name): Use the new
14494	get_internal_anonymous_die_name.
14495	(get_scope_for_die): Fix this to put anonymous types that were
14496	wrongly emitted into the scope of DW_TAG_subroutine_type or
14497	DW_TAG_array_type by buggy DWARF emitters into the enclosing
14498	namespace, rather than into the enclosing class/union.
14499	(build_enum_type): Take the scope of the enum to have a chance to
14500	properly name potential anonymous enums.
14501	(lookup_class_typedef_or_enum_type_from_corpus): Take an anonymous
14502	member type index for when the DIE we are lookup up represents an
14503	anonymous type.  Support proper building of the internal anonymous
14504	name of the anonymous type we are lookup up.
14505	(add_or_update_class_type): Use the new
14506	get_internal_anonynous_die_base_name and
14507	build_internal_anonymous_die_name functions.  Support making sure
14508	that the anonymous member type we are adding to the class wasn't
14509	already there, especially for cases where we are updating a class
14510	type.
14511	(add_or_update_union_type): Use the new
14512	get_internal_anonynous_die_base_name and
14513	build_internal_anonymous_die_name functions.
14514	(build_ir_node_from_die): Adjust the use of build_enum_type to
14515	pass it the scope of the enum type we are building.
14516	* src/abg-ir.cc	(lookup_union_type): Add a new overload.
14517	(lookup_class_or_typedef_type): Use the new overload of
14518	lookup_union_type above to support looking up union types too.
14519	(class_or_union::get_num_anonymous_member_{classes, unions,
14520	enums}): Define new member functions.
14521	* src/abg-reporter-priv.cc (represent): Detect when anonymous
14522	types of anonymous data members have their internal names change,
14523	probably because anonymous member types were inserted in the scope.
14524	* tests/data/Makefile.am: Add the new test-anonymous-members-0.*
14525	test input files to the source distribution.
14526	* tests/data/test-annotate/test-anonymous-members-0.cc: New test
14527	input file.
14528	* tests/data/test-annotate/test-anonymous-members-0.o: Likewise.
14529	* tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise.
14530	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
14531	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
14532	Likewise.
14533	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
14534	Likewise.
14535	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
14536	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
14537	Likewise.
14538	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
14539	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
14540	Likewise.
14541	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
14542	Likewise.
14543	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
14544	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
14545	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
14546	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
14547	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
14548	Likewise.
14549	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
14550	Likewise.
14551	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
14552	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
14553	Likewise.
14554	* tests/test-annotate.cc (int_out_specs): Add the new test inputs
14555	to this test harness.
14556
145572019-04-24  Dodji Seketeli <dodji@redhat.com>
14558
14559	Use canonical types hash maps for type IDs in abixml writer
14560	* src/abg-writer.cc (write_context::{type_has_existing_id,
14561	get_id_for_type}): Save the canonical type of the type in the map,
14562	not the type itself.
14563	(write_context::{type_is_emitted}): Use the canonical type rather
14564	than the type itself.
14565	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
14566
145672019-04-24  Dodji Seketeli <dodji@redhat.com>
14568
14569	Don't try to de-duplicate all anonymous struct DIEs
14570	* include/abg-fwd.h (is_typedef): Remove the overloads for
14571	type_base_sptr and decl_base_sptr.  Replace those with an overload
14572	for type_or_decl_base_sptr.
14573	* src/abg-ir.cc (is_typedef): Do the same for the definitions.
14574	* src/abg-dwarf-reader.cc (add_or_update_class_type)
14575	(add_or_update_union_type): Do not de-duplicate anonymous
14576	struct/union DIEs.
14577	(build_typedef_type): Try to de-duplicate typedefs DIEs.
14578	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
14579	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
14580	Likewise
14581	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
14582	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
14583	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
14584	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
14585	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
14586	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
14587	Likewise.
14588	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
14589	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
14590
145912019-04-24  Dodji Seketeli <dodji@redhat.com>
14592
14593	Canonicalize types non tied to any DWARF DIE
14594	* src/abg-dwarf-reader.cc
14595	(read_context::extra_types_to_canonicalize_): Add new data member.
14596	(read_context::{initialize, clear_types_to_canonicalize}): Adjust.
14597	(read_context::extra_types_to_canonicalize): Create new accessor.
14598	(read_context::schedule_type_for_late_canonicalization): Add new
14599	overload for type_base_sptr.
14600	(read_context::perform_late_type_canonicalizing): Perform the
14601	canonicalization of the types created by the DWARF analyzer, but
14602	that are not tied to any DIE.
14603	(maybe_strip_qualification): Take a read_context&.  Schedule newly
14604	created types (during type edition) for late canonicalization.
14605	(build_ir_node_from_die): Adjust the call to
14606	maybe_strip_qualification to pass a read_context.
14607	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
14608	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
14609	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
14610	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
14611	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
14612	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
14613	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
14614	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
14615	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
14616	Likewise.
14617
146182019-04-18  Mark Wielaard <mark@klomp.org>
14619
14620	Don't try to read a build_id as string in find_alt_debug_info_link.
14621	* src/abg-dwarf-reader.cc (find_alt_debug_info_link): Remove
14622	build_id argument. Don't try to read the buildid chars as a
14623	string.
14624	(find_alt_debug_info): Don't call find_alt_debug_info_link
14625	with a build_id string argument.
14626
146272019-04-18  Mark Wielaard <mark@klomp.org>
14628
14629	Fix an undefined behaviour in has_var_type_cv_qual_change
14630	* src/abg-comp-filter.cc: (has_var_type_cv_qual_change):
14631	Initialize the ch_kind variable before using it.
14632
146332019-04-18  Dodji Seketeli <dodji@redhat.com>
14634
14635	Add --enable-{asan,ubsan} configure options
14636	* configure.ac: Add configure options for -fsanitize=address and
14637	-fsanitize=undefined.
14638
146392019-04-18  Dodji Seketeli <dodji@redhat.com>
14640
14641	abg-tools-utils.cc: Plug a leak in find_file_under_dir
14642	* src/abg-tools-utils.cc (find_file_under_dir): Call fts_close
14643	before return.
14644
146452019-04-18  Matthias Maennich <maennich@google.com>
14646
14647	dwarf-reader: fix undefined behaviour in get_binary_load_address
14648	* src/abg-dwarf-reader.cc (get_binary_load_address): Move the
14649	ph_mem and program_header variables out of the inner for-loop.
14650
146512019-04-18  Dodji Seketeli <dodji@redhat.com>
14652
14653	Delay canonicalization for array and qualified types
14654	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Delay the
14655	canonicalization of array and qualified types, just like what we
14656	do for classes and function types already.
14657	(maybe_strip_qualification):  Do not
14658	re-canonicalize array and qualified types here because it should
14659	not be necessary anymore.
14660
146612019-04-18  Dodji Seketeli <dodji@redhat.com>
14662
14663	Fix a memory leak in real_path
14664	* src/abg-tools-utils.cc (real_path): Fee the returned pointer of
14665	realpath.
14666
146672019-04-18  Dodji Seketeli <dodji@redhat.com>
14668
14669	Enable building with AddressSanitizer activated
14670	* configure.ac: If ABIGAIL_DEVEL_ASAN=on (in addition to
14671	ABIGAIL_DEVEL=on), then turn on AddressSanitizer in the build.
14672
146732019-04-17  Dodji Seketeli <dodji@redhat.com>
14674
14675	Bug 24431 - ELF reader fails to determine __ksymtab format
14676	* src/abg-dwarf-reader.cc
14677	(read_context::{try_reading_first_ksymtab_entry_using_pre_v4_19_format,
14678	try_reading_first_ksymtab_entry_using_v4_19_format}): Define new
14679	member functions.
14680	(read_context::maybe_adjust_sym_address_from_v4_19_ksymtab): Make
14681	member function this const.
14682	(read_context::get_ksymtab_format): Implement the new heuristic
14683	here, using try_reading_first_ksymtab_entry_using_pre_v4_19_format
14684	and try_reading_first_ksymtab_entry_using_v4_19_format, rather
14685	than assuming that if we have no relocations, then we are in the
14686	v4.19 format.
14687	(maybe_adjust_sym_address_from_v4_19_ksymtab): When on a 64 bits
14688	architecture, ensure the 32 bits address read from the v4.19
14689	format __ksymtab section is converted into a 64 bits address.
14690
146912019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14692
14693	Update .gitignore files to ignore typical dev side products
14694	* tests/.gitignore: exclude tests binaries and test results
14695	* tools/.gitignore: update to ignore produced binaries
14696
146972019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14698
14699	dwarf-reader: fix recursion in expr_result::operator&
14700	* src/abg-dwarf-reader.cc: fix expr_result::operator&
14701
147022019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14703
14704	distinct_diff: avoid expression with side effects within typeid
14705	* src/abg-comparison.cc: fix clang warning "potentially-evaluated-expression"
14706
147072019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14708
14709	ir: drop unused data members from {environment,qualified_name}_setter
14710	* src/abg-ir.cc: drop unused data members
14711
147122019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14713
14714	suppressions: drop unused parameter from type_is_suppressed
14715	* include/abg-suppression-priv.h: drop unused argument from type_is_suppressed
14716
147172019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14718
14719	viz-dot: remove unused members from dot
14720	* include/abg-viz-dot.h: remove unused data members from 'dot'
14721
147222019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14723
14724	add missing virtual destructors
14725	* include/abg-comparison.h: add virtual destructor for corpus_diff and diff_node_visitor
14726	* include/abg-corpus.h: add virtual destructor for corpus
14727	* include/abg-reporter.h: add virtual destructor for reporter_base
14728	* include/abg-traverse.h: add virtual destructor for traversable_base
14729
147302019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14731
14732	diff-utils: point: fix postfix decrement/increment operator
14733	* include/abg-diff-utils.h: fix postfix dec/inc operator
14734
147352019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14736
14737	abg-reader: clarify boolean use of assignment
14738	* src/abg-reader.cc: clarify boolean use of assignment
14739
147402019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14741
14742	abilint: fix return types bool -> int
14743	* tools/abilint.cc: return int in main rather than bool.
14744	* tests/print-diff-tree.cc: Likewise.
14745
147462019-04-15  Matthias Maennich via libabigail <libabigail@sourceware.org>
14747
14748	abg-fwd.h: fix mismatched tags for ir_node_visitor
14749	* include/abg-fwd.h: forward-declare ir_node_visitor as class
14750
147512019-04-16  Dodji Seketeli <dodji@redhat.com>
14752
14753	Bug 24431 - ELF reader can't interpret ksymtab with Kernel 4.19+
14754	* src/abg-dwarf-reader.cc (enum kernel_symbol_table_kind): Move this
14755	enum at the top.
14756	(enum ksymtab_format): Define new enum.
14757	(read_context::{ksymtab_format_, ksymtab_entry_size_,
14758	nb_ksymtab_entries_, nb_ksymtab_gpl_entries_}): Define new data
14759	members.
14760	(read_context::initiliaze): Initialize the new data members above.
14761	(read_context::{get_ksymtab_format, get_ksymtab_symbol_value_size,
14762	get_ksymtab_entry_size, get_nb_ksymtab_entries,
14763	get_nb_ksymtab_gpl_entries,
14764	maybe_adjust_sym_address_from_v4_19_ksymtab}): Define new member
14765	functions.
14766	(read_context::load_kernel_symbol_table): Support loading from
14767	both pre and post v4.19 linux kernels with their different ksymtab
14768	formats.  Add more comments.
14769
147702019-04-10  Dodji Seketeli <dodji@redhat.com>
14771
14772	Bug 24430 - Fold away const for array types
14773	* include/abg-fwd.h (is_array_of_qualified_element): Declare 2
14774	overloads of this function.
14775	(re_canonicalize): Declare a new function.
14776	* include/abg-ir.h (class {decl_base, type_base}): Declare
14777	re_canonicalize as a friend of these classes.
14778	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Detect
14779	qualified array types and appropriately qualifies the array
14780	element type, instead of qualifying the array type itself.
14781	Re-canonicalize the resulting type if necessary.
14782	* src/abg-ir.cc (is_array_of_qualified_element): Define 2
14783	overloads of this function.
14784	(re_canonicalize): Define new function.
14785	* tests/data/Makefile.am: The two new test binary input files
14786	PR24430-fold-qualified-array-clang and
14787	PR24430-fold-qualified-array-gcc to source distribution, as well
14788	as the expected reference output.
14789	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
14790	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
14791	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
14792	Likewise.
14793	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
14794	* tests/data/test-diff-filter/PR24430-fold-qualified-array-clang:
14795	New binary test input coming from the bug report.
14796	* tests/data/test-diff-filter/PR24430-fold-qualified-array-gcc:
14797	Likewise.
14798	* tests/data/test-diff-filter/PR24430-fold-qualified-array-report-0.txt:
14799	Expected reference abi difference.
14800	* tests/data/test-diff-filter/test33-report-0.txt: Adjust.
14801	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
14802	Likewise.
14803	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
14804	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
14805	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
14806	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
14807	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
14808	Likewise.
14809	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
14810	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
14811	Likewise.
14812	* tests/test-diff-filter.cc: Add the new binary test input to this
14813	test harness.
14814
148152019-04-09  Dodji Seketeli <dodji@redhat.com>
14816
14817	Fix "Add test for the fix for PR24410"
14818	* tests/data/test-diff-pkg/PR24410-new/poppler-debuginfo-0.73.0-8.fc30.x86_64.rpm:
14819	Really add this.
14820	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-0.73.0-8.fc30.x86_64.rpm:
14821	Likewise.
14822	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-debuginfo-0.73.0-8.fc30.x86_64.rpm:
14823	Likewise.
14824	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-devel-0.73.0-8.fc30.x86_64.rpm:
14825	Likewise.
14826	* tests/data/test-diff-pkg/PR24410-old/poppler-debuginfo-0.73.0-4.fc30.x86_64.rpm:
14827	Likewise.
14828	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-0.73.0-4.fc30.x86_64.rpm:
14829	Likewise.
14830	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-debuginfo-0.73.0-4.fc30.x86_64.rpm:
14831	Likewise.
14832	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-devel-0.73.0-4.fc30.x86_64.rpm:
14833	Likewise.
14834	* tests/data/test-diff-pkg/PR24410-report-0.txt: Likewise.
14835
148362019-04-09  Dodji Seketeli <dodji@redhat.com>
14837
14838	Add test for the fix for PR24410
14839	* tests/data/test-diff-pkg/PR24410-new/poppler-debuginfo-0.73.0-8.fc30.x86_64.rpm:
14840	Add new test input.
14841	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-0.73.0-8.fc30.x86_64.rpm:
14842	Add new test input.
14843	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-debuginfo-0.73.0-8.fc30.x86_64.rpm:
14844	Add new test input.
14845	* tests/data/test-diff-pkg/PR24410-new/poppler-qt5-devel-0.73.0-8.fc30.x86_64.rpm:
14846	Add new test input.
14847	* tests/data/test-diff-pkg/PR24410-old/poppler-debuginfo-0.73.0-4.fc30.x86_64.rpm:
14848	Add new test input.
14849	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-0.73.0-4.fc30.x86_64.rpm:
14850	Add new test input.
14851	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-debuginfo-0.73.0-4.fc30.x86_64.rpm:
14852	Add new test input.
14853	* tests/data/test-diff-pkg/PR24410-old/poppler-qt5-devel-0.73.0-4.fc30.x86_64.rpm:
14854	Add new test input.
14855	* tests/data/test-diff-pkg/PR24410-report-0.txt: Add new test
14856	input.
14857	* tests/data/Makefile.am: Add the test input above to source
14858	distribution.
14859	* tests/test-diff-pkg.cc: Make this test harness use the new input
14860	rpms above.
14861
148622019-04-05  Dodji Seketeli <dodji@redhat.com>
14863
14864	Propagate private type diff category through refs/qualified type diffs
14865	* src/abg-comparison.cc
14866	(suppression_categorization_visitor::visit_end): Propagate
14867	suppressed and private type diff categories for reference and
14868	qualified types.  For qualified types, make sure they don't have
14869	local changes.  Even when there are no local changes, do not
14870	propagate private diff categories to typedefs.
14871	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
14872	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
14873	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
14874	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
14875	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
14876	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
14877	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
14878	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
14879	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
14880	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
14881	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
14882
148832019-04-05  Dodji Seketeli <dodji@redhat.com>
14884
14885	Fix anonymous union constructed under the wrong context
14886	* src/abg-dwarf-reader.cc (add_or_update_class_type)
14887	(add_or_update_union_type): Only reuse anonymous class/union types
14888	which have the same scope as the current one.
14889
148902019-04-08  Dodji Seketeli <dodji@redhat.com>
14891
14892	Internal pretty repr of union cannot be flat representation
14893	* src/abg-ir.cc (union_decl::get_pretty_representation):
14894	Anonymous internal pretty representation of unin is its fully
14895	qualified name.
14896
148972019-04-08  Dodji Seketeli <dodji@redhat.com>
14898
14899	Misc comment fixes
14900	* src/abg-comp-filter.cc (has_harmless_name_change): Fix comment.
14901	* src/abg-ir.cc (var_decl::get_qualified_name): Likewise.
14902
149032019-03-29  Dodji Seketeli <dodji@redhat.com>
14904
14905	Bump version number to 1.7
14906	* configure.ac: Bump version number to 1.7
14907
149082019-03-28  Dodji Seketeli <dodji@redhat.com>
14909
14910	Update website mainpage for 1.6 release
14911	* doc/website/mainpage.txt: Update for 1.6 release.
14912
149132019-03-27  Dodji Seketeli <dodji@redhat.com>
14914
14915	Update ChangeLog
14916	* ChangeLog: Update automatically by using "make
14917	update-changelog".
14918
149192019-03-27  Dodji Seketeli <dodji@redhat.com>
14920
14921	Update NEWS file for 1.6
14922	* NEWS: Update for 1.6
14923
149242019-03-27  Dodji Seketeli <dodji@redhat.com>
14925
14926	Add missing assignment operators
14927	* include/abg-interned-str.h (interned_string::operator=): Define
14928	assignment operator.
14929	* include/abg-ir.h
14930	({location, enum_type_decl::enumerator}::operator=): Declare
14931	assignment operator.
14932	* src/abg-ir.cc (enum_type_decl::enumerator::operator=): Define
14933	assignment operator.
14934
149352019-03-25  Dodji Seketeli <dodji@redhat.com>
14936
14937	Bug 24378 - DW_TAG_subroutine_type as a DIE scope causes infinite loop
14938	* src/abg-dwarf-reader.cc (get_scope_die): Look through
14939	DW_TAG_subroutine_type to get the scope of a given DIE.
14940	* tests/data/Makefile.am: Add the two new files below to source
14941	distribution.
14942	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: New
14943	reference test output.
14944	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.o: New binary
14945	test input.
14946	* tests/test-read-dwarf.cc (in_out_specs): Add the new test input
14947	to the test harness.
14948
149492019-03-22  Dodji Seketeli <dodji@redhat.com>
14950
14951	Misc cleanups
14952	* src/abg-dwarf-reader.cc (build_function_type): Cleanup
14953	indentation and comments.
14954
149552019-03-21  Dodji Seketeli <dodji@redhat.com>
14956
14957	Better pointer name equality optimization in DIE de-duplication code
14958	* src/abg-dwarf-reader.cc
14959	(die_is_pointer_reference_or_typedef_type)
14960	(die_peel_pointer_and_typedef): Define new static functions.
14961	(compare_dies_string_attribute_value): Turn this function into a
14962	static one.
14963	(compare_dies_cu_decl_file): Make this function compare the cu
14964	decl file name of the leaf type of the pointer, not just the one
14965	of the pointer itself.
14966	(compare_as_decl_dies): Compare the DWARF tags too.
14967	(compare_dies): Simplify logic.
14968
149692019-03-21  Dodji Seketeli <dodji@redhat.com>
14970
14971	Add ir::{lookup_data_member, get_function_parameter}
14972	* include/abg-ir.h (lookup_data_member, get_function_parameter):
14973	Declare new functions.
14974	* src/abg-ir.cc (lookup_data_member, get_function_parameter):
14975	Define them.
14976
149772019-03-21  Dodji Seketeli <dodji@redhat.com>
14978
14979	Better detection of void* to something* change
14980	* include/abg-ir.h (is_void_type): Add a new overload that takes
14981	type_base*.
14982	* src/abg-ir.cc (is_void_type): Define the new overload that takes
14983	type_base*.
14984	(is_void_pointer_type): Look through typedefs in
14985	the pointed-to type.
14986
149872019-03-21  Dodji Seketeli <dodji@redhat.com>
14988
14989	PR24257 - Handle DW_TAG_typedef with no underlying type
14990	* src/abg-dwarf-reader.cc (build_typedef_type): DW_TAG_typedef
14991	with no underlying type means typedef void foo.
14992	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
14993	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
14994	Likewise.
14995	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
14996	Likewise.
14997	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
14998	Likewise.
14999	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
15000	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
15001	Likewise.
15002	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
15003	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
15004	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
15005	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
15006	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
15007	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
15008	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
15009	Likewise.
15010	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
15011	Likewise.
15012	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
15013	Likewise.
15014	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
15015	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
15016	Likewise.
15017	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
15018
150192019-02-20  Dodji Seketeli <dodji@redhat.com>
15020
15021	Do not build DIE -> parent map just because we see an asm TU
15022	* src/abg-dwarf-reader.cc:
15023
150242019-02-19  Dodji Seketeli <dodji@redhat.com>
15025
15026	Avoid over-suppressing fns & vars when analysing the Kernel
15027	* include/abg-dwarf-reader.h (get_ignore_symbol_table): Take a
15028	const read_context&.
15029	* src/abg-dwarf-reader.cc (get_ignore_symbol_table): Likewise.
15030	(function_is_suppressed): When the symbol table optimization is in
15031	flight -- that is, when no symbol table has been loaded -- do not
15032	try to see if a given function symbol was exported at the ELF
15033	level or not.  Just look at if the function was suppressed or not.
15034	(variable_is_suppressed): Likewise for variables.
15035
150362019-02-08  Dodji Seketeli <dodji@redhat.com>
15037
15038	Bug 24188 - Assertion failed while analysing a Fortran binary
15039	* src/abg-dwarf-reader.cc (compare_as_type_dies): Handle
15040	DW_TAG_string_type DIEs here.
15041	(compare_dies): Handle DW_TAG_string_type DIEs by using
15042	compare_as_type_dies.
15043	* tests/data/test-diff-pkg/netcdf-fortran-debuginfo-4.4.4-10.fc29.x86_64.rpm:
15044	New test RPM.
15045	* tests/data/test-diff-pkg/netcdf-fortran-debuginfo-4.4.4-11.fc30.x86_64.rpm:
15046	Likewise.
15047	* 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:
15048	New expected test reference output.
15049	* tests/data/test-diff-pkg/netcdf-fortran-mpich-4.4.4-10.fc29.x86_64.rpm:
15050	New test RPM.
15051	* tests/data/test-diff-pkg/netcdf-fortran-mpich-4.4.4-11.fc30.x86_64.rpm:
15052	Likewise.
15053	* tests/data/test-diff-pkg/netcdf-fortran-mpich-debuginfo-4.4.4-10.fc29.x86_64.rpm:
15054	Likewise.
15055	* tests/data/test-diff-pkg/netcdf-fortran-mpich-debuginfo-4.4.4-11.fc30.x86_64.rpm:
15056	Likewise.
15057	* tests/data/test-diff-pkg/netcdf-fortran-mpich-devel-4.4.4-10.fc29.x86_64.rpm:
15058	Likewise.
15059	* tests/data/test-diff-pkg/netcdf-fortran-mpich-devel-4.4.4-11.fc30.x86_64.rpm:
15060	Likewise.
15061	* tests/data/Makefile.am: Add the new test input material above to
15062	source distribution.
15063	* tests/test-diff-pkg.cc (in_out_spec): Add the new test RPMs
15064	above to the set of RPMs to use as test input.
15065
150662019-02-06  Dodji Seketeli <dodji@redhat.com>
15067
15068	Bug 24157 - Wrong support of Ada ranges
15069	* include/abg-ir.h (array_type_def::subrange_type::bound_value):
15070	Define new class.
15071	(array_type_def::subrange_type::subrange_type): Adjust to use the
15072	new bound_value type for bound values.
15073	(array_type_def::subrange_type::{get_upper_bound, get_lower_bound,
15074	set_upper_bound, set_lower_bound}): Return or take int64_t rather
15075	than size_t.
15076	(array_type_def::subrange_type::get_length): Return uint64_t
15077	rather than size_t.
15078	* src/abg-dwarf-reader.cc (die_signed_constant_attribute)
15079	(die_constant_attribute, die_attribute_has_form)
15080	(die_attribute_is_signed, die_attribute_is_unsigned)
15081	(die_attribute_has_no_signedness): Define new static functions.
15082	(get_default_array_lower_bound): Return uint64_t rather than int.
15083	(build_subrange_type): Use the new
15084	array_type_def::subrange_type::bound_value type for bound values.
15085	Use the new die_constant_attribute function, rather than
15086	die_unsigned_constant_attribute to fecth the bound values.
15087	* src/abg-ir.cc
15088	(array_type_def::subrange_type::bound_value::{bound_value,
15089	get_signedness, set_signedness, get_signed_value,
15090	get_unsigned_value, set_unsigned, set_signed}): Define new member
15091	functions.
15092	(array_type_def::subrange_type::priv::{lower_bound_,
15093	upper_bound}): Use the new class bound_value.
15094	(array_type_def::subrange_type::priv::priv): Adjust to use the new
15095	bound_value class to hold bound values.
15096	(array_type_def::subrange_type::subrange_type): Likewise.
15097	(array_type_def::subrange_type::{get_upper_bound, get_lower_bound,
15098	set_upper_bound, set_lower_bound}): Return or take int64_t rather
15099	than size_t.
15100	(array_type_def::subrange_type::get_length): Return uint64_t
15101	rather than size_t.
15102	(types_have_similar_structure): Handle array_type_def::subrange_type
15103	* src/abg-reader.cc (build_subrange_type): Use the new
15104	array_type_def::subrange_type::bound_value to hold bound values.
15105	* tests/data/test-diff-pkg/GtkAda-debuginfo-2.24.2-29.fc29.x86_64.rpm:
15106	New binary RPM as test input.
15107	* tests/data/test-diff-pkg/GtkAda-debuginfo-2.24.2-30.fc30.x86_64.rpm:
15108	Likewise.
15109	* tests/data/test-diff-pkg/GtkAda-devel-2.24.2-29.fc29.x86_64.rpm:
15110	Likewise.
15111	* tests/data/test-diff-pkg/GtkAda-devel-2.24.2-30.fc30.x86_64.rpm:
15112	Likewise.
15113	* tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt:
15114	New expected test output.
15115	* tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64.rpm:
15116	New binary RPM as test input.
15117	* tests/data/test-diff-pkg/GtkAda-gl-2.24.2-30.fc30.x86_64.rpm:
15118	Likewise.
15119	* tests/data/test-diff-pkg/GtkAda-gl-debuginfo-2.24.2-29.fc29.x86_64.rpm:
15120	Likewise.
15121	* tests/data/test-diff-pkg/GtkAda-gl-debuginfo-2.24.2-30.fc30.x86_64.rpm:
15122	Likewise.
15123	* tests/data/Makefile.am: Add the new test material above to source
15124	distribution.
15125	* tests/test-diff-pkg.cc (in_out_specs): Add the new input testing
15126	RPMs in here.
15127
151282019-01-30  Dodji Seketeli <dodji@redhat.com>
15129
15130	Small apidoc fix
15131	* src/abg-comparison.cc (enum_diff::changed_enumerators): Fix apidoc.
15132
151332019-01-30  Dodji Seketeli <dodji@redhat.com>
15134
15135	Bug 24139 - Support suppressing some enumerator changes
15136	* doc/manuals/libabigail-concepts.rst: Document the new
15137	'changed_enumerators' property.
15138	* include/abg-suppression.h
15139	(type_suppression::{g, s}et_changed_enumerator_names): Declare two
15140	new member functions.
15141	* src/abg-suppression-priv.h
15142	(type_suppression::priv::changed_enumerator_names_): Add a new
15143	data member.
15144	* src/abg-suppression.cc
15145	(type_suppression::{g,s}et_changed_enumerator_names): Define two
15146	new member functions.
15147	(type_suppression::suppresses_diff): Support evaluating the new
15148	'changed_enumerators = <vector of changed enumerators>'.
15149	(read_type_suppression): Read the new list
15150	property'changed_enumerators" and store it into the
15151	type_suppression using the new
15152	type_suppression::set_changed_enumerator_names ().
15153	* tests/data/test-diff-suppr/libtest4{0,1}-enumerator-changes-v{0,1}.so:
15154	Add new test inpujts.
15155	* tests/data/test-diff-suppr/test4{0,1}-enumerator-changes-0.suppr:
15156	Add a new suppr spec for this new test.
15157	* tests/data/test-diff-suppr/test4{0,1}-enumerator-changes-report-0.txt:
15158	The default report.
15159	* tests/data/test-diff-suppr/test4{0,1}-enumerator-changes-v{0,1}.cc:
15160	Add Source code of libtest4{0,1}-enumerator-changes-v{0,1}.so.
15161	* tests/data/Makefile.am: Add the test files above to source
15162	distribution.
15163	* tests/test-diff-suppr.cc: Add the test input files above to the
15164	harness.
15165
151662019-01-25  Dodji Seketeli <dodji@redhat.com>
15167
15168	Better comments in the comparison engine
15169	* include/abg-comparison.h (enum diff_category): Add comments to
15170	describe what to update when a new enumerator is added to this enum.
15171	* src/abg-comp-filter.cc (has_fn_return_type_cv_qual_change): Fix
15172	comment thinko here.
15173
151742019-01-25  Dodji Seketeli <dodji@redhat.com>
15175
15176	Bug 20175 - Classify CV qual changes in variable type as harmless
15177	* include/abg-comparison.h (VAR_TYPE_CV_CHANGE_CATEGORY): Add new
15178	enumerator to diff_category enum.
15179	(EVERYTHING_CATEGORY): Update this enumerator.
15180	* src/abg-comp-filter.cc (type_diff_has_cv_qual_change_only):
15181	Support array diff nodes carrying a cv qual change on the element
15182	type.
15183	(has_var_type_cv_qual_change): Define new static function.
15184	(categorize_harmless_diff_node): Use the new
15185	has_var_type_cv_qual_change to categorize variable diff node with
15186	cv qual change on its type as harmless.
15187	* src/abg-comparison.cc
15188	(get_default_harmless_categories_bitmap): Update this.
15189	(operator<<(ostream& o, diff_category c)): Likewise.
15190	* include/abg-ir.h (equals_modulo_cv_qualifier): Declare new ...
15191	* src/abg-ir.cc (equals_modulo_cv_qualifier): ... function.
15192	* 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:
15193	Update expected test output.
15194	* 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.
15195	* tests/data/Makefile.am: Add the new test material below to
15196	source distribution.
15197	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
15198	New expecte test output.
15199	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64.rpm: New
15200	test input.
15201	* tests/data/test-diff-pkg/nss-3.24.0-1.0.fc23.x86_64.rpm: Likewise.
15202	* tests/data/test-diff-pkg/nss-debuginfo-3.23.0-1.0.fc23.x86_64.rpm: Likewise.
15203	* tests/data/test-diff-pkg/nss-debuginfo-3.24.0-1.0.fc23.x86_64.rpm: Likewise.
15204	* tests/data/test-diff-pkg/nss-devel-3.23.0-1.0.fc23.x86_64.rpm: Likewise.
15205	* tests/data/test-diff-pkg/nss-devel-3.24.0-1.0.fc23.x86_64.rpm: Likewise.
15206	* tests/test-diff-pkg.cc (in_out_specs): Add the test input above
15207	to the test harness.
15208
152092019-01-24  Dodji Seketeli <dodji@redhat.com>
15210
15211	Properly add the new rust tests to EXTRA_DIST
15212	* tests/data/Makefile.am: Add the new rust tests to
15213	EXTRA_DIST.
15214
152152019-01-24  Dodji Seketeli <dodji@redhat.com>
15216
15217	Conditionalize the Rust support regression test
15218	* tests/test-diff-dwarf.cc: Run the rust support regression test
15219	only if we support Rust on the platform.
15220	* tests/test-utils.h: Include config.h.
15221
152222019-01-24  Dodji Seketeli <dodji@redhat.com>
15223
15224	Fix a typo in the recent Rust support and update regression tests
15225	* configure.ac: Fix the typo HAS_LANG_Rust into HAS_DW_LANG_Rust.
15226	* tests/data/test-diff-dwarf/test46-readme.txt: Add new file to
15227	the test suite.
15228	* tests/data/test-diff-dwarf/test46-rust-libone.so: Likewise.
15229	* tests/data/test-diff-dwarf/test46-rust-libtwo.so: Likewise.
15230	* tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise.
15231	* tests/test-diff-dwarf.cc (in_out_specs): Update the tests array
15232	to compare the two new binaries included above.
15233
152342019-01-18  Dodji Seketeli <dodji@redhat.com>
15235
15236	Overhaul detection the DW_LANG_* enumerators from dwarf.h
15237	* configure.ac: Detect the presence of DW_LANG_{UPC, D, Python,
15238	Go, C11, C_plus_plus_03, C_plus_plus_11, C_plus_plus_14,
15239	Mips_Assembler, Rust} and define the corresponding
15240	HAVE_DW_LANG_*_enumerator macro accordingly.
15241	* include/abg-ir.h (LANG_C_plus_plus_03): Define this new
15242	enumerator in the translation_unit::language enum.
15243	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Use the
15244	new HAVE_DW_LANG_*_enumerator macros.
15245	(get_default_array_lower_bound): Support the
15246	translation_unit::LANG_C_plus_plus_03 enumerator.
15247	* src/abg-ir.cc (is_cplus_plus_language): Support the
15248	translation_unit::LANG_C_plus_plus_03 enumerator.
15249
152502019-01-18  Dodji Seketeli <dodji@redhat.com>
15251
15252	Fix a thinko
15253	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Fix a
15254	thinko in the detection of the support of the DW_LANG_Rust enumerator.
15255
152562019-01-17  Mark Wielaard <mark@klomp.org>
15257
15258	Conditionalize the use of DW_LANG_C_plus_plus_03 and DW_LANG_Rust
15259	* include/abg-ir.h (LANG_C_plus_plus_03): Add this new language
15260	enum to "enum translation_unit::language".
15261	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Do not
15262	use DW_LANG_Rust or DW_LANG_C_plus_plus_03 if these are not
15263	defined.
15264	(get_default_array_lower_bound): Handle the new
15265	translation_unit::LANG_C_plus_plus_03 enumerator.
15266
152672019-01-17  Dodji Seketeli <dodji@redhat.com>
15268
15269	Support some new DWARF language encoding for C and C++
15270	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Support
15271	new DW_LANG_{C11, C_plus_plus_03, C_plus_plus_11, C_plus_plus_14}
15272	enumerators.
15273
152742019-01-17  Dodji Seketeli <dodji@redhat.com>
15275
15276	Add (very) basic support for Rust
15277	* include/abg-ir.h (LANG_Rust): Add this new enumerator to the
15278	"enum language" enum.
15279	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Handle
15280	the Rust language.
15281	(get_default_array_lower_bound): Likewise.
15282
152832019-01-15  Dodji Seketeli <dodji@redhat.com>
15284
15285	Separate public types of first binary from those of the second
15286	* include/abg-dwarf-reader.h (read_context_get_path): Declare new
15287	function.
15288	* include/abg-reader.h (read_context_get_path): Likewise.
15289	* src/abg-dwarf-reader.cc (read_context_get_path): Define new function.
15290	* src/abg-reader.cc (read_context_get_path): Likewise.
15291	* tools/abidiff.cc (set_suppressions): Set the suppression
15292	specification derived from the --headers-dir1 option only for the first
15293	binary, and similarly, from the --headers-dir2 option only for the
15294	second binary.
15295
152962019-01-09  Dodji Seketeli <dodji@redhat.com>
15297
15298	Bug 23044 - Assertions with side effects
15299	* configure.ac:
15300	* include/abg-diff-utils.h:
15301	* include/abg-fwd.h:
15302	* src/abg-comp-filter.cc:
15303	* src/abg-comparison-priv.h:
15304	* src/abg-comparison.cc:
15305	* src/abg-corpus-priv.h:
15306	* src/abg-corpus.cc:
15307	* src/abg-default-reporter.cc:
15308	* src/abg-diff-utils.cc:
15309	* src/abg-dwarf-reader.cc:
15310	* src/abg-hash.cc:
15311	* src/abg-ini.cc:
15312	* src/abg-ir.cc:
15313	* src/abg-leaf-reporter.cc:
15314	* src/abg-reader.cc:
15315	* src/abg-reporter-priv.cc:
15316	* src/abg-suppression.cc:
15317	* src/abg-tools-utils.cc:
15318	* src/abg-workers.cc:
15319	* src/abg-writer.cc:
15320	* tests/test-diff-filter.cc:
15321	* tests/test-diff-pkg.cc:
15322	* tests/test-read-dwarf.cc:
15323	* tests/test-read-write.cc:
15324	* tests/test-types-stability.cc:
15325	* tools/abicompat.cc:
15326	* tools/abidw.cc:
15327	* tools/abipkgdiff.cc:
15328
153292019-01-07  Dodji Seketeli <dodji@redhat.com>
15330
15331	Update copyright for 2019
15332	* include/abg-comp-filter.h: Update copyright for 2019
15333	* include/abg-comparison.h: Update copyright for 2019
15334	* include/abg-config.h: Update copyright for 2019
15335	* include/abg-corpus.h: Update copyright for 2019
15336	* include/abg-diff-utils.h: Update copyright for 2019
15337	* include/abg-dwarf-reader.h: Update copyright for 2019
15338	* include/abg-fwd.h: Update copyright for 2019
15339	* include/abg-hash.h: Update copyright for 2019
15340	* include/abg-ini.h: Update copyright for 2019
15341	* include/abg-interned-str.h: Update copyright for 2019
15342	* include/abg-ir.h: Update copyright for 2019
15343	* include/abg-libxml-utils.h: Update copyright for 2019
15344	* include/abg-libzip-utils.h: Update copyright for 2019
15345	* include/abg-reader.h: Update copyright for 2019
15346	* include/abg-reporter.h: Update copyright for 2019
15347	* include/abg-sptr-utils.h: Update copyright for 2019
15348	* include/abg-suppression.h: Update copyright for 2019
15349	* include/abg-tools-utils.h: Update copyright for 2019
15350	* include/abg-traverse.h: Update copyright for 2019
15351	* include/abg-viz-common.h: Update copyright for 2019
15352	* include/abg-viz-dot.h: Update copyright for 2019
15353	* include/abg-viz-svg.h: Update copyright for 2019
15354	* include/abg-workers.h: Update copyright for 2019
15355	* include/abg-writer.h: Update copyright for 2019
15356	* src/abg-comp-filter.cc: Update copyright for 2019
15357	* src/abg-comparison-priv.h: Update copyright for 2019
15358	* src/abg-comparison.cc: Update copyright for 2019
15359	* src/abg-config.cc: Update copyright for 2019
15360	* src/abg-corpus-priv.h: Update copyright for 2019
15361	* src/abg-corpus.cc: Update copyright for 2019
15362	* src/abg-default-reporter.cc: Update copyright for 2019
15363	* src/abg-diff-utils.cc: Update copyright for 2019
15364	* src/abg-dwarf-reader.cc: Update copyright for 2019
15365	* src/abg-hash.cc: Update copyright for 2019
15366	* src/abg-ini.cc: Update copyright for 2019
15367	* src/abg-internal.h: Update copyright for 2019
15368	* src/abg-ir-priv.h: Update copyright for 2019
15369	* src/abg-ir.cc: Update copyright for 2019
15370	* src/abg-leaf-reporter.cc: Update copyright for 2019
15371	* src/abg-libxml-utils.cc: Update copyright for 2019
15372	* src/abg-libzip-utils.cc: Update copyright for 2019
15373	* src/abg-reader.cc: Update copyright for 2019
15374	* src/abg-reporter-priv.cc: Update copyright for 2019
15375	* src/abg-reporter-priv.h: Update copyright for 2019
15376	* src/abg-sptr-utils.cc: Update copyright for 2019
15377	* src/abg-suppression-priv.h: Update copyright for 2019
15378	* src/abg-suppression.cc: Update copyright for 2019
15379	* src/abg-tools-utils.cc: Update copyright for 2019
15380	* src/abg-traverse.cc: Update copyright for 2019
15381	* src/abg-viz-common.cc: Update copyright for 2019
15382	* src/abg-viz-dot.cc: Update copyright for 2019
15383	* src/abg-viz-svg.cc: Update copyright for 2019
15384	* src/abg-workers.cc: Update copyright for 2019
15385	* src/abg-writer.cc: Update copyright for 2019
15386	* tests/print-diff-tree.cc: Update copyright for 2019
15387	* tests/test-abicompat.cc: Update copyright for 2019
15388	* tests/test-abidiff-exit.cc: Update copyright for 2019
15389	* tests/test-abidiff.cc: Update copyright for 2019
15390	* tests/test-alt-dwarf-file.cc: Update copyright for 2019
15391	* tests/test-core-diff.cc: Update copyright for 2019
15392	* tests/test-diff-dwarf-abixml.cc: Update copyright for 2019
15393	* tests/test-diff-dwarf.cc: Update copyright for 2019
15394	* tests/test-diff-filter.cc: Update copyright for 2019
15395	* tests/test-diff-pkg.cc: Update copyright for 2019
15396	* tests/test-diff-suppr.cc: Update copyright for 2019
15397	* tests/test-diff2.cc: Update copyright for 2019
15398	* tests/test-ini.cc: Update copyright for 2019
15399	* tests/test-ir-walker.cc: Update copyright for 2019
15400	* tests/test-lookup-syms.cc: Update copyright for 2019
15401	* tests/test-read-dwarf.cc: Update copyright for 2019
15402	* tests/test-read-write.cc: Update copyright for 2019
15403	* tests/test-types-stability.cc: Update copyright for 2019
15404	* tests/test-utils.cc: Update copyright for 2019
15405	* tests/test-utils.h: Update copyright for 2019
15406	* tests/test-write-read-archive.cc: Update copyright for 2019
15407	* tools/abiar.cc: Update copyright for 2019
15408	* tools/abicompat.cc: Update copyright for 2019
15409	* tools/abidiff.cc: Update copyright for 2019
15410	* tools/abidw.cc: Update copyright for 2019
15411	* tools/abilint.cc: Update copyright for 2019
15412	* tools/abipkgdiff.cc: Update copyright for 2019
15413	* tools/abisym.cc: Update copyright for 2019
15414	* tools/binilint.cc: Update copyright for 2019
15415	* tools/kmidiff.cc: Update copyright for 2019
15416	* update-copyright.sh: Update new year to 2019
15417
154182018-12-06  Xiao Jia via libabigail <libabigail@sourceware.org>
15419
15420	Some documentation fixes
15421	* COMPILING: Add the pkg-config dependency.
15422	* doc/manuals/kmidiff.rst: Replace the redundant --full-impact
15423	documentation with the proper --impacted-interfaces one.
15424
154252018-11-29  Dodji Seketeli <dodji@redhat.com>
15426
15427	Add basic support for Fortran binaries
15428	* src/abg-dwarf-reader.cc (die_pretty_print_type): Support
15429	DW_TAG_string_type DIEs.  They all have the same representation
15430	for now.
15431
154322018-11-08  Dodji Seketeli <dodji@redhat.com>
15433
15434	Some light style change in abidiff.cc
15435	* tools/abidiff.cc (adjust_diff_context_for_kmidiff): Take a
15436	reference to diff_context rather than a pointer.
15437	(main): Adjust.
15438
154392018-11-08  Dodji Seketeli <dodji@redhat.com>
15440
15441	Add a --fail-no-debug-info to abidiff
15442	* doc/manuals/abidiff.rst: Document the new --fail-no-debug-info
15443	option.
15444	* tools/abidiff.cc (options::fail_no_debug_info): Define new data
15445	member.
15446	(display_usage): Provide a help string for the new
15447	--fail-no-debug-info option.
15448	(parse_command_line): Parse the new option.
15449	(main): If --fail-no-debug-info and no debug info was found, or
15450	not alternate debuginfo file was found, bail out.
15451
154522018-11-08  Dodji Seketeli <dodji@redhat.com>
15453
15454	Support having several debuginfo search dirs for a binary
15455	* doc/manuals/abidiff.rst: Adjust doc for the
15456	--debug-info-dir{1,2} that can now be provided several times.
15457	* include/abg-dwarf-reader.h ({create, reset}_read_context)
15458	(read_corpus_from_elf): Take a vector of debug info root dirs.
15459	* include/abg-tools-utils.h (trim_leading_string)
15460	(find_file_under_dir, make_path_absolute_to_be_freed)
15461	(convert_char_stars_to_char_star_stars): Declare new functions.
15462	* src/abg-dwarf-reader.cc (find_alt_debug_info_link): Renamed
15463	find_alt_debug_info_location into this.
15464	(find_alt_debug_info_path): Define new static function.
15465	(find_alt_debug_info): Take a vector of debug info root dirs.  Use
15466	the new find_alt_debug_info_path to look into the debug info root
15467	dirs for the alt debug info.
15468	(read_context::debug_info_root_paths_): Define new data member.
15469	(read_context::read_context): Take a vector of debug info root
15470	dirs and initialize the new read_context::debug_info_root_paths_.
15471	(read_context::{initialize, create_default_dwfl}): Take a vector
15472	of debug info root dirs and adjust.
15473	(read_context::{add_debug_info_root_paths,
15474	add_debug_info_root_path, find_alt_debug_info}): Define new member
15475	functions.
15476	(read_context::load_debug_info): Look into the debug info roots
15477	for split debug info files.
15478	(create_read_context, read_corpus_from_elf): Take a vector of
15479	debug info root dirs and adjust.
15480	(has_alt_debug_info): Adjust.
15481	* src/abg-tools-utils.cc (trim_leading_string)
15482	(make_path_absolute_to_be_freed, find_file_under_dir)
15483	(convert_char_stars_to_char_star_stars): Define new functions.
15484	(entry_of_file_with_name): Define new static function.
15485	(build_corpus_group_from_kernel_dist_under): Adjust.
15486	* tests/print-diff-tree.cc (main): Adjust.
15487	* tests/test-diff-dwarf.cc (main): Adjust.
15488	* tests/test-ir-walker.cc (main): Adjust.
15489	* tests/test-read-dwarf.cc (main): Adjust.
15490	* tools/abicompat.cc (main): Adjust.
15491	* tools/abidiff.cc (options::di_root_paths{1,2}): Changed
15492	di_root_path{1,2} into this, change their types into vectors of
15493	allocated char*.
15494	(options::prepared_di_root_paths{1,2}): Define new data members.
15495	(options::~options): Define new destructor.
15496	(parse_command_line): Adjust.
15497	(prepare_di_root_paths): Define new static function.
15498	(handle_error): Remove arguments input_file_name,
15499	debug_info_dir{1,2}.  Now just take an instance of options
15500	instead.  Adjust.
15501	(main): Adjust.
15502	* tools/abidw.cc (options::dir_root_paths): Renamed dir_root_path
15503	into this and make it be a vector of allocated char*.
15504	(options::prepared_di_root_paths): Define new data member.
15505	(options::~options): Free the allocated char* in
15506	options::dir_root_paths.
15507	(parse_command_line): Support several --debug-info-dir.
15508	(load_corpus_and_write_abixml): Adjust.
15509	(prepare_di_root_paths): Define static function.
15510	(main): Adjust.
15511	* tools/abilint.cc (main): Adjust.
15512	* tools/abipkgdiff.cc (compare): Adjust.
15513
155142018-10-26  Dodji Seketeli <dodji@redhat.com>
15515
15516	Update website for 1.5
15517	* doc/website/mainpage.txt: Update website for 1.5
15518
155192018-10-26  Dodji Seketeli <dodji@redhat.com>
15520
15521	Bump version number to 1.6
15522	* configure.ac: Bump version number to 1.6
15523
155242018-10-25  Dodji Seketeli <dodji@redhat.com>
15525
15526	Update ChangeLog for 1.5
15527	* ChangeLog: Update automatically by calling make
15528	update-changelog.
15529
155302018-10-25  Dodji Seketeli <dodji@redhat.com>
15531
15532	Update NEWS file for 1.5
15533	* NEWS: Update for 1.5
15534
155352018-10-18  Dodji Seketeli <dodji@redhat.com>
15536
15537	Bug rhbz1638554 - assertion failed in is_mostly_distinct_diff
15538	* src/abg-comp-filter.cc (is_mostly_distinct_diff): Handle the
15539	case of the type diff of the function parameter diff being a
15540	distinct diff.
15541
155422018-10-17  Dodji Seketeli <dodji@redhat.com>
15543
15544	Define UINT64_MAX when it's not defined
15545	* src/abg-dwarf-reader.cc: Define UINT64_MAX when it's not defined.
15546
155472018-10-16  Dodji Seketeli <dodji@redhat.com>
15548
15549	Better support array with unknown upper bound
15550	* include/abg-comparison.h
15551	(BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY): A new enumerator in the
15552	diff_category enum.
15553	(EVERYTHING_CATEGORY): Adjust.
15554	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
15555	Adjust.
15556	(operator<<(ostream& o, diff_category)): Likewise.
15557	* include/abg-ir.h (array_type_def::subrange_type::is_infinite):
15558	Declare new member function.
15559	* src/abg-ir.cc (array_type_def::subrange_type::priv::infinite_):
15560	New data member.
15561	(array_type_def::subrange_type::priv::priv): Initialize it.
15562	(array_type_def::subrange_type::get_length): Better support
15563	unknown sized subrange.
15564	(array_type_def::subrange_type::is_infinite): Define new member
15565	function.
15566	* src/abg-comp-filter.cc (has_benign_infinite_array_change):
15567	Define new static function.
15568	(categorize_harmless_diff_node): Use the new
15569	has_benign_infinite_array_change above.
15570	* src/abg-dwarf-reader.cc (build_subrange_type): Better recognize a
15571	subrange type with unknown upper bound.  Represent that with the
15572	new array_type_def::subrange_type::is_infinite member property.
15573	* src/abg-reader.cc (build_subrange_type): Likewise.
15574	* tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Adjust.
15575	* tests/data/test-annotate/libtest23.so.abi: Likewise.
15576	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
15577	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
15578	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
15579	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
15580	Likewise.
15581	* tests/data/test-annotate/test7.so.abi: Likewise.
15582	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
15583	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
15584	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
15585	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
15586	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
15587	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
15588	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
15589	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
15590	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
15591
155922018-10-11  Dodji Seketeli <dodji@redhat.com>
15593
15594	Add default suppression specification for the libvirt project
15595	* default.abignore: Suppress changes on functions with symbol
15596	version LIBVIRT_PRIVATE in libvirt.so.* shared objects.
15597
155982018-10-11  Dodji Seketeli <dodji@redhat.com>
15599
15600	Add default suppression specification for the krb5 project
15601	* default.abignore: Ignore changes about functions starting with
15602	krb5int_.*.
15603
156042018-10-03  Dodji Seketeli <dodji@redhat.com>
15605
15606	Misc comment fix
15607	* src/abg-suppression.cc (type_suppression::suppresses_diff): Fix
15608	comment.
15609
156102018-10-03  Dodji Seketeli <dodji@redhat.com>
15611
15612	Bug 23708 - categorize void* to pointer change as harmless
15613	* include/abg-comparison.h (VOID_PTR_TO_PTR_CHANGE_CATEGORY): New
15614	enumerator in the diff_category enum.  Also, adjust the
15615	EVERYTHING_CATEGORY enumerator.
15616	* include/abg-fwd.h (is_void_pointer_type): Declare new function.
15617	* src/abg-comp-filter.cc (has_void_ptr_to_ptr_change): Define new
15618	static function and ...
15619	(categorize_harmless_diff_node): ... use it here.
15620	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
15621	Add the new abigail::comparison::VOID_PTR_TO_PTR_CHANGE_CATEGORY
15622	category in here.
15623	(operator<<(ostream& o, diff_category c)): Add support for the new
15624	VOID_PTR_TO_PTR_CHANGE_CATEGORY.
15625	* src/abg-ir.cc	(is_void_pointer_type): Define new function.
15626	* tests/data/Makefile.am: Add the new test material below to source distribution.
15627	* tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt:
15628	New test reference output.
15629	* tests/data/test-diff-filter/test47-filter-void-ptr-change-v{0,1}.c:
15630	Source code of the new binary test input below.
15631	* tests/data/test-diff-filter/test47-filter-void-ptr-change-v{0,1}.o:
15632	New binary test input.
15633	* tests/test-diff-filter.cc: Add the test input/output above to
15634	test harness.
15635
156362018-10-02  Dodji Seketeli <dodji@redhat.com>
15637
15638	Categorize CV qualifier changes on fn return types as harmless
15639	* include/abg-comparison.h (FN_RETURN_TYPE_CV_CHANGE_CATEGORY):
15640	New enumerator for diff_category.
15641	(EVERYTHING_CATEGORY): Update.
15642	* src/abg-comp-filter.cc (type_diff_has_cv_qual_change_only):
15643	Factorize this function out of ...
15644	(has_fn_parm_type_cv_qual_change): ... this one.
15645	(has_fn_return_type_cv_qual_change): Define new static function.
15646	(categorize_harmless_diff_node): Use the new
15647	has_fn_return_type_cv_qual_change.
15648	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
15649	Adjust to add the new FN_RETURN_TYPE_CV_CHANGE_CATEGORY category.
15650	(operator<<(ostream& o, diff_category c)): Support the new
15651	FN_RETURN_TYPE_CV_CHANGE_CATEGORY.
15652	* tests/data/Makefile.am: Add the new test material below to
15653	source distribution.
15654	* tests/data/test-diff-filter/test46-fn-return-qual-change-report-0.txt:
15655	New reference output for the new input test.
15656	* tests/data/test-diff-filter/test46-fn-return-qual-change-v{0,1}.c:
15657	New source code for the new binary test input.
15658	* tests/data/test-diff-filter/test46-fn-return-qual-change-v{0,1}.o:
15659	New binary test input files.
15660	* tests/test-diff-filter.cc: Add the new test input above to test
15661	harness.
15662
156632018-10-01  Dodji Seketeli <dodji@redhat.com>
15664
15665	Fix propagation of private type suppression category
15666	* include/abg-comp-filter.h (has_harmful_name_change): Declare new
15667	function overloads.
15668	* include/abg-comparison.h (PRIVATE_TYPE_CATEGORY): New enumerator
15669	for diff_category;
15670	(EVERYTHING_CATEGORY): Adjust this enumerator in diff_category;
15671	(is_suppressed): Take an output parameter to say if the
15672	suppression is a private type suppression.
15673	* include/abg-suppression.h (is_private_type_suppr_spec): Take a
15674	const reference parameter and add an overload for a shared
15675	pointer.
15676	* src/abg-comp-filter.cc (has_harmful_name_change): Define new
15677	function.
15678	* src/abg-comparison-priv.h (diff::priv::is_filtered_out): Diffs
15679	of category PRIVATE_TYPE_CATEGORY are also considered filtered
15680	out.
15681	* src/abg-comparison.cc (diff::is_filtered_out): Adjust to account
15682	for canonical diffs of category PRIVATE_TYPE_CATEGORY.
15683	(diff::is_suppressed): Add an overload that takes a
15684	is_private_type output parameter.  Re-write the old overload in
15685	terms of the new one.
15686	(operator<<(ostream& o, diff_category c)): Handle
15687	PRIVATE_TYPE_CATEGORY.
15688	(category_propagation_visitor::visit_end):  Do not propagate
15689	PRIVATE_TYPE_CATEGORY here. Do not propagate
15690	HARMLESS_DECL_NAME_CHANGE_CATEGORY either, when the class does
15691	have a harmful decl name change.
15692	(suppression_categorization_visitor::visit_begin): Set the new
15693	PRIVATE_TYPE_CATEGORY category but do not propagate it.
15694	(suppression_categorization_visitor::visit_end): Add some
15695	comments.
15696	* src/abg-default-reporter.cc (default_reporter::report): Avoid
15697	reporting typedef underlying types that are in the
15698	PRIVATE_TYPE_CATEGORY category.
15699	* src/abg-suppression.cc (type_suppression::suppresses_diff): Do
15700	not peel typedefs if we are a private type suppression.
15701	(is_private_type_suppr_spec): Take a const reference.
15702	* tests/data/Makefile.am: Add the new test material below to
15703	source distribution.
15704	* tests/test-diff-suppr.cc: Use new test binary input.
15705	* tests/data/test-diff-filter/test7-report.txt: Adjust.
15706	* tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: New
15707	test reference output.
15708	* tests/data/test-diff-suppr/test39-opaque-type-v{0,1}.c: Source
15709	code of new test binary input.
15710	* tests/data/test-diff-suppr/test39-opaque-type-v{0,1}.o: New test
15711	binary input.
15712	* tests/data/test-diff-suppr/test39-public-headers-dir/test39-header-v{0,1}.h:
15713	Source code of new test binary input.
15714
157152018-09-25  Dodji Seketeli <dodji@redhat.com>
15716
15717	PR23641 - confusion when a type definition DIE is matched by a supprspec and its decl DIEs aren't
15718	* src/abg-dwarf-reader.cc (get_opaque_version_of_type): If no
15719	pre-existing opaque version was found, a new one is created and
15720	returned.  Take a needed "where_offset" parameter.
15721	(build_ir_node_from_die): Adjust the call to
15722	get_opaque_version_of_type.
15723
157242018-09-21  Dodji Seketeli <dodji@redhat.com>
15725
15726	PR23641 - Type definition DIE matched by a supprspec but not its decl
15727	*definition* of T, they will be dropped too.
15728	We'll end up with those two libraries that are identical (modulo the
15729	order in which libabigail sees type declarations and their
15730	definitions) and are considered different when a suppression
15731	specification makes us drop T: the second library appears to
15732	libabigail as if T was removed from it.
15733	This is the problem addressed by this patch.
15734	When the definition of a type T is suppressed because it's considered
15735	private then we look if there was a forward declaration for it
15736	elsewhere, that is not matched by the private type suppression
15737	specification.  If we encountered such a type declaration then it
15738	means that declaration is in effect an "opaque" version of T.  So
15739	rather than just dropping T altogether, we keep (and build an IR) for
15740	its opaque version only.  And we drop the definition of T.
15741	This seems to fix the issue.
15742	I can't seem to reproduce the slight re-ordering of DIEs descriptions that
15743	uncover the issue so I'll rely on integration tests to catch future
15744	regressions on this issue, rather than on unit tests.  Sigh.
15745	* include/abg-tools-utils.h (PRIVATE_TYPES_SUPPR_SPEC_NAME):
15746	Remove this extern constant definition.
15747	* src/abg-dwarf-reader.cc (type_is_suppressed): Add an overload
15748	that takes an additional type_is_private output parameter.
15749	(get_opaque_version_of_type): New static function.
15750	(build_ir_node_from_die): For class types, get the opaque version
15751	for suppressed private types rather than dropping them altogether.
15752	* src/abg-reader.cc (type_is_suppressed): Adjust.
15753	* src/abg-suppression-priv.h (type_is_suppressed): Add an overload
15754	that takes a type_is_private output parameter.
15755	* include/abg-suppression.h (get_private_types_suppr_spec_label)
15756	(is_private_type_suppr_spec): Declare new functions.
15757	* src/abg-suppression.cc
15758	(get_private_types_suppr_spec_label, is_private_type_suppr_spec):
15759	Define new functions.
15760	(suppression_matches_type_name_or_location): Use the new
15761	get_private_types_suppr_spec_label rather than a global extern
15762	variable.
15763	* src/abg-tools-utils.cc (handle_fts_entry): Adjust to use the new
15764	get_private_types_suppr_spec_label.
15765	(gen_suppr_spec_from_headers): Handle the case or an empty headers
15766	root dir.
15767
157682018-09-03  Dodji Seketeli <dodji@redhat.com>
15769
15770	Add option to avoid walking abigail::ir nodes twice
15771	* include/abg-ir.h (struct ir_node_visitor): Make this be a class.
15772	Add a private data member to it, following the 'pimpl' idiom.
15773	(ir_node_visitor::{allow_visiting_already_visited_type_node,
15774	mark_type_node_as_visited, forget_visited_type_nodes,
15775	type_node_has_been_visited}): Declare new member functions.
15776	* src/abg-ir.cc ({type_base, type_decl, scope_type_decl,
15777	qualified_type_decl, pointer_type_def, reference_type_def,
15778	array_type_def, enum_type_decl, typedef_decl, class_or_union,
15779	class_decl, union_decl}::traverse): Avoid re-visiting the type
15780	node if the visitor was configured as such.
15781	(struct ir_node_visitor::priv): Define new struct.
15782	(ir_node_visitor::{allow_visiting_already_visited_type_node,
15783	mark_type_node_as_visited, forget_visited_type_nodes,
15784	type_node_has_been_visited}): Define new member functions.
15785	* tests/test-ir-walker.cc
15786	(name_printing_visitor::name_printing_visitor): Avoid visiting a
15787	type node twice.
15788
157892018-08-31  Dodji Seketeli <dodji@redhat.com>
15790
15791	Fix apidoc of dwarf_reader::get_soname_of_elf_file
15792	* src/abg-dwarf-reader.cc (get_soname_of_elf_file): Document the
15793	first parameter.  Remove bogus documentation of the previous 'elf'
15794	parameter.
15795
157962018-08-30  Dodji Seketeli <dodji@redhat.com>
15797
15798	Bug 23533 - Accept '=' in ini property values
15799	* src/abg-ini.cc (char_is_delimiter): Take a new include_equal
15800	flag to control is the equal character should be considered as a
15801	delimiter or not.
15802	(char_is_property_value_char): Accept the equal character as a
15803	valid property value character.
15804	* tests/Makefile.am: Build a new runtestini test from the new
15805	tests/test-ini.cc source file.
15806	* tests/data/Makefile.am: Add the two new test inputs below to
15807	source distribution.
15808	* tests/data/test-ini/test01-equal-in-property-string.{abignore,
15809	abignore.expected}: New test inputs.
15810	* tests/test-ini.cc: New test harness.
15811
158122018-08-06  Dodji Seketeli <dodji@redhat.com>
15813
15814	Make test-ir-walker work on ELF binaries directly
15815	* test-ir-walker.cc (main): Load an ABI corpus from an elf file
15816	and walk its translation units.
15817
158182018-07-17  Dodji Seketeli <dodji@redhat.com>
15819
15820	Allow use of python even when fedabipkgdiff is disabled
15821	* configure.ac: Detect the presence and version of python even
15822	when fedabipkgdiff is disabled.
15823
158242018-07-16  Dodji Seketeli <dodji@redhat.com>
15825
15826	Bump version number to 1.5
15827	* configure.ac: Bump version number to 1.5
15828
158292018-07-13  Dodji Seketeli <dodji@redhat.com>
15830
15831	Update ChangeLog for 1.4 release
15832	* ChangeLog: Update this using make update-changelog
15833
158342018-07-13  Dodji Seketeli <dodji@redhat.com>
15835
15836	Update NEWS file for 1.4 release
15837	* NEWS: Added 1.4 entries
15838
158392018-07-13  Dodji Seketeli <dodji@redhat.com>
15840
15841	Properly add test materials for test-diff-suppr/test38-char-class-in-ini*
15842	* tests/data/Makefile.am: Add proper path for
15843	test-diff-suppr/test38-char-class-in-ini*.
15844
158452018-07-12  Dodji Seketeli <dodji@redhat.com>
15846
15847	Allow square brackets in ini property values
15848	* src/abg-ini.cc (char_is_delimiter): Possibly disallow square
15849	bracket characters into the set of delimiters.
15850	* tests/data/test-diff-suppr/test38-char-class-in-ini-report-0.txt:
15851	New reference output.
15852	* tests/data/test-diff-suppr/test38-char-class-in-ini-v{0,1}.c:
15853	Source code new test binaries.
15854	* tests/data/test-diff-suppr/test38-char-class-in-ini-v{0,1}.o:
15855	New test binaries.
15856	* tests/data/test-diff-suppr/test38-char-class-in-ini.abignore:
15857	New test abi suppression file.
15858	* tests/data/Makefile.am: Add the new test materials above to
15859	source distribution.
15860	* tests/test-diff-suppr.cc: Add the test materials above to the
15861	set of tests to run.
15862
158632018-07-10  Dodji Seketeli <dodji@redhat.com>
15864
15865	Fix race between runtestdefaultsupprs{py3.sh,.py}
15866	* tests/Makefile.am: Run runtestdefaultsupprspy3.sh if we are in
15867	python3 mode otherwise run runtestdefaultsupprs.py.
15868
158692018-06-29  Dodji Seketeli <dodji@redhat.com>
15870
15871	Ensure die_function_type_is_method_type returns a class type die
15872	* src/abg-dwarf-reader.cc (die_peel_typedef): Define new static
15873	function.
15874	(die_function_type_is_method_type): Use the function above to peel
15875	the class die from potential typedefs wrapping it.
15876
158772018-06-28  Dodji Seketeli <dodji@redhat.com>
15878
15879	Misc style adjustements
15880	* include/abg-suppression.h
15881	(function_suppression::ADDED_FUNCTION_CHANGE_KIND): Fix the
15882	comment of this enumerator.
15883	(suppresses_variable): Cleanup parameter name.
15884	* src/abg-comparison.cc: Remove useless horizontal space.
15885	* src/abg-suppression.cc
15886	(variable_suppression::suppresses_variable): Fix typo.
15887
158882018-06-28  Dodji Seketeli <dodji@redhat.com>
15889
15890	Initial basic support of union type in suppression specifications
15891	* src/abg-suppression.cc (suppression_matches_type_no_name):
15892	Support union types.
15893
158942018-06-28  Dodji Seketeli <dodji@redhat.com>
15895
15896	Filter out changes like type to const type
15897	* include/abg-comparison.h (FN_PARM_TYPE_CV_CHANGE_CATEGORY): Add
15898	this new enumerator to the diff_category enum.  Also, OR this to
15899	the value of the EVERYTHING_CATEGORY enumerator.
15900	* src/abg-comp-filter.cc (has_fn_parm_type_top_cv_qual_change):
15901	Rename has_fn_parm_type_cv_qual_change into this.
15902	(has_fn_parm_type_cv_qual_change): New function.
15903	(categorize_harmless_diff_node): Categorize cv qual changes as
15904	being of category FN_PARM_TYPE_CV_CHANGE_CATEGORY.
15905	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
15906	Add FN_PARM_TYPE_CV_CHANGE_CATEGORY to the default harmless
15907	categories.
15908	* 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.
15909
159102018-06-28  Dodji Seketeli <dodji@redhat.com>
15911
15912	Fix redundancy detection through fn ptr and typedef paths
15913	* include/abg-comparison.h
15914	(is_function_type_diff_with_local_changes)
15915	(is_reference_or_pointer_diff_to_non_basic_distinct_types)
15916	(peel_typedef_diff): Declare new functions.
15917	* src/abg-comparison.cc
15918	(is_function_type_diff_with_local_changes)
15919	(is_reference_or_ptr_diff_to_non_basic_nor_distinct_types)
15920	(peel_typedef_diff): Define new functions.
15921	(is_reference_or_pointer_diff): Peel typedefs before operating.
15922	(redundancy_marking_visitor::visit_begin): Only sibbling parameter
15923	diff node that carry basic type changes (or distinct type changes)
15924	are *not* marked as redundant.  All other kinds of sibbling
15925	parameter diff nodes are markes redundant.  Also, rather than
15926	never marking function type diffs as redundant by fear of missing
15927	local changes on these, just avoid marking function type diff
15928	nodes with local changes.  It's possible to be that precise now
15929	that we can detect that a diff node carries local changes.
15930	* tests/data/test-diff-suppr/test37-opaque-type-v{0,1}.o: New
15931	binary tests input.
15932	* tests/data/test-diff-suppr/test37-opaque-type-v{0,1}.c: Source
15933	code of the binary tests input above.
15934	* tests/data/test-diff-suppr/test37-opaque-type-header-dir/test37-opaque-type-header-v{0,1}.h:
15935	Headers of the binary tests input above.
15936	* tests/data/test-diff-suppr/test37-opaque-type-report-0.txt:
15937	Reference output for this new test.
15938	* tests/data/Makefile.am: Add the new test material above to
15939	source distribution.
15940	* tests/test-diff-suppr.cc (in_out_specs): Add the new test input
15941	above to the test harness.
15942
159432018-06-08  Dodji Seketeli <dodji@redhat.com>
15944
15945	Fix indentation of help string in abipkgdiff
15946	* tools/abipkgdiff.cc (display_usage): Fix indentation of help
15947	string.
15948
159492018-06-08  Dodji Seketeli <dodji@redhat.com>
15950
15951	Identify a function using its symbol name and version
15952	* src/abg-default-reporter.cc (default_reporter::report): In C,
15953	tell the user about the underlying function symbol name only if
15954	said symbol name is different from the name of the function.
15955	* src/abg-ir.cc (function_decl::get_id): If the function has an
15956	underlying symbol, use the symbol name and version as the function
15957	ID.  But if the function symbol has an alias then use the linkage
15958	name as the ID.
15959	* tests/data/test-diff-pkg/elfutils-debuginfo-0.170-4.el7.x86_64.rpm:
15960	New binary test input.
15961	* tests/data/test-diff-pkg/elfutils-debuginfo-0.171-1.el7.x86_64.rpm: Likewise.
15962	* tests/data/test-diff-pkg/elfutils-devel-0.170-4.el7.x86_64.rpm: Likewise.
15963	* tests/data/test-diff-pkg/elfutils-devel-0.171-1.el7.x86_64.rpm: Likewise.
15964	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64.rpm: Likewise.
15965	* tests/data/test-diff-pkg/elfutils-libs-0.171-1.el7.x86_64.rpm: Likewise.
15966	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt:
15967	New reference test output.
15968	* tests/data/Makefile.am: Add the new test material above to
15969	source distribution.
15970	* tests/test-diff-pkg.cc (in_out_specs): Integrate the new test
15971	inputs above into the harness.
15972
159732018-06-06  Dodji Seketeli <dodji@redhat.com>
15974
15975	Bump version to 1.4
15976	* configure.ac: Bump version to 1.4
15977
159782018-06-06  Dodji Seketeli <dodji@redhat.com>
15979
15980	Explicitely detect anonymous data member changes
15981	* include/abg-comp-filter.h (has_anonymous_data_member_change):
15982	Add new function declaration.
15983	* include/abg-fwd.h (is_data_member, is_anonymous_data_member):
15984	declare new overloads.
15985	* src/abg-comp-filter.cc (has_anonymous_data_member_change):
15986	Define new overloads.
15987	* src/abg-ir.cc (is_data_member, is_anonymous_data_member): Define
15988	new overloads.
15989	* src/abg-reporter-priv.cc (represent): In the var_diff overload,
15990	detect when we have anonymous data member changes and emit
15991	explicit error messages then.
15992	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
15993	New test material.
15994	* tests/data/test-diff-dwarf/test45-anon-dm-change-v0.cc: Likewise.
15995	* tests/data/test-diff-dwarf/test45-anon-dm-change-v0.o: Likewise.
15996	* tests/data/test-diff-dwarf/test45-anon-dm-change-v1.cc: Likewise.
15997	* tests/data/test-diff-dwarf/test45-anon-dm-change-v1.o: Likewise.
15998	* tests/data/Makefile.am: Add the new test material above to source
15999	distribution.
16000	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test
16001	material above to the test harness.
16002	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
16003	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
16004	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
16005	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
16006
160072018-06-05  Dodji Seketeli <dodji@redhat.com>
16008
16009	Add test44-anon-struct-union-v{0,1}.o to source distribution
16010	* tests/data/Makefile.am: Add
16011	test-diff-dwarf/test44-anon-struct-union-v{0,1}.o files to source
16012	distribution.
16013
160142018-06-04  Dodji Seketeli <dodji@redhat.com>
16015
16016	Use the flat representation for anonymous struct/unions
16017	* src/abg-ir.cc (get_class_or_union_flat_representation): Take a
16018	const class_or_union* (like what the declaration in the header
16019	file says), rather than just a class_or_union*.
16020	({class,union}_decl::get_pretty_representation): For anonymous
16021	classes and unions, use the flat representation.
16022	* tests/data/test-annotate/libtest23.so.abi: Adjust.
16023	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
16024	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
16025	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
16026	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
16027	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
16028	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
16029	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
16030	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
16031	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
16032	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
16033	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise.
16034	* tests/data/test-diff-dwarf/test44-anon-struct-union-report-0.txt:
16035	New test reference output.
16036	* tests/data/test-diff-dwarf/test44-anon-struct-union-v{0,1}.cc:
16037	Source code of new test binary outputs.
16038	* tests/data/test-diff-dwarf/test44-anon-struct-union-v{0,1}.o:
16039	New test binary outputs.
16040	* tests/data/Makefile.am: Add the new test materials above to
16041	source districution.
16042	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test
16043	material above to the test harness here.
16044	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
16045	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
16046	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
16047	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
16048	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise.
16049	* 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.
16050	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
16051
160522018-06-01  Dodji Seketeli <dodji@redhat.com>
16053
16054	Better detect when pointer and qualified types carry local changes
16055	* src/abg-comparison.cc
16056	(leaf_diff_node_marker_visitor::visit_begin): Do not mark
16057	qualified types as leaf diff nodes.
16058	(redundancy_marking_visitor::visit_end): Changes to qualified type
16059	are never considered local.  This is just as for pointer and
16060	reference types.
16061	* src/abg-default-reporter.cc
16062	(default_reporter::report_local_reference_type_changes): Display
16063	structural changes of the pointed-to type.
16064	(default_reporter::report): In the overload for reference_diff,
16065	better detect and handle when we have local changes, or not.
16066	* src/abg-ir.cc (equals): In the overload for qualified_type_def
16067	and reference_type_de, report local type changes of the underlying
16068	type as local changes.  Add comments in the overload for pointer
16069	type, and make it look like the the overload for reference_type.
16070	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
16071	overload for pointer_diff, remove end of line.
16072	* tests/data/test-diff-filter/libtest45-basic-type-change-report-1.txt: Adjust.
16073	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
16074	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
16075	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
16076	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
16077
160782018-05-23  Dodji Seketeli <dodji@redhat.com>
16079
16080	Better detect when diff nodes only carry local type changes
16081	* include/abg-comparison.h ({diff, type_diff_base, decl_diff_base,
16082	distinct_diff, var_diff, pointer_diff, reference_diff, array_diff,
16083	qualified_type, enum_diff, class_or_union_diff, class_diff,
16084	base_diff, scope_diff, fn_parm_diff, function_type_diff,
16085	function_decl_diff, typedef_diff,
16086	translation_unit_diff}::has_local_changes): Return an enum
16087	change_kind, rather than just a bool.
16088	(is_diff_of_basic_type): Declare an overload that takes a boolean
16089	flag.
16090	(is_qualified_type_diff, peel_pointer_diff, peel_reference_diff)
16091	(peel_qualified_type, peel_pointer_or_qualified_type): Declare new
16092	functions
16093	* include/abg-fwd.h (peel_qualified_type):
16094	* include/abg-ir.h (enum change_kind::{LOCAL_TYPE_CHANGE_KIND,
16095	LOCAL_NON_TYPE_CHANGE_KIND, ALL_LOCAL_CHANGES_MASK}): Add these
16096	three new enumerators.
16097	* src/abg-comparison.cc ({distinct_diff, var_diff, pointer_diff,
16098	array_diff, reference_diff, qualified_type_diff, enum_diff,
16099	class_or_union_diff, class_diff, base_diff, scope_diff,
16100	fn_parm_diff, function_type_diff, function_decl_diff,
16101	type_decl_diff, typedef_diff,
16102	translation_unit_diff}::has_local_changes): Adjust to return an
16103	enum change_kind, rather than just a bool.
16104	(has_local_type_change_only): Define new functions.
16105	(has_basic_type_change_only): Use the new
16106	has_local_type_change_only function and the new overload for
16107	is_diff_of_basic_type.
16108	(is_diff_of_basic_type): Define an overload that takes a boolean
16109	flag.
16110	(is_qualified_type_diff, peel_pointer_diff, peel_reference_diff)
16111	(peel_qualified_type, peel_pointer_or_qualified_type): Define new
16112	functions.
16113	* src/abg-ir.cc (equals): In the overloads for decl_base,
16114	scope_decl, type_base, qualified_type_diff, pointer_type_def,
16115	reference_type_def, array_type_def, enum_type_decl, typedef_decl,
16116	var_decl, function_type, function_decl, function_decl::parameter,
16117	class_or_union, class_decl::base_spec and class_decl, properly set
16118	the new abigail::ir::{LOCAL_CHANGE_KIND,
16119	LOCAL_NON_TYPE_CHANGE_KIND, LOCAL_TYPE_CHANGE_KIND} bits.
16120	(types_have_similar_structure): Peel qualified types and typedefs
16121	off, first thing.
16122	(peel_qualified_or_typedef_type): Define new function.
16123	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
16124	Adjust.
16125	* tests/data/test-diff-filter/libtest45-basic-type-change-report-{0,1}.txt:
16126	New reference test reports.
16127	* tests/data/test-diff-filter/libtest45-basic-type-change-v{0,1}.so:
16128	New input test binaries.
16129	* tests/data/test-diff-filter/test45-basic-type-change-v{0,1}.cc:
16130	Source code of the input test binaries above.
16131	* tests/data/Makefile.am: Add the new test file above to source
16132	distribution.
16133	* tests/test-diff-filter.cc: Add the test input above to the test
16134	harness.
16135
161362018-05-18  Dodji Seketeli <dodji@redhat.com>
16137
16138	Improve detection of local *type* changes
16139	* include/abg-fwd.h (is_type_decl): Declare new overload for
16140	type_base*.
16141	(types_have_similar_structure): Declare new function.
16142	* src/abg-comparison.cc
16143	(class_or_union_diff::priv::count_filtered_changed_dm): Even when
16144	looking at local changes only, do not forget to count nodes that
16145	were filtered out.
16146	* src/abg-ir.cc (types_have_similar_structure): Define new
16147	function.
16148	(is_type_decl): Define new overload for
16149	type_base*.
16150	(is_enum_type):
16151	(equals): In the overload for var_decl, use the new
16152	types_have_similar_structure function to detect local (type)
16153	changes.
16154	* src/abg-reporter-priv.cc (represent): In the overload for
16155	var_decl, use the diff::has_local_changes function to detect local
16156	changes, now that we can better detect local changes.
16157	* tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt:
16158	Adjust.
16159	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise.
16160
161612018-05-16  Dodji Seketeli <dodji@redhat.com>
16162
16163	Remove references, arrays and fn parms from leaf diff nodes
16164	* src/abg-comparison.cc
16165	(leaf_diff_node_marker_visitor::visit_begin): Do not mark
16166	references, array and fn parms diff nodes as leaf nodes.
16167	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
16168	Adjust.
16169
161702018-05-23  Dodji Seketeli <dodji@redhat.com>
16171
16172	Fix typo in tests/runtestdefaultsupprs.py
16173	* tests/runtestdefaultsupprs.py.in: Fix typo.
16174
161752018-05-17  Dodji Seketeli <dodji@redhat.com>
16176
16177	Update ChangeLog
16178	* ChangeLog: Update this file automatically by running the "make
16179	update-changelog" command.
16180
161812018-05-17  Dodji Seketeli <dodji@redhat.com>
16182
16183	Update NEWS file for 1.3 release
16184	* NEWS: Update for 1.3.
16185
161862018-05-16  Dodji Seketeli <dodji@redhat.com>
16187
16188	Don't bail because "rpm" issued an error
16189	* src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Do not fail
16190	when the rpm command issues an error.  Rather rely on the presence
16191	of a valid output or not.  Also, make sure to filter out error
16192	outputs so that they don't appear in the general output of tools
16193	using this function.
16194
161952018-05-16  Dodji Seketeli <dodji@redhat.com>
16196
16197	Handle cases where no python2 interpreter is found
16198	* configure.ac: When no python2 is found and only python3 is
16199	found, then use python3.
16200
162012018-05-16  Dodji Seketeli <dodji@redhat.com>
16202
16203	Use the correct python interpreter in runtestdefaultsupprs.py
16204	* configure.ac: Make the PYTHON environemnt variable usable in
16205	auto-generated files.
16206	* tests/runtestdefaultsupprs.py.in: Use the python interpreter
16207	detected by configure.
16208
162092018-05-16  Dodji Seketeli <dodji@redhat.com>
16210
16211	Use the dynamically selected python for Koji configure tests
16212	* configure.ac: Use the python interpreter that was selected by
16213	the configure script for the Koji version test.
16214
162152018-05-14  Dodji Seketeli <dodji@redhat.com>
16216
16217	Sort the output of the leaf reporter
16218	* include/abg-comparison.h (diff_ptrs_type): Define new typedef.
16219	* src/abg-comparison-priv.h (sort_string_diff_ptr_map): Declare
16220	new function.
16221	* src/abg-comparison.cc (sort_string_diff_sptr_map): Update
16222	comment.
16223	(sort_string_diff_ptr_map): Define new function.
16224	* src/abg-leaf-reporter.cc (report_diffs): Sort the diff nodes
16225	before reporting about them.
16226	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Adjust.
16227
162282018-05-14  Dodji Seketeli <dodji@redhat.com>
16229
16230	Show data member offsets in bytes too
16231	* src/abg-reporter-priv.cc (represent): In the overload for
16232	var_diff_sptr, use the function show_offset_or_size, rather than
16233	emit_num_value.
16234	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
16235	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
16236	* tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt: Adjust.
16237	* tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt: Adjust.
16238
162392018-05-09  Dodji Seketeli <dodji@redhat.com>
16240
16241	Initial support of anonymous data members
16242	* include/abg-comparison.h (is_class_or_union_diff)
16243	(is_anonymous_class_or_union_diff): Declare new functions.
16244	* include/abg-fwd.h (is_class_type): Declare new overload for
16245	type_or_decl_base&.
16246	(is_data_member): Declare new overload for decl_base*.
16247	(is_anonymous_data_member)
16248	(anonymous_data_member_to_class_or_union)
16249	(get_class_or_union_flat_representation)
16250	(data_member_has_anonymous_type): Declare new functions.
16251	(is_at_class_scope): Return the class or union scope.
16252	* include/abg-ir.h (var_decl::get_qualified_name): New virtual
16253	data member which overloads decl_base::get_qualified_name.
16254	* src/abg-comparison.cc (is_class_or_union_diff)
16255	(is_anonymous_class_or_union_diff): Define new functions
16256	(leaf_diff_node_marker_visitor::visit_begin): Don't mark anonymous
16257	class or union diff nodes as diff nodes.
16258	* src/abg-ir.cc (is_data_member): Define new overload for
16259	decl_base*.
16260	(is_class_type, is_union_type): Define new overload for type_or_decl_base&.
16261	(is_anonymous_data_member)
16262	(anonymous_data_member_to_class_or_union)
16263	(get_class_or_union_flat_representation)
16264	(data_member_has_anonymous_type): Define new function overloads.
16265	(var_decl::get_qualified_name): Define new virtual member
16266	function.
16267	(is_at_class_scope): Return the class or union scope.
16268	(var_decl::get_pretty_representation): Support anonymous data
16269	members.
16270	(equals): In the overload for class_or_union_diff, mark data
16271	member textual representation changes as local changes.
16272	* src/abg-reporter-priv.cc (represent): In the overload for
16273	var_diff, support changes to anonymous data members.
16274	* src/abg-leaf-reporter.cc (leaf_reporter::report): Report sorted
16275	-- by offset -- data member changes before the ones that are
16276	sorted by other things.
16277	* tests/data/test-diff-filter/libtest44-anonymous-data-member-v{0,1}.so:
16278	New binary test input
16279	* tests/data/test-diff-filter/test44-anonymous-data-member-report-{0,1}.txt:
16280	New reference test outputs.
16281	* tests/data/test-diff-filter/test44-anonymous-data-member-v{0,1}.c:
16282	Source code of the new binary test output above.
16283	* tests/data/Makefile.am: Add the new test files above to the
16284	source distribution.
16285	* tests/data/test-annotate/libtest23.so.abi: Adjust test reference
16286	output.
16287	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
16288	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
16289	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
16290	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
16291	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
16292	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
16293	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
16294	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
16295	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
16296	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
16297	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise.
16298	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
16299	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
16300	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
16301	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
16302	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
16303	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
16304	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise.
16305	* 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.
16306
163072018-04-20  Dodji Seketeli <dodji@redhat.com>
16308
16309	Represent sizes and offsets in bytes and hexadecimal values
16310	* doc/manuals/abidiff.rst: Add documentation for the new
16311	--show-bits, --show-bytes, --show-hex and --show-dec options.
16312	* doc/manuals/abipkgdiff.rst: Likewise.
16313	* doc/manuals/kmidiff.rst: Likewise.
16314	* include/abg-comparison.h (diff_context::{show_hex_values,
16315	show_offsets_sizes_in_bits}): Declare new member functions.
16316	* src/abg-comparison-priv.h (diff_context::priv::{hex_values_,
16317	show_offsets_sizes_in_bits_}): Declare new data members.
16318	(diff_context::priv::priv): Initialize them.
16319	* src/abg-comparison.cc (diff_context::{show_hex_values,
16320	show_offsets_sizes_in_bits}): Define new member functions.
16321	* src/abg-default-reporter.cc (default_reporter::report): Adjust
16322	the call to maybe_report_diff_for_symbol.
16323	* src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise.
16324	* src/abg-reporter-priv.h (convert_bits_to_bytes)
16325	(maybe_convert_bits_to_bytes, emit_num_value, show_offset_or_size)
16326	(show_numerical_change): Declare new functions.
16327	(maybe_report_diff_for_symbol): Take a diff_context in parameter.
16328	* src/abg-reporter-priv.cc (convert_bits_to_bytes, emit_num_value)
16329	(maybe_convert_bits_to_bytes, show_numerical_change)
16330	(show_offset_or_size): Define new functions.
16331	(represent): In the overload for method_decl, var_decl, use the
16332	new emit_num_value function.
16333	(represent_data_member): Use the new show_offset_or_size function.
16334	(maybe_show_relative_offset_change): Use the new
16335	convert_bits_to_bytes, diff_context::show_offsets_sizes_in_bits,
16336	emit_num_value functions.
16337	(maybe_show_relative_offset_change): Likewise.
16338	(report_size_and_alignment_changes): Use the new emit_num_value
16339	and show_numerical_change functions.
16340	(maybe_report_diff_for_symbol): Tak a diff_context in argument.
16341	Use the new show_numerical_change function.
16342	* tests/test-diff-filter.cc (in_out_spec): Add a new entry to test
16343	hexa and bytes output.
16344	* tools/abidiff.cc (options::{show_hexadecimal_values,
16345	show_offsets_sizes_in_bits}): New data members.
16346	(options::options): Initialize them.
16347	(display_usage): New help strings for the new
16348	--show{bytes,bits,hex,dec} options.
16349	(parse_command_line): Parse the new --show{bytes,bits,hex,dec} options.
16350	(set_diff_context_from_opts) Set the diff context wrt hex and
16351	bytes values.
16352	* tools/abipkgdiff.cc (options::{show_hexadecimal_values,
16353	show_offsets_sizes_in_bits}): New data members.
16354	(options::options): Initialize them.
16355	(display_usage): New help strings for the new
16356	--show{bytes,bits,hex,dec} options.
16357	(set_diff_context_from_opts): Set the diff context wrt hex and
16358	bytes values.
16359	(parse_command_line): Parse the new --show{bytes,bits,hex,dec}
16360	options.
16361	* tools/kmidiff.cc (options::{show_hexadecimal_values,
16362	show_offsets_sizes_in_bits}): New data members.
16363	(options::options): Initialize them.
16364	(display_usage):New help strings for the new
16365	--show{bytes,bits,hex,dec} options.
16366	(parse_command_line): Parse the new --show{bytes,bits,hex,dec}
16367	options.
16368	(set_diff_context): Set the diff context wrt hex and bytes values.
16369	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
16370	New reference test output.
16371	* tests/data/Makefile.am: Add the new reference test output above
16372	to source distribution.
16373	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
16374	* tests/data/test-abicompat/test0-fn-changed-report-2.txt: Likewise.
16375	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Likewise.
16376	* tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise.
16377	* tests/data/test-abicompat/test6-var-changed-report-0.txt: Likewise.
16378	* tests/data/test-abicompat/test6-var-changed-report-1.txt: Likewise.
16379	* tests/data/test-abicompat/test7-fn-changed-report-0.txt: Likewise.
16380	* tests/data/test-abicompat/test7-fn-changed-report-1.txt: Likewise.
16381	* tests/data/test-abicompat/test7-fn-changed-report-2.txt: Likewise.
16382	* tests/data/test-abicompat/test8-fn-changed-report-0.txt: Likewise.
16383	* tests/data/test-abicompat/test9-fn-changed-report-0.txt: Likewise.
16384	* tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
16385	* tests/data/test-abidiff/test-qual-type0-report.txt: Likewise.
16386	* tests/data/test-abidiff/test-struct0-report.txt: Likewise.
16387	* tests/data/test-abidiff/test-struct1-report.txt: Likewise.
16388	* tests/data/test-abidiff/test-var0-report.txt: Likewise.
16389	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
16390	* tests/data/test-diff-dwarf/test1-report.txt: Likewise.
16391	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
16392	* tests/data/test-diff-dwarf/test11-report.txt: Likewise.
16393	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
16394	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Likewise.
16395	* tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise.
16396	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Likewise.
16397	* tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: Likewise.
16398	* tests/data/test-diff-dwarf/test3-report.txt: Likewise.
16399	* tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise.
16400	* tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise.
16401	* tests/data/test-diff-dwarf/test34-pr19173-libfoo-report-0.txt: Likewise.
16402	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang-report-0.txt: Likewise.
16403	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc-report-0.txt: Likewise.
16404	* tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: Likewise.
16405	* tests/data/test-diff-dwarf/test37-union-report-0.txt: Likewise.
16406	* tests/data/test-diff-dwarf/test39-union-report-0.txt: Likewise.
16407	* tests/data/test-diff-dwarf/test40-report-0.txt: Likewise.
16408	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise.
16409	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
16410	* tests/data/test-diff-dwarf/test9-report.txt: Likewise.
16411	* tests/data/test-diff-filter/test0-report.txt: Likewise.
16412	* tests/data/test-diff-filter/test01-report.txt: Likewise.
16413	* tests/data/test-diff-filter/test1-report.txt: Likewise.
16414	* tests/data/test-diff-filter/test10-report.txt: Likewise.
16415	* tests/data/test-diff-filter/test11-report.txt: Likewise.
16416	* tests/data/test-diff-filter/test13-report.txt: Likewise.
16417	* tests/data/test-diff-filter/test14-0-report.txt: Likewise.
16418	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.
16419	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
16420	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.
16421	* tests/data/test-diff-filter/test16-report-2.txt: Likewise.
16422	* tests/data/test-diff-filter/test16-report.txt: Likewise.
16423	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
16424	* tests/data/test-diff-filter/test17-1-report.txt: Likewise.
16425	* tests/data/test-diff-filter/test2-report.txt: Likewise.
16426	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
16427	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
16428	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise.
16429	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
16430	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
16431	* tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt: Likewise.
16432	* tests/data/test-diff-filter/test3-report.txt: Likewise.
16433	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
16434	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
16435	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
16436	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
16437	* tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise.
16438	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
16439	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise.
16440	* tests/data/test-diff-filter/test37-report-0.txt: Likewise.
16441	* tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
16442	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise.
16443	* tests/data/test-diff-filter/test6-report.txt: Likewise.
16444	* tests/data/test-diff-filter/test9-report.txt: Likewise.
16445	* tests/data/test-diff-pkg/dirpkg-1-report-1.txt: Likewise.
16446	* tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise.
16447	* tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise.
16448	* 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.
16449	* 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.
16450	* 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.
16451	* tests/data/test-diff-pkg/symlink-dir-test1-report0.txt: Likewise.
16452	* tests/data/test-diff-pkg/tarpkg-0-report-0.txt: Likewise.
16453	* tests/data/test-diff-pkg/tarpkg-1-report-0.txt: Likewise.
16454	* 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.
16455	* 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.
16456	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise.
16457	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise.
16458	* tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise.
16459	* tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise.
16460	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
16461	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
16462	* tests/data/test-diff-suppr/test11-add-data-member-report-0.txt: Likewise.
16463	* tests/data/test-diff-suppr/test12-add-data-member-report-0.txt: Likewise.
16464	* tests/data/test-diff-suppr/test12-add-data-member-report-2.txt: Likewise.
16465	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-0.txt: Likewise.
16466	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise.
16467	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise.
16468	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise.
16469	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-0.txt: Likewise.
16470	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise.
16471	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-5.txt: Likewise.
16472	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt: Likewise.
16473	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise.
16474	* tests/data/test-diff-suppr/test17-suppr-added-var-report-0.txt: Likewise.
16475	* tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise.
16476	* tests/data/test-diff-suppr/test17-suppr-added-var-report-5.txt: Likewise.
16477	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-0.txt: Likewise.
16478	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-2.txt: Likewise.
16479	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-5.txt: Likewise.
16480	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
16481	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
16482	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise.
16483	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise.
16484	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise.
16485	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
16486	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
16487	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
16488	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise.
16489	* tests/data/test-diff-suppr/test25-typedef-report-0.txt: Likewise.
16490	* tests/data/test-diff-suppr/test26-loc-suppr-report-0.txt: Likewise.
16491	* tests/data/test-diff-suppr/test26-loc-suppr-report-3.txt: Likewise.
16492	* tests/data/test-diff-suppr/test29-soname-report-3.txt: Likewise.
16493	* tests/data/test-diff-suppr/test29-soname-report-6.txt: Likewise.
16494	* tests/data/test-diff-suppr/test29-soname-report-8.txt: Likewise.
16495	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
16496	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
16497	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
16498	* tests/data/test-diff-suppr/test30-report-0.txt: Likewise.
16499	* tests/data/test-diff-suppr/test31-report-1.txt: Likewise.
16500	* tests/data/test-diff-suppr/test32-report-0.txt: Likewise.
16501	* tests/data/test-diff-suppr/test32-report-1.txt: Likewise.
16502	* tests/data/test-diff-suppr/test33-report-0.txt: Likewise.
16503	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise.
16504	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise.
16505	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise.
16506	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise.
16507	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise.
16508	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
16509	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
16510	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
16511	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
16512	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
16513	* tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise.
16514	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise.
16515	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise.
16516	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise.
16517	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise.
16518	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
16519	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
16520	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
16521	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
16522	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
16523	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
16524	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise.
16525	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise.
16526	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Likewise.
16527	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise.
16528	* tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Likewise.
16529
165302018-04-18  Dodji Seketeli <dodji@redhat.com>
16531
16532	Use absolute builddir paths in automake test files
16533	* tests/runtestdefaultsupprs.py.in: Use abs_top_builddir rather
16534	than top_builddir.
16535
165362018-04-10  Jonathan Wakely <jwakely@redhat.com>
16537
16538	Use std::string::substr instead of appending single chars
16539	* src/abg-ini.cc (trim_white_space): Use std::string::substr
16540	instead of appending single chars.
16541
165422018-04-10  Jonathan Wakely <jwakely@redhat.com>
16543
16544	Rename misleading remove_trailing_white_spaces functions
16545	* include/abg-tools-utils.h (trim_white_space): Renamed
16546	remove_trailing_white_spaces into this.
16547	* src/abg-ini.cc (trim_white_space): Likewise.
16548	* src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Adjust.
16549
165502018-04-10  Jonathan Wakely <jwakely@redhat.com>
16551
16552	Remove unused local set<string> variables
16553	* src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Remove unsed
16554	set<string> variable.
16555	* tools/abipkgdiff.cc (maybe_create_public_dso_sonames_set):
16556	Likewise.
16557
165582018-04-10  Jonathan Wakely <jwakely@redhat.com>
16559
16560	Remove assertion with side-effects
16561	* src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Fix
16562	std::string::sbustr and remove assert with side effect.
16563
165642018-04-13  Dodji Seketeli <dodji@redhat.com>
16565
16566	Misc style changes
16567	* src/abg-comparison.cc (category_propagation_visitor): Adjust comment.
16568	* src/abg-default-reporter.cc
16569	(default_reporter::report_local_function_type_changes): Remove
16570	useless new line.
16571
165722018-04-13  Dodji Seketeli <dodji@redhat.com>
16573
16574	Update tests for the "better leaf mode redundancy management" patchset
16575	* tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust.
16576	* tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
16577	* tests/data/test-abidiff/test-enum0-report.txt: Likewise.
16578	* tests/data/test-abidiff/test-enum1-report.txt: Likewise.
16579	* tests/data/test-diff-filter/test1-report.txt: Likewise.
16580	* tests/data/test-diff-filter/test14-0-report.txt: Likewise.
16581	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
16582	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
16583	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
16584	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
16585	* tests/data/test-diff-filter/test3-report.txt: Likewise.
16586	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
16587	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
16588	* tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise.
16589	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
16590	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise.
16591	* tests/data/test-diff-filter/test4-report.txt: Likewise.
16592	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
16593	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise.
16594	* tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise.
16595	* tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise.
16596	* 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.
16597	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise.
16598	* 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.
16599	* 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.
16600	* 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.
16601	* 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.
16602	* 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.
16603	* tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise.
16604	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
16605	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise.
16606	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise.
16607	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise.
16608	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise.
16609	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise.
16610	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise.
16611	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise.
16612	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise.
16613	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise.
16614	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise.
16615	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise.
16616	* tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise.
16617	* tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise.
16618	* tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise.
16619	* tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise.
16620	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise.
16621	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise.
16622	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise.
16623	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
16624	* tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise.
16625	* tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise.
16626	* tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise.
16627	* tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise.
16628	* tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise.
16629	* tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise.
16630	* tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise.
16631	* tests/data/test-diff-suppr/test30-report-1.txt: Likewise.
16632	* tests/data/test-diff-suppr/test34-report-0.txt: Likewise.
16633	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise.
16634	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise.
16635	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
16636	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
16637	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
16638	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
16639	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
16640	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
16641	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
16642	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
16643	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
16644	* tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise.
16645	* tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise.
16646	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
16647	* tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise.
16648	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise.
16649
166502018-04-13  Dodji Seketeli <dodji@redhat.com>
16651
16652	[abipkgdiff]: in leaf mode we always show redundant changes
16653	* tools/abipkgdiff.cc (set_diff_context_from_opts):
16654	diff_context::show_leaf_changes_only automatically makes us show
16655	redundant changes.  So do not try to show redundant changes in
16656	that case.
16657
166582018-04-13  Dodji Seketeli <dodji@redhat.com>
16659
16660	When we say an a change was reported earlier give its source location
16661	* src/abg-reporter-priv.h
16662	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER2)
16663	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER3): Report the
16664	location of the artifact.
16665
166662018-04-13  Dodji Seketeli <dodji@redhat.com>
16667
16668	Avoid reporting an enum change if it has already been reported
16669	* src/abg-default-reporter.cc (default_reporter::report): In the
16670	enum_diff overload, do not report a node if it's always been
16671	reported; rather, say that it has been reported earlier.
16672
166732018-04-13  Dodji Seketeli <dodji@redhat.com>
16674
16675	Always show redundant changes in leaf mode
16676	* src/abg-comparison.cc (diff_context::show_leaf_changes_only):
16677	Show redundant changes when in leaf mode.
16678
166792018-04-12  Dodji Seketeli <dodji@redhat.com>
16680
16681	Fix leaf report of class data member changes
16682	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
16683	class_or_uion_diff overload, do not emit the data member changes
16684	header twice.
16685	* src/abg-reporter-priv.cc (represent): In the var_diff_sptr
16686	overload, show data member changes when its textual representation
16687	changed.
16688
166892018-04-12  Dodji Seketeli <dodji@redhat.com>
16690
16691	Only show leaf type changes in the leaf type changes section
16692	* src/abg-leaf-reporter.cc (report_type_changes_from_diff_maps):
16693	Split this out from leaf_reporter::report_changes_from_diff_maps
16694	and make it report only about leaf *type* changes.
16695	(leaf_reporter::report_changes_from_diff_maps): Use the new
16696	report_type_changes_from_diff_maps function.
16697	(leaf_reporter::report): In the overload for corpus_diff, use the
16698	new report_type_changes_from_diff_maps function, instead of the
16699	report_changes_from_diff_maps function.
16700
167012018-04-12  Dodji Seketeli <dodji@redhat.com>
16702
16703	Don't filter out typedef changes with redundant underlying type changes
16704	* src/abg-default-reporter.cc (default_reporter::report): In the
16705	overload for typedef, report underlying type changes een when they
16706	are redundant, if the whole typedef change needs to be repoted.
16707
167082018-04-12  Dodji Seketeli <dodji@redhat.com>
16709
16710	Improve function changes reporting in leaf and default mode
16711	* src/abg-default-reporter.cc (default_reporter::report): In the
16712	overload for fn_parm_diff, consider that parameter type changes are
16713	never redundant.
16714	* src/abg-ir.cc (equals): In the overload for function_type,
16715	consider that if the textual representation of the function return
16716	type or a function parameter changed, then that's a local change
16717	for the current instance of function_type.  Likewise, in the
16718	overload for  function_decl, consider that a change in the textual
16719	representation of the function_decl is a local change.  Likewise,
16720	in the overload of function_decl::parameter, consider that a
16721	change in the textual representation of the parameter type is a
16722	local change.
16723	* src/abg-leaf-reporter.cc (leaf_reporter::report): Report leaf
16724	changes to functions.
16725
167262018-04-12  Dodji Seketeli <dodji@redhat.com>
16727
16728	Better handle category propagation of pointer changes
16729	* src/abg-comparison.cc
16730	(leaf_diff_node_marker_visitor::visit_begin): Do not consider
16731	local pointer changes as being leaf changes.
16732	(suppression_categorization_visitor::visit_end):
16733	Allow propagation of the SUPPRESSED_CATEGORY category to pointer
16734	diff nodes.
16735	(redundancy_marking_visitor::visit_end): Allow propagation of the
16736	REDUNDANT_CATEGORY category to pointer diff nodes.
16737	* src/abg-ir.cc (equals): In the pointer_type_def overload,
16738	consider changes where the textual representation of the
16739	pointed-to changed as being local to the pointer type.
16740	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
16741	pointer_diff overload, report the change in the textual
16742	representation of the pointer.
16743
167442018-04-11  Dodji Seketeli <dodji@redhat.com>
16745
16746	Fix meaning of "harmless name change" to avoid overfiltering
16747	* include/abg-ir.h (enum_has_non_name_change): Declare new
16748	* function.  Make it a friend of class enum_type_decl.
16749	* src/abg-comp-filter.cc (has_harmless_name_change): A typedef
16750	name change cannot be harmless if the textual representation of
16751	the underlying type changes too.  Also, use the new
16752	enum_has_non_name_change to tighten the harmless name change
16753	definition for an enum.
16754	* src/abg-default-reporter.cc
16755	(default_reporter::report_local_typedef_changes): If the name of
16756	the typedef changed, report it no matter what.
16757	* src/abg-ir.cc (enum_has_non_name_change): Define new function.
16758
167592018-04-11  Dodji Seketeli <dodji@redhat.com>
16760
16761	Do not mark "distinct" diff nodes as being redundant
16762	* include/abg-comp-filter.h (is_mostly_distinct_diff): Declare new
16763	function.
16764	* include/abg-fwd.h (peel_typedef_pointer_or_reference_type): Take
16765	a boolean to decide to peel qualified types or not.
16766	* src/abg-comp-filter.cc (is_mostly_distinct_diff): Define this function.
16767	* src/abg-comparison.cc (redundancy_marking_visitor::visit_begin):
16768	Do not mark distinct_diff nodes as being redundant.
16769	* src/abg-ir.cc (peel_typedef_pointer_or_reference_type):
16770	Implement taking a boolean to decide to peel qualified types or
16771	not.
16772
167732018-04-11  Dodji Seketeli <dodji@redhat.com>
16774
16775	Overhaul of the report diff stats summary
16776	* include/abg-comparison.h
16777	(corpus_diff::diff_stats::{num_leaf_type_changes,
16778	num_leaf_type_changes_filtered_out, net_num_leaf_type_changes,
16779	num_leaf_func_changes, num_leaf_func_changes_filtered_out,
16780	net_num_leaf_func_changes, num_leaf_var_changes,
16781	num_leaf_var_changes_filtered_out, net_num_leaf_var_changes}):
16782	Declare new member functions.
16783	* src/abg-comparison-priv.h
16784	(corpus_diff::priv::count_leaf_type_changes): Declare new member
16785	function.
16786	* src/abg-comparison.cc
16787	(corpus_diff::diff_stats::net_num_leaf_changes): Fix comment.
16788	(corpus_diff::diff_stats::{num_leaf_type_changes,
16789	num_leaf_type_changes_filtered_out, net_num_leaf_type_changes,
16790	num_leaf_func_changes, num_leaf_func_changes_filtered_out,
16791	net_num_leaf_func_changes, num_leaf_var_changes,
16792	num_leaf_var_changes_filtered_out, net_num_leaf_var_changes}):
16793	Define these member functions.
16794	(do_count_diff_map_changes): Move this macro out of ...
16795	(corpus_diff::priv::count_leaf_changes): ... this.  Also, use
16796	the new function corpus_diff::priv::count_leaf_type_changes.
16797	(corpus_diff::priv::count_leaf_type_changes): Splitted this out of
16798	the previous corpus_diff::priv::count_leaf_changes function.
16799	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Account
16800	for (filtered) types, functions and variables, in a leaf change
16801	manner.
16802	(corpus_diff::priv::emit_diff_stats): Emit a better stat summary
16803	that takes into account leaf-changed types, functions and
16804	variables.
16805
168062018-04-10  Dodji Seketeli <dodji@redhat.com>
16807
16808	Do not show decl-only-to-def changes in the leaf reporter
16809	* include/abg-comp-filter.h (has_class_decl_only_def_change):
16810	Declare this function.
16811	* src/abg-comp-filter.cc (has_class_decl_only_def_change): Make
16812	this function be non-static.
16813	* src/abg-comparison.cc
16814	(leaf_diff_node_marker_visitor::visit_begin): Use it to avoid
16815	marking class-decl-only-def changes as being leaf changes.
16816	* libtest43-decl-only-def-change-leaf-report-v0.so: New test input file.
16817	* libtest43-decl-only-def-change-leaf-report-v1.so: Likewise.
16818	* test43-decl-only-def-change-leaf-report-0.txt: Likewise.
16819	* test43-decl-only-def-change-leaf-report-v0.cc: Likewise.
16820	* test43-decl-only-def-change-leaf-report-v1.cc: Likewise.
16821	* tests/test-diff-filter.cc (in_out_specs): Run the test over the
16822	new test input.
16823	* tests/data/Makefile.am: Add the new test materials to source
16824	distribution.
16825
168262018-03-30  Dodji Seketeli <dodji@redhat.com>
16827
16828	Don't possibly forget type definition when reading a CorpusGroup
16829	* src/abg-dwarf-reader.cc (add_or_update_class_type): Look for
16830	declaration-only-ness to determine if we've already seen the same
16831	type from the main corpus of the group.
16832
168332018-03-30  Dodji Seketeli <dodji@redhat.com>
16834
16835	Don't crash when invoking kmidiff with no debug info root dir
16836	* tools/kmidiff.cc (main): Do not crash on empty debug info root
16837	dir.
16838
168392018-03-30  Dodji Seketeli <dodji@redhat.com>
16840
16841	Do not enable fedabipkgdiff tests if fedabipkgdiff itself is disabled
16842	* tests/Makefile.am: Run runtestfedabipkgdiff{py3?}.py only if
16843	fedabipkgdiff itself is enabled.
16844
168452018-03-25  Chenxiong Qi <cqi@redhat.com>
16846
16847	Bug 22722 - Make fedabipkgdiff and its tests support both python 3 and 2
16848	* configure.ac: Add new option --enable-python3. Add new
16849	test runner file tests/runtestdefaultsupprs-py3 and
16850	tests/runtestfedabipkgdiffpy3.sh. Add required six Python module.
16851	* tests/Makefile.am: Add new test files
16852	tests/runtestdefaultsupprspy3.sh and
16853	tests/runtestfedabipkgdiffpy3.sh accordingly.
16854	* tests/mockfedabipkgdiff.in: Convert print statement to
16855	six.print_. Replace call to function filter with list
16856	comprehension. Replace basestring with six.string_types.
16857	* tests/runtestdefaultsupprspy3.sh.in: New shell script to run
16858	test runtestdefaultsupprs with Python 3.
16859	* tests/runtestdefaultsupprs.py.in: Repalce a few tabs with
16860	proper number of spaces which is detected by Python 3
16861	interpreter.
16862	* tests/runtestfedabipkgdiffpy3.sh.in: New shell script to run
16863	test runtestfedabipkgdiff with Python 3.
16864	* tests/runtestfedabipkgdiff.py.in: Use python from env in
16865	shebang instead of a fixed path to a Python interpreter.
16866	* tools/fedabipkgdiff: Globally replace print statement with a
16867	function call to print which is available by importing
16868	print_function from __future__ module. Use six.print_ to output
16869	string to stderr instead. Convert function call to map to
16870	for-loop. (cmp_nvr): Change argument to handle a Koji build
16871	mapping instead of only the nvr. (Brew.listBuilds): use the new
16872	cmp_nvr to sort builds.
16873
168742018-03-29  Dodji Seketeli <dodji@redhat.com>
16875
16876	Detect the presence of 'rpm' as it's now needed by abipkgdiff
16877	* configure.ac: Detect that the 'rpm' is present. Otherwise,
16878	disable rpm support.
16879
168802018-03-28  Dodji Seketeli <dodji@redhat.com>
16881
16882	Make abipkgdiff avoid comparing private DSOs from RPMs
16883	* doc/manuals/abipkgdiff.rst: Add documentation for the new
16884	--private-dso option.
16885	* include/abg-tools-utils.h (execute_command_and_get_output)
16886	(execute_command_and_get_output, remove_trailing_white_spaces):
16887	Declare new functions.
16888	* src/abg-tools-utils.cc (execute_command_and_get_output)
16889	(get_dsos_provided_by_rpm, remove_trailing_white_spaces): Define
16890	new functions.
16891	* tests/test-diff-pkg.cc (in_out_specs): Add the new --private-dso
16892	option where it makes sense.
16893	* tools/abipkgdiff.cc (options::compare_private_dsos): Add new
16894	data member.
16895	(options::options): Initialize it.
16896	(package::public_dso_sonames_): Add new data member.
16897	(package::public_dso_sonames): Add new accessors pair.
16898	(display_usage): Add a help string for the new --private-dso
16899	option.
16900	(maybe_create_public_dso_sonames_set)
16901	(must_compare_public_dso_only): Define new static functions.
16902	(create_maps_of_package_content): Call the new
16903	maybe_create_public_dso_sonames_set.  Skip packages which SONAME
16904	is not in the set of public SONAMES.
16905	(parse_command_line): Parse the new --private-dso option.
16906
169072018-03-16  Dodji Seketeli <dodji@redhat.com>
16908
16909	Skip changes to function *types* in the leaf reporter
16910	* src/abg-leaf-reporter.cc
16911	(leaf_reporter::report_changes_from_diff_maps): Don't report
16912	function type changes.
16913
169142018-03-16  Dodji Seketeli <dodji@redhat.com>
16915
16916	Report change locations in leaf reports
16917	* src/abg-leaf-reporter.cc (report_diffs): Report the source
16918	location of the diff.
16919	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt:
16920	Update test reference output.
16921	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
16922	Likewise.
16923	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise.
16924	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise.
16925
169262018-03-06  Dodji Seketeli <dodji@redhat.com>
16927
16928	Make the "upload-release" target be usable in parallel
16929	* Makefile.am: Re-arrange the upload-release target to make it
16930	usable with 'make upload-release -jN'.
16931
169322018-03-06  Dodji Seketeli <dodji@redhat.com>
16933
16934	Bump version number to 1.3
16935	* configure.ac: Now that 1.2 is out of the door, bump version
16936	number to 1.3
16937
169382018-03-06  Dodji Seketeli <dodji@redhat.com>
16939
16940	Update website for 1.2
16941	* doc/website/mainpage.txt: Update link to download the tarball,
16942	for 1.2.
16943
169442018-03-06  Dodji Seketeli <dodji@redhat.com>
16945
16946	Update ChangeLog for 1.2
16947	* ChangeLog: Updated automatically by running make update-changelog.
16948
169492018-03-06  Dodji Seketeli <dodji@redhat.com>
16950
16951	Update NEWS file for 1.2
16952	* NEWS: Update for 1.2
16953
169542018-01-31  Dodji Seketeli <dodji@redhat.com>
16955
16956	Fix typo in abipkgdiff documenation
16957	* doc/manuals/abipkgdiff.rst: Fix a typo
16958
169592018-01-31  Dodji Seketeli <dodji@redhat.com>
16960
16961	Update abipkgdiff documentation wrt suppression specifications
16962	* doc/manuals/abipkgdiff.rst: Mention the .abignore file that is
16963	read by the tool and considered as a suppression specification
16964	file.
16965
169662018-03-06  Dodji Seketeli <dodji@redhat.com>
16967
16968	Fix indentation in the DWARF reader
16969	* src/abg-dwarf-reader.cc (build_subrange_type): Fix indentation.
16970
169712018-03-02  Dodji Seketeli <dodji@redhat.com>
16972
16973	Fix the output indentation of abidiff --help
16974	* tools/abidiff.cc (display_usage): Fix indentation of the help
16975	string for the --drop-private-types option.
16976
169772018-03-02  Dodji Seketeli <dodji@redhat.com>
16978
16979	Bug 22913 - Correctly de-duplicate pointers to anonymous structs inside a given
16980	* src/abg-dwarf-reader.cc
16981	(pointer_or_qual_die_of_anonymous_class_type)
16982	(die_is_qualified_type): Define new functions.
16983	(compare_dies): If pointers, reference or qualified type have an
16984	anonymous struct as their underlying type, then we need to
16985	structurally compare the underlying anonymous struct.
16986	* tests/data/test-diff-dwarf/libtest43-PR22913-v{0,1}.so: New
16987	binary test input files.
16988	* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: New
16989	reference output of the comparison of the two binaries above.
16990	* tests/data/test-diff-dwarf/test43-PR22913-v{0,1}.c: Source code
16991	of the binaries above.
16992	* tests/test-diff-dwarf.cc (in_out_specs): Make the test harness
16993	compare the two binaries above.
16994	* tests/data/Makefile.am: Add the new test files above to the
16995	source distribution.
16996
169972018-02-27  Dodji Seketeli <dodji@redhat.com>
16998
16999	Initial support for Ada ranges
17000	* include/abg-ir.h (type_maps::subrange_types): Declare new
17001	accessors.
17002	(is_ada_language, is_subrange_type): Declare new functions.
17003	(class array_type_def::subrange_type): Make this extend type_base
17004	and decl_base.
17005	(array_type_def::subrange_type::{get_language, operator==,
17006	get_pretty_representation, traverse}): Declare new member
17007	functions.
17008	(ir_node_visitor::visit_begin): Add new overloads for
17009	array_type::def::subrange_type.
17010	* src/abg-dwarf-reader.cc (build_subrange_type): Define new static
17011	function.
17012	(build_subranges_from_array_type_die): Cleanup the parameters of
17013	this function.
17014	(build_array_type): Adjust.
17015	(build_ir_node_from_die): Support free-form DW_TAG_subrange_type.
17016	(read_context::odr_is_relevant): Handle Ada.
17017	(die_qualified_type_name): Support DW_TAG_subrange_type.
17018	(die_pretty_print_type): Likewise.  Make the handling of
17019	DW_TAG_subrange_type use die_qualified_type_name.  Adjust the use
17020	of build_subranges_from_array_type_die.
17021	(get_scope_die): a DW_TAG_array_type cannot be a scope.  Rather,
17022	it's its scope that can be a scope.
17023	* src/abg-ir.cc (type_maps::priv::subrange_types_): New data
17024	member.
17025	(type_maps::empty): Adjust.
17026	(type_maps::subrange_types): Define new accessors.
17027	(is_ada_language, is_subrange_type): Define new functions.
17028	(odr_is_relevant): Support Ada.
17029	(maybe_update_types_lookup_map): Add an overload for
17030	array_type_def::subrange_type.  In the decl_base_sptr overload,
17031	add support for the array_type_def::subrange_type type.
17032	(struct array_type_def::subrange_type::priv::location_): Remove
17033	this as it's now carried by the parent decl_base type.
17034	(array_type_def::subrange_type::subrange_type): Adjust.  Take an
17035	environement pointer, a name, an underlying type and a language.
17036	(array_type_def::subrange_type::{g,s}et_underlying_type): Define
17037	new accessors.
17038	(array_type_def::subrange_type::{get_language,
17039	get_pretty_representation, traverse}): Define new member
17040	functions.
17041	(array_type_def::subrange_type::as_string): Add a representation
17042	for Ada.
17043	(equals): Define new overload for array_type_def::subrange_type.
17044	(array_type_def::subrange_type::operator==): Define three new
17045	overloads for decl_base, type_base and subrange_type.
17046	(array_type_def::subrange_type::operator!=): Define new operator.
17047	(get_type_representation): In the overload for array_type_def,
17048	support Ada.
17049	(array_type_def::get_language): Define new member function.
17050	(ir_node_visitor::visit_{begin,end}): Define new overloads for
17051	array_type_def::subrange_type.
17052	* src/abg-reader.cc (build_subrange_type): Adjust documentation.
17053	Support the new 'id', 'name', and 'type-id' properties.
17054	* src/abg-writer.cc (write_array_subrange_type): Define new static
17055	function.
17056	(write_array_type_def): Use the new write_array_subrange_type
17057	function.
17058	* tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Adjust.
17059	* tests/data/test-annotate/libtest23.so.abi: Likewise.
17060	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
17061	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
17062	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
17063	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
17064	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
17065	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
17066	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
17067	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
17068	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
17069	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
17070	* tests/data/test-annotate/test7.so.abi: Likewise.
17071	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
17072	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
17073	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
17074	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
17075	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
17076	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
17077	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
17078	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
17079	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
17080	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
17081	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
17082	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
17083	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
17084	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
17085	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
17086	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
17087	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
17088	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
17089	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
17090	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
17091	* tests/data/test-read-write/test25.xml: Likewise.
17092
170932018-02-06  Dodji Seketeli <dodji@redhat.com>
17094
17095	Add newline at end of version string display
17096	* tools/abidiff.cc (main): Add a newline at the end of the version
17097	string line.
17098	* tools/abidw.cc (main): Likewise.
17099	* tools/abipkgdiff.cc (main): Likewise.
17100	* tools/kmidiff.cc (main): Likewise.
17101
171022018-01-31  Dodji Seketeli <dodji@redhat.com>
17103
17104	Bump version number to 1.2
17105	* configure.ac: Bump version number to 1.2
17106
171072018-01-25  Dodji Seketeli <dodji@redhat.com>
17108
17109	Update website for 1.1
17110	* doc/website/mainpage.txt: Update for 1.1.
17111
171122018-01-25  Dodji Seketeli <dodji@redhat.com>
17113
17114	Update ChangeLog for 1.1
17115	* ChangeLog: Automatically update using 'make update-changelog'.
17116
171172018-01-25  Dodji Seketeli <dodji@redhat.com>
17118
17119	Update NEWS file for 1.1
17120	* NEWS: Update for 1.1
17121
171222018-01-29  Dodji Seketeli <dodji@redhat.com>
17123
17124	Correctly link with pthread
17125	* src/Makefile.am: use -lpthread, not -pthread.
17126
171272018-01-18  Dodji Seketeli <dodji@redhat.com>
17128
17129	Skip class types with changed names in leaf reports
17130	* include/abg-comp-filter.h (has_class_or_union_type_name_change)
17131	(has_basic_or_class_type_name_change): Declare new functions.
17132	* include/abg-comparison.h (is_diff_of_class_or_union_type):
17133	Likewise.
17134	* src/abg-comp-filter.cc (has_class_or_union_type_name_change)
17135	(has_basic_or_class_type_name_change):
17136	* src/abg-comparison.cc
17137	(leaf_diff_node_marker_visitor::visit_begin): Use the new
17138	filtering::has_basic_or_class_type_name_change to test if a basic
17139	or class/union diff type carries a name change.  Update comment.
17140	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
17141	Adjust.
17142
171432018-01-16  Dodji Seketeli <dodji@redhat.com>
17144
17145	Only consider local changes when filtering subtype changes
17146	* src/abg-comparison-priv.h
17147	(class_or_union_diff::priv::{count_filtered_subtype_changed_dm,
17148	count_filtered_changed_dm}): Take an additional flag.
17149	* src/abg-comparison.cc
17150	(class_or_union_diff::priv::{count_filtered_subtype_changed_dm,
17151	count_filtered_changed_dm}): Likewise.  When asked, only consider
17152	local changes.
17153	* src/abg-leaf-reporter.cc (leaf_reporter::report): Consider
17154	reporting only the *net local* data member changes.
17155
171562018-01-16  Dodji Seketeli <dodji@redhat.com>
17157
17158	Make kmidiff show the wrong option when it complains about it
17159	* tools/kmidiff.cc (parse_command_line): Don't forget to record
17160	the wrong option in options::wrong_option.
17161
171622018-01-12  Dodji Seketeli <dodji@redhat.com>
17163
17164	Fix typo in abipkgdiff.cc
17165	* tools/abipkgdiff.cc (compare_task::perform): Fix a typo in a
17166	comment.
17167
171682018-01-12  Dodji Seketeli <dodji@redhat.com>
17169
17170	Suppress duplicates when listing package content
17171	* tools/abipkgdiff.cc (maybe_update_package_content): Rename
17172	maybe_update_vector_of_package_content into this.  Take a set of
17173	strings, rather than a vector of strings.
17174	(get_interesting_files_under_dir): Adjust.
17175
171762018-01-12  Dodji Seketeli <dodji@redhat.com>
17177
17178	Fix symlinks paths handling in abipkgdiff
17179	* include/abg-tools-utils.h (real_path): Declare new function.
17180	* src/abg-tools-utils.cc (real_path): Define it.
17181	* tools/abipkgdiff.cc (package::convert_path_to_relative): Use the
17182	new real_path function to consider real path (where symlinks are
17183	resolved) of the extraction directory of the package.
17184	(get_interesting_files_under_dir): Similarly, use the new
17185	real_path function to consider the real path of the directory we
17186	are exploring.
17187
171882018-01-12  Dodji Seketeli <dodji@redhat.com>
17189
17190	Fix logic in common_prefix
17191	* src/abg-tools-utils.cc (common_prefix): Fix logic error.
17192
171932018-01-12  Dodji Seketeli <dodji@redhat.com>
17194
17195	abipkgdiff --verbose shouldn't trigger --fail-no-dbg
17196	* tools/abipkgdiff.cc (compare): In the overload for elf_files,
17197	separate the effect of --verbose from the one of --fail-no-dbg.
17198
171992018-01-10  Dodji Seketeli <dodji@redhat.com>
17200
17201	Bug 22692 - Consider Java as a language that supports the ODR
17202	* include/abg-ir.h (is_java_language): Declare new function.
17203	* src/abg-dwarf-reader.cc (odr_is_relevant): Adjust to consider
17204	that Java also respects the ODR.
17205	* src/abg-ir.cc (is_java_language): Define new function.
17206	(odr_is_relevant): Adjust to consider that Java also respects the
17207	ODR.
17208
172092018-01-09  Dodji Seketeli <dodji@redhat.com>
17210
17211	Fix version revision number printing in tools --help option
17212	* configure.ac: Properly set the VERSION_REVISION macro.
17213	* include/abg-tools-utils.h (get_library_version_string): Declare
17214	new function.
17215	* src/abg-tools-utils.cc (get_library_version_string): Define the
17216	new function.
17217	(gen_suppr_spec_from_kernel_abi_whitelist): Dis-ambiguate the use
17218	of the 'config' type.
17219	* tools/abicompat.cc (main): Use the new
17220	abigail::tools_utils::get_library_version_string function.
17221	* tools/abidiff.cc (main): Likewise.
17222	* tools/abidw.cc (main): Likewise.
17223	* tools/abilint.cc (main): Likewise.
17224	* tools/abipkgdiff.cc (main): Likewise.
17225	* tools/abisym.cc (main): Likewise.
17226	* tools/kmidiff.cc (main): Likewise.
17227
172282018-01-09  Dodji Seketeli <dodji@redhat.com>
17229
17230	Bug 22684 - Add --d{1,2} options to kmidiff
17231	* doc/manuals/kmidiff.rst: Add documentation for the new options.
17232	* tools/kmidiff.cc (options::{di_root_path{1,2}): New data
17233	members.
17234	(display_usage): Add help strings for the new options.
17235	(parse_command_line): Parse the new options.
17236	(main): Pass the debug info root directory to
17237	build_corpus_group_from_kernel_dist_under.
17238
172392018-01-08  Dodji Seketeli <dodji@redhat.com>
17240
17241	Update copyright notice for all source files
17242	* update-copyright.sh: New sed-based script to update the year
17243	in the copyright notice.
17244	* include/abg-comp-filter.h: Updated the year in the copyright
17245	notice.
17246	* include/abg-comparison.h: Likewise.
17247	* include/abg-config.h: Likewise.
17248	* include/abg-corpus.h: Likewise.
17249	* include/abg-diff-utils.h: Likewise.
17250	* include/abg-dwarf-reader.h: Likewise.
17251	* include/abg-fwd.h: Likewise.
17252	* include/abg-hash.h: Likewise.
17253	* include/abg-ini.h: Likewise.
17254	* include/abg-interned-str.h: Likewise.
17255	* include/abg-ir.h: Likewise.
17256	* include/abg-libxml-utils.h: Likewise.
17257	* include/abg-libzip-utils.h: Likewise.
17258	* include/abg-reader.h: Likewise.
17259	* include/abg-reporter.h: Likewise.
17260	* include/abg-sptr-utils.h: Likewise.
17261	* include/abg-suppression.h: Likewise.
17262	* include/abg-tools-utils.h: Likewise.
17263	* include/abg-traverse.h: Likewise.
17264	* include/abg-viz-common.h: Likewise.
17265	* include/abg-viz-dot.h: Likewise.
17266	* include/abg-viz-svg.h: Likewise.
17267	* include/abg-workers.h: Likewise.
17268	* include/abg-writer.h: Likewise.
17269	* src/abg-comp-filter.cc: Likewise.
17270	* src/abg-comparison-priv.h: Likewise.
17271	* src/abg-comparison.cc: Likewise.
17272	* src/abg-config.cc: Likewise.
17273	* src/abg-corpus-priv.h: Likewise.
17274	* src/abg-corpus.cc: Likewise.
17275	* src/abg-default-reporter.cc: Likewise.
17276	* src/abg-diff-utils.cc: Likewise.
17277	* src/abg-dwarf-reader.cc: Likewise.
17278	* src/abg-hash.cc: Likewise.
17279	* src/abg-ini.cc: Likewise.
17280	* src/abg-internal.h: Likewise.
17281	* src/abg-ir-priv.h: Likewise.
17282	* src/abg-ir.cc: Likewise.
17283	* src/abg-leaf-reporter.cc: Likewise.
17284	* src/abg-libxml-utils.cc: Likewise.
17285	* src/abg-libzip-utils.cc: Likewise.
17286	* src/abg-reader.cc: Likewise.
17287	* src/abg-reporter-priv.cc: Likewise.
17288	* src/abg-reporter-priv.h: Likewise.
17289	* src/abg-sptr-utils.cc: Likewise.
17290	* src/abg-suppression-priv.h: Likewise.
17291	* src/abg-suppression.cc: Likewise.
17292	* src/abg-tools-utils.cc: Likewise.
17293	* src/abg-traverse.cc: Likewise.
17294	* src/abg-viz-common.cc: Likewise.
17295	* src/abg-viz-dot.cc: Likewise.
17296	* src/abg-viz-svg.cc: Likewise.
17297	* src/abg-workers.cc: Likewise.
17298	* src/abg-writer.cc: Likewise.
17299	* tests/print-diff-tree.cc: Likewise.
17300	* tests/test-abicompat.cc: Likewise.
17301	* tests/test-abidiff-exit.cc: Likewise.
17302	* tests/test-abidiff.cc: Likewise.
17303	* tests/test-alt-dwarf-file.cc: Likewise.
17304	* tests/test-core-diff.cc: Likewise.
17305	* tests/test-diff-dwarf-abixml.cc: Likewise.
17306	* tests/test-diff-dwarf.cc: Likewise.
17307	* tests/test-diff-filter.cc: Likewise.
17308	* tests/test-diff-pkg.cc: Likewise.
17309	* tests/test-diff-suppr.cc: Likewise.
17310	* tests/test-diff2.cc: Likewise.
17311	* tests/test-ir-walker.cc: Likewise.
17312	* tests/test-lookup-syms.cc: Likewise.
17313	* tests/test-read-dwarf.cc: Likewise.
17314	* tests/test-read-write.cc: Likewise.
17315	* tests/test-types-stability.cc: Likewise.
17316	* tests/test-utils.cc: Likewise.
17317	* tests/test-utils.h: Likewise.
17318	* tests/test-write-read-archive.cc: Likewise.
17319	* tools/abiar.cc: Likewise.
17320	* tools/abicompat.cc: Likewise.
17321	* tools/abidiff.cc: Likewise.
17322	* tools/abidw.cc: Likewise.
17323	* tools/abilint.cc: Likewise.
17324	* tools/abipkgdiff.cc: Likewise.
17325	* tools/abisym.cc: Likewise.
17326	* tools/binilint.cc: Likewise.
17327	* tools/kmidiff.cc: Likewise.
17328
173292017-12-15  Dodji Seketeli <dodji@redhat.com>
17330
17331	Bug 22437 - Make fedabipkgdiff use all debug info RPMs of a sub-RPM
17332	* tools/fedabipkgdiff (RPM::get_all_debuginfo_rpms): Define new
17333	member function.
17334	(RPM::generate_comparison_halves): The ancillary debuginfo RPM of
17335	a given RPM now has a list type; there can be more than one
17336	debuginfo RPM associated to a given RPM, especially if the RPM is
17337	a devel one.
17338	(format_debug_info_pkg_options): Define new function.
17339	(abipkgdiff): Use the new function above.
17340
173412017-12-15  Dodji Seketeli <dodji@redhat.com>
17342
17343	Improve comments wording in fedabipkgdiff
17344	* tools/fedabipkgdiff (class RPM): Fix wording.
17345	(RPM::__init__): Likewise.
17346
173472017-12-11  Dodji Seketeli <dodji@redhat.com>
17348
17349	Update & cleanup the tools manuals summary
17350	* doc/manuals/abidw.rst: Use the same header structure as or the
17351	other tools manual.
17352	* doc/manuals/kmidiff.rst: Likewise.
17353	* doc/manuals/libabigail-tools.rst: Add the new kmidiff tool to
17354	the summary.
17355
173562017-12-01  Dodji Seketeli <dodji@redhat.com>
17357
17358	Bug 22488 - Make abipkgdiff handle different binaries with same basename
17359	* include/abg-tools-utils.h (string_suffix)
17360	(sorted_strings_common_prefix): Declare new functions.
17361	(dir_name): Take a new keep_separator_at_end parameter at the end.
17362	* src/abg-tools-utils.cc (dir_name): Take a new
17363	keep_separator_at_end parameter at the end.  Add a comment for it
17364	and update.
17365	(string_suffix, sorted_strings_common_prefix): Define new
17366	functions.
17367	(common_prefix): Define new static function.
17368	* tools/abipkgdiff.cc (get_interesting_files_under_dir): Forward
17369	declare this pre-existing static function.
17370	(package::{common_paths_prefix_, elf_file_paths_}): New data
17371	members.
17372	(package::{common_paths_prefix, elf_file_paths,
17373	convert_path_to_relative, convert_path_to_unique_suffix,
17374	load_elf_file_paths}): New member functions.
17375	(create_maps_of_package_content): Use the new
17376	package::{load_elf_file_paths, convert_path_to_unique_suffix}
17377	functions.
17378	(compare_prepared_userspace_packages): Show relative paths of
17379	package elements in reported.
17380	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
17381	Update test ouptut.
17382	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt:
17383	Likewise.
17384
173852017-12-01  Dodji Seketeli <dodji@redhat.com>
17386
17387	Fully report diagnostic about alternate debug info file not found
17388	* src/abg-dwarf-reader.cc (status_to_diagnostic_string): Report
17389	textual diagnostic for the STATUS_ALT_DEBUG_INFO_NOT_FOUND case
17390	too.
17391
173922017-11-27  Dodji Seketeli <dodji@redhat.com>
17393
17394	Bug 22436 - make abipkgdiff accept several debuginfo packages
17395	* doc/manuals/abipkgdiff.rst: Document the fact that --d{1,2} can
17396	be provided several times on the command line.
17397	* tools/abipkgdiff.cc (options::debug_packages{1,2}): Rename the
17398	debug_package{1,2} data members into this, and make them be vector
17399	of strings, rather than just strings.
17400	(package::debug_info_packages_): Renamed
17401	package::debug_info_package_ into this and make it be a vector of
17402	package_sptr, rather than just a package_sptr.
17403	(package::debug_info_packages): Renamed the method
17404	package::debug_info_package into this and -- for the getter
17405	overload -- make it return a vector of package_sptr, rather than
17406	just a package_sptr.  Likewise for the setter overload.  Add a
17407	non-const getter overload.
17408	(package::erase_extraction_directories)
17409	(extract_package_and_map_its_content): Adjust.
17410	(extract_rpm, extract_deb): Do not erase the content of the
17411	extraction directory (if it was pre-existing) prior to extracting
17412	the RPM/deb into it.
17413	(pkg_extraction::pkgs): Renamed pkg_extraction::pkg into this and
17414	make it be a vector of packages, rather than just a package.
17415	(pkg_extraction::pkg_extraction): Adjust to take a package_sptr
17416	rather than just a package.  Add an overload to take a vector of
17417	packages_sptr.
17418	(pkg_extraction::perform): Extract the vector of package that the
17419	task is not responsible for, not just one random package.
17420	(extract_package_and_map_its_content): Adjust.
17421	(prepare_packages): Take smart pointers to package rather than
17422	just packages.  Adjust accordingly.
17423	(compare_prepared_package): Make the overload that takes two
17424	packages to take two smart pointers of packages.
17425	(compare): Make the overload that takes two package take two
17426	package_sptr.
17427	(parse_command_line): Parse having --d{1,2} several times for a
17428	given input package.
17429	(main): Take several debug info packages for one input file.
17430	* include/abg-tools-utils.h (split_string): Declare ...
17431	* src/abg-tools-utils.cc (split_string): ... new function.
17432	* tests/data/test-diff-pkg/libxfce4ui-debuginfo-4.12.1-8.fc27.ppc64.rpm:
17433	Add a new RPM test input file.
17434	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-ok-0.txt:
17435	new reference output file.
17436	* tests/data/Makefile.am: Add the new test input files above to source
17437	distribution.
17438	* tests/test-diff-pkg.cc (in_out_spec): Add new test entry to
17439	specify two debug info packages for one input package.
17440	(test_task::perform): Support having several debug info package
17441	paths in the IntOutSpec::{first,second}_in_debug_package_path data
17442	member.  The debug info packages paths are separated by either a
17443	white space or commas.
17444
174452017-11-22  Dodji Seketeli <dodji@redhat.com>
17446
17447	Update version number to 1.1
17448	* configure.ac: Update version number to 1.1
17449
174502017-11-22  Dodji Seketeli <dodji@redhat.com>
17451
17452	Bug 22076 - Disable fedabipkgdiff for old koji clients
17453	* configure.ac: Try to invoke the koji.read_config method.  If it
17454	fails then disable the fedabipkgdiff feature.
17455
174562017-11-22  Dodji Seketeli <dodji@redhat.com>
17457
17458	Update the release text template after 1.0
17459	* release-text-template.txt: Update some wording.
17460
174612017-11-22  Dodji Seketeli <dodji@redhat.com>
17462
17463	Update website for 1.0
17464	* doc/website/mainpage.txt: Update after 1.0 release.
17465
174662017-11-21  Dodji Seketeli <dodji@redhat.com>
17467
17468	Update NEWS file for 1.0
17469	* NEWS: Update for 1.0
17470
174712017-11-21  Dodji Seketeli <dodji@redhat.com>
17472
17473	Automatically Update ChangeLog for 1.0
17474	* ChangeLog: Automatically update for 1.0
17475
174762017-11-21  Dodji Seketeli <dodji@redhat.com>
17477
17478	Bug 22438 - Emit a clear message when debug info is not found
17479	* include/abg-dwarf-reader.h (enum abigail::dwarf_reader::status):
17480	Add a new STATUS_ALT_DEBUG_INFO_NOT_FOUND enumerator there.
17481	(refers_to_alt_debug_info): Declare new function.
17482	* src/abg-dwarf-reader.cc (read_corpus_from_elf): Detect when the
17483	referred-to alternate debug info file is not found and flip the
17484	STATUS_ALT_DEBUG_INFO_NOT_FOUND bit of the status accordingly.  If
17485	the debug info was found but not the alternate debug info, then do
17486	not try to read the debug info at all.
17487	(refers_to_alt_debug_info): Define new function.
17488	* tools/abidiff.cc (handle_error): Define new static function.
17489	(main): Use it, rather than handling errors preventing libabigail
17490	from reading the corpus on a case by case basis.
17491	tools/abipkgdiff.cc (compare): Handle the case where no alternate
17492	debug info was found.
17493	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt:
17494	New test output reference.
17495	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64.rpm:
17496	New test input RPM.
17497	* tests/data/test-diff-pkg/libxfce4ui-devel-debuginfo-4.12.1-8.fc27.ppc64.rpm:
17498	Likewise.
17499	* tests/data/Makefile.am: Add the new test files above to source
17500	distribution.
17501	* tests/test-diff-pkg.cc (in_out_specs): Add a new test case from
17502	the new input files above.
17503
175042017-11-13  Dodji Seketeli <dodji@redhat.com>
17505
17506	Support systems where fts.h can't be used with _FILE_OFFSET_BITS set
17507	* configure.ac: Detect if we are on a system where fts.h cannot be
17508	included with _FILE_OFFSET_BITS defined.  If that is the case,
17509	then define the BAD_FTS macro.
17510	* src/abg-tools-utils.cc: If BAD_FTS is defined then include fts.h
17511	with _FILE_OFFSET_BITS not defined (that is, before config.h) but
17512	then make sure that open and fopen are 64 bits aware.
17513	* tools/abipkgdiff.cc: Likewise.
17514
175152017-11-08  Dodji Seketeli <dodji@redhat.com>
17516
17517	Edit the NEWS file a tiny little bit for 1.0
17518	* NEWS: Cleanup.
17519
175202017-11-06  Dodji Seketeli <dodji@redhat.com>
17521
17522	Automatically Update ChangeLog for 1.0
17523	* ChangeLog: Update this file by running "make update-changelog".
17524
175252017-11-06  Dodji Seketeli <dodji@redhat.com>
17526
17527	Update NEWS file for 1.0 changes
17528	* NEWS: Update for 1.0 changes
17529
175302017-11-06  Dodji Seketeli <dodji@redhat.com>
17531
17532	Bump version number to 1.0
17533	* configure.ac: Bump version number to 1.0
17534
175352017-11-08  Dodji Seketeli <dodji@redhat.com>
17536
17537	Don't make system headers depend on config.h
17538	* tools/abipkgdiff.cc: Include config.h after system headers and
17539	before libabigail's headers.
17540
175412017-11-02  Dodji Seketeli <dodji@redhat.com>
17542
17543	Wire the --no-show-locs option to abidw
17544	* doc/manuals/abidw.rst: Update the documentation.
17545	* tests/test-annotate.cc: Now that --no-show-locs has an effect on
17546	the ABIXML output, let's not use it here, because it changes the
17547	output and we don't want that.
17548	* tools/abidw.cc (display_usage): Fix a typo in the help string.
17549	(load_corpus_and_write_abixml): Set the "show-locs" option to the
17550	write_context object that we use.
17551
175522017-11-02  Dodji Seketeli <dodji@redhat.com>
17553
17554	Allow setting options to instances of xml_writer::write_context
17555	* include/abg-writer.h (create_write_context, set_show_locs)
17556	(set_annotate): Declare new functions.
17557	(write_corpus, write_corpus_group): Remove the output stream and
17558	the annotate parameters as these can be retrieved from the
17559	context.
17560	* src/abg-writer.cc (write_context::m_show_locs): New data member.
17561	(write_context::write_context): Initialize it.
17562	(write_context::{get_show_locs, set_show_locs}): Add new member
17563	functions.
17564	(write_location): Take a write_context, rather than an output
17565	stream.  From the context, we detect if the user did set the "show
17566	loc" option and act accordingly.  Write the second overload in
17567	terms of the first one.
17568	(create_write_context, set_show_locs, set_annotate): Define new
17569	functions.
17570	(write_type_decl, write_qualified_type_def)
17571	(write_pointer_type_def, write_reference_type_def)
17572	(write_array_type_def, write_enum_type_decl, write_typedef_decl)
17573	(write_var_decl, write_function_decl)
17574	(write_class_decl_opening_tag, write_union_decl_opening_tag)
17575	(write_type_tparameter, write_non_type_tparameter)
17576	(write_function_tdecl, write_class_tdecl): Adjust the invocation
17577	of write_location.
17578	(write_corpus, write_corpus_group): Remove the output stream and
17579	the annotate parameters as these can be retrieved from the
17580	context.  Adjust.
17581	* tools/abidw.c: (load_corpus_and_write_abixml): Create a
17582	write_context object, set the 'annotate' option to it and use that
17583	object to actually write out the corpus.
17584
175852017-11-02  Dodji Seketeli <dodji@redhat.com>
17586
17587	Remove useless vertical space from src/abg-writer.cc
17588	* src/abg-writer.cc (class write_context): Remove useless vertical
17589	space near the end of the class definition.
17590
175912017-10-16  Dodji Seketeli <dodji@redhat.com>
17592
17593	Add a --suppressions option to fedabipkgdiff
17594	* tools/fedabipkgdiff (abipkgdiff): If a suppression file was
17595	provided, pass it to the underlying abipkgdiff tool.
17596	(build_commandline_args_parser): Parse the new --suppressions
17597	option.
17598	* docs/manuals/fedabipkgdiff.rst: Add documentation for the new
17599	--suppressions option.
17600
176012017-10-16  Dodji Seketeli <dodji@redhat.com>
17602
17603	Handle exceptions when global_config is not yet set in fedabipkgdiff
17604	* tools/fedabipkgdiff: When handling an exception, if the
17605	global_config object is not yet set then just let the exception
17606	through.
17607
176082017-10-11  Dodji Seketeli <dodji@redhat.com>
17609
17610	Fix a indentation warning from GCC 7.2.1
17611	* tools/abipkgdiff.cc (compare): In the overload of elf_file, fix
17612	a mis-indentation pointed out by a GCC 7.2.1 warning.
17613
176142017-10-11  Dodji Seketeli <dodji@redhat.com>
17615
17616	Cleanup a switch-case logic to avoid a GCC 7.2.1 warning
17617	* src/abg-dwarf-reader.cc (die_qualified_type_name): Cleanup a
17618	switch case to make the form support more what we meant, and shut
17619	down a GCC 7.2.1 warning.
17620
176212017-10-09  Mark Wielaard <mark@klomp.org>
17622
17623	Fix -Wmisleading-indentation warning in abg-leaf-reporter.cc.
17624	* src/abg-leaf-reporter.cc (leaf_reporter::report): Fix misleading
17625	indentation.
17626
176272017-10-06  Dodji Seketeli <dodji@redhat.com>
17628
17629	Add --impacted-changes option to kmidiff
17630	* doc/manuals/kmidiff.rst: Document the new --impacted-changes
17631	option.
17632	* tools/kmidif.cc (options::show_impacted_interfaces): Add new
17633	data member.
17634	(options::options): Initialize the new data member to false.
17635	(display_usage): Add a description string for the new
17636	--impacted-changes option.
17637	(parse_command_line): Parse the new --impacted-changes option.
17638	(set_diff_context): Update the 'show-impacted-interface' property
17639	accordingly.
17640
176412017-10-04  Dodji Seketeli <dodji@redhat.com>
17642
17643	Add --full-impact option to kmidiff
17644	* doc/manuals/kmidiff.rst: Add documentation for the new
17645	--full-impact|-f option.
17646	* tools/kmidiff.cc (options::leaf_changes_only): Add new data
17647	member.
17648	(option::option): Initialize the new data member.
17649	(display_usage): Add a documentation string for the new
17650	--full-impact|-f option.
17651	(parse_command_line): Parse the new --full-impact|-f option.
17652	(set_diff_context): Set the diff context appropriately.
17653
176542017-09-18  Dodji Seketeli <dodji@redhat.com>
17655
17656	Add a --leaf-changes-only option to abipkgdiff
17657	* doc/manuals/abipkgdiff.rst: Add documentation for the new
17658	--leaf-change-only, --impacted-interfaces and --full-impact
17659	options.
17660	* tools/abipkgdiff.cc (options::{leaf_changes_only,
17661	show_impacted_interfaces, show_full_impact_report): Add new data
17662	members.
17663	(options::options): Initialize them.
17664	(display_usage): Add help strings for the new --leaf-change-only,
17665	--impacted-interfaces and --full-impact|-f options.
17666	(set_diff_context_from_opts): Set the diff context for the
17667	'leaf-changes-only' and 'show-impacted-interfaces' flags.
17668	(parse_command_line): Parse the --leaf-change-only,
17669	--impacted-interfaces and --full-impact options.  Handle the case
17670	where the --linux-kernel-abi-whitelist|-w option is given a
17671	whitelist *package*.
17672	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
17673	New test output reference.
17674	* tests/test-diff-pkg.cc (in_out_spec): Compare
17675	data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64.rpm and
17676	data/test-diff-pkg/spice-server-0.12.8-1.el7.x86_64.rpm with the
17677	new --leaf-changes-only and --impacted-interfaces options, using
17678	the new output reference above.
17679	* tests/data/Makefile.am: Add the new test material to source
17680	distribution.
17681
176822017-08-02  Dodji Seketeli <dodji@redhat.com>
17683
17684	Initial implementation of a --leaf-changes-only option to abidiff
17685	* doc/manuals/abidiff.rst: Add documentation the new
17686	--leaf-changes-only and --impacted-interfaces options.
17687	* src/abg-leaf-reporter.cc: New file.
17688	* src/Makefile.am: Add the new src/abg-leaf-reporter.cc file to
17689	source distribution.
17690	* include/abg-fwd.h (get_var_size_in_bits)
17691	(function_decl_is_less_than): Declare new functions.
17692	(get_name): Add new overload for type_or_decl_base*.
17693	* include/abg-ir.h (struct type_or_decl_hash, type_or_decl_equal)
17694	(type_or_decl_base_comp): Define new types.
17695	(artifact_sptr_set_type, artifact_ptr_set_type): Define new
17696	typedefs.
17697	* include/abg-comp-filter.h: Update copyright year.
17698	(has_basic_type_name_change): Add new function declaration.
17699	* src/abg-comp-filter.cc (decl_name_changed): Take a
17700	type_or_decl_base rather than just a decl.  Add an overload for
17701	diff*.
17702	(has_basic_type_name_change): Define new function.
17703	* include/abg-comparison.h: Update copyright year.
17704	(string_diff_ptr_map): Define this new typedef.
17705	(class diff_maps): Define this new class.
17706	(diff_context::{set_corpora}): Remove this member function.
17707	(diff_context::{set_corpus_diff, get_corpus_diff,
17708	show_leaf_changes_only, show_impacted_interfaces,
17709	forbid_visiting_a_node_twice_per_interface}): Declare these new
17710	member functions.
17711	(diff_node_visitor::priv_): Add a new pimpl data member.
17712	(diff_node_visitor::{diff_node_visitor, get_visiting_kind,
17713	set_visiting_kind}): Turn these into out-of-line member functions.
17714	(diff_node_visitor::{set,get}_current_topmost_iface_diff): Add new
17715	member functions.
17716	(class {scope_diff, function_type_diff, corpus_diff}): Add class
17717	leaf_reporter as a friend.
17718	(corpus_diff::mark_leaf_diff_nodes, get_leaf_diffs): Declare new
17719	member functions.
17720	(diff::{visiting_a_node_twice_is_forbidden_per_interface,
17721	parent_interface_node}): Define new member functions.
17722	(is_diff_of_basic_type): Return a type_decl_diff* rather than just
17723	a bool.
17724	(is_enum_diff, is_array_diff, is_function_type, is_typedef_diff)
17725	(is_corpus_diff): Declare new functions.
17726	(corpus_diff::diff_stats::{num_leaf_changes,
17727	num_leaf_changes_filtered_out, net_num_leaf_changes}): Add new
17728	member functions.
17729	(is_distinct_diff): Declare new function.
17730	* include/abg-reporter.h: Forward-declare "class diff_maps".
17731	(reporter_base::diff_to_be_reported): Declare a new virtual member
17732	function.
17733	(reporter_base::{report_local_typedef_changes,
17734	report_local_reference_type_changes,
17735	report_local_function_type_changes}): Declare new member
17736	functions.
17737	(class leaf_reporter): Define new type.
17738	* src/abg-comparison-priv.h (struct diff_hash, diff_equal): Define
17739	new types.
17740	(diff_artifact_set_map_type): Define new typedef.
17741	(diff_context::priv::{first_corpus_, second_corpus_}): Remove
17742	these data members.
17743	(diff_context::priv::{corpus_diff_, leaf_changes_only_,
17744	reset_visited_diffs_for_each_interface_,
17745	show_impacted_interfaces_}): Add new data members.
17746	(diff_context::priv::priv): Adjust.
17747	(corpus_diff::priv::{leaf_diffs_, parent_interface_}): Add new
17748	data member.
17749	(corpus_diff::diff_stats::priv::{num_leaf_changes,
17750	num_leaf_changes_filtered_out}): Add new data members.
17751	(corpus_diff::priv::count_leaf_changes): Define new member
17752	function.
17753	(sort_artifacts_set, get_fn_decl_or_var_decl_diff_ancestor)
17754	(is_diff_of_global_decls): Declare new functions.
17755	(function_comp::operator()): Factorize this out into the new
17756	function abigail::ir::function_decl_is_less_than.
17757	* src/abg-ir.cc (get_var_size_in_bits)
17758	(function_decl_is_less_than): Define new functions.
17759	(get_name): Define new overload for type_or_decl_base*.
17760	* src/abg-comparison.cc (is_enum_diff, is_typedef_diff)
17761	(is_array_diff, is_function_type_diff, is_corpus_diff)
17762	(is_distinct_diff, sort_artifacts_set, is_diff_of_global_decls):
17763	Define new functions.
17764	(is_union_diff): Fix comment.
17765	(diff_context::forbid_visiting_a_node_twice_per_interface): Define
17766	new member functions.
17767	(diff_context::set_corpus_diff, get_corpus_diff)
17768	(diff_context::show_leaf_changes_only)
17769	(diff_context::visiting_a_node_twice_is_forbidden_per_interface)
17770	(diff_context::show_impacted_interfaces): Define new member
17771	functions.
17772	(diff_context::get_reporter): Create the reporter that matches
17773	what diff_context::show_leaf_changes_only says.
17774	(diff_node_visitor::priv): Define a new type.
17775	(diff_node_visitor::{diff_node_visitor, get_visiting_kind,
17776	set_visiting_kind, or_visiting_kind,
17777	set_current_topmost_iface_diff, get_current_topmost_iface_diff}):
17778	Define new out-of-line member functions.
17779	(struct diff_maps::priv): Define new type.
17780	(diff_maps::{diff_maps, get_type_decl_diff_map,
17781	get_type_decl_diff_map, get_enum_diff_map, get_class_diff_map,
17782	get_union_diff_map, get_typedef_diff_map, get_array_diff_map,
17783	get_function_type_diff_map, get_function_decl_diff_map,
17784	get_var_decl_diff_map, get_reference_diff_map,
17785	get_fn_parm_diff_map, get_distinct_diff_map, insert_diff_node,
17786	lookup_impacted_interfaces}): Define member functions.
17787	(corpus_diff::{mark_leaf_diff_nodes, get_leaf_diffs}): Define new
17788	member functions.
17789	(struct leaf_diff_node_marker_visitor): Define new type.
17790	(corpus_diff::apply_filters_and_suppressions_before_reporting):
17791	Mark diff nodes in here.
17792	(corpus_diff::traverse): Appropriately set the current topmost
17793	interface into the visitor before visiting a diff node.
17794	(compute_diff): In the overload for corpus_sptr, adjust to reflect
17795	that we are now storing the corpus_diff in the diff context.
17796	(is_diff_of_basic_type): Return a type_decl_diff*, not just a
17797	bool.
17798	(corpus_diff::priv::count_leaf_changes): Define a new member
17799	function.
17800	(corpus_diff::diff_stats::{num_leaf_changes,
17801	num_leaf_changes_filtered_out, net_num_leaf_changes}): Define new
17802	member functions.
17803	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the
17804	new corpus_diff::priv::count_leaf_changes to compute the number of
17805	leaf changes.
17806	(corpus_diff::priv::emit_diff_stats): Emit the report about leaf
17807	type changes when necessary.
17808	* src/abg-reporter-priv.h (report_mem_header): Declare new
17809	overload.
17810	(maybe_show_relative_offset_change,): Pass the var_diff_sptr
17811	parameter by const reference.
17812	(represent): Pass the var_diff_sptr parameter by const reference
17813	and take a new "local-only" flag.
17814	(maybe_show_relative_size_change)
17815	(maybe_report_interfaces_impacted_by_diff): Declare new functions.
17816	* src/abg-default-reporter.cc: Adjust copyright year.
17817	(default_reporter::{report_local_typedef_changes,
17818	report_local_qualified_type_changes,
17819	report_local_reference_type_changes,
17820	report_local_function_type_changes}): Define new member functions.
17821	(default_reporter::report): Adjust.  Add an overload for
17822	function_type_diff&. In the overload for qualified_type_diff, if
17823	the name of the underlying type changed, do not detail the changes
17824	any further.  In the overload for function_decl_diff, Adjust to
17825	use the new diff_context::get_{first, second}_corpus member
17826	function.  In the overload for enum_diff, call the new
17827	maybe_report_interfaces_impacted_by_diff that is advertised below.
17828	* src/abg-reporter-priv.cc (represent): Adjust the overload for
17829	var_diff_sptr.
17830	(report_mem_header): Define new overload.
17831	(maybe_show_relative_size_change)
17832	(maybe_report_interfaces_impacted_by_diff): Define new functions.
17833	(reporter_base::diff_to_be_reported): Define new member function.
17834	(maybe_show_relative_offset_change): Pass the var_diff_sptr
17835	parameter by const reference.
17836	(represent): In the overload for var_diff_sptr, pass the
17837	var_diff_sptr parameter by reference.  Take a 'local_only' flag.
17838	Iisplay type changes only if we are not displaying "local changes
17839	only".  Display size changes of data members too, when in
17840	"local-only" mode.
17841	* src/abg-suppression.cc (sonames_of_binaries_match)
17842	(names_of_binaries_match): Adjust.
17843	* tools/abidiff.cc (options::{leaf_changes_only,
17844	show_impacted_interfaces}): Add new data members.
17845	(display_usage): Emit usage string for the new --leaf-changes-only
17846	and --impacted-interfaces options.
17847	(parse_command_line): Parse the new --leaf-changes-only and the
17848	--impacted-interfaces options.
17849	(set_diff_context_from_opts): Set the 'show-leaf-changes' and the
17850	'show-impacted-interfaces' flags.
17851	* tests/data/test-diff-filter/libtest42-leaf-report-v{0,1}.so: New
17852	test input.
17853	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt: New
17854	test reference output.
17855	* tests/data/test-diff-filter/test42-leaf-report-v{0,1}.cc: Source
17856	code of the new test inputs.
17857	* tests/test-diff-filter.cc (in_out_specs): Use the new test
17858	inputs above in this harness.
17859	* tests/data/test-diff-suppr/libtest35-leaf-v0.so: New test input.
17860	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: New test
17861	reference output.
17862	* tests/data/test-diff-suppr/test35-leaf-v{0,1}.cc: Source code of
17863	the new test inputs.
17864	* tests/data/test-diff-suppr/test35-leaf.suppr: Suppression
17865	specification to use for the test35 test.
17866	* tests/data/test-diff-suppr/libtest36-leaf-v0.so: New test input.
17867	* tests/data/test-diff-suppr/libtest36-leaf-v1.so: Likewise.
17868	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: New
17869	reference test output.
17870	* tests/data/test-diff-suppr/test36-leaf-v0.cc: Source code of
17871	test input above.
17872	* tests/data/test-diff-suppr/test36-leaf-v1.cc: Likewise.
17873	* tests/test-diff-suppr.cc (in_out_specs): Use the new test inputs
17874	above in this harness.
17875	* tests/data/Makefile.am: Add the new test inputs above to source
17876	distribution.
17877
178782017-07-17  Dodji Seketeli <dodji@redhat.com>
17879
17880	Allow several kinds of reports to be emitted
17881	* include/Makefile.am: Add the new abg-reporter.h header file to
17882	source distribution.
17883	* include/abg-comparison.h: Include the new abg-reporter.h header
17884	file.
17885	(diff_context::{g,s}et_reporter): Declare new accessors.
17886	({type_diff_base, decl_diff_base, corpus_diff}::priv): Make this
17887	be a struct rather than a class.
17888	({decl_diff_base, class_diff, scope_diff, function_type_diff,
17889	corpus_diff}): Declare default_reporter a friend class of these.
17890	* include/abg-reporter.h: New file.
17891	* src/Makefile.am: Add abg-comparison-priv.h,
17892	abg-reporter-priv.{h,cc} and abg-default-reporter.cc files to
17893	source distribution.
17894	* src/abg-comparison-priv.h: New file.
17895	* src/abg-comparison.cc (sort_enumerators)
17896	(sort_changed_enumerators, sort_data_members)
17897	(sort_string_function_ptr_map)
17898	(sort_string_function_decl_diff_sptr_map)
17899	(sort_string_var_diff_sptr_map, sort_string_elf_symbol_map)
17900	(sort_string_var_ptr_map, sort_string_data_member_diff_sptr_map)
17901	(sort_unsigned_data_member_diff_sptr_map)
17902	(sort_string_diff_sptr_map, sort_string_base_diff_sptr_map)
17903	(sort_string_base_sptr_map, sort_string_fn_parm_diff_sptr_map)
17904	(sort_string_parm_map, get_leaf_type, sort_enumerators)
17905	(sort_changed_enumerators): Make these functions non-static and
17906	move them at the beginning of the file.  These functions are now
17907	declared in abg-compared-priv.h so they can be shared privately
17908	with other files in src/.
17909	(diff_context::{g,s}et_reporter): Define new accessors.
17910	({diff_context, diff, type_diff_base, decl_diff_base,
17911	distinct_diff, pointer_diff, array_diff, reference_diff,
17912	qualified_type_diff, enum_diff, class_or_union_diff, class_diff,
17913	base_diff, scope_diff, fn_parm_diff, function_type_diff,
17914	function_decl_diff, type_decl_diff, typedef_diff,
17915	translation_unit_diff, corpus_diff::diff_stats,
17916	corpus_diff}::priv)
17917	(diff_less_than_functor, enumerator_value_comp)
17918	(changed_enumerator_comp, base_spec_comp, base_diff_comp)
17919	(data_member_diff_comp, diff_comp, fn_parm_diff_comp, parm_comp)
17920	(elf_symbol_comp, function_comp, function_decl_diff_comp)
17921	(var_diff_sptr_comp): Move these type definitions to
17922	abg-comparison-priv.h
17923	(report_size_and_alignment_changes, report_loc_info)
17924	(maybe_report_diff_for_member, maybe_report_diff_for_symbol)
17925	(represent, represent_data_member)
17926	(maybe_show_relative_offset_change, represent)
17927	(report_size_and_alignment_changes, report_loc_info)
17928	(report_name_size_and_alignment_changes, report_mem_header)
17929	(maybe_report_diff_for_member, maybe_report_diff_for_symbol)
17930	(show_linkage_name_and_aliases): Move these definitions to
17931	abg-reporter-priv.cc.
17932	({distinct_diff, var_diff, pointer_diff, array_diff,
17933	reference_diff, qualified_type_diff, enum_diff,
17934	class_or_union_diff, class_diff, base_diff, union_diff,
17935	scope_diff, fn_parm_diff, function_type_diff, type_decl_diff,
17936	typedef_diff, corpus_diff}::report): Use the reporter object to
17937	report about the changes carried by the the current diff node.
17938	* src/abg-default-reporter.cc: New file.
17939	* src/abg-reporter-priv.h: Likewise.
17940
179412017-10-04  Dodji Seketeli <dodji@redhat.com>
17942
17943	Update copyright year to tools/abidiff.cc
17944	* tools/abidiff.cc: Update copyright year.
17945
179462017-10-04  Dodji Seketeli <dodji@redhat.com>
17947
17948	Add missing comment to type declaration
17949	* include/abg-comparison.h (struct diff_sptr_hasher): Add missing
17950	comment.
17951
179522017-10-04  Dodji Seketeli <dodji@redhat.com>
17953
17954	Misc style fixes in abg-writer.cc
17955	* src/abg-writer.cc (type_hasher): Add comment.
17956	(write_context::record_decl_as_emitted): Remove useless newline.
17957
179582017-10-04  Dodji Seketeli <dodji@redhat.com>
17959
17960	Initialize naked canonical type
17961	* src/abg-ir.cc (type_base::priv::priv): Initialize the naked
17962	canonical type data member.
17963
179642017-10-04  Dodji Seketeli <dodji@redhat.com>
17965
17966	[abixml writer] Use an unordered set when appropriate
17967	* src/abg-writer.cc (write_context::m_emitted_decl_only_set):
17968	Renamed m_emitted_decl_only_map into this and make the type be a
17969	set, rather than a map.
17970	(write_context::{record_decl_only_type_as_emitted,
17971	decl_only_type_is_emitted}): Adjust.
17972
179732017-09-29  Dodji Seketeli <dodji@redhat.com>
17974
17975	[abixml writer] Store pointers to emitted types rather than type-ids
17976	* src/abg-writer.cc (type_ptr_set_type): Declare new typedef.
17977	(writer_context::m_emitted_type_id_map): Remove this data member.
17978	(writer_context::m_emitted_type_set): Add a new data member.
17979	(writer_context::{record_type_id_as_emitted, type_id_is_emitted,
17980	clear_emitted_types_map}): Remove these member functions.
17981	(writer_context::{record_type_as_emitted, type_is_emitted}): Use
17982	the new m_emitted_type_set data member above.
17983
179842017-09-27  Dodji Seketeli <dodji@redhat.com>
17985
17986	Use an unordered map for canonical DIE offsets
17987	* src/abg-dwarf-reader.cc
17988	(read_context::canonical_type_die_offsets_): Renamed the
17989	canonical_type_die_vecs_ data member into this.
17990	(read_context::canonical_decl_die_offsets_): Renamed the
17991	canonical_decl_die_vecs_ data member into this.
17992	(read_context::{initialize, compute_canonical_die_offset,
17993	compute_canonical_die, get_canonical_die,
17994	get_or_compute_canonical_die, set_canonical_die_offset,
17995	get_canonical_die_offset}): Adjust.
17996
179972017-09-27  Dodji Seketeli <dodji@redhat.com>
17998
17999	Bug 22190 - crash in read_context::get_or_compute_canonical_die
18000	* src/abg-dwarf-reader.cc:
18001
180022017-09-27  Dodji Seketeli <dodji@redhat.com>
18003
18004	Remove redundant (useless) typedef declaration
18005	* src/abg-dwarf-reader.cc (dwarf_offsets_type): There are two
18006	instances of this typedef declaration, remove one.
18007
180082017-09-27  Dodji Seketeli <dodji@redhat.com>
18009
18010	Renamed offset_offset_map type name into offset_offset_map_type
18011	* src/abg-dwarf-reader.cc (offset_offset_map_type): Renamed
18012	offset_offset_map into this.
18013	(read_context::{primary_die_parent_map_,
18014	alternate_die_parent_map_, type_section_die_parent_map_}): Adjust
18015	the type of these data members.
18016	(read_context::{die_parent_map, type_section_die_parent_map}):
18017	Adjust the type of these member functions.
18018	(read_context::{build_die_parent_relations_under,
18019	get_parent_die}): Adjust for the type name in these functions.
18020
180212017-09-27  Dodji Seketeli <dodji@redhat.com>
18022
18023	Add missing newlines to kmidiff's usage strings
18024	* tools/kmidiff.cc (display_usage): Add newlines after the lines
18025	for --vmlinux1 and --vmlinux2.
18026
180272017-09-21  Dodji Seketeli <dodji@redhat.com>
18028
18029	22160 - Annotate state flag unitialized in abidw
18030	* tools/abidw.cc (options::options): Initialize the annotate data
18031	member.
18032
180332017-09-18  Dodji Seketeli <dodji@redhat.com>
18034
18035	Don't crash on classes that differ in their virtual member fn count
18036	* src/abg-ir.cc (equals): In the overload for class_decl, when we
18037	detect that the virtual member function counts are different, get
18038	out, even when we are being asked about the kind of the change.
18039
180402017-09-18  Dodji Seketeli <dodji@redhat.com>
18041
18042	Avoid adding the same data member twice in the DWARF reader
18043	* src/abg-dwarf-reader.cc (add_or_update_class_type): After a we
18044	try to create a data member type, look *again* if the data member
18045	wasn't added recursively by the creation of the data member type.
18046
180472017-09-11  Mark Wielaard <mark@klomp.org>
18048
18049	Bug 22075 - data_member_diff_comp forgets data members names
18050	* src/abg-comparison.cc (data_member_diff_comp): Make the
18051	comparison take the qualified name of the data member into
18052	account.  Also, if the initial offset and qualified names of the
18053	data members of the diff nodes are equal, consider the offset and
18054	qualified names of the new data members.
18055
180562017-09-11  Dodji Seketeli <dodji@redhat.com>
18057
18058	Bug 22122 - Fail to represent 'const array'
18059	* src/abg-dwarf-reader.cc (die_is_array_type): Define new static
18060	function.
18061	(die_is_pointer_or_reference_type): Also test that the DIE can be
18062	an array.
18063	* tests/data/test-read-dwarf/PR22122-libftdc.so: New binary test input.
18064	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: New reference output.
18065	* tests/data/Makefile.am: Add the two new test files above to
18066	source distribution.
18067	* tests/test-read-dwarf.cc (in_out_specs): Run this test harness
18068	over the new test input.
18069
180702017-09-08  Dodji Seketeli <dodji@redhat.com>
18071
18072	Finer detection of local changes of var_decl type
18073	* src/abg-ir.cc (equals): In the var_decl overload detect size
18074	changes of type as being a local change.
18075
180762017-09-08  Dodji Seketeli <dodji@redhat.com>
18077
18078	Misc style fixes
18079	* include/abg-fwd.h (get_pretty_representation): Add missing white
18080	space.
18081	* src/abg-ir.cc (get_name): Fix typo in comment.
18082
180832017-09-02  Mark Wielaard <mark@klomp.org>
18084
18085	readdir_r() is deprecated, use readdir().
18086	* src/abg-tools-utils.cc (dir_is_empty): Use readdir() instead
18087	of readdir_r().
18088
180892017-09-02  Mark Wielaard <mark@klomp.org>
18090
18091	Declare eval_last_constant_dwarf_sub_expr with [u]int64_t not [s]size_t.
18092	* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
18093	Declare expr_len as uint64_t and value as int64_t.
18094
180952017-08-28  Dodji Seketeli <dodji@redhat.com>
18096
18097	Bug 22015 - Failing to return global scope of a DIE in certain cases
18098	* src/abg-dwarf-reader.cc (get_scope_for_die): If the translation
18099	unit of the parent die hasn't yet been constructed, then return
18100	the global scope of the current translation unit.
18101	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so: New
18102	binary test input.
18103	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
18104	New reference test output.
18105	* tests/data/Makefile.am: Add the new test materials above to
18106	source distribution.
18107	* tests/test-read-dwarf.cc (in_out_specs): Add the new test input
18108	to the test suite.
18109
181102017-07-17  Dodji Seketeli <dodji@redhat.com>
18111
18112	Fix some make distcheck failures
18113	* tests/data/Makefile.am: Add
18114	test-diff-dwarf/test42-PR21296-libgcc.so,
18115	test-diff-dwarf/test42-PR21296-libclang.so,
18116	test-diff-dwarf/test42-PR21296-clanggcc-report0.txt to the source
18117	distribution.  Also look for test-diff-filter/test39* tests inputs
18118	in the test-diff-filter/test39/ directory.
18119
181202017-07-17  Dodji Seketeli <dodji@redhat.com>
18121
18122	Avoid crashing when the elf file could not be read
18123	* src/abg-dwarf-reader.cc
18124	(read_context::elf_architecture_is_ppc64): Do not crash if the elf
18125	handle is nil.
18126
181272017-07-10  Dodji Seketeli <dodji@redhat.com>
18128
18129	Bug 21730 - Make abipkgdiff compare Linux Kernel packages as expected
18130	* include/abg-tools-utils.h (get_vmlinux_path_from_kernel_dist):
18131	Declare new function.
18132	(get_binary_paths_from_kernel_dist): Re-organize order of
18133	parameters.
18134	(file_is_kernel_package, file_is_kernel_debuginfo_package): Make
18135	the file_path parameter be const.
18136	(build_corpus_group_from_kernel_dist_under): Take an additional
18137	debug_info_root parameter.
18138	* src/abg-tools-utils.cc (file_is_kernel_package)
18139	(file_is_kernel_debuginfo_package): Const-ify the file_name
18140	parameter.
18141	(find_vmlinux_path): Define new static function.
18142	(get_binary_paths_from_kernel_dist): Re-organize the order of
18143	parameters.  The debug_info_root_path parameter is now an input
18144	parameter.
18145	(get_vmlinux_path_from_kernel_dist): Define new function.
18146	(get_binary_paths_from_kernel_dist): Adjust invocation of
18147	get_binary_paths_from_kernel_dist.
18148	(build_corpus_group_from_kernel_dist_under): Take an additional
18149	debug_info_root parameter.
18150	* tools/abidw.cc (load_kernel_corpus_group_and_write_abixml):
18151	Adjust invocation to build_corpus_group_from_kernel_dist_under.
18152	* tools/abipkgdiff.cc (create_maps_of_package_content):  Don't map
18153	the content of a Linux Kernel package.
18154	(compare_prepared_userspace_packages)
18155	(compare_prepared_linux_kernel_packages, compare_prepared): Define
18156	new functions.
18157	(compare): Use the new functions above here.
18158	* tools/kmidiff.cc (print_kernel_dist_binary_paths_under): Adjust
18159	the invocation of get_binary_paths_from_kernel_dist.
18160	(main): Adjust the invocation of
18161	build_corpus_group_from_kernel_dist_under.  Make sure that a
18162	kernel package is accompanied by a debug info package.
18163
181642017-07-11  Dodji Seketeli <dodji@redhat.com>
18165
18166	Support up to two --wp options for abipkgdiff
18167	* doc/manuals/abipkgdiff.rst: Update the documentation to say that
18168	--wp can be provided twice, but not more than that.
18169	* tools/abipkgdiff.cc (options::kabi_whitelist_packages): Rename
18170	kabi_whitelist_package to this, and make be of vector<string>
18171	type.
18172	(package::erase_extraction_directories): Erase the white list
18173	package extracted data.
18174	(maybe_handle_kabi_whitelist_pkg, parse_command_line): Adjust.
18175	(main): Make sure there is no more than 2 --wp on the command
18176	line.  Associate a white list package to each kernel package on
18177	the command line.
18178
181792017-07-11  Dodji Seketeli <dodji@redhat.com>
18180
18181	Fix support of the --wp option of abipkgdiff
18182	* tools/abipkgdiff.cc (parse_command_line): Consider the absolute
18183	path of the package given in argument to --wp.
18184
181852017-07-11  Dodji Seketeli <dodji@redhat.com>
18186
18187	Use shorter lines in abipkgdiff.cc
18188	* tools/abipkgdiff.cc (parse_command_line): Use shorter lines
18189	here.
18190
181912017-07-11  Dodji Seketeli <dodji@redhat.com>
18192
18193	Add missing space in abipkgdiff error message
18194	* tools/abipkgdiff.cc (extract_package): Add missing space here.
18195
181962017-07-11  Dodji Seketeli <dodji@redhat.com>
18197
18198	Replace --lkaw with -w and --lkaw-pkg with --wp
18199	* doc/manuals/abipkgdiff.rst: Adjust the documentation.
18200	* tools/abipkgdiff.cc (display_usage): Adjust the usage string.
18201	(parse_command_line): Parse -w instead of --lkaw and --wp
18202	insteadof --lkaw-pkg.
18203
182042017-07-11  Dodji Seketeli <dodji@redhat.com>
18205
18206	speed up class type lookup in a corpus
18207	* src/abg-ir.cc (lookup_class_type): In the overload that looks
18208	for a class name denoted by an interned_string in the corpus, do
18209	not look for the class in the translation units when the type
18210	wasn't found in the type map of the corpus.
18211	(maybe_update_types_lookup_map): Remove the
18212	erase_if_exists_already parameter and the code that uses it.
18213	(lookup_class_type_through_translation_units): Remove this
18214	function that is now useless.
18215
182162017-07-06  Dodji Seketeli <dodji@redhat.com>
18217
18218	Bug 21644 - abipkgdiff does not emit diagnostics about comparison errors
18219	* include/abg-dwarf-reader.h (status_to_diagnostic_string):
18220	Declare new function.
18221	* src/abg-dwarf-reader.cc (status_to_diagnostic_string): Define
18222	new function.
18223	* tools/abipkgdiff.cc (compare): Take a new detailed_error_status
18224	parameter.
18225	(compare_task::perform): Get the details of the error, in case the
18226	status of the comparison is ABIDIFF_ERROR.
18227
182282017-07-05  Dodji Seketeli <dodji@redhat.com>
18229
18230	Bug 21153 - abipkgdiff reports undetermined interface subtype changes
18231	* src/abg-ir.cc (get_name_of_qualified_type): A noop-qualified
18232	type has an empty string as reprsentation for its qualifier.
18233	* src/abg-dwarf-reader.cc (die_qualified_type_name): Adjust to
18234	comply with what is done in get_name_of_qualified_type.  Adjust
18235	comment too.
18236	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
18237	Adjust.
18238	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
18239	New reference test output.
18240	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64.rpm: New
18241	test binary input.
18242	* tests/data/test-diff-pkg/libcdio-0.94-2.fc26.x86_64.rpm: Likewise.
18243	* tests/data/test-diff-pkg/libcdio-debuginfo-0.94-1.fc26.x86_64.rpm: Likewise.
18244	* tests/data/test-diff-pkg/libcdio-debuginfo-0.94-2.fc26.x86_64.rpm Likewise.
18245	* tests/data/Makefile.am: Add the new test inputs to source distribution.
18246	* tests/test-diff-pkg.cc (in_out_specs): Make this test harness run on
18247	the new test inputs above.
18248
182492017-07-03  Dodji Seketeli <dodji@redhat.com>
18250
18251	Fix typo in comments
18252	* src/abg-ir.cc (type_base::get_canonical_type_for): Fix a typo in
18253	a command.
18254
182552017-07-03  Dodji Seketeli <dodji@redhat.com>
18256
18257	Fix a typo when reporting size change wrt a decl-only class
18258	* src/abg-comparison.cc (report_size_and_alignment_changes): Fix
18259	typo.
18260
182612017-07-03  Dodji Seketeli <dodji@redhat.com>
18262
18263	Better handle decl-only classes being different from their definition
18264	* src/abg-comparison.cc (function_decl_diff::report): Don't report
18265	possible vtable changes between a decl-only class and its
18266	definition.
18267	* src/abg-ir.cc (type_base::get_canonical_type_for): Consider that
18268	a decl-only class is different from its definition when comparing
18269	types for the purpose of type canonicalization.
18270	(equals): In the class_or_union overload, only consider the global
18271	decl_only_class_equals_definition() property to know when to
18272	consider that a decl-only class is different from its definition
18273	when comparing two classes.
18274	* src/abg-reader.cc (build_class_decl): Read the size property of
18275	a class, even if it's a decl-only class.
18276	* src/abg-writer.cc (write_class_decl_opening_tag): Write size
18277	property of types even if the types are decl-only classes.
18278	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
18279	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
18280	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
18281	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
18282	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18283	Likewise.
18284	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18285	Likewise.
18286	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18287	Likewise.
18288	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
18289	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
18290	Likewise.
18291	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
18292	Likewise.
18293	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
18294	Likewise.
18295	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
18296	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
18297	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
18298	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
18299	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
18300	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18301	Likewise.
18302	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18303	Likewise.
18304	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18305	Likewise.
18306	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
18307	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
18308	Likewise.
18309	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
18310
183112017-06-28  Dodji Seketeli <dodji@redhat.com>
18312
18313	Don't add empty translation unit to corpus
18314	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
18315	A translation unit DIE that has no child DIE shall not be added to
18316	the current ABI corpus.
18317
183182017-06-27  Dodji Seketeli <dodji@redhat.com>
18319
18320	Bug 21631 - Forgot a "break" statement in stv_to_elf_symbol_visibility
18321	* src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Add a
18322	missing break statement.
18323
183242017-06-26  Dodji Seketeli <dodji@redhat.com>
18325
18326	Bug 21630 - A this pointer DIE can be const
18327	* src/abg-dwarf-reader.cc (die_this_pointer_is_const): If the DIE
18328	is not a DW_TAG_pointer_type then don't crash.
18329
183302017-06-23  Dodji Seketeli <dodji@redhat.com>
18331
18332	Bug 21629 - equivalent DIEs must be of the same DIE source
18333	* src/abg-dwarf-reader.cc (compare_dies): Don't propagate
18334	a canonical DIE to a DIE that comes from a different source.
18335
183362017-06-22  Dodji Seketeli <dodji@redhat.com>
18337
18338	Bug 21627 - Libabigail doesn't consider translation unit compile dir
18339	*if* that translation unit has already been seen in the current
18340	binary, instead of creating a new one altogether.
18341	This patch doesn't carry a regression test as the problem was found
18342	while running the
18343	https://pagure.io/libabigail-selfcheck/blob/master/f/selfcheck.py
18344	script over the Fedora 25 critpath packages.
18345	The patch does however update existing reference outputs of existings
18346	tests where appropriate.
18347	* include/abg-ir.h (translation_unit::{get_compilation_dir_path,
18348	set_compilation_dir_path, get_absolute_path}):
18349	* src/abg-corpus.cc (corpus::add): Use the new
18350	translation_unit::get_absolute_path() as the key for the tu path
18351	-> tu map.
18352	* src/abg-dwarf-reader.cc
18353	(read_context::resolve_declaration_only_classes):  Use the new
18354	translation_unit::get_absolute_path().
18355	(build_translation_unit_and_add_to_ir): Set the compilation
18356	directory of the translation unit.
18357	* src/abg-ir-priv.h (translation_unit::priv::{comp_dir_path_,
18358	abs_path_}):
18359	* src/abg-ir.cc (translation_unit::set_path): Update comment.
18360	(translation_unit::{get_compilation_dir_path,
18361	set_compilation_dir_path, get_absolute_path}): Define new member
18362	functions.
18363	* src/abg-reader.cc (read_translation_unit): Take the new
18364	'comp-dir-path' attribute into account.
18365	* src/abg-writer.cc (write_translation_unit): Emit the new
18366	'comp-dir-path' attribute.
18367	* tests/data/test-annotate/libtest23.so.abi: Adjust.
18368	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
18369	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust.
18370	* tests/data/test-annotate/test0.abi: Adjust.
18371	* tests/data/test-annotate/test1.abi: Adjust.
18372	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
18373	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
18374	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
18375	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
18376	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
18377	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
18378	* tests/data/test-annotate/test2.so.abi: Adjust.
18379	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
18380	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
18381	* tests/data/test-annotate/test3.so.abi: Adjust.
18382	* tests/data/test-annotate/test4.so.abi: Adjust.
18383	* tests/data/test-annotate/test5.o.abi: Adjust.
18384	* tests/data/test-annotate/test6.so.abi: Adjust.
18385	* tests/data/test-annotate/test7.so.abi: Adjust.
18386	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Adjust.
18387	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
18388	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
18389	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
18390	* tests/data/test-read-dwarf/test0.abi: Adjust.
18391	* tests/data/test-read-dwarf/test1.abi: Adjust.
18392	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
18393	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
18394	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
18395	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
18396	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
18397	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
18398	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
18399	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
18400	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
18401	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
18402	* tests/data/test-read-dwarf/test2.so.abi: Adjust.
18403	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
18404	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
18405	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
18406	* tests/data/test-read-dwarf/test3.so.abi: Adjust.
18407	* tests/data/test-read-dwarf/test4.so.abi: Adjust.
18408	* tests/data/test-read-dwarf/test5.o.abi: Adjust.
18409	* tests/data/test-read-dwarf/test6.so.abi: Adjust.
18410	* tests/data/test-read-dwarf/test7.so.abi: Adjust.
18411	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust.
18412	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
18413
184142017-05-04  Dodji Seketeli <dodji@redhat.com>
18415
18416	Misc style fixes
18417	* src/abg-dwarf-reader.cc (read_context::{die_wip_classes_map,
18418	die_wip_function_types_map, types_to_canonicalize,
18419	tu_die_imported_unit_points_map, die_parent_map,
18420	load_kernel_symbol_table}): Add missing space to statement.
18421	(get_parent_die): Likewise.
18422	(build_enum_type): Fix typo in comment.
18423	(e_machine_to_string, get_version_definition_for_versym)
18424	(lookup_public_function_symbol_from_elf)
18425	(lookup_public_variable_symbol_from_elf)
18426	(lookup_data_tag_from_dynamic_segment, die_is_declaration_only)
18427	(die_is_reference_type, die_function_type_is_method_type): Fix
18428	indentation.
18429	(read_context::{resolve_declaration_only_classes,
18430	fixup_functions_with_no_symbols,
18431	load_symbol_maps_from_symtab_section, load_dt_soname_and_needed,
18432	load_elf_architecture, load_elf_properties,
18433	maybe_adjust_address_for_exec_or_dyn, maybe_adjust_fn_sym_address,
18434	address_is_in_opd_section, load_elf_architecture,
18435	build_die_parent_maps}): Likewise.
18436	(op_pushes_constant_value, op_manipulates_stack): Use the
18437	dwarf_expr_eval_context::push method.
18438	(op_is_control_flow, die_return_and_parm_names_from_fn_type_die)
18439	(die_function_signature, die_pretty_print_type)
18440	(get_default_array_lower_bound)
18441	(build_translation_unit_and_add_to_ir, build_enum_type)
18442	(add_or_update_class_type, build_function_type)
18443	(build_function_decl, build_ir_node_from_die)
18444	(lookup_public_function_symbol_from_elf): Fix indentation.
18445	* src/abg-ir.cc (maybe_update_types_lookup_map): Remove useless space.
18446
184472017-05-31  Dodji Seketeli <dodji@redhat.com>
18448
18449	Fix doc glitch in abidiff.rst
18450	* doc/manuals/abidiff.rst: Fix glitch.
18451
184522017-06-12  Dodji Seketeli <dodji@redhat.com>
18453
18454	Symbols with the same zero value are not aliases
18455	* src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section):
18456	Do not consider symbols with zero value as being aliases.
18457	* tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
18458	* tests/data/test-diff-filter/test20-inline-report-1.txt:
18459	Likewise.
18460	* test-diff-filter/test41-PR21486-abg-writer.gcc.o: New test
18461	binary input.
18462	* tests/data/test-diff-filter/test41-PR21486-abg-writer.llvm.o:
18463	Likewise.
18464	* tests/data/Makefile.am: Add the new test material to source
18465	distribution.
18466	* tests/test-diff-filter.cc (in_out_specs): Run the test harness
18467	on the new test input above.
18468	* tests/data/test-diff-dwarf/test5-report.txt: Adjust.
18469	* tests/data/test-diff-filter/test9-report.txt: Adjust.
18470	* tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
18471	* tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust.
18472
184732017-06-12  Dodji Seketeli <dodji@redhat.com>
18474
18475	Support ELF symbol visibility property
18476	* include/abg-ir.h (enum elf_symbol::visibility): Define new enum.
18477	(elf_symbol::{elf_symbol, create}): Take a visibility parameter.
18478	(elf_symbol::{set, get}_visibility): Declare new accessors.
18479	(string_to_elf_symbol_binding): Declare new function.
18480	* src/abg-ir.cc (elf_symbol::priv::visibility_): New data member.
18481	(elf_symbol::priv::priv): Adjust.
18482	(elf_symbol::elf_symbol): Take a visibility parameter.
18483	(elf_symbol::create): Likewise
18484	(elf_symbol::{s,g}et_visibility): Define new accessors.
18485	(elf_symbol::is_public): Adjust.
18486	(operator<<(std::ostream&, elf_symbol::visibility)): Define new
18487	operator.
18488	(string_to_elf_symbol_visibility): Define new function.
18489	* src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Define
18490	new static function.
18491	(lookup_symbol_from_sysv_hash_tab)
18492	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
18493	(create_default_var_sym, create_default_fn_sym): Adjust.
18494	* src/abg-reader.cc (read_elf_symbol_binding): Define new
18495	function.
18496	(build_elf_symbol): Adjust.
18497	* src/abg-writer.cc (write_elf_symbol_visibility): Define new
18498	function.
18499	* tests/data/test-annotate/libtest23.so.abi: Adjust.
18500	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
18501	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust.
18502	* tests/data/test-annotate/test0.abi: Adjust.
18503	* tests/data/test-annotate/test1.abi: Adjust.
18504	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
18505	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
18506	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
18507	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
18508	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18509	Adjust.
18510	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18511	Adjust.
18512	* tests/data/test-annotate/test2.so.abi: Adjust.
18513	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18514	Adjust.
18515	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
18516	* tests/data/test-annotate/test3.so.abi: Adjust.
18517	* tests/data/test-annotate/test4.so.abi: Adjust.
18518	* tests/data/test-annotate/test5.o.abi: Adjust.
18519	* tests/data/test-annotate/test6.so.abi: Adjust.
18520	* tests/data/test-annotate/test7.so.abi: Adjust.
18521	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi:
18522	Adjust.
18523	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
18524	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
18525	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
18526	* tests/data/test-read-dwarf/test0.abi: Adjust.
18527	* tests/data/test-read-dwarf/test1.abi: Adjust.
18528	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
18529	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
18530	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
18531	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
18532	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
18533	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
18534	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
18535	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
18536	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18537	Adjust.
18538	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18539	Adjust.
18540	* tests/data/test-read-dwarf/test2.so.abi: Adjust.
18541	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18542	Adjust.
18543	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
18544	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
18545	Adjust.
18546	* tests/data/test-read-dwarf/test3.so.abi: Adjust.
18547	* tests/data/test-read-dwarf/test4.so.abi: Adjust.
18548	* tests/data/test-read-dwarf/test5.o.abi: Adjust.
18549	* tests/data/test-read-dwarf/test6.so.abi: Adjust.
18550	* tests/data/test-read-dwarf/test7.so.abi: Adjust.
18551	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
18552	Adjust.
18553	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
18554	* tests/data/test-read-write/test26.xml: Adjust.
18555	* tests/data/test-read-write/test27.xml: Adjust.
18556	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
18557	Adjust.
18558	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
18559	Adjust.
18560
185612017-06-09  Dodji Seketeli <dodji@redhat.com>
18562
18563	Filter top cv qualifier changes on function parameter types
18564	* include/abg-comparison.h (enum diff_category): Add a new
18565	FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY enumerator.  "Or" the
18566	enumerator to the EVERYTHING_CATEGORY enumerator.
18567	* src/abg-comp-filter.cc (has_fn_parm_type_cv_qual_change): Define
18568	new static function.
18569	(categorize_harmless_diff_node): Categorize changes to top cv
18570	qualifiers on function parameter types into the new
18571	FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
18572	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
18573	Add the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY category to the
18574	set of harmless categories.
18575	(operator<<(ostream&, diff_category)): Adjust to serialize
18576	the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
18577	* tests/data/test-diff-filter/libtest40-v0.so: New test input binary.
18578	* tests/data/test-diff-filter/libtest40-v1.so: Likewise.
18579	* tests/data/test-diff-filter/test40-report-0.txt: New test
18580	reference output.
18581	* tests/data/test-diff-filter/test40-v0.cc: Source code of the
18582	test binary above.
18583	* tests/data/test-diff-filter/test40-v1.cc: Likewise.
18584	* tests/data/Makefile.am: Add the new test material above to
18585	source distribution.
18586	* tests/test-diff-filter.cc (in_out_specs): Add new binaries to
18587	compare.
18588	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
18589	Adjust.
18590	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
18591	Likewise.
18592	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
18593	Likewise.
18594	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
18595	Likewise.
18596
185972017-05-28  Dodji Seketeli <dodji@redhat.com>
18598
18599	Do not report about voffset when it's not set in debug info
18600	* include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel):
18601	Initialize the virtual offset to -1.
18602	* src/abg-comparison.cc (represent): In the overload to represent
18603	a method_decl, do not represent the vofffset if it's not set.
18604	* src/abg-writer.cc (write_voffset): The virtual offset is signed
18605	because if it's -1, it means no offset is set.
18606	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
18607	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18608	Adjust.
18609	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18610	Adjust.
18611	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18612	Adjust.
18613	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
18614	Adjust.
18615	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
18616	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
18617	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
18618	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
18619	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18620	Adjust.
18621	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18622	Adjust.
18623	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18624	Adjust.
18625	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
18626	Adjust.
18627
186282017-05-17  Dodji Seketeli <dodji@redhat.com>
18629
18630	Allow selective resolution of class declaration
18631	* include/abg-fwd.h (type_base_wptrs_type)
18632	(istring_type_base_wptrs_map_type): Define new typedefs.
18633	(lookup_class_types): Declare new functions.
18634	* include/abg-ir.h
18635	(environment::decl_only_class_equals_definition): Declare new
18636	accessor.
18637	(type_maps::{*_types}): Make these accessors return
18638	istring_type_base_wptrs_map_type& instead of
18639	istring_type_base_wptr_map_type&.
18640	* src/abg-dwarf-reader.cc
18641	(read_context::resolve_declaration_only_classes): Implement the
18642	new selective declaration resolution scheme.
18643	* src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of
18644	these data members from istring_type_base_wptr_map_type to
18645	istring_type_base_wptrs_map_type.
18646	(type_maps::{*_types}): Make these accessors definitions return
18647	istring_type_base_wptrs_map_type& instead of
18648	istring_type_base_wptr_map_type&.
18649	(translation_unit::bind_function_type_life_time): Adjust.
18650	(environment::priv::decl_only_class_equals_definition_): New data
18651	member.
18652	(environment::priv::priv): Initialize it.  By default, a decl-only
18653	class is now considered different from its definition.
18654	(environment::decl_only_class_equals_definition): Define new
18655	accessor.
18656	(lookup_types_in_map, lookup_class_types): Define new functions.
18657	(lookup_type_in_map, lookup_union_type_per_location)
18658	(lookup_basic_type, lookup_basic_type_per_location)
18659	(lookup_class_type, lookup_class_type_per_location)
18660	(lookup_union_type, lookup_enum_type)
18661	(lookup_enum_type_per_location, lookup_typedef_type)
18662	(lookup_typedef_type_per_location, lookup_qualified_type)
18663	(lookup_pointer_type, lookup_reference_type, lookup_array_type)
18664	(lookup_function_type, maybe_update_types_lookup_map)
18665	(maybe_update_types_lookup_map<class_decl>)
18666	(maybe_update_types_lookup_map<function_type>): Adjust.
18667	(type_base::get_canonical_type_for): When doing type comparison
18668	here, we can now consider that an unresolved class declaration
18669	compares different to an incompatible class definition of the same
18670	name.  So no need to look through decl-only classes in that case.
18671	(equals): In the overload for class_or_union, if
18672	environment::decl_only_class_equals_definition() is false, then an
18673	unresolved class declaration of name "N" compares different to a
18674	class definition named "N".
18675	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
18676	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust
18677	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
18678	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
18679	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
18680	Adjust.
18681	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
18682	Adjust.
18683	* tests/data/test-diff-filter/test38/Makefile: New test material.
18684	* tests/data/test-diff-filter/test38/test38-a.c: Likewise.
18685	* tests/data/test-diff-filter/test38/test38-b.c: Likewise.
18686	* tests/data/test-diff-filter/test38/test38-c.c: Likewise.
18687	* tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise.
18688	* tests/data/test-diff-filter/test38/test38-v0: Likewise.
18689	* tests/data/test-diff-filter/test38/test38-v1: Likewise.
18690	* tests/data/test-diff-filter/test38/test38.h: Likewise.
18691	* tests/data/test-diff-filter/test39/Makefile: Likewise.
18692	* tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise.
18693	* tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise.
18694	* tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise.
18695	* tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise.
18696	* tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise.
18697	* tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise.
18698	* tests/data/test-diff-filter/test39/test39-main.c: Likewise.
18699	* tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
18700	* tests/data/test-diff-filter/test39/test39-v0: Likewise.
18701	* tests/data/test-diff-filter/test39/test39-v1: Likewise.
18702	* tests/data/test-diff-filter/test39/test39.h: Likewise.
18703	* tests/data/Makefile.am: Add the new test material above to the
18704	source distribution.
18705	* tests/test-diff-filter.cc (in_out_specs): Add the new test
18706	inputs above to the test harness.
18707
187082017-05-31  Dodji Seketeli <dodji@redhat.com>
18709
18710	Add documentation for the kmidiff tool
18711	* doc/manuals/kmidiff.rst: New doc file.
18712	* doc/manuals/Makefile.am: Add the above file to source
18713	distribution.
18714
187152017-05-31  Dodji Seketeli <dodji@redhat.com>
18716
18717	Allow re-using the ELF/DWARF read_context when loading a corpus group
18718	* include/abg-dwarf-reader.h (reset_read_context): Declare new
18719	function.
18720	* src/abg-dwarf-reader.cc (read_context::elf_paths_): Make this to
18721	be non const.
18722	(read_context::initialize): New function to initialize all data
18723	members.
18724	(read_context::read_context): Use the new read_context::initialize
18725	function, rather than initializing data members 'inline' here.
18726	(reset_read_context): Define a new function to reset a
18727	read_context so that it can be re-used to load a new corpus.
18728
187292017-05-31  Dodji Seketeli <dodji@redhat.com>
18730
18731	Add --vmlinux{1,2} option to abidw and kmidiff
18732	* include/abg-tools-utils.h
18733	(build_corpus_group_from_kernel_dist_under): Add a new
18734	vmlinux_path parameter.
18735	* src/abg-tools-utils.cc (find_vmlinux_and_module_paths): Do not
18736	try to find a vmlinux binary if we already have the path to one.
18737	(build_corpus_group_from_kernel_dist_under): Add a new
18738	vmlinux_path parameter.
18739	* tools/abidw.cc (options::vmlinux): New data member.
18740	(display_usage): Add a usage string for --vmlinux
18741	(parse_command_line): Parse the new --vmlinux option.
18742	(load_kernel_corpus_group_and_write_abixml): Fix some return code
18743	when the function fails.  Verify the presence of the vmlinux
18744	binary that was given.  Adjust.
18745	* tools/kmidiff.cc (options::{vmlinux1, vmlinux2}): New data
18746	members.
18747	(display_usage): Add a usage string for --vmlinux1 and --vmlinux2.
18748	(parse_command_line):  Parse the --vmlinux1 and --vmlinux2
18749	options.
18750	(main): Adjust.
18751
187522017-05-18  Dodji Seketeli <dodji@redhat.com>
18753
18754	Cache function type name computation results
18755	* src/abg-ir.cc (get_type_name): Cache function type names.
18756
187572017-05-29  Dodji Seketeli <dodji@redhat.com>
18758
18759	Fix innacurate test condition when reading an enum type from abixml
18760	* src/abg-reader.cc (build_enum_type_decl): Do not check for
18761	errno which might have been set earlier by something else.
18762	Rather, check the returned value for overflow or underflow.
18763
187642017-05-28  Dodji Seketeli <dodji@redhat.com>
18765
18766	Do not report about voffset when it's not set in debug info
18767	* include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel):
18768	Initialize the virtual offset to -1.
18769	* src/abg-comparison.cc (represent): In the overload to represent
18770	a method_decl, do not represent the vofffset if it's not set.
18771	* src/abg-writer.cc (write_voffset): The virtual offset is signed
18772	because if it's -1, it means no offset is set.
18773	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
18774	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18775	Adjust.
18776	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18777	Adjust.
18778	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18779	Adjust.
18780	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
18781	Adjust.
18782	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
18783	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
18784	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
18785	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
18786	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
18787	Adjust.
18788	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
18789	Adjust.
18790	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
18791	Adjust.
18792	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
18793	Adjust.
18794
187952017-05-18  Dodji Seketeli <dodji@redhat.com>
18796
18797	Speedup DIE representation computing esp function signature in C
18798	* src/abg-dwarf-reader.cc (die_function_signature): For C DIEs,
18799	just return the (linkage) name of the function.
18800	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
18801	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
18802	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
18803	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
18804
188052017-05-17  Dodji Seketeli <dodji@redhat.com>
18806
18807	Allow selective resolution of class declaration
18808	* include/abg-fwd.h (type_base_wptrs_type)
18809	(istring_type_base_wptrs_map_type): Define new typedefs.
18810	(lookup_class_types): Declare new functions.
18811	* include/abg-ir.h
18812	(environment::decl_only_class_equals_definition): Declare new
18813	accessor.
18814	(type_maps::{*_types}): Make these accessors return
18815	istring_type_base_wptrs_map_type& instead of
18816	istring_type_base_wptr_map_type&.
18817	* src/abg-dwarf-reader.cc
18818	(read_context::resolve_declaration_only_classes): Implement the
18819	new selective declaration resolution scheme.
18820	* src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of
18821	these data members from istring_type_base_wptr_map_type to
18822	istring_type_base_wptrs_map_type.
18823	(type_maps::{*_types}): Make these accessors definitions return
18824	istring_type_base_wptrs_map_type& instead of
18825	istring_type_base_wptr_map_type&.
18826	(translation_unit::bind_function_type_life_time): Adjust.
18827	(environment::priv::decl_only_class_equals_definition_): New data
18828	member.
18829	(environment::priv::priv): Initialize it.  By default, a decl-only
18830	class is now considered different from its definition.
18831	(environment::decl_only_class_equals_definition): Define new
18832	accessor.
18833	(lookup_types_in_map, lookup_class_types): Define new functions.
18834	(lookup_type_in_map, lookup_union_type_per_location)
18835	(lookup_basic_type, lookup_basic_type_per_location)
18836	(lookup_class_type, lookup_class_type_per_location)
18837	(lookup_union_type, lookup_enum_type)
18838	(lookup_enum_type_per_location, lookup_typedef_type)
18839	(lookup_typedef_type_per_location, lookup_qualified_type)
18840	(lookup_pointer_type, lookup_reference_type, lookup_array_type)
18841	(lookup_function_type, maybe_update_types_lookup_map)
18842	(maybe_update_types_lookup_map<class_decl>)
18843	(maybe_update_types_lookup_map<function_type>): Adjust.
18844	(type_base::get_canonical_type_for): When doing type comparison
18845	here, we can now consider that an unresolved class declaration
18846	compares different to an incompatible class definition of the same
18847	name.  So no need to look through decl-only classes in that case.
18848	(equals): In the overload for class_or_union, if
18849	environment::decl_only_class_equals_definition() is false, then an
18850	unresolved class declaration of name "N" compares different to a
18851	class definition named "N".
18852	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
18853	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust
18854	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
18855	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
18856	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
18857	Adjust.
18858	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
18859	Adjust.
18860	* tests/data/test-diff-filter/test38/Makefile: New test material.
18861	* tests/data/test-diff-filter/test38/test38-a.c: Likewise.
18862	* tests/data/test-diff-filter/test38/test38-b.c: Likewise.
18863	* tests/data/test-diff-filter/test38/test38-c.c: Likewise.
18864	* tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise.
18865	* tests/data/test-diff-filter/test38/test38-v0: Likewise.
18866	* tests/data/test-diff-filter/test38/test38-v1: Likewise.
18867	* tests/data/test-diff-filter/test38/test38.h: Likewise.
18868	* tests/data/test-diff-filter/test39/Makefile: Likewise.
18869	* tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise.
18870	* tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise.
18871	* tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise.
18872	* tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise.
18873	* tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise.
18874	* tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise.
18875	* tests/data/test-diff-filter/test39/test39-main.c: Likewise.
18876	* tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
18877	* tests/data/test-diff-filter/test39/test39-v0: Likewise.
18878	* tests/data/test-diff-filter/test39/test39-v1: Likewise.
18879	* tests/data/test-diff-filter/test39/test39.h: Likewise.
18880	* tests/data/Makefile.am: Add the new test material above to the
18881	source distribution.
18882	* tests/test-diff-filter.cc (in_out_specs): Add the new test
18883	inputs above to the test harness.
18884
188852017-05-04  Dodji Seketeli <dodji@redhat.com>
18886
18887	Avoid de-duplicating different C types that have identical name
18888	* src/abg-dwarf-reader.cc (die_decl_map_type, die_type_map_type):
18889	Remove these typedefs.
18890	(die_artefact_map_type, istring_dwarf_offsets_map_type): New
18891	typedefs.
18892	(die_is_at_class_scope, die_qualified_type_name)
18893	(die_qualified_decl_name, die_qualified_type_name_empty)
18894	(die_return_and_parm_names_from_fn_type_die)
18895	(die_function_type_is_method_type):
18896	Const-ify the read_context& parameter.
18897	(read_context::die_source_dependant_container_set::get_container):
18898	Likewise.
18899	(read_context::{name_artefacts_map_, per_tu_name_artefacts_map_,
18900	die_decl_map_, alternate_die_decl_map_, type_unit_die_decl_map_,
18901	die_type_map_, alternate_die_type_map_, type_unit_die_type_map_}):
18902	Remove data members.
18903	(read_context::{die_decl_map, alternate_die_decl_map,
18904	associate_die_to_decl_primary, associate_die_to_decl_alternate,
18905	associate_die_to_decl_from_type_unit,
18906	lookup_decl_from_die_offset_primary,
18907	lookup_decl_from_die_offset_alternate,
18908	lookup_decl_from_type_unit_die_offset,
18909	lookup_type_artifact_from_die_per_tu,
18910	lookup_artifact_from_per_tu_die_representation,
18911	associate_die_to_artifact_by_repr,
18912	associate_die_to_artifact_by_repr_internal, clear_die_type_maps}):
18913	Remove member functions.
18914	(read_context::{decl_die_repr_die_offsets_maps_,
18915	type_die_repr_die_offsets_maps_, decl_die_artefact_maps_,
18916	type_die_artefact_maps_, dwarf_expr_eval_context_}): Add new data
18917	members.
18918	(read_context::clear_per_translation_unit_data): Don't clear
18919	read_context::per_tu_name_artefacts_map_ data member as it's
18920	removed.
18921	(read_context::clear_per_corpus_data): Don't clear
18922	read_context::name_artefacts_map_ and all the other relevant data
18923	members that got removed.
18924	(read_context::{dwarf_per_die_source,
18925	decl_die_repr_die_offsets_maps, type_die_repr_die_offsets_maps,
18926	get_canonical_die, get_die_from_offset, decl_die_artefact_maps,
18927	type_die_artefact_maps, dwarf_expr_eval_ctxt}): Add new member
18928	functions.
18929	(compare_dies, compare_as_decl_dies)
18930	(compare_as_type_dies, maybe_finish_function_decl_reading)
18931	(die_is_anonymous): Define new functions.
18932	(read_context::associate_die_to_decl): Remove the
18933	do_associate_by_repr_per_tu parameter.  Use the new
18934	read_context::{decl_die_artefact_maps_, get_canonical_die} member
18935	functions.
18936	(read_context::lookup_decl_from_die_offset): Use Dwarf_Off rather
18937	than size_t for the type of the die_offset parameter.  Use the
18938	lookup_artifact_from_die_offset member function.
18939	(read_context::lookup_type_artifact_from_die): Const-ify.  In one
18940	overload, take a new 'die_as_type' parameter.  Use the new
18941	get_canonical_die, type_die_artefact_maps and
18942	decl_die_artefact_maps member functions.  In the second overload,
18943	use the first overload.
18944	(read_context::odr_is_relevant): Add an overload that takes a DIE.
18945	(read_context::associate_die_to_type): Remove the
18946	do_associate_by_repr and do_associate_per_tu parameters.  Use the
18947	new get_canonical_die and type_die_artefact_maps member functions.
18948	(read_context::lookup_type_from_die): Use the new
18949	lookup_artifact_from_die member function.
18950	(read_context::lookup_type_from_die_offset): Use the new
18951	type_die_artefact_maps member function.  When the found artifact
18952	is a function_decl, return its type.
18953	(read_context::schedule_type_for_late_canonicalization):  Use the
18954	new get_canonical_die and type_die_artefact_maps member functions.
18955	(die_function_signature): Const-ify.  Get the scope name right
18956	even for scopes that are not types.
18957	(die_member_offset): Make eval_last_constant_dwarf_sub_expr use
18958	the new cached DWARF expression evalution context.
18959	(get_parent_die): Support where_offset equals to zero.  This means
18960	we are looking at a C binary, basically.
18961	(build_enum_type) : Use the new overload of
18962	read_context::odr_is_relevant that takes a DIE.  Adjust.
18963	(add_or_update_union_type, add_or_update_class_type): Don't lookup
18964	classes/unions per location anymore.  Now that we can compare DIEs
18965	in a fined grain manner, the approximation of the location is not
18966	useful anymore.
18967	(build_pointer_type)
18968	(build_function_type): Associate DIE to type if we reuse an
18969	existing type.
18970	(build_or_get_fn_decl_if_not_suppressed):  When re-using a
18971	function decl internal representation from an equivalent DIE that
18972	we've seen before, it can happen that we want to augment that
18973	function decl internal representation with new properties coming
18974	from the DIE we are currently looking at; do that here.
18975	(is_function_for_die_a_member_of_class): Remove the "where_offset"
18976	parameter.
18977	(add_or_update_member_function): Adjust.
18978	* tests/data/test-annotate/libtest23.so.abi: Adjust.
18979	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
18980	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
18981	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
18982	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
18983	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
18984	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
18985	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
18986	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
18987	* 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.
18988	* 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.
18989	* 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.
18990	* 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.
18991	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
18992	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
18993	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
18994	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
18995	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
18996	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
18997	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
18998	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
18999	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
19000	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
19001	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
19002	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
19003	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
19004	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
19005	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
19006
190072017-04-14  Dodji Seketeli <dodji@redhat.com>
19008
19009	Speedup access to unreferenced symbols when loading corpus_group
19010	* src/abg-corpus.cc (corpus_group::unrefed_{fun, var}_symbol_map):
19011	New data members.
19012	(corpus_group::priv::priv): Adjust.
19013	(corpus_group::priv::add_unref_{fun,var}_symbols): Define new
19014	member functions.
19015	(corpus_group::add_corpus): Update the map of unreferenced
19016	symbols.
19017	(corpus_group::get_unreferenced_{function,variable}_symbols)
19018	Adjust logic.
19019
190202017-04-07  Dodji Seketeli <dodji@redhat.com>
19021
19022	Initial support of de-serializing the KMI of a Linux Kernel Tree
19023	* include/abg-libxml-utils.h (advance_to_next_sibling_element):
19024	Declare new function.
19025	* src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay)
19026	(advance_to_next_sibling_element): Define new functions.
19027	* include/abg-reader.h (read_corpus_group_from_input)
19028	(read_corpus_group_from_native_xml)
19029	(read_corpus_group_from_native_xml_file): Declare new functions.
19030	* src/abg-reader.cc (read_context::m_corpus_group): New data
19031	member.
19032	(read_context::{get_corpus_group, set_corpus_group}): Define new
19033	member functions.
19034	(read_translation_unit_from_input): Cleanup logic.
19035	(read_corpus_from_input): Don't assume that the document is
19036	starting with an 'abi-corpus' element.  Support the mode where a
19037	caller called the xmlTextReaderExpand function (and so we are
19038	given an expanded xmlNodePtr) and the mode where we need to use
19039	the xmlTextReader API to walk through the 'abi-corpus' element.
19040	Also, if we are building a corpus group, do not clear what used to
19041	be 'per-corpus' data.  That data must be shared by all the corpora
19042	of a given abi-corpus-group.
19043	(read_corpus_group_from_input, read_corpus_group_from_native_xml)
19044	(read_corpus_group_from_native_xml_file): Define new functions.
19045	* include/abg-tools-utils.h (FILE_TYPE_XML_CORPUS_GROUP): New
19046	enumerator of the file_type enum.
19047	* src/abg-tools-utils.cc (operator<<): In the overload for
19048	file_type, add a case for the new FILE_TYPE_XML_CORPUS_GROUP.
19049	(guess_file_type): Dectect abi-corpus-group xml element.
19050	* tools/abidiff.cc (adjust_diff_context_for_kmidiff): Define new
19051	static function.
19052	(main): Adjust to handle the new FILE_TYPE_XML_CORPUS_GROUP.  That
19053	is, compare two FILE_TYPE_XML_CORPUS_GROUP if they are present.
19054	* tools/abilint.cc (main): Likewise.
19055	* tools/kmidiff.cc (main): Detect that one of two .kmi files are
19056	passed.  In that case, load the .kmi file(s), build a corpus_group
19057	of it and use it in the comparison.
19058
190592017-04-06  Dodji Seketeli <dodji@redhat.com>
19060
19061	Initial support of the serialization of the KMI of a Linux Kernel Tree
19062	* include/abg-tools-utils.h (check_dir)
19063	(get_binary_paths_from_kernel_dist)
19064	(build_corpus_group_from_kernel_dist_under): Declare new
19065	functions.  The last two functions are being moved from
19066	tools/kmidiff.cc so that they can be re-used.
19067	* include/abg-writer.h (write_corpus): Declare one overload that
19068	takes a write_context parameter.
19069	(write_corpus_group): Declare three overloads of this new function.
19070	* src/abg-tools-utils.cc (check_dir): Define new function.
19071	(load_generate_apply_suppressions, is_vmlinux, is_kernel_module)
19072	(find_vmlinux_and_module_paths)
19073	(get_binary_paths_from_kernel_dist)
19074	(build_corpus_group_from_kernel_dist_under): Define new functions.
19075	* src/abg-writer.cc (write_context::set_annotate): Define new
19076	member function.
19077	(write_corpus): Add an overload that takes a write_context.  Adapt
19078	the existing overload to make it use this new one.
19079	(write_corpus_group): Define this new function and two additional
19080	overloads for it.
19081	* tools/kmidiff.cc (set_suppressions, is_vmlinux)
19082	(is_kernel_module, find_vmlinux_and_module_paths)
19083	(get_binary_paths_from_kernel_dist)
19084	(build_corpus_group_from_kernel_dist_under): Remove.
19085	(main): Adjust the call to
19086	build_corpus_group_from_kernel_dist_under as its arguments are now
19087	adapted since it's been factorized out into abg-tools-utils.h.
19088	* tools/abidw.cc (options::corpus_group_for_linux): Define new
19089	data member.
19090	(options::options): Adjust.
19091	(display_usage): Add help strings for the new --linux-tree option.
19092	(load_corpus_and_write_abixml): Factorize this function out of the
19093	main function.
19094	(load_kernel_corpus_group_and_write_abixml): Define new function.
19095	(main): Use the factorized load_corpus_and_write_abixml and the
19096	new load_corpus_and_write_abixml functions.
19097	* tests/test-read-write.cc: Adjust.
19098	* doc/manuals/abidw.rst: Add documentation for the new
19099	--linux-tree option.
19100
191012017-04-06  Dodji Seketeli <dodji@redhat.com>
19102
19103	Adjust test reference outputs after changes in abg-writer.cc
19104	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
19105	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
19106	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
19107	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
19108	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
19109	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
19110	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
19111	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
19112	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
19113	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
19114	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
19115	Adjust.
19116
191172017-04-06  Dodji Seketeli <dodji@redhat.com>
19118
19119	Fix indentation glitch before the </abi-corpus> tag in abixml
19120	* src/abg-writer.cc (write_corpus): Indent before emitting the
19121	closing </abi-corpus> tag.
19122
191232017-04-06  Dodji Seketeli <dodji@redhat.com>
19124
19125	Avoid emitting some empty translation units to abixml
19126	* src/abg-writer.cc (write_corpus):  Do not emit a translation
19127	unit that appears empty beforehand.
19128
191292017-04-06  Dodji Seketeli <dodji@redhat.com>
19130
19131	Avoid emitting duplicated decls in abixml
19132	* src/abg-writer.cc (write_context::m_emitted_decls_map): New data
19133	member.
19134	(write_context::{decl_name_is_emitted, record_decl_as_emitted}):
19135	Define new memeber functions.
19136	(write_translation_unit): Do not emit a decl that has already been
19137	emitted.
19138	(write_var_decl, write_function): Record the decl as emitted.
19139
191402017-04-04  Dodji Seketeli <dodji@redhat.com>
19141
19142	Rename write_corpus_to_native_xml into write_corpus
19143	* include/abg-writer.h (write_corpus): Rename
19144	write_corpus_to_native_xml to this.
19145	* src/abg-writer.cc (write_corpus): Rename
19146	write_corpus_to_native_xml to this.
19147	* tests/test-read-dwarf.cc (test_task::perform): Adjust.
19148	* tests/test-read-write.cc: Remove a useless "using
19149	abigail::xml_writer::write_corpus_to_native_xml".
19150	* tools/abidw.cc (main): Adjust.
19151	* tools/abilint.cc (main): Adjust.
19152
191532017-04-04  Dodji Seketeli <dodji@redhat.com>
19154
19155	Update the reference output of regression tests after kabidiff work
19156	* tests/data/test-annotate/test0.abi: Adjust.
19157	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
19158	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
19159	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
19160	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
19161	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
19162	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
19163	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
19164	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
19165	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
19166	* 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.
19167	* 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.
19168	* 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.
19169	* 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.
19170	* 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.
19171	* tests/data/test-read-dwarf/test0.abi: Adjust.
19172	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
19173	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
19174	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
19175	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
19176	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
19177	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
19178	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
19179	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
19180	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
19181	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
19182	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
19183	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
19184	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
19185	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
19186
191872017-06-12  Dodji Seketeli <dodji@redhat.com>
19188
19189	Introduce the --kmi-whitelist option to abidiff
19190	* doc/manuals/abidiff.rst: Add documentation for the
19191	--kmi-whitelist option.
19192	* tools/abidiff.cc (display_usage): Emit help string for the
19193	--kmi-whitelist option
19194	(parse_command_line): Parse the new --kmi-whitelist option, of the
19195	-w shortcut.
19196
191972017-04-04  Dodji Seketeli <dodji@redhat.com>
19198
19199	Make abidw support the --kmi-whitelist option
19200	* tools/abidw.cc (options::{kabi_whitelist_paths,
19201	kabi_whitelist_supprs}): New data members.
19202	(display_usage): Add a help string for the new --kmi-whitelist
19203	option.
19204	(parse_command_line): Parse the new --kmi-whitelist option.
19205	(maybe_check_suppression_files): Check the presence of the linux
19206	kernel abi white list passed by the option --kmi-whitelist.
19207	(main): Ignore loading the symbol table if the kernel abi white
19208	list is provided.
19209	* doc/manuals/abidw.rst: Add documentation for the new option.
19210
192112017-04-03  Dodji Seketeli <dodji@redhat.com>
19212
19213	Make abipkgdiff compare two kernel packages
19214	* include/abg-suppression.h
19215	(variable_suppression::variable_suppression): Add default arguments
19216	to the parameters.
19217	* include/abg-tools-utils.h (dir_exists, dir_is_empty)
19218	(string_begins_with, get_rpm_name, get_rpm_arch, get_deb_name)
19219	(file_is_kernel_package, file_is_kernel_debuginfo_package):
19220	Declare new functions.
19221	* src/abg-tools-utils.cc (dir_exists, dir_is_empty)
19222	(string_begins_with, get_deb_name, get_rpm_name, get_rpm_arch)
19223	(file_is_kernel_package, file_is_kernel_debuginfo_package): Define
19224	new functions.
19225	(gen_suppr_spec_from_kernel_abi_whitelist): The kernel ABI
19226	whitelist is made of ELF symbols names that ought to match
19227	functions *and* variables that have ELF symbols with those names.
19228	So generate variable suppression specifications as well.  Not just
19229	function suppression specifications.
19230	* tools/abipkgdiff.cc (options::{kabi_whitelist_package,
19231	show_symbols_not_referenced_by_debug_info, kabi_whitelist_paths,
19232	kabi_suppressions}): New data members.
19233	(options::options): Adjust.
19234	(package::KIND_KABI_WHITELISTS): New enumerator in the
19235	package::kind enum.
19236	(package::kabi_whitelist_package_): New data member.
19237	(package::{base_name, kabi_whitelist_package, }): New member
19238	functions.
19239	(display_usage): Add a help string to the new
19240	--linux-kernel-abi-whitelist and --no-unreferenced-symbols
19241	options.
19242	(parse_command_line): Parse the new --no-unreferenced-symbols,
19243	--linux-kernel-abi-whitelist and --lkaw-pkg options.
19244	(maybe_check_suppression_files): Check the presence of kabi
19245	whitelist files.
19246	(set_diff_context_from_opts): Consider (not) showing symbols not
19247	referenced by debug info.
19248	(compare): If we are looking at linux kernel packages, take the
19249	kernel abi whitelist into account, apply the suppressions
19250	resulting from the kabi whitelists to the ELF read context.
19251	(maybe_collect_kabi_whitelists)
19252	(get_kabi_whitelists_from_arch_under_dir)
19253	(maybe_handle_kabi_whitelist_pkg, maybe_collect_kabi_whitelists)
19254	(get_interesting_files_under_dir): Define new functions.
19255	(maybe_update_vector_of_package_content): Take a new
19256	file_name_to_look_for parameter.
19257	(create_maps_of_package_content)
19258	(extract_package_and_map_its_content): Consider the case of the
19259	package being a linux kernel package.
19260	(main): Take the potential --lkaw-pkg into account.
19261	* doc/manuals/abipkgdiff.rst: Add documentation for options
19262	--linux-kernel-abi-whitelist, --lkaw-pkg and
19263	--no-unreferenced-symbols.
19264
192652017-04-03  Dodji Seketeli <dodji@redhat.com>
19266
19267	Avoid loading a translation unit twice from abixml
19268	* src/abg-reader.cc (read_translation_unit): Take (in parameter) a
19269	reference as the resulting translation unit.
19270	(get_or_read_and_add_translation_unit): Define new static
19271	function.
19272	(read_context::get_scope_for_node)
19273	(read_translation_unit_from_input): Use the new
19274	get_or_read_and_add_translation_unit.
19275
192762017-04-03  Dodji Seketeli <dodji@redhat.com>
19277
19278	Support loading and comparing two kernel trees
19279	* include/abg-dwarf-reader.h (set_read_context_corpus_group)
19280	(read_and_add_corpus_to_group_from_elf, set_ignore_symbol_table)
19281	(get_ignore_symbol_table): Declare new functions.
19282	* abg-dwarf-reader.cc (read_context::options_type): Define new
19283	type.
19284	(die_dependant_container_set::clear): Define new member function.
19285	(read_context::{bss, tesxt, rodata, data, data1}_section_): Add
19286	new data members.
19287	(read_context::{symbol_versionning_sections_loaded_,
19288	symbol_versionning_sections_found_}): Likewise.
19289	(read_context::corpus_group_): Likewise.
19290	(read_context::{load_in_linux_kernel_mode, load_all_types,
19291	show_stats, do_log_}): Replace these options by ..
19292	(read_context::options_): ... this instance of the new
19293	read_context:options_type.
19294	(read_context::read_context): Adjust.
19295	(read_context::{clear_alt_debug_info_data, clear_per_corpus_data,
19296	env, get_data_section_for_variable_address, load_all_types,
19297	load_in_linux_kernel_mode, show_stats, do_log}): Adjust.
19298	(create_read_context): Adjust.
19299	(read_context::~read_context): Define destructor.
19300	(read_context::{options, bss_section, text_section,
19301	rodata_section, data_section, data1_section, current_corpus_group,
19302	has_corpus_group, main_corpus_from_current_group,
19303	main_corpus_from_current_group,
19304	current_corpus_is_main_corpus_from_current_group,
19305	should_reuse_type_from_corpus_group}): Define new member
19306	functions.
19307	(read_context::get_die_qualified_type_name): Handle the name of
19308	the current translation unit.
19309	(read_context::load_symbol_maps): Really don't load (linux kernel
19310	specific) symbol maps if we were told to ignore the ELF symbol
19311	table.
19312	(set_ignore_symbol_table, get_ignore_symbol_table)
19313	(create_default_var_sym, create_default_fn_sym, add_symbol_to_map)
19314	(set_read_context_corpus_group)
19315	(read_and_add_corpus_to_group_from_elf): Define new functions.
19316	(build_type_decl, build_typedef_type, build_enum_type)
19317	(add_or_update_class_type)
19318	(add_or_update_union_type): Reuse the type being built, from the
19319	main corpus of the corpus group.
19320	(build_qualified_type): Cleanup logic.
19321	(build_var_decl, build_function_decl): Create a default symbol for
19322	the variable or function if we are supposed to ignore the symbol
19323	table of the current binary.  Add that symbol to the symbol table
19324	that is created in the read context.
19325	(read_debug_info_into_corpus): Don't load the ELF symbol table
19326	information if we are asked to ignore the symbol table.  But set
19327	the symbol table that we built artificially while loading
19328	functions and variables, into the ABI corpus being built.
19329	(read_context::maybe_adjust_var_sym_address): Adjust.
19330	(build_ir_node_from_die): Add ir node to its logical scope.  For
19331	the C language, the scope of a type is the global scope.
19332	(read_corpus_from_elf): Don't load ELF properties if we were asked
19333	to avoid the ELF symbol table.
19334	* include/abg-comparison.h (compute_diff): Declare ...
19335	* src/abg-comparison.cc (compute_diff): ... an overload to compare
19336	corpus_group.
19337	* tools/kmidiff.cc: New tool.
19338
193392017-03-31  Dodji Seketeli <dodji@redhat.com>
19340
19341	Initial support to lookup types per location
19342	* include/abg-fwd.h (get_name_of_qualified_type)
19343	(get_name_of_reference_to_type, lookup_basic_type_per_location)
19344	(lookup_class_type_per_location, lookup_union_type_per_location)
19345	(lookup_enum_type_per_location, lookup_typedef_type)
19346	(lookup_typedef_type_per_location, lookup_pointer_type)
19347	(lookup_reference_type, lookup_type_per_location)
19348	(lookup_type_through_translation_units)
19349	(lookup_type_from_translation_unit, odr_is_relevant): Declare new
19350	functions or new function overloads.
19351	* include/abg-ir.h (location::expand): Declare new member
19352	function.
19353	(type_maps::empty): Likewise.
19354	(operator|=): Declare an overload for qualified_type_def::CV.
19355	(get_string_representation_of_cv_quals)
19356	(get_name_of_qualified_type, lookup_qualified_type): Declare new functions.
19357	* src/abg-ir.cc (location::expand): Define new member function.
19358	(type_maps::empty): Likewise.
19359	(odr_is_relevant): Likewise.
19360	(get_string_representation_of_cv_quals)
19361	(get_name_of_reference_to_type, get_name_of_qualified_type)
19362	(lookup_union_type_per_location): Define new functions or overloads.
19363	(lookup_basic_type, lookup_enum_type, lookup_typedef_type)
19364	(lookup_qualified_type, lookup_pointer_type)
19365	(lookup_reference_type, lookup_type_from_translation_unit)
19366	(lookup_basic_type_per_location, lookup_basic_type_per_location)
19367	(lookup_class_type_per_location, lookup_class_type_per_location)
19368	(lookup_enum_type_per_location, lookup_enum_type_per_location)
19369	(lookup_typedef_type_per_location)
19370	(lookup_typedef_type_per_location, lookup_type_per_location):
19371	Define new overloads.
19372	(maybe_update_types_lookup_map)
19373	(maybe_update_types_lookup_map<class_decl>)
19374	(maybe_update_types_lookup_map<function_type>): Add a new
19375	use_type_name_as_key parameter.  If it's false, then associates
19376	the type to its location rather than to its name.
19377	(maybe_update_types_lookup_map): In the overloads for type_decl,
19378	class_decl, union_decl, enum_type, typedef_decl, array_type_def,
19379	record the type in the lookup map per location, in addition to the
19380	per-name recording.
19381	(qualified_type_def::build_name): Use the new
19382	get_name_of_qualified_type.
19383	(qualified_type_def::get_cv_quals_string_prefix): Use the new
19384	get_string_representation_of_cv_quals.
19385	(operator|=): Define a new overload for qualified_type_def::CV.
19386	(pointer_type_def::get_qualified_name): Use the new
19387	get_name_of_pointer_to_type.
19388	(reference_type_def::get_qualified_name): Use the new
19389	get_name_of_reference_to_type.
19390
193912017-03-30  Dodji Seketeli <dodji@redhat.com>
19392
19393	Create a Corpus Group API extension
19394	* include/abg-corpus.h (corpus::{find_translation_unit,
19395	get_type_per_loc_map}): Declare new member functions.
19396	(corpus::{get_architecture_name, is_empty}): Make these member functions
19397	const.
19398	(corpus::{get_sorted_fun_symbols, get_functions, get_variables,
19399	get_unreferenced_function_symbols,
19400	get_unreferenced_variable_symbols}): Make these member functions
19401	virtual.
19402	(class corpus_group): Declare a new type.
19403	* include/abg-fwd.h (corpus_sptr, corpus_group_sptr)
19404	(string_tu_map_type, istring_var_decl_ptr_map_type)
19405	(istring_function_decl_ptr_map_type): Define new typedefs.
19406	* src/abg-corpus-priv.h (corpus_priv::{path_tu_map,
19407	type_per_loc_map_}): Add new data members.
19408	* src/abg-corpus.cc (corpus_add): Complete the function comment.
19409	Assert that at most one translation unit of a given path can be
19410	added to the corpus.
19411	(corpus::{find_translation_unit, get_type_per_loc_map}): Define
19412	new member functions.
19413	(corpus::{get_architecture_name}): Make this member function
19414	const.
19415	(struct corpus_group::priv): Define new type.
19416	(corpus_group::{corpus_group, ~corpus_group, add_corpus,
19417	get_corpora, is_empty, get_functions, get_variables,
19418	get_var_symbol_map, get_fun_symbol_map, get_sorted_fun_symbols,
19419	get_sorted_var_symbols, get_unreferenced_function_symbols,
19420	get_unreferenced_variable_symbols}): Define member functions of
19421	the new corpus_group type.
19422
194232017-07-03  Dodji Seketeli <dodji@redhat.com>
19424
19425	Fix some typos in abidiff.cc
19426	* tools/abidiff.cc (main): Fix typos.
19427
194282017-07-03  Dodji Seketeli <dodji@redhat.com>
19429
19430	Avoid comparing kernel.img file from the grub2 package
19431	* default.abignore: Do not compare kernel.img files.
19432
194332017-06-14  Dodji Seketeli <dodji@redhat.com>
19434
19435	Bug 21567 - Fedabipkgdiff matches build distro names too tightly
19436	* tools/fedabipkgdiff (get_distro_from_string): Define new function.
19437	(Brew.get_package_latest_build): Also consider builds which distro
19438	property is less than the expected distro string that we were
19439	given.
19440
194412017-06-14  Sinny Kumari <sinny@redhat.com>
19442
19443	Check if return_codes list is empty in fedabipkgdiff
19444	* tools/fedabipkgdiff (run_abipkgdiff()): Check if
19445	return_codes list is empty
19446
194472017-06-13  Dodji Seketeli <dodji@redhat.com>
19448
19449	Do not forget to erase temporary directories in abipkgdiff
19450	* tools/abipkgdiff.cc (maybe_erase_temp_dirs): Define new static
19451	function.
19452	(compare): Call the new maybe_erase_temp_dirs on all return
19453	points.
19454
194552017-05-11  Ben Woodard <woodard@redhat.com>
19456
19457	Fix more clang build warnings
19458	* include/abg-ini.h (config::section::priv): Make this be a class,
19459	not a struct.
19460	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir)
19461	(build_ir_node_from_die): Add parenthesis around assignment
19462	expressions inside conditional expression.
19463	* src/abg-suppression.cc (read_function_suppression): Likewise.
19464
194652017-05-11  Ben Woodard <woodard@redhat.com>
19466
19467	Fix some clang compile problems
19468	* include/abg-comp-filter.h (class filter_base): Declare this as a
19469	struct.
19470	* include/abg-comparison.h (class filtering::filter_base):
19471	Likewise.
19472	(struct diff_traversable_base): Declare this as a class.
19473	* include/abg-ir.h (function_decl::parameter): Declare this before
19474	using it.
19475	* src/abg-corpus.cc
19476	(corpus::priv::build_unreferenced_symbols_tables): Add missing
19477	parenthesis around assignment expressions inside conditional
19478	expressions.
19479
194802017-05-21  Sinny Kumari <sinny@redhat.com>
19481
19482	Add --self-compare option in fedabipkgdiff
19483	* bash-completion/fedabipkgdiff: Add new option --self-compare
19484	* tests/data/Makefile.am: Add new test file
19485	* tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt:
19486	New reference output for testing ABI comparison on same package
19487	* tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
19488	Add test case for --self-compare
19489	* tools/fedabipkgdiff (build_commandline_args_parser()): Add
19490	new option --self-compare
19491	(generate_comparison_halves()): Find second comparision half in same
19492	package list while doing self-compare
19493	(self_compare_rpms_from_distro()): New function to perform ABI
19494	comparision on same pacakge
19495	(main()): Add if condition when --self-compare option is enabled
19496
194972017-03-31  Dodji Seketeli <dodji@redhat.com>
19498
19499	Avoid building DIE -> parent DIE map when analyzing a C binary
19500	* include/abg-ir.h (global_scope_sptr): Make this be a share_ptr
19501	of scope_decl, not of global_scope.
19502	(translation_unit::get_global_scope): Return a reference to
19503	scope_decl_sptr.
19504	* src/abg-ir.cc (translation_unit::get_global_scope): Return a
19505	scope_decl not a global_scope.
19506	* src/abg-dwarf-reader.cc (read_context::nil_scope_): Add new data
19507	member.
19508	(read_context::{global_scope, nil_scope}): Define new member functions.
19509	(read_context::build_die_parent_maps): Do not build the map if we
19510	are looking at a C (or asm) translation unit.
19511	(get_scope_die, get_scope_for_die): If we are looking at a C
19512	translation unit then do return the global scope.
19513
195142017-04-06  Dodji Seketeli <dodji@redhat.com>
19515
19516	Speed up access to the definition of a class declaration-only type
19517	* include/abg-ir.h
19518	(class_or_union::get_naked_definition_of_declaration): Declare a
19519	new member function.
19520	(class_decl::get_naked_definition_of_declaration): Likewise.
19521	* src/abg-ir.cc ({type_decl, qualified_type_def,
19522	array_type_def, enum_type_decl}::operator==): Use the
19523	get_naked_canonical_type and get_naked.
19524	(class_or_union::priv::naked_definition_of_declaration_): Define
19525	new data member.
19526	(class_or_union::priv::priv): Adjust to initialize the new data
19527	member.
19528	(class_or_union::get_naked_definition_of_declaration): Define new
19529	member function.
19530	({class_or_union, class_decl}::operator==): Use the new
19531	get_naked_definition_of_declaration instead of
19532	get_definition_of_declaration.
19533	(equals): In the overload for class_or_union, do the same.
19534	(class_decl::get_naked_definition_of_declaration): Define new
19535	member function.
19536	(hash_type_or_decl): Likewise.
19537
195382017-04-06  Dodji Seketeli <dodji@redhat.com>
19539
19540	Speedup comparison of decl-only classes
19541	* src/abg-ir.cc (equals): In the overload for class_decl, if we
19542	are looking at a decl-only class, then directly call the equals
19543	function for class_or_union.  That one knows how to perform the
19544	comparison without calling the
19545	class_or_union::priv_->comparison_started function, in that case.
19546
195472017-04-04  Dodji Seketeli <dodji@redhat.com>
19548
19549	Update the description of what abipkgdiff does
19550	* tools/abipkgdiff.cc: Update the description of the sequence of
19551	actions performed.
19552
195532017-04-06  Dodji Seketeli <dodji@redhat.com>
19554
19555	Misc cleanups in abg-writer.cc
19556	* src/abg-writer.cc (class write_context): Fix indentation.
19557	(write_location, write_visibility, write_binding)
19558	(write_array_size_and_alignment, write_size_and_alignment): Fix
19559	these declarations to use the *_sptr typedefs rather than the
19560	explicit shared_ptr<*> types.
19561	(write_translation_unit): Fix comment.
19562
195632017-05-10  Dodji Seketeli <dodji@redhat.com>
19564
19565	Don't consider changes to basic types as being redundant
19566	* include/abg-comparison.h (is_diff_of_basic_type)
19567	(has_basic_type_change_only): Declare these functions ...
19568	* src/abg-comparison.cc (is_diff_of_basic_type)
19569	(has_basic_type_change_only): ... and define them.
19570	(redundancy_marking_visitor::visit_begin): Use the new
19571	has_basic_type_change_only.
19572	* tests/data/test-diff-filter/libtest37-v0.so: New binary test input.
19573	* tests/data/test-diff-filter/libtest37-v1.so: Likewise.
19574	* tests/data/test-diff-filter/test37-report-0.txt: New test
19575	reference output.
19576	* tests/data/test-diff-filter/test37-v0.cc: Source code of the new
19577	binary test input.
19578	* tests/data/test-diff-filter/test37-v1.cc: Likewise.
19579	* tests/data/Makefile.am: Update to add the new test material to
19580	the source distribution.
19581	* tests/test-diff-filter.cc (in_out_spec): Add the new test input
19582	to this test harness.
19583
195842017-05-10  Dodji Seketeli <dodji@redhat.com>
19585
19586	Rename fn_parm_diff::get_type_diff into fn_parm_diff::type_diff
19587	* include/abg-comparison.h (fn_parm_diff::type_diff): Renamed
19588	fn_parm_diff::get_type_diff intot his.
19589	* src/abg-comparison.cc (fn_parm_diff::type_diff): Likewise.
19590	(fn_parm_diff::report): Adjust.
19591	(redundancy_marking_visitor::visit_begin): Likewise.
19592	(is_diff_of_variadic_parameter): Likewise.
19593
195942017-05-03  Dodji Seketeli <dodji@redhat.com>
19595
19596	Invalidate function and variable ID cache when invoking ::set_symbol
19597	* src/abg-ir.cc ({function, var}_decl::set_symbol): Invalidate the
19598	ID cache.
19599
196002017-05-03  Dodji Seketeli <dodji@redhat.com>
19601
19602	Remove useless overloads of is_type
19603	* include/abg-fwd.h (is_type):  Remove the overloads that take
19604	decl_base and type_base types.
19605	* src/abg-ir.cc (is_type): Likewise.
19606
196072017-05-04  Dodji Seketeli <dodji@redhat.com>
19608
19609	Ensure build_qualified_type can return non-qualified types
19610	* src/abg-dwarf-reader.cc (build_qualified_type): Return a
19611	type_base_sptr.
19612	(build_ir_node_from_die): Adjust the call to build_qualified_type.
19613
196142017-05-04  Dodji Seketeli <dodji@redhat.com>
19615
19616	Fix array subranges (wrongly) having the same lower bound
19617	* src/abg-dwarf-reader.cc (build_subranges_from_array_type_die):
19618	Consider the 'lower_bound' parameter as the default lower bound
19619	for each sub-ranges.
19620
196212017-03-31  Dodji Seketeli <dodji@redhat.com>
19622
19623	Fix buffer overrun in 'equals' function for arrays
19624	* src/abg-ir.cc (equals): In the overload for arrays, check for
19625	the end of the subranges of the two arrays, not just for the first
19626	one.
19627
196282017-04-18  Dodji Seketeli <dodji@redhat.com>
19629
19630	Fix a race condition in queue::priv::do_bring_workers_down
19631	* src/abg-workers.cc (queue::priv::tasks_todo_mutex): Make this
19632	data member mutable.
19633	(more_tasks_to_execute):
19634	(queue::priv::do_bring_workers_down): Update the
19635	queue::priv::bring_workers_down only in the critical section
19636	defined by queue::priv::queue_cond_mutex.
19637	(worker::wait_to_execute_a_task): Testing for
19638	queue::priv::bring_workers_down is done in the critical section
19639	defined by queue::priv::queue_cond_mutex.  The loop over waiting
19640	ont the condition is also in the critical section, as it ought to
19641	be.
19642	* tests/test-read-write.cc (struct test_task): New type.
19643	(main): Express in terms of the new test_task type.
19644
196452017-04-12  Ondrej Oprala <ondrej.oprala@gmail.com>
19646
19647	cppcheck: mitigate performance warnings
19648	* include/abg-diff-utils.h (print_snake): pass argument of type
19649	snake by const reference.
19650	* include/abg-ir.h (location::operator{==,<}): Likewise.
19651	* include/abg-viz-dot.h (node_base::{node_base,parent_node,child_node}):
19652	Likewise.
19653	* include/abg-viz-svg.h (svg::svg) Likewise.
19654	* src/abg-config.cc (config::config): Member initialization in ctor body.
19655	* src/abg-dwarf-reader.cc (class_decl_sptr::add_or_update_class_type):
19656	Initial value never used.
19657	* src/abg-ir.cc: (decl_base::priv::priv) Member initialization in ctor body,
19658	pass argument of type location by const reference.
19659	(equals): Variable initial value never used.
19660	* src/abg-reader.cc (read_corpus_from_input): Initial variable
19661	value never used.
19662	(build_elf_symbol_db): Use pre-increment.
19663	* src/abg-suppression-priv.h
19664	(suppression_matches_type_location): Pass argument of type
19665	location by const reference.
19666	* src/abg-suppression.cc: Likewise.
19667
196682017-04-11  Ondrej Oprala <ondrej.oprala@gmail.com>
19669
19670	Fix cppcheck error: "Same iterator is used with different containers"
19671	* src/abg-dwarf-reader.cc
19672	(type_or_decl_base_sptr::lookup_artifact_from_per_tu_die_representation):
19673	Fix an error found by cppcheck.
19674
196752017-04-11  Ondrej Oprala <ondrej.oprala@gmail.com>
19676
19677	Clean up scripts/*
19678	* scripts/dot_to_png.sh: Clean up the script according to
19679	shellcheck warnings and remarks.
19680	* scripts/dot_to_svg.sh: Likewise.
19681	* scripts/svg_to_plain_svg.sh: Likewise.
19682	* scripts/svg_to_png_and_pdf.sh: Likewise.
19683
196842017-04-12  Ondrej Oprala <ondrej.oprala@gmail.com>
19685
19686	Fix comparison used instead of an assignment
19687	* src/abg-ir.cc (parse_integral_type): An attempt at clang
19688	compilation has discovered there to be a comparison with
19689	unused result, that apparently should be an assignment.
19690
196912017-04-12  Dodji Seketeli <dodji@redhat.com>
19692
19693	Fix some random deadlock while running fedabipkgidiff in tests
19694	* tools/fedabipkgdiff (abipkgidff): Do not use Popen.communicate()
19695	as it might hang if the data is large.  Rather, busy wait for the
19696	abipkgdiff process to finish and then get its output.
19697
196982017-03-22  Slava Barinov <v.barinov@samsung.com>
19699
19700	Fix types in header to meet sources
19701	* include/abg-fwd.h: Include stdint.h for uint64_t.
19702	(ir::set_data_member_offset): Take uint64_t rather than size_t.
19703	(ir::get_data_member_offset): Return uint64_t rather than size_t.
19704
197052017-03-24  Dodji Seketeli <dodji@redhat.com>
19706
19707	Launch fedabipkgdiff tests first
19708	* tests/Makefile.am: Run the fedabipkgdiff test first.
19709
197102017-03-24  Dodji Seketeli <dodji@redhat.com>
19711
19712	Bug 21296 - Reporting diff of const ref against non-const ref aborts
19713	* include/abg-fwd.h (look_through_no_op_qualified_type): Declare
19714	new function.
19715	* src/abg-ir.cc (look_through_no_op_qualified_type): Define it.
19716	(compute_diff_for_types): Use the new
19717	look_through_no_op_qualified_type here rather than open-coding it.
19718	(equals): In the overload for function_decl::parameter, use the
19719	new look_through_no_op_qualified_type function.
19720	* tests/data/test-diff-dwarf/test40-PR21296-clanggcc.cc: Source
19721	code of the new test inputs.
19722	* tests/data/test-diff-dwarf/test40-PR21296-clanggcc-report0.txt:
19723	New test input.
19724	* tests/data/test-diff-dwarf/test40-PR21296-libgcc.so: New binary
19725	test input.
19726	* tests/data/test-diff-dwarf/test40-PR21296-libclang.so: Likewise.
19727	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs to
19728	the test harness.
19729
197302017-03-05  Chenxiong Qi <cqi@redhat.com>
19731
19732	Bug 20087 - Clean cache before or after ABI comparison
19733	* configure.ac: Require shutil module.
19734	* doc/manuals/fedabipkgdiff.rst: Add document for new option
19735	clean-cache, clean-cache-before, and clean-cache-after.
19736	* tools/fedabipkgdiff (build_commandline_args_parser): Add new
19737	option --clean-cache, --clean-cache-before and
19738	--clean-cache-after.
19739	(diff_local_rpm_with_latest_rpm_from_koji): Delete download
19740	cache directory before or after downloading RPMs.
19741	(diff_latest_rpms_based_on_distros): Likewise.
19742	(diff_two_nvras_from_koji): Likewise.
19743	(diff_from_two_rpm_files): Likewise.
19744	* bash-completion/fedabipkgdiff: Add new options.
19745	* tests/mockfedabipkgdiff.in (get_download_dir): Rewrite to
19746	behave just like the original get_download_dir.
19747	(mock_get_download_dir): Removed.
19748	(DOWNLOAD_CACHE_DIR): New global variable pointing directory
19749	holding packages during tests.
19750	(run_fedabipkgdiff): Mock original get_download_dir with the
19751	rewrite get_download_dir.
19752	* tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests):
19753	Add --clean-cache to run tests to ensure no regression.
19754
197552017-03-17  Dodji Seketeli <dodji@redhat.com>
19756
19757	Shut down a helgrind false positive in the "system" libc call
19758	* tests/test-valgrind-suppressions.supp: Add a suppression that
19759	occurs during an internal libc signal handling occasion.
19760
197612017-03-15  Dodji Seketeli <dodji@redhat.com>
19762
19763	Fix data race on worker::queue::priv::bring_workers_down
19764	* src/abg-workers.cc (worker::wait_to_execute_a_task): Protect the
19765	read of the queue::priv::bring_workers_down down variable with the
19766	queue::priv::tasks_todo_mutex.
19767
197682017-03-07  Dodji Seketeli <dodji@redhat.com>
19769
19770	Bug 21228 - Handle cloning union member functions
19771	* include/abg-ir.h (class_or_union::add_member_function): Move the
19772	class_decl::add_member_function overload declaration into the
19773	class class_or_union class.
19774	(class class_decl): Make the class class_or_union be a friend of
19775	class_decl.
19776	* src/abg-ir.cc (class_decl::add_member_function): Transform the
19777	definition of this overload into ...
19778	(class_or_union::add_member_function): ... this one.  Make sure
19779	that when setting the virtual-ness attributes of the member
19780	function, we are effectively looking at the a function that is a
19781	member of a class.
19782	(function_decl::clone): Do not assert that a member function is
19783	necessarily a member of a class_decl.  It can also a member of a
19784	union_decl!.  So, rather, assert that the scope of the member
19785	function is of type class_or_union.
19786	* tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64.rpm:
19787	New test input RPM.
19788	* tests/data/test-diff-pkg/tbb-2017-9.20170118.fc27.x86_64.rpm:
19789	* tests/data/test-diff-pkg/tbb-debuginfo-2017-8.20161128.fc26.x86_64.rpm:
19790	Likewise.
19791	* tests/data/test-diff-pkg/tbb-debuginfo-2017-9.20170118.fc27.x86_64.rpm:
19792	Likewise.
19793	* tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64--tbb-2017-9.20170118.fc27.x86_64.txt:
19794	New reference test output.
19795	* tests/data/Makefile.am: Add the new test input RPMs to the
19796	source distribution.
19797	* tests/test-diff-pkg.cc (in_out_specs): Take the new input tests
19798	above into account.
19799
198002017-03-03  Dodji Seketeli <dodji@redhat.com>
19801
19802	Consider file path when sorting virtual member functions
19803	* src/abg-ir.cc (virtual_member_function_less_than::operator()):
19804	Take the file path into account in the sorting.
19805	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
19806	Adjust.
19807
198082017-03-03  Dodji Seketeli <dodji@redhat.com>
19809
19810	Fix virtual members sorting to unbreak the build on EL6
19811	* src/abg-ir.cc (virtual_member_function_less_than::operator()):
19812	Update comment.  When two virtual functions have the same virtual
19813	index and one of them has no ELF symbol, then that function is
19814	less than the one with an ELF symbol.
19815	* tests/data/Makefile.am: Remove
19816	test-annotate/{test9-pr18818-clang.so.abi, test11-pr18828.so.abi,
19817	test12-pr18844.so.abi, test16-pr18904.so.abi,
19818	test22-pr19097-libstdc++.so.6.0.17.so.abi}.
19819	* tests/data/test-annotate/test10-pr18818-gcc.so.abi: Remove.
19820	* tests/data/test-annotate/test11-pr18828.so.abi: Likewise.
19821	* tests/data/test-annotate/test12-pr18844.so.abi: Likewise.
19822	* tests/data/test-annotate/test16-pr18904.so.abi: Likewise.
19823	* tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi:
19824	Likewise.
19825	* tests/test-annotate.cc (in_out_specs):  Remove those tests above
19826	which input files have been removed.
19827
198282017-03-02  Dodji Seketeli <dodji@redhat.com>
19829
19830	Make Helgrind suppressions less specific to libgcc_s version
19831	* tests/test-valgrind-suppressions.supp: Make Helgrind
19832	suppressions less specific to libgcc_s version.
19833
198342017-03-02  Dodji Seketeli <dodji@redhat.com>
19835
19836	More Helgrind suppressions
19837	* tests/test-valgrind-suppressions.supp: More specific suppressions.
19838
198392017-03-02  Dodji Seketeli <dodji@redhat.com>
19840
19841	Silence Helgrind reports about exception stack unwinding
19842	* tests/test-valgrind-suppressions.supp: Silence Helgrind reports
19843	about exception stack unwinding.
19844
198452017-03-01  Dodji Seketeli <dodji@redhat.com>
19846
19847	Make the helgrind suppressions less specific
19848	* tests/test-valgrind-suppressions.supp: Make the ostream writting
19849	suppressions be less specific so that they can apply to all the
19850	related false positives.
19851
198522017-03-01  Dodji Seketeli <dodji@redhat.com>
19853
19854	Move test-read-dwarf.cc to abigail::workers
19855	* tests/test-read-dwarf.cc (iospec, spec_lock, write_lock)
19856	(out_abi_base, in_elf_base, in_abi_base): Remove these global
19857	variables.
19858	(handle_in_out_spec): Remove this.
19859	(struct test_task): Write this task that does what
19860	handle_in_out_spec was doing.
19861	(test_task_sptr): Define new typedef.
19862	(main): Remove the pthreads artifacts.  Use the new test_task type
19863	along with the abigail::workers interface.
19864	* tests/test-valgrind-suppressions.supp: Add more helgrind
19865	suppressions for ostream writting false positives.
19866
198672017-02-28  Dodji Seketeli <dodji@redhat.com>
19868
19869	Display the command that failed the runtestfedabipkgdiff.py test
19870	* tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): When
19871	A test fails, display the fedabipkgdiff command that triggered the failure.
19872
198732017-02-24  Dodji Seketeli <dodji@redhat.com>
19874
19875	Make abipkgdiff.cc use the abigail::workers interface
19876	* tools/abipkgdiff.cc: Remove ftw.h, pthread.h, unistd.h, add
19877	fts.h and abg-workers.h.
19878	(verbose, elf_file_paths_tls_key, reports_map, env_map, map_lock)
19879	(arg_lock, prog_options): Remove all these global variables.
19880	(struct package_descriptor): Remove this type.
19881	(pthread_routine_extract_package)
19882	(first_package_tree_walker_callback_fn)
19883	(second_package_tree_walker_callback_fn, pthread_routine_compare)
19884	(pthread_join, pthread_routine_extract_pkg_and_map_its_content):
19885	Remove these functions.
19886	(options::{num_workers, verbose}): Define new data members.
19887	(options::options): Initialize the new verbose and num_workers data members.
19888	(package::erase_extraction_directory)
19889	(erase_created_temporary_directories_parent): Take the program
19890	options in parameter.  Don't use the global verbose variable
19891	anymore.
19892	(package::erase_extraction_directories)
19893	(erase_created_temporary_directories, extract_package): Take the
19894	program options in parameter.
19895	(extract_rpm, extract_deb, extract_tar): Likewise.  And don't use
19896	the global verbose variable anymore.
19897	(compare): Don't use the global verbose variable anymore.  Use the
19898	new compare_task type along with the abigail::workers::queue type.
19899	(pkg_extraction_task, pkg_prepare_task, compare_task)
19900	(comparison_done_notify): Define new classes.
19901	(maybe_update_vector_of_package_content): Define new static
19902	function.
19903	(create_maps_of_package_content): Don't take the ftw_cp_type
19904	anymore.  Don't use the global verbose variable anymore.  Use the
19905	fts_{open,read,close} functions, rather than the ftw one.
19906	(extract_package_and_map_its_content): Don't use pthreads anymore.
19907	Use the new pkg_extraction_task type created along with the
19908	abigail::workers::queue type.
19909	(prepare_packages): Don't use pthreads anymore.  Use the new
19910	pkg_prepare_task type along with the abigail::workers::queue type.
19911	(elf_size_is_greater): Adjust to use
19912	abigail::workers::queue::tasks, rather than the previous
19913	compaer_args_sptr type.
19914	(parse_command_line): Adjust to stop using the global verbose
19915	variable.
19916	(main): Remove use of global variables prog_options and also the
19917	packages variable.
19918	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
19919	Adjust.
19920	* tests/data/test-diff-pkg/dirpkg-0-report-0.txt: Likewise.
19921	* tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt:
19922	Likewise.
19923	* tests/data/test-diff-pkg/test-rpm-report-0.txt: Likewise.
19924	* tests/data/test-diff-pkg/test-rpm-report-1.txt: Likewise.
19925	* tests/data/test-diff-pkg/test-rpm-report-2.txt: Likewise.
19926	* tests/data/test-diff-pkg/test-rpm-report-3.txt: Likewise.
19927	* tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt:
19928	Likewise.
19929	* tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt:
19930	Likewise.
19931	* tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt:
19932	Likewise.
19933	* tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt:
19934	Likewise.
19935	* 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:
19936	Likewise.
19937
199382017-02-24  Dodji Seketeli <dodji@redhat.com>
19939
19940	Do not ignore valgrind checks returning an error
19941	* autoconf-archive/ax_valgrind_check.m4 (check-valgrind): Don't
19942	ignore errors.
19943
199442017-02-24  Dodji Seketeli <dodji@redhat.com>
19945
19946	Add a "make check-valgrind-helgrind-recursive" target
19947	* tests/Makefile.am (check-valgrind-helgrind-recursive): New
19948	target to run the tests recursively under the control of
19949	Valgrind's Helgrind tool.
19950	* tests/test-valgrind-suppressions.supp: Update this suppression
19951	file with suppressions for Helgrind.
19952
199532017-02-24  Dodji Seketeli <dodji@redhat.com>
19954
19955	Several fixes and enhancements to abigail::workers
19956	* Don't try to schedule a task if the pointer to the task is nil
19957	* Fix a data race when bringing workers (of a queue) down
19958	* Always try to wake up all waiting threads when bringing down queue
19959	workers.
19960	* Fix a data race when accessing the queue condition variable
19961	* Fix a data race when notifying listeners about the end of the job
19962	performed by the task.
19963	Enhancements
19964	============
19965	* Pass the "task done" notifier by reference, to the worker queue.
19966	Without this, the worker queue needs to copy the "task done" notifier
19967	by value.  This implies that user code needs to provide task done
19968	notifier instances that come with potentially complicated copy
19969	constructors.  By passing it by reference and by just re-using the
19970	notifier from the user code, we do away with the need for copying
19971	altogether.  This also fixes some latent copying bugs.
19972	* Add a workers::queue::schedule_tasks() method
19973	This allows user code to schedule a vector of tasks at once.
19974	* make workers::queue::get_completed_tasks() return a non-const vector
19975	This enables user code to sort the completed tasks as they wish.
19976	* include/abg-workers.h (queue::tasks_type): New typedef.
19977	(queue::queue): Pass task_done_notify by reference.
19978	(queue::schedule_tasks): Declare new member function.
19979	(queue::get_completed_tasks): Return non-const vector.
19980	* src/abg-workers.cc (queue::priv::default_notify): New data
19981	member.
19982	(queue::priv::notify): Make this data member be a reference.
19983	(queue::priv::priv): Initialize the notify data member to either
19984	the new default_notify (if no notifier is provided by the
19985	constructor) or to the notifier provided by the constructor.
19986	(queue::priv::schedule_task): Do not schedule a nil task.  Update
19987	comment.
19988	(queue::priv::schedule_tasks): Add a new member function.
19989	(queue::priv::do_bring_workers_down): Update comment.  Protect
19990	access to "bring_workers_down" with tasks_todo_mutex to prevent a
19991	data race.  Call pthread_cond_broadcast on the queue_cond
19992	unconditionaly to prevent some worker threads to keep waiting for
19993	ever. Also, protect the access to the queue_cond by the
19994	queue_cond_mutex to precent a data race.
19995	(queue::queue): Pass the notifier by reference. Update comment.
19996	(queue::schedule_task): Update comment.
19997	(queue::schedule_tasks): Define new member function.
19998	(queue::wait_for_workers_to_complete): Update comment.
19999	(queue::get_completed_tasks): Return a non-const vector. Update
20000	comment.
20001	(worker::wait_to_execute_a_task): Update several comments. Make
20002	the execution of the notification code to be synchronized (on the
20003	tasks_done_mutex).
20004
200052017-02-14  Dodji Seketeli <dodji@redhat.com>
20006
20007	Fix typo in help string of abipkgdiff
20008	* tools/abipkgdiff.cc (display_usage): Remove erroneous end line.
20009
200102017-01-23  Dodji Seketeli <dodji@redhat.com>
20011
20012	fedabipkgdiff refuses to compare packages with the same release number
20013	* tools/fedabipkgdiff (RPM.is_peer): Update comment.  Fix logic.
20014	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-0.39.1-1.fc22.x86_64.rpm:
20015	New test input file.
20016	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-debuginfo-0.39.1-1.fc22.x86_64.rpm: Likewise.
20017	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-devel-0.39.1-1.fc22.x86_64.rpm: Likewise.
20018	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-0.39.90-1.fc22.x86_64.rpm: Likewise.
20019	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-debuginfo-0.39.90-1.fc22.x86_64.rpm: Likewise.
20020	* tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-devel-0.39.90-1.fc22.x86_64.rpm:
20021	Likewise.
20022	* tests/data/test-fedabipkgdiff/vte291-0.39.1-1.fc22.x86_64--vte291-0.39.90-1.fc22.x86_64-report-0.txt: Likewise.
20023	* tests/data/Makefile.am: Add the new test input data to source
20024	distribution.
20025	* tests/mockfedabipkgdiff.in: Update the package and build
20026	information to add the new vte291-0.39.1-1.fc22.x86_64.rpm and
20027	vte291-0.39.90-1.fc22.x86_64.rpm packages (as well as their devel
20028	and debuginfo packages) into the "mock" Koji build database.
20029	* tests/runtestfedabipkgdiff.py.in:  Make this test harness run
20030	over the two aforementioned packages.
20031
200322017-01-24  Dodji Seketeli <dodji@redhat.com>
20033
20034	Add missing tests input files to distribution files
20035	* tests/data/Makefile.am: Add three missing test input files to
20036	the source distribution tarball.  Renamed
20037	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
20038	into
20039	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.
20040	* tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
20041	Renamed
20042	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
20043	into
20044	test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt.
20045
200462017-01-24  Dodji Seketeli <dodji@redhat.com>
20047
20048	Add missing new line to an error message of runtestfedabipkgdiff.py
20049	* tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): Add
20050	missing new line to an error message.
20051
200522017-01-24  Dodji Seketeli <dodji@redhat.com>
20053
20054	Fix silent failure of tests/runtestfedabipkgdiff.py
20055	* tests/mockfedabipkgdiff.in (run_fedabipkgdiff): Patch
20056	fedabipkgdiff.DEFAULT_KOJI_TOPURL instead of
20057	fedabipkgdiff.DEFAULT_KOJI_TOPDIR.
20058	* tests/runtestfedabipkgdiff.py.in (main): Properly return 0 upon
20059	success, 1 otherwise.
20060
200612017-01-14  Dodji Seketeli <dodji@redhat.com>
20062
20063	Misc style fixes
20064	* include/abg-ir.h (class_or_union): Fix indentation.
20065	* src/abg-dwarf-reader.cc (get_die_pretty_representation): Add new
20066	line.
20067	* src/abg-ir.cc (struct class_decl::priv): Fix indentation.
20068	(virtual_member_function_less_than::operator()): Fix a typo in a
20069	comment.
20070
200712017-01-13  Dodji Seketeli <dodji@redhat.com>
20072
20073	Bug 20476 - Compare virtual member functions when comparing classes
20074	* include/abg-ir.h (class_decl::get_biggest_vtable_offset):
20075	Declare new member function.
20076	* src/abg-ir.cc (virtual_member_function_less_than::operator()):
20077	Either compare the symbol id strings if the functions have
20078	symbols or just compare their pretty representations.
20079	(class_decl::get_biggest_vtable_offset): Define new member
20080	function.
20081	(methods_equal_modulo_elf_symbol)
20082	(method_matches_at_least_one_in_vector): New static methods.
20083	(equals): In the overload for classes, compare the virtual member
20084	functions while comparing classes.
20085	* src/abg-comparison.cc (represent): In the overload for
20086	method_decl_sptr, fix the way we compute the highest vtable offset
20087	number for a give class_decl.
20088	(class_decl::ensure_lookup_tables_populated): Don't forget added
20089	and removed virtual member functions in the report for changed
20090	classes.
20091	* tests/data/test-diff-dwarf/libtest41-PR20476-hidden-old.so: New
20092	test binary input file.
20093	* tests/data/test-diff-dwarf/libtest41-PR20476-hidden-new.so: Likewise.
20094	* tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt:
20095	New reference output.
20096	* tests/data/Makefile.am: Add the new test material above to the
20097	source distribution.
20098	* tests/test-diff-dwarf.cc (in_out_spec): Add the new tests
20099	here.
20100	* tests/data/test-annotate/test10-pr18818-gcc.so.abi: Adjust.
20101	* tests/data/test-annotate/test11-pr18828.so.abi: Adjust.
20102	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
20103	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
20104	* tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
20105	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
20106	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
20107	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
20108	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
20109	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
20110	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
20111	Adjust.
20112	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
20113	Adjust.
20114	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
20115	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
20116	Adjust.
20117
201182017-02-14  Dodji Seketeli <dodji@redhat.com>
20119
20120	Fix indentation in src/abg-writer.cc
20121	* src/abg-writer.cc (annotate): Fix indentation.
20122
201232017-02-13  Dodji Seketeli <dodji@redhat.com>
20124
20125	Adjust reference output of test-annotate
20126	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust this
20127	reference output.
20128
201292017-02-13  Dodji Seketeli <dodji@redhat.com>
20130
20131	Fix help string for --header-dirs
20132	* tools/abidw.cc (display_usage): Fix patch -> path typo.
20133
201342017-02-13  Dodji Seketeli <dodji@redhat.com>
20135
20136	Make abidw --headers-dir work with the --out-file option
20137	* tools/abidw.cc (parse_command_line): Don't require an empty
20138	output file when parsing the --headers-dir option.  This was a
20139	thinko.
20140
201412017-01-17  Ondrej Oprala <ondrej.oprala@gmail.com>
20142
20143	Bug 20970 - Add a --annotate option to abidw
20144	* doc/manuals/abidiff.rst: Document the '--no-corpus-path'
20145	option.
20146	* doc/manuals/abidw.rst: Document the '--no-corpus-path'
20147	and '--annotate' options.
20148	* include/abg-libxml-utils.h ({un,}escape_xml_comment): Add
20149	new function declarations.
20150	* include/abg-writer.h: Add new annotate functions
20151	(write_{translation_unit,corpus_to_{archive,native_xml_file}}):
20152	Add an optional "annotate" parameter defaulting to "false".
20153	* src/abg-libxml-utils.cc ({un,}escape_xml_comment): Add
20154	new function definitions.
20155	* src/abg-writer.cc (annotate): Define new templatized function
20156	and specialize it for necessary cases.
20157	* tests/Makefile.am: Add runtestannotate as a new test.
20158	* tests/data/Makefile.am: Add paths to below reference test
20159	outputs.
20160	* tests/data/test-annotate/libtest23.so.abi: New reference test
20161	output.
20162	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
20163	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
20164	* tests/data/test-annotate/test0.abi: Likewise.
20165	* tests/data/test-annotate/test1.abi: Likewise.
20166	* tests/data/test-annotate/test10-pr18818-gcc.so.abi: Likewise.
20167	* tests/data/test-annotate/test11-pr18828.so.abi: Likewise.
20168	* tests/data/test-annotate/test12-pr18844.so.abi: Likewise.
20169	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
20170	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
20171	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
20172	* tests/data/test-annotate/test16-pr18904.so.abi: Likewise.
20173	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
20174	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
20175	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
20176	* tests/data/test-annotate/test2.so.abi: Likewise.
20177	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
20178	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
20179	* tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
20180	* tests/data/test-annotate/test3.so.abi: Likewise.
20181	* tests/data/test-annotate/test4.so.abi: Likewise.
20182	* tests/data/test-annotate/test5.o.abi: Likewise.
20183	* tests/data/test-annotate/test6.so.abi: Likewise.
20184	* tests/data/test-annotate/test7.so.abi: Likewise.
20185	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
20186	* tests/data/test-annotate/test9-pr18818-clang.so.abi: Likewise.
20187	* tests/test-annotate.cc: New test for ABIXML annotations.
20188	* tools/abidiff.cc: Add the new option '--no-corpus-path'.
20189	* tools/abidw.cc: Likewise. Also add the '--annotate' option.
20190	reviews round 1
20191
201922017-01-20  Dodji Seketeli <dodji@redhat.com>
20193
20194	Fix test-diff-pkg after commit 2dcc606
20195	* tests/test-diff-pkg.cc (in_out_specs): Fix paths to spice-server
20196	packages.
20197
201982017-01-20  Dodji Seketeli <dodji@redhat.com>
20199
20200	Add --harmless option to abipkgdiff
20201	* doc/manuals/abidiff.rst: Fix a typo.
20202	* doc/manuals/abipkgdiff.rst: Document the --harmless option.
20203	* tools/abipkgdiff.cc: Update copyright year.
20204	(options::show_harmless_changes): Add new data member.
20205	(options::options): Initialize the new data member.
20206	(display_usage): Add a help string for the new --harmless option.
20207	(parse_command_line): Parse the new --harmless option.
20208	(set_diff_context_from_opts): Configure the diff context
20209	accordingly, if the user provided the --harmless option.
20210
202112017-01-20  Dodji Seketeli <dodji@redhat.com>
20212
20213	Fix suppression category propagation in diff node graph
20214	* include/abg-comparison.h (diff::get_class_of_equiv_category):
20215	Declare new member function.
20216	* src/abg-comparison.cc: Update copyright year.
20217	(diff::get_class_of_equiv_category): Define new member function.
20218	(suppression_categorization_visitor::visit_end): When considering
20219	children nodes category for propagation, consider the category of
20220	the class of equivalence of children nodes.
20221	* spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package.
20222	* spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise.
20223	* spice-server-0.12.4-19.el7.x86_64.rpm: Likewise.
20224	* spice-server-0.12.8-1.el7.x86_64.rpm: Likewise.
20225	* spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise.
20226	* spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise.
20227	* spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
20228	New reference test output.
20229	* spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise.
20230	* spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
20231	* tests/data/Makefile.am: Add the new test material above to
20232	source distribution.
20233	* tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
20234	to the list of packages to test.
20235
202362017-01-18  Dodji Seketeli <dodji@redhat.com>
20237
20238	Bug 21058 - abipkgdiff wrongly drops non-public types
20239	* doc/manuals/abidiff.rst (--dont-drop-private-types): Remove documentation.
20240	(--drop-private-types): Document this new option.
20241	* src/abg-tools-utils.cc: Update copyright notice
20242	(handle_fts_entry): On the generated suppression specification, do
20243	not set the flag to drop matched types.  Also, don't match types
20244	defined in files which patch start with "/usr/include/".
20245	* tools/abidiff.cc (options::options): Initialize the
20246	drop_private_types data member to false.
20247	(display_usage): Remove usage string for
20248	--dont-drop-private-types.  Add a new one for
20249	--drop-private-types.
20250	(parse_command_line): Don't part --dont-drop-private-types,
20251	rather, parse --drop-private-types.
20252	(set_suppressions): When the suppression for private types is
20253	generated, if --drop-private-types was provided, then instruct the
20254	suppression to drop matched types.
20255	* tools/abipkgdiff.cc (options::drop_private_types): New option.
20256	(options::options): Initialize the new drop_private_types data
20257	member to false.
20258	(display_usage): Add a usage string for --drop-private-types.
20259	(parse_command_line): Parse the new --drop-private-types option.
20260	(maybe_create_private_types_suppressions): Don't take just a
20261	package, but a package_descriptor because the latter carries the
20262	options.  So when the user used the --drop-private-types option,
20263	make the generated private types suppression to drop matched
20264	types.
20265	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
20266	Adjust.
20267	* tests/test-diff-suppr.cc (in_out_specs): Likewise.
20268
202692017-01-18  Dodji Seketeli <dodji@redhat.com>
20270
20271	Fix some include logic in abg-suppression.cc
20272	* src/abg-suppression.cc: Update copyright notice. Fix include
20273	files logic.
20274
202752017-01-16  Dodji Seketeli <dodji@redhat.com>
20276
20277	Support virtual member functions with vtable offset not yet set
20278	* include/abg-fwd.h (member_function_has_vtable_offset): Declare
20279	new function.
20280	(get_member_function_vtable_offset): Return a ssize_t, not a
20281	size_t.
20282	(set_member_function_vtable_offset): Take a ssize_t, not a size_t.
20283	* include/abg-ir.h (class_decl::virtual_mem_fn_map_type): Adjust
20284	the map typedef to make it take ssize_t as the type of the key.
20285	(mem_fn_context_rel::vtable_offset_in_bits_): Make this data
20286	member be of ssize_t type, not size_t.
20287	(mem_fn_context_rel::mem_fn_context_rel): Initialize the
20288	vtable_offset_in_bits_ data member to -1.
20289	* src/abg-ir.cc (member_function_has_vtable_offset): Define new
20290	function.
20291	(get_member_function_vtable_offset): Return a ssize_t, not a
20292	size_t.
20293	(set_member_function_vtable_offset): Take a ssize_t, not a size_t.
20294	* src/abg-dwarf-reader.cc (die_virtual_function_index): Take an
20295	int64_t& rather than a uint64_t&.
20296	(finish_member_function_reading): Don't set the vtable offset if
20297	it's -1.
20298	* src/abg-reader.cc (build_class_decl): Likewise.
20299
203002017-01-14  Dodji Seketeli <dodji@redhat.com>
20301
20302	[comparison engine] Don't crash when the context is null
20303	* src/abg-comparison.cc
20304	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER): Guard against
20305	null context.
20306	(diff::is_filtered_out): Likewise.
20307
203082017-01-14  Dodji Seketeli <dodji@redhat.com>
20309
20310	[dwarf reader] Don't abort when trying to canonicalize a non-type
20311	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Don't abort
20312	when trying to canonicalize a decl.
20313
203142017-01-14  Dodji Seketeli <dodji@redhat.com>
20315
20316	[dwarf reader] properly separate function decls and types in lookup
20317	* src/abg-dwarf-reader.cc
20318	(read_context::associate_die_to_artifact_by_repr_internal):
20319	Choose the right type of representation depending on if we are
20320	associating a type or a decl.
20321	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
20322	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
20323	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
20324	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
20325	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
20326	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
20327	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
20328	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
20329	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
20330	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
20331	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
20332	Adjust.
20333	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
20334	Adjust.
20335	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
20336	Adjust.
20337	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
20338	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
20339	Adjust.
20340	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
20341
203422017-01-14  Dodji Seketeli <dodji@redhat.com>
20343
20344	[dwarf reader] Allow updating and de-duplicating member functions
20345	* src/abg-dwarf-reader.cc (add_or_update_class_type): Register
20346	member functions for lookup by member function DIE representation.
20347
203482017-01-14  Dodji Seketeli <dodji@redhat.com>
20349
20350	[dwarf reader] Do not over de-duplicate function *definitions*
20351	* src/abg-dwarf-reader.cc
20352	(build_or_get_fn_decl_if_not_suppressed): Do try to de-duplicate a
20353	function if it's to be completed.
20354
203552017-01-13  Dodji Seketeli <dodji@redhat.com>
20356
20357	[dwarf reader] Fix pretty printing static methods from DWARF
20358	* src/abg-dwarf-reader.cc
20359	(die_return_and_parm_names_from_fn_type_die): Take a new
20360	'is_static' parameter.
20361	(die_qualified_type_name, die_pretty_print_type): Adjust calling
20362	die_return_and_parm_names_from_fn_type_die.
20363	(die_function_signature): Likewise.  Also, do not forget to print
20364	the first parameter for a static method.
20365
203662017-01-13  Dodji Seketeli <dodji@redhat.com>
20367
20368	Handle several virtual member functions having the same vtable offset
20369	* include/abg-ir.h (class_or_union::virtual_mem_fn_map_type):
20370	Define new typedef.
20371	(class_decl::get_virtual_mem_fns_map): Declare new accessor.
20372	* src/abg-ir.cc (class_decl::priv::virtual_mem_fns_map_): New data
20373	member.
20374	(class_decl::get_virtual_mem_fns_map): Define new accessor.
20375	(fixup_virtual_member_function): Populate the new virtual member
20376	functions map.
20377	(class_decl::on_canonical_type_set): Sort the virtual member
20378	function vectors stored in the new virtual member functions map.
20379	(class_decl::add_member_function): Call
20380	set_member_function_is_virtual *after* calling
20381	set_member_function_vtable_offset because the former updates the
20382	virtual function map, so it needs the vtable offset.
20383	* src/abg-dwarf-reader.cc (finish_member_function_reading):
20384	Likewise.
20385	* src/abg-reader.cc (build_class_decl): Likewise.
20386
203872017-01-13  Dodji Seketeli <dodji@redhat.com>
20388
20389	Speed up pretty representing (function) types
20390	* include/abg-ir.h (type_base::get_cached_pretty_representation):
20391	Declare new function.
20392	(function_type::get_cached_name): Likewise.
20393	* src/abg-ir.cc (get_method_type_name): Use the new
20394	type_base::get_cached_pretty_representation function.
20395	(type_base::priv::{internal_cached_repr_, cached_repr_}): Add new
20396	data members.
20397	(function_type::priv::{internal_cached_name_, cached_name_}):
20398	Likewise.
20399	(type_base::get_cached_pretty_representation): Define new
20400	function.
20401	(function_type::get_cached_name): Likewise.
20402	(type_base::get_canonical_type_for): Call
20403	type_base::get_cached_pretty_representation here, so the internal
20404	representation is cached right before canonicalization.
20405	(function_type::{mark_as_being_compared, unmark_as_being_compared,
20406	comparison_started}): Uset he new type_base::get_cached_name to
20407	speed up function type name retrieval.
20408
204092017-01-13  Dodji Seketeli <dodji@redhat.com>
20410
20411	Add missing deep comparison operators for {function, method}_decl_sptr
20412	* include/abg-ir.h (operator==): Declare two new overloads for
20413	function_decl_sptr an method_decl_sptr.
20414	* src/abg-ir.cc (operator==): Define two new overloads for
20415	function_decl_sptr an method_decl_sptr.
20416
204172017-01-16  Dodji Seketeli <dodji@redhat.com>
20418
20419	Fix performance regression while analyzing libjvm.so
20420	* include/abg-ir.h ({type_base,
20421	class_decl}::on_canonical_type_set): Declare new virtual member
20422	function.
20423	* src/abg-ir.cc (type_base::on_canonical_type_set): Define new
20424	virtual member function that does nothing.
20425	(class_decl::on_canonical_type_set): Define new virtual member
20426	function that sorts the virtual member functions of class_decl.
20427	(canonicalize): Invoke type_base::on_canonical_type_set when the
20428	canonical type is set.
20429	(fixup_virtual_member_function): Don't sort virtual member
20430	functions here.
20431	* src/abg-dwarf-reader.cc (finish_member_function_reading): Do not
20432	sort virtual member functions here.
20433	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
20434	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
20435	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
20436	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
20437	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
20438
204392017-01-14  Dodji Seketeli <dodji@redhat.com>
20440
20441	Update copyright notice for abg-fwd.h, abg-ir.h and test-abidiff.cc
20442	* include/abg-fwd.h: Adjust copyright.
20443	* include/abg-ir.h: Likewise.
20444	* tests/test-abidiff.cc: Likewise.
20445
204462017-01-16  Dodji Seketeli <dodji@redhat.com>
20447
20448	Remove unused functions from abg-ir.cc
20449	* src/abg-ir.cc (convert_node_to_decl): Remove specializations for
20450	class_decl_sptr, type_base_sptr and var_decl_sptr.
20451
204522016-11-10  Dodji Seketeli <dodji@redhat.com>
20453
20454	Support Linux Kernel ABI whitelist files
20455	* include/abg-suppression.h
20456	(function_suppression::function_suppression): Make the declaration
20457	of the default constructor public.
20458	* src/abg-suppression-priv.h (function_suppression::priv::priv):
20459	Declare a default constructor.
20460	* src/abg-suppression.cc
20461	(function_suppression::function_suppression): Define default
20462	constructor.
20463	* include/abg-tools-utils.h
20464	(gen_suppr_spec_from_kernel_abi_whitelist): Declare new function.
20465	* src/abg-tools-utils.cc
20466	(gen_suppr_spec_from_kernel_abi_whitelist): Define new function.
20467	* tools/abidiff.cc (options::kernel_abi_whitelist_paths):
20468	(display_usage): Display a help string for the new
20469	--linux-kernel-abi-whitelist option.
20470	(parse_command_line): Parse the --linux-kernel-abi-whitelist from
20471	the command line.
20472	(maybe_check_suppression_files): Check the presence of the kernel
20473	abi whitelist files.
20474	(set_suppressions): Generate suppression specifications from the
20475	whitelist files.
20476
204772016-10-10  Dodji Seketeli <dodji@redhat.com>
20478
20479	Support Linux Kernel binaries
20480	* include/abg-dwarf-reader.h (create_read_context): Take a new
20481	flag to say if the context is to read an ELF binary in linux
20482	kernel mode.
20483	* src/abg-dwarf-reader.cc (typedef address_set_type)
20484	(address_set_sptr): New typedefs.
20485	(get_binary_load_address):  The load address of the binary is
20486	the load address specified by the program header that is at the
20487	smallest offset; not by the program header that is at offset zero.
20488	(read_context::{ksymtab_section_, ksymtab_gpl_section_,
20489	linux_exported_fn_syms_, linux_exported_var_syms_,
20490	linux_exported_gpl_fn_syms_, linux_exported_gpl_var_syms_,
20491	load_in_linux_kernel_mode_}): New data members.
20492	(read_context::read_context): Initialize ksymtab_section_,
20493	ksymtab_gpl_section_ and load_in_linux_kernel_mode_.
20494	(read_context::{find_symbol_table_section, find_opd_section,
20495	lookup_elf_fn_symbol_from_address,
20496	lookup_elf_var_symbol_from_address, get_function_address,
20497	get_variable_address}): Make these const.
20498	(read_context::{find_ksymtab_section, find_ksymtab_gpl_section,
20499	lookup_elf_symbol_from_address, function_symbol_is_exported,
20500	variable_symbol_is_exported, linux_exported_fn_syms,
20501	create_or_get_linux_exported_fn_syms, linux_exported_var_syms,
20502	create_or_get_linux_exported_var_syms, linux_exported_gpl_fn_syms,
20503	linux_exported_gpl_var_syms,
20504	create_or_get_linux_exported_gpl_fn_syms,
20505	linux_exported_gpl_var_syms,
20506	create_or_get_linux_exported_gpl_var_syms, architecture_word_size,
20507	load_kernel_symbol_table, load_ksymtab_symbols,
20508	load_ksymtab_gpl_symbols,
20509	load_linux_specific_exported_symbol_maps,
20510	load_in_linux_kernel_mode}): New member functions.
20511	(read_context::read_int_from_array_of_bytes): Factorize this
20512	new member function out of ...
20513	(read_context::{lookup_ppc64_elf_fn_entry_point_address}):
20514	... this.  Make this function const too.
20515	(read_context::read_uint64_from_array_of_bytes): New function.
20516	Uses read_int_from_array_of_bytes above.
20517	(read_context::{fun_entry_addr_sym_map_sptr}): Try to load symbol
20518	maps only when it's necessary.
20519	(read_context::elf_architecture_is_big_endian): Fix logic.
20520	(read_context::{var_addr_sym_map}):  Express the const variant in
20521	terms of the non-const one.  In the non-const one, load the map
20522	only when necessary.
20523	(read_context::load_symbol_maps_from_symtab_section): Renamed
20524	load_symbol_maps into this.
20525	(read_context::is_linux_kernel_binary): Define new member
20526	function.
20527	(read_context::{function, variable}_symbol_is_exported): If we are
20528	not prevented from considering loading in linux kernel mode, then
20529	just looking at a linux kernel binary makes us consider the
20530	special kernel sections.
20531	(read_debug_info_into_corpus): Likewise.
20532	(build_ir_node_from_die): Take a new flag that says if the ir node
20533	is a declaration required by another concrete IR node.
20534	(enum read_context::kernel_symbol_table_kind): New enum.
20535	(read_context::load_symbol_maps): Support loading linux kernel
20536	specific sections too.
20537	(build_var_decl): Use the new
20538	read_context::variable_symbol_is_exported.
20539	(function_is_suppressed): Suppress non-member functions or
20540	variables that are not declarations and that have no symbol.
20541	(variable_is_suppressed, build_var_decl_if_not_suppressed): Take a
20542	new flag that says if the variable is a declaration required by a
20543	concrete variable.  If non member variable that is a declaration
20544	is not the specification of another concrete variable, then it's
20545	suppressed.
20546	(add_fn_symbols_to_map, add_var_symbols_to_map): New function
20547	definitions.
20548	(read_debug_info_into_corpus): If we are reading linux kernel or
20549	linux kernel modules, only set explicitely exported symbols (in
20550	the linux kernel binary sense) as exported function or variable
20551	symbols.
20552	(create_read_context): Take a new flag to say if the context is to
20553	read an ELF binary in linux kernel mode.
20554	* tools/abidiff.cc (options::options): Initialize
20555	options::linux_kernel_mode to true.
20556	(display_usage): Display usage of the --no-linux-kernel-mode option.
20557	(parse_command_line): Parse the --no-linux-kernel-mode option.
20558	* tools/abidw.cc (options::options): Initialize
20559	options::linux_kernel_mode to true.
20560	(display_usage): Display usage of --no-linux-kernel-mode option.
20561	(parse_command_line): Parse the --no-linux-kernel-mode option.
20562	* doc/manuals/abidiff.rst: Document the new --no-linux-kernel-mode
20563	options.
20564	* doc/manuals/abidw.rst: Likewise.
20565	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
20566	Adjust.
20567	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
20568	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
20569	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
20570	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
20571	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
20572	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
20573	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
20574	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
20575	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
20576	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
20577	Likewise.
20578	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
20579	Likewise.
20580	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
20581	Likewise.
20582	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
20583	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
20584	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
20585	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
20586	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
20587
205882017-01-06  Dodji Seketeli <dodji@redhat.com>
20589
20590	Add debug routines to dump locations to a stream
20591	* src/abg-writer.cc (dump_location): Define new function and one
20592	overload.
20593	(dump_decl_location): Re-write in terms of the new dump_location.
20594
205952017-01-06  Dodji Seketeli <dodji@redhat.com>
20596
20597	Better de-duplicate classes, unions, enums in non-odr contexts
20598	* src/abg-dwarf-reader.cc (build_enum_type)
20599	(add_or_update_class_type, add_or_update_union_type): When the ODR
20600	is not relevant, use the location of the type to detect if two
20601	enum, class or union types of the same name actually represent the
20602	same type.
20603
206042017-01-06  Dodji Seketeli <dodji@redhat.com>
20605
20606	Adjust some reference outputs of the test-read-dwarf test harness
20607	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
20608	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
20609
206102017-01-04  Ondrej Oprala <ondrej.oprala@gmail.com>
20611
20612	Bug 18754 - Add the "--no-added-syms" option to abidiff
20613	* doc/manuals/abidiff.rst: Document the new --no-added-syms
20614	option.
20615	* tools/abidiff.cc (struct options): Add show_added_syms and
20616	set it to true by default.
20617	(display_usage): Document the new options --no-added-syms. If
20618	this is the only suppression option specified, it is equivalent
20619	to specifying --show_{changed,deleted}_{fns,vars} as arguments
20620	to abidiff. If any of those options are specified before
20621	--no-added-syms, then it has no effect.
20622	(parse_command_line): Parse the new option and set
20623	show_added_{fns,vars,syms} and show_all_{fns,vars} to false if
20624	--no-added-syms is specified.
20625	* tests/test-diff-filter.cc: Add a test for the new option.
20626	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
20627	Reference results for the new test.
20628	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
20629	Likewise.
20630	* tests/data/Makefile.am: Add the above test files to the list of
20631	test data.
20632
206332017-01-05  Dodji Seketeli <dodji@redhat.com>
20634
20635	Update copyright year on a bunch of files
20636	* include/abg-corpus.h: Update copyright year to 2017.
20637	* src/abg-dwarf-reader.cc: Likewise.
20638	* src/abg-ir.cc: Likewise.
20639	* src/abg-reader.cc: Likewise.
20640	* src/abg-writer.cc: Likewise.
20641	* tools/abicompat.cc: Likewise.
20642	* tools/abidw.cc: Likewise.
20643
206442017-01-05  Dodji Seketeli <dodji@redhat.com>
20645
20646	[apidoc] Allow brief description at the top of class description pages
20647	* doc/api/libabigail.doxy: Don't disable "brief member desc".
20648
206492017-01-05  Dodji Seketeli <dodji@redhat.com>
20650
20651	Misc style fixes
20652	* include/abg-corpus.h: Remove corpus_sptr typedef. It's in
20653	abg-fwd.h now.
20654	* src/abg-ir.cc: Remove some unnecessary vertical space.
20655	* src/abg-reader.cc (build_function_decl): Cleanup some asserts.
20656	* src/abg-writer.cc (write_function_type): Each the inspection of
20657	the type id from within the debugger.
20658
206592017-01-05  Dodji Seketeli <dodji@redhat.com>
20660
20661	Misc comments and apidoc fixes
20662	* src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Fix
20663	typo in comment.
20664	* tools/abicompat.cc (perform_compat_check_in_weak_mode): Better
20665	comments.
20666	* tools/abidw.cc (dislay_usage): Fix white spaces.
20667	Conflicts:
20668	tools/abidw.cc
20669
206702017-01-05  Dodji Seketeli <dodji@redhat.com>
20671
20672	Speedup set_member_is_static
20673	* src/abg-ir.cc (set_member_is_static): When comparing data
20674	members, consider only their names.
20675
206762017-01-05  Dodji Seketeli <dodji@redhat.com>
20677
20678	Avoid unnecessary updates to type lookup maps
20679	* src/abg-ir.cc (class_or_union::get_is_declaration_only): Try
20680	to update the type maps only when a declaration-only class
20681	type is now defined.
20682
206832017-01-05  Dodji Seketeli <dodji@redhat.com>
20684
20685	Update tests/data/test-read-dwarf/*.abi files
20686	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
20687	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
20688	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
20689	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
20690	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
20691	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
20692	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
20693	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
20694	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
20695	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
20696	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
20697	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
20698	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
20699	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
20700
207012017-01-05  Dodji Seketeli <dodji@redhat.com>
20702
20703	Update tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi
20704	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
20705	Update.
20706
207072017-01-05  Dodji Seketeli <dodji@redhat.com>
20708
20709	[abixml writer] Make sure all function types are emitted
20710	* src/abg-writer.cc (write_translation_unit): Fix logic to avoid
20711	forgetting referenced function types.
20712
207132017-01-05  Dodji Seketeli <dodji@redhat.com>
20714
20715	[abixml writer] Fix comparison of pointer to types
20716	* src/abg-writer.cc (type_ptr_comp::operator()): Do not add an
20717	empty type id string to the type -> type id map when the entry for
20718	a given type is empty.
20719
207202017-01-05  Dodji Seketeli <dodji@redhat.com>
20721
20722	[dwarf-reader] Don't early canonicalize function types
20723	* src/abg-dwarf-reader.cc (maybe_canonicalize_type):
20724	Late-canonicalize function types.
20725	signed-off-by: Dodji Seketeli <dodji@redhat.com>
20726
207272017-01-05  Dodji Seketeli <dodji@redhat.com>
20728
20729	Fix qualified name caching for some types
20730	* src/abg-ir.cc ({qualified, pointer,
20731	array}_type_def::get_qualified_name): Don't cache internal and
20732	non-internal qualified name when the type is not canonicalized.
20733
207342017-01-04  Dodji Seketeli <dodji@redhat.com>
20735
20736	Cleanup ODR-based type canonicalization optimization gating logic
20737	* src/abg-ir.cc (type_base::get_canonical_type_for): Make it clear
20738	that the ODR-based optimization is allowed only on C++ ABI
20739	corpora.
20740
207412017-01-04  Dodji Seketeli <dodji@redhat.com>
20742
20743	Fix a typo in method name computation
20744	* src/abg-ir.cc (get_method_type_name): Really return the method
20745	name.
20746
207472017-01-05  Dodji Seketeli <dodji@redhat.com>
20748
20749	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
20750	* 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.
20751
207522017-01-05  Dodji Seketeli <dodji@redhat.com>
20753
20754	Update tests/data/test-read-write/test27.xml
20755	* tests/data/test-read-write/test27.xml: Adjust.
20756
207572017-01-04  Dodji Seketeli <dodji@redhat.com>
20758
20759	[dwarf-reader] Handle per translation-unit type de-duplication
20760	* src/abg-dwarf-reader.cc
20761	(read_context::per_tu_name_artefacts_map_): New data member.
20762	(read_context::clear_per_translation_unit_data): Clear the new
20763	read_context::per_tu_name_artefacts_map_.
20764	(read_context::associate_die_to_decl): Take a flag to say if we
20765	should associate a DIE to its representation and another one to
20766	say if the association should be done per-tu or per-corpus.
20767	(read_context::lookup_{type_artifact, artifact}_from_die): Update
20768	apidoc.
20769	(read_context::lookup_artifact_from_die_representation): Likewise.
20770	(read_context::{associate_die_to_artifact_by_repr,
20771	associate_die_to_artifact_by_repr_internal,
20772	associate_die_to_type}): Take a flag to say if the associating
20773	should be done on a per-tu basis.
20774	(read_context::lookup_{type_artifact, artifact}_from_die_per_tu):
20775	New member functions.
20776	(read_context::{lookup_artifact_from_per_tu_die_representation,
20777	odr_is_relevant}): Likewise.
20778	(build_enum_type, add_or_update_class_type)
20779	(add_or_update_union_type): If ODR is not relevant, do not perform
20780	per-corpus de-duplication.
20781	(build_pointer_type_def, build_typedef_type): Do not associate the
20782	type to its representation as these kinds of typs are not
20783	de-duplicated.
20784	(build_function_type):  If ODR is not relevant, perform per-tu
20785	de-duplication.  When ODR is relevant, per-corpus de-duplication
20786	is performed.
20787	(build_or_get_fn_decl_if_not_suppressed): Function decls are
20788	always de-duplicated per-corpus.
20789	(build_ir_node_from_die): For data members, do not update the die
20790	representation map as data members are not de-duplicated.  Do not
20791	do it for function decls either.
20792	[1]: https://en.wikipedia.org/wiki/One_Definition_Rule
20793
207942017-01-02  Dodji Seketeli <dodji@redhat.com>
20795
20796	Handle per translation unit and per corpus types maps
20797	* include/abg-fwd.h (lookup_type_in_corpus): Remove.  This is to
20798	be replaced by the new lookup_type below.
20799	(lookup_{basic, class, union, enum, typedef, qualified, pointer,
20800	reference, array, function, class_or_typedef,
20801	class_typedef_or_enum}_type):
20802	(lookup_class_type_through_scopes, lookup_type)
20803	(lookup_type_through_scopes, lookup_or_synthesize_fn_type)
20804	* src/abg-ir-priv.h (struct translation_unit::priv):  Move this
20805	private type here, from abg-ir.h.
20806	(synthesize_type_from_translation_unit): Declare new functions.
20807	* include/abg-ir.h (class type_maps): Define new type.
20808	(translation_unit::get_function_types): Remove.
20809	(translation_unit::get_types): Now return a type_maps.
20810	(translation_unit::get_live_fn_types): Declare new type.
20811	(class decl_base): Make canonicalize be a friend of this class.
20812	* src/abg-ir.cc (struct translation_unit::priv): Move this to
20813	abg-ir-priv.h
20814	(struct type_maps::priv): Define new type.
20815	(type_maps::{basic, class, union, enum, typedef, qualified,
20816	pointer, reference, array, function}_types): Define new accessors.
20817	(translation_unit::bind_function_type_life_time): Adjust.
20818	(translation_unit::get_function_types): Remove accessor.
20819	(translation_unit::get_types, get_live_fn_types): Define new
20820	accessors.
20821	(lookup_type_in_translation_unit)
20822	(lookup_class_type_in_translation_unit)
20823	(lookup_function_type_in_translation_unit)
20824	(synthesize_type_from_translation_unit)
20825	(synthesize_function_type_from_translation_unit)
20826	(lookup_class_type_in_translation_unit) Remove function
20827	definitions.
20828	(lookup_type_in_map): Define function template.
20829	(lookup_{basic, class, union, typedef, class_or_typedef,
20830	class_typedef_or_enum, qualified, pointer, reference, array,
20831	function}_type): Define functions.
20832	(lookup_function_type, lookup_type_through_scopes)
20833	(lookup_class_type_through_scopes)
20834	(lookup_basic_type_through_translation_units)
20835	(lookup_union_type_through_translation_units)
20836	(lookup_enum_type_through_translation_units)
20837	(lookup_class_type_through_translation_units)
20838	(lookup_typedef_type_through_translation_units)
20839	(lookup_qualified_type_through_translation_units)
20840	(lookup_pointer_type_through_translation_units)
20841	(lookup_reference_type_through_translation_units)
20842	(lookup_array_type_through_translation_units)
20843	(lookup_function_type_through_translation_units)
20844	(lookup_type_through_translation_units)
20845	(lookup_or_synthesize_fn_type, lookup_type): Likewise.
20846	(maybe_update_types_lookup_map)
20847	(maybe_update_types_lookup_map<class_decl>)
20848	(maybe_update_types_lookup_map<function_type>): Define function
20849	template, specilizations and functions.
20850	(synthesize_type_from_translation_unit)
20851	(synthesize_function_type_from_translation_unit): Define
20852	functions.
20853	* include/abg-corpus.h (corpus::get_types): Declare new accessor.
20854	* src/abg-corpus.cc (corpus::priv::get_types): Define new
20855	accessor.
20856	(corpus::get_types): Likewise.
20857	(lookup_type_in_corpus, lookup_class_type_in_corpus)
20858	(lookup_type_in_corpus, lookup_function_type_in_corpus)
20859	(maybe_update_types_lookup_map)
20860	(maybe_update_types_lookup_map<class_decl>)
20861	(maybe_update_types_lookup_map<function_type>): Remove.
20862	(lookup_{basic, class, union, enum, typedef, qualified, pointer,
20863	reference, array, function, class_or_typedef,
20864	class_typedef_or_enum}_type): Likewise.
20865	* src/abg-corpus-priv.h (corpus::priv::{basic, class, union,
20866	typedef, qualified, pointer, reference, array, function}_types):
20867	Remove these data members.
20868	(corpus::priv::get_scopes): Remove member function.
20869	(corpus::priv::get_{basic, class, union, enum, typedef, qualified,
20870	pointer, reference, array, function}_types): Remove member
20871	function declarations.
20872	(corpus::priv::types_): New data member.
20873	(corpus::priv::get_types): Declare new member function.
20874	(lookup_{basic, class, enum, typedef, class_or_typedef, qualified,
20875	pointer, reference, array, function}_type): Declare new functions.
20876	* src/abg-dwarf-reader.cc
20877	(read_context::resolve_declaration_only_classes)
20878	(build_translation_unit_and_add_to_ir): Adjust use of
20879	lookup_class_type.
20880	* src/abg-reader.cc (read_context::type_is_from_translation_unit):
20881	Adjust to the use of lookup_function_type_in_translation_unit that
20882	got renamed into lookup_function_type.
20883	* src/abg-writer.cc (type_ptr_cmp::operator()): New operator
20884	implementation.
20885	(read_context::sort_type): Add new overloads.
20886	(write_translation_unit): Adjust to get the function types from
20887	the new translation_unit::get_live_fn_types and sort them.
20888	* tools/abicompat.cc (perform_compat_check_in_weak_mode): Adjust
20889	to use the new lookup_or_synthesize_fn_type, in lieu of
20890	lookup_function_type_in_corpus.  Adjust to use lookup_type in lieu
20891	of lookup_type_in_corpus.
20892
208932016-12-21  Dodji Seketeli <dodji@redhat.com>
20894
20895	Make abg-fwd.h use *_sptr typedefs
20896	* include/abg-ir.h: Move convience typedef declarations and some
20897	necessary forward declarations to ...
20898	* include/abg-fwd.h: ... here.
20899	(is_enum_type, is_var_decl): Take a pointer to type_or_decl_base.
20900	(lookup_type_in_scope): Return a type_base_sptr.
20901	(lookup_type_through_scopes): Introduce this to later replace the
20902	overload of lookup_type_in_translation_unit that takes a list of
20903	strings.
20904	(lookup_type_in_scope): Return a type_base_sptr, not a
20905	decl_base_sptr.
20906	* src/abg-ir.cc (lookup_type_in_scope, lookup_node_in_scope)
20907	(lookup_var_decl_in_scope): Adjust.
20908	(is_enum_type, is_var_decl): Take a pointer to type_or_decl_base.
20909	(lookup_node_in_scope): Return a type_or_decl_base_sptr.
20910	(lookup_type_in_scope): Return a type_base_sptr.
20911	(lookup_node_in_translation_unit): Return a
20912	type_or_decl_base_sptr.
20913	(lookup_type_through_scopes): Replace
20914	lookup_type_in_translation_unit.
20915
209162016-12-18  Chenxiong Qi <cqi@redhat.com>
20917
20918	Fix wrong variable name
20919	* tools/fedabipkgdiff: (diff_latest_rpms_based_on_distros): Fix
20920	wrong variable name distro.
20921
209222016-12-18  Chenxiong Qi <cqi@redhat.com>
20923
20924	Warn properly when cannot find peer RPM
20925	* tools/fedabipkgdiff: (RPMCollection.get_peer_rpm): Return None
20926	when cannot find peer RPM due to nonexistent arch.
20927
209282016-12-19  Chenxiong Qi <cqi@redhat.com>
20929
20930	Read Koji config via Koji API
20931	* tools/fedabipkgdiff: Read DEFAULT_KOJI_TOPURL and
20932	DEFAULT_KOJI_SERVER from Koji config via Koji API read_config.
20933	(build_commandline_args_parser): --topdir is renamed to
20934	--topurl.
20935	* doc/manuals/fedabipkgdiff.rst: Rename --topdir to --topurl.
20936
209372016-12-19  Chenxiong Qi <cqi@redhat.com>
20938
20939	Follow moved packages when download
20940	* tools/fedabipkgdiff: (download_rpm) Add --location to curl
20941	CLI.
20942
209432016-12-13  Chenxiong Qi <cqi@redhat.com>
20944
20945	More document for local RPMs comparison
20946	* doc/manuals/fedabipkgdiff.rst: Add more document for local RPMs
20947	comparison. Also fixed a typo.
20948
209492016-12-15  Ondrej Oprala <ondrej.oprala@gmail.com>
20950
20951	Properly report missing files for abipkgdiff
20952	* tools/abipkgdiff.cc: (class options): Add the "nonexistent_file" flag
20953	(parse_command_line): Check if the files given exist.
20954	(main): Check the nonexistent_file flag. If any of the input
20955	files don't exist, report it and exit. Also, for present and future test
20956	uniformity, only show the base names of the packages when using their
20957	names in error output.
20958	* tests/test-diff-pkg.cc: Add a new regression test.
20959	* tests/data/test-diff-pkg/test-nonexistent-report-0.txt: The
20960	expected output of the above regression test.
20961	* tests/data/Makefile.am: Add the above file to the list.
20962
209632016-12-15  Dodji Seketeli <dodji@redhat.com>
20964
20965	Misc style cleanup
20966	* src/abg-dwarf-reader.cc (build_function_type): Remove
20967	unnecessary new line.
20968
209692016-12-15  Dodji Seketeli <dodji@redhat.com>
20970
20971	make is_anonymous_type work for unions and classes
20972	* src/abg-ir.cc (is_anonymous_type): Make this work for class or
20973	union types, no only classes.
20974
209752016-12-15  Dodji Seketeli <dodji@redhat.com>
20976
20977	Naming typedefs of classes are not read properly from abixml
20978	* src/abg-reader.cc (build_class_decl): Use
20979	read_context::build_or_get_type_decl rather than
20980	read_context::get_type_decl to build the naming typedef referred
20981	to by the class being built.  Move the handling of naming typedefs
20982	after the class is marked as WIP and keyed.
20983
209842016-12-15  Dodji Seketeli <dodji@redhat.com>
20985
20986	Don't early-canonicalize function types when reading abixml
20987	* src/abg-reader.cc (read_context::maybe_canonicalize_type):
20988	late-canonicalize function types too.
20989
209902016-12-12  Ondrej Oprala <ondrej.oprala@gmail.com>
20991
20992	Check --enable-rpm dependencies more rigorously
20993	* configure.ac: Check if both rpm2cpio and cpio
20994	exist on the system. If not, disable the option and fail the
20995	configuration if --enable-rpm was specified explicitly.
20996
209972016-12-12  Ondrej Oprala <ondrej.oprala@gmail.com>
20998
20999	abipkgdiff doesn't mention --no-default-suppression in help
21000	* tools/abipkgdiff.cc (display_usage): Mention
21001	--no-default-suppression as one of the options.
21002
210032016-12-12  Ondrej Oprala <ondrej.oprala@gmail.com>
21004
21005	Fix a few remarks made by cppcheck
21006	* src/abg-comparison.cc (types_or_decls_equal::operator()): Pass
21007	arguments by reference.
21008	(class_diff::ensure_lookup_tables_populated): Expression
21009	!A || (A && B) can be reduced to !A || B.
21010	* src/abg-suppression.cc (suppression_matches_type_no_name):
21011	Likewise.
21012
210132016-12-09  Ondrej Oprala <ondrej.oprala@gmail.com>
21014
21015	Bug 19272 - abipkgdiff doesn't report arch change
21016	* src/abg-comparison.cc (corpus_diff::has_incompatible_changes):
21017	The architecture change into account.
21018	(corpus_diff::has_net_changes): Take architecture and soname
21019	changes into account.
21020	* tools/abicompat.cc (perform_compat_check_in_normal_mode): Use
21021	corpus_diff::{has_net_changes, has_incompatible_changes}.
21022	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.armv7hl.rpm: New
21023	test input.
21024	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
21025	New test reference output.
21026	* tests/data/Makefile.am: Add the new test material above to
21027	source distribution.
21028	* tests/test-diff-pkg.cc (in_out_spec): Compare the new package
21029	above against an x86_64 one.
21030
210312016-08-11  Chenxiong Qi <cqi@redhat.com>
21032
21033	Bug 20380 - Compare two local RPMs
21034	* configure.ac: add dependent mimetype module.
21035	* doc/manuals/fedabipkgdiff.rst: Update to add document for the
21036	new use case of comparing two local RPMs.
21037	* tests/data/Makefile.am: Include new RPMs for tests.
21038	* tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.100.2-2.fc20.x86_64.rpm:
21039	New RPM for running test.
21040	* tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.106-1.fc23.x86_64.rpm:
21041	Likewise.
21042	* tests/data/test-fedabipkgdiff/nss-util/nss-util-3.12.6-1.fc14.x86_64.rpm:
21043	Likewise.
21044	* tests/data/test-fedabipkgdiff/nss-util/nss-util-3.24.0-2.0.fc25.x86_64.rpm:
21045	Likewise.
21046	* tests/data/test-fedabipkgdiff/nss-util/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm:
21047	Likewise.
21048	* 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:
21049	Rename filename by adding .rpm extension.
21050	* 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:
21051	New reference output for testing comparing local RPMs.
21052	* 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:
21053	New reference output for testing comparison without non-existent
21054	debuginfo or development package.
21055	* tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
21056	Rename filename for test4. Add two new test cases.
21057	(run_fedabipkgdiff_tests): Remove semicolon and trailing
21058	whitespaces.
21059	(main): Likewise.
21060	(ensure_output_dir_created): Likewise.
21061	* tools/fedabipkgdiff: Require some new modules.
21062	Fix of return code.
21063	(PkgInfo): Renamed to ComparisonHalf.
21064	(match_nvr): New method to determine if a string matches format
21065	of N-V-R.
21066	(match_nvra): New method to determine if a string matches format
21067	of N-V-R.A.
21068	(is_rpm_file): New method to guess if a file is a RPM file.
21069	(RPM.is_peer): New method to determine if current RPM is a peer
21070	of another.
21071	(RPM.filename): Use Koji module API to construct the filename.
21072	(RPM.nvra): Get nvra from filename instead of constructing
21073	manually that is duplicated with Koji module API.
21074	(RPMCollection): New class to represent a set of RPMs.
21075	(generate_pkg_info_pair_for_abipkgdiff): New method working as a
21076	generator to yeild comparison halves for running abipkgdiff.
21077	(Brew.getRPM): Fix string format with incorrect argument.
21078	(Brew.select_rpms_from_a_build): Return instance of
21079	RPMCollection.
21080	(abipkgdiff): If there is no debuginfo or development package,
21081	just ignore it and leave a warning. If --error-on-warning is
21082	specified, raise an exception instead. Arguments are modified
21083	to represent the new name ComparisonHalf, and relative docstring
21084	is also updated.
21085	(magic_construct): Removed.
21086	(run_abipkgdiff): Rewrite.
21087	(make_rpms_usable_for_abipkgdiff): Removed.
21088	(diff_local_rpm_with_latest_rpm_from_koji): Rewrite by using
21089	RPMCollection.
21090	(diff_latest_rpms_based_on_distros): Likewise.
21091	(diff_two_nvras_from_koji): Likewise.
21092	(diff_from_two_rpm_files): New method to compare two local RPMs.
21093	(build_commandline_args_parser): Add new option
21094	--error-on-warning.
21095	(main): Add support to compare local RPMs.
21096
210972016-12-12  Dodji Seketeli <dodji@redhat.com>
21098
21099	Fix template_decl::hash::operator()
21100	* src/abg-hash.cc (template_decl::hash::operator()): Combine the
21101	contribution of the qualified name to the contribution of the type
21102	name to the hash.
21103
211042016-12-09  Dodji Seketeli <dodji@redhat.com>
21105
21106	Fix aborting when reading .foo symbols from a ppc64 binary
21107	* abg-dwarf-reader.cc (read_context::find_opd_section): Fix
21108	comment.
21109	(read_context::load_symbol_maps): If for a given function entry
21110	point (that we got by looking at the ".opd" section for a given
21111	function pointer value) we already had an entry in the
21112	function_entry_address -> symbol, maybe it means that the previous
21113	entry that we had was from an entry in the symbol table which
21114	value was directly the entry point address of a function.  In that
21115	case, if the name of the symbol is "foo", the name of the symbol
21116	which value is directly the entry point address is ".foo".  What
21117	we do in this case is that we just keep the reference to the "foo"
21118	symbol in the function_entry_address -> symbol map.
21119	(read_context::address_is_in_opd_section): Define new member
21120	function.
21121	* tests/data/test-diff-pkg/gmp-4.3.1-10.el6.ppc64.rpm: New test input.
21122	* tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64.rpm: Likewise.
21123	* tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-10.el6.ppc64.rpm: Likewise.
21124	* tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-7.el6_2.2.ppc64.rpm: Likewise.
21125	* tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64--gmp-4.3.1-10.el6.ppc64-report-0.txt:
21126	New test reference output.
21127	* tests/data/Makefile.am: Add the new test input and reference
21128	output to source distribution.
21129	* tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
21130	and reference output to the set of inputs that are compared.
21131
211322016-12-05  Dodji Seketeli <dodji@redhat.com>
21133
21134	Bug 20927 - Segfault when $HOME is not set
21135	* src/abg-tools-utils.cc
21136	(get_default_user_suppression_file_path): Handle the case where
21137	the HOME environment variable is not set.
21138	* tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
21139	Likewise.  When $HOME is empty set then use $TMPDIR.  If it's
21140	empty too then use "/tmp".
21141
211422016-12-02  Dodji Seketeli <dodji@redhat.com>
21143
21144	Bug 20887 - Show relative change of offsets
21145	* doc/manuals/abidiff.rst: Document the new
21146	--no-show-relative-offset-changes.
21147	* doc/manuals/abipkgdiff.rst: Likewise.
21148	* include/abg-comparison.h
21149	(diff_context::show_relative_offset_changes): New accessors.
21150	* include/abg-ir.h ({set,get}_data_member_offset): Return uint64_t
21151	instead of the less portable size_t.
21152	* src/abg-comparison.cc
21153	(diff_context::priv::show_relative_offset_changes_): New data
21154	member.
21155	(dif_context::show_relative_offset_changes): Define accessor.
21156	(maybe_show_relative_offset_change): Define new function.
21157	(represent): In the overload for var_diff, call the new
21158	maybe_show_relative_offset_change.
21159	(report_size_and_alignment_changes):  If the size of the type
21160	didn't change then say it now.
21161	* src/abg-ir.cc (set_data_member_offset, get_data_member_offset):
21162	Take or return a uint64_t instead of a size_t.
21163	* tools/abidiff.cc (options::show_relative_offset_changes): New
21164	data member.
21165	(options::options): Initialize it.
21166	(display_usage): Display help string for the new
21167	--no-show-relative-offset-changes.
21168	(parse_command_line): Parse the new
21169	--no-show-relative-offset-changes options.
21170	(set_diff_context_from_opts): Set the
21171	"show-relative-offset-changes" flag according to the new option.n
21172	* tools/abipkgdiff.cc (options::show_relative_offset_changes): New
21173	data member.
21174	(options::options): Initialize it.
21175	(display_usage): Add help string for the new
21176	--no-show-relative-offset-changes option.
21177	(set_diff_context_from_opts): Set the
21178	"show-relative-offset-changes" flag according to the new option.
21179	(parse_command_line): Parse the new command line option.
21180	* tests/data/test-diff-dwarf/test40-report-0.txt: Add new
21181	reference output.
21182	* tests/data/test-diff-dwarf/test40-v0.c: Source code of the first
21183	test binary.
21184	* tests/data/test-diff-dwarf/test40-v1.c: Source code of the
21185	second test binay.
21186	* tests/data/test-diff-dwarf/libtest40-v0.so: New first test binary.
21187	* tests/data/test-diff-dwarf/libtest40-v1.so: New second test binary.
21188	* tests/test-diff-dwarf.cc (in_out_spec): Add the new test
21189	binaries above to the set of binaries that are compared.
21190	* tests/data/Makefile.am: Add the new test material to source
21191	distribution.
21192	* tests/data/test-abicompat/test7-fn-changed-report-0.txt: Adjust.
21193	* tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
21194	* tests/data/test-abidiff/test-enum0-report.txt: Likewise.
21195	* tests/data/test-abidiff/test-enum1-report.txt: Likewise.
21196	* tests/data/test-abidiff/test-struct1-report.txt: Likewise.
21197	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
21198	* tests/data/test-diff-dwarf/test1-report.txt: Likewise.
21199	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
21200	* tests/data/test-diff-dwarf/test11-report.txt: Likewise.
21201	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
21202	* tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise.
21203	* tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: Likewise.
21204	* tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise.
21205	* tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise.
21206	* tests/data/test-diff-dwarf/test38-union-report-0.txt: Likewise.
21207	* tests/data/test-diff-dwarf/test4-report.txt: Likewise.
21208	* tests/data/test-diff-dwarf/test5-report.txt: Likewise.
21209	* tests/data/test-diff-dwarf/test6-report.txt: Likewise.
21210	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
21211	* tests/data/test-diff-filter/test0-report.txt: Likewise.
21212	* tests/data/test-diff-filter/test01-report.txt: Likewise.
21213	* tests/data/test-diff-filter/test1-report.txt: Likewise.
21214	* tests/data/test-diff-filter/test13-report.txt: Likewise.
21215	* tests/data/test-diff-filter/test16-report-2.txt: Likewise.
21216	* tests/data/test-diff-filter/test16-report.txt: Likewise.
21217	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
21218	* tests/data/test-diff-filter/test17-1-report.txt: Likewise.
21219	* tests/data/test-diff-filter/test18-report.txt: Likewise.
21220	* tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
21221	* tests/data/test-diff-filter/test2-report.txt: Likewise.
21222	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt:
21223	Likewise.
21224	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
21225	Likewise.
21226	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt:
21227	Likewise.
21228	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt:
21229	Likewise.
21230	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.t:
21231	Likewise.xt
21232	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt:
21233	Likewise.
21234	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt:
21235	Likewise.
21236	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt:
21237	Likewise.
21238	* tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt:
21239	Likewise.
21240	* tests/data/test-diff-filter/test3-report.txt: Likewise.
21241	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
21242	Likewise.
21243	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
21244	Likewise.
21245	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
21246	Likewise.
21247	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
21248	Likewise.
21249	* 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.
21250	* 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.
21251	* 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.
21252	* 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.
21253	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise.
21254	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise.
21255	* tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise.
21256	* tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise.
21257	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
21258	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
21259	* tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise.
21260	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
21261	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
21262	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise.
21263	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
21264	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
21265	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
21266	* tests/data/test-diff-suppr/test30-report-0.txt: Likewise.
21267	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise.
21268	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise.
21269	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise.
21270	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
21271	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
21272	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
21273	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
21274	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
21275	* tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise.
21276	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise.
21277	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise.
21278	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise.
21279	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise.
21280	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
21281	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
21282	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
21283	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
21284	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
21285	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
21286	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise.
21287
212882016-12-02  Dodji Seketeli <dodji@redhat.com>
21289
21290	Rename tests/update-test-read-dwarf-output.py
21291	* tests/update-test-output.py: renamed
21292	tests/update-test-read-dwarf-output.py into this.  Update its
21293	comments.  Make this script executable.
21294
212952016-11-30  Dodji Seketeli <dodji@redhat.com>
21296
21297	Add tests/data/test-diff-suppr/test33-report-0.txt to tarball
21298	* tests/data/Makefile.am: Add test-diff-suppr/test33-report-0.txt.
21299
213002016-11-30  Dodji Seketeli <dodji@redhat.com>
21301
21302	Bug 20670 - abipkgdiff aborts if $XDG_CACHE_HOME does not exist
21303	* tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
21304	Ensure that the cache directory is created, even when
21305	XDG_CACHE_HOME is set.  Also, remove the now useless "using
21306	abigail::tools_utils::get_random_number_as_string" statement.
21307
213082016-11-09  Dodji Seketeli <dodji@redhat.com>
21309
21310	Very light speed improvements
21311	* include/abg-comp-filter.h (has_harmless_name_change): Pass smart
21312	pointers by reference.
21313	* src/abg-comp-filter.cc (access_changed)
21314	(function_name_changed_but_not_symbol)
21315	(non_static_data_member_type_size_changed)
21316	(static_data_member_type_size_changed, is_compatible_change)
21317	(decl_name_changed, has_harmless_name_change):  Pass smart
21318	pointers by reference.
21319	* include/abg-ir.h (decl_base::set_context_rel): Take a bare
21320	pointer, not a smart pointer.
21321	* src/abg-ir.cc (decl_base::priv::context_): Make this data member
21322	be a naked pointer, not a smart pointer.
21323	(decl_base::priv::priv): Initialize it.
21324	(decl_base::priv::~priv): New constructor.
21325	(decl_base::{get_context_rel, set_scope}): Adjust.
21326	(class_decl::method_decl::{method_decl, set_scope}): Likewise.
21327	(equals): In the overload for var_decl, compare the type of the
21328	var first as that might be faster (to detect var_decls with
21329	different types) in the general case where types are
21330	canonicalized.
21331
213322016-11-08  Dodji Seketeli <dodji@redhat.com>
21333
21334	Introduce on-the-fly type canonicalization
21335	* include/abg-ir.h (environment::do_on_the_fly_canonicalization):
21336	Declare new member functions.
21337	({type_base, function_type}::priv_): Make this public so that
21338	static non-member functions defined in abg-ir.cc can access it.
21339	* src/abg-ir.cc
21340	(environment::priv::do_on_the_fly_canonicalization_): New data
21341	member.
21342	(environment::priv::priv): Initialize it.
21343	(environment::do_on_the_fly_canonicalization): Define new member
21344	functions.
21345	(type_base::get_canonical_type_for): Trigger on-the-fly
21346	canonicalization during comparison of the type being canonicalized
21347	and an already canonicalized type.
21348	(types_are_being_compared, maybe_propagate_canonical_type): Define
21349	new static functions.
21350	(equals): In overloads for class_decl and function_type, call
21351	maybe_propagate_canonical_type when the two types compare equal.
21352	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
21353	Adjust.
21354	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
21355
213562016-11-06  Dodji Seketeli <dodji@redhat.com>
21357
21358	Fix pretty representation of array types
21359	* include/abg-ir.h (array_type_def::is_infinite): Fix indentation.
21360	* src/abg-ir.cc (qualified_type_def::build_name): An empty set of
21361	sub-ranges for a vector is represented by "[]".
21362	(array_type_def::is_infinite): If a vector has no sub-range, that
21363	means it has an infinite size.  Adjust comment.
21364	* tests/data/test-diff-filter/test33-report-0.txt: Adjust.
21365	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
21366	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
21367	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
21368	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
21369	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
21370	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
21371	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
21372	Adjust.
21373	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
21374	Adjust.
21375	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
21376
213772016-10-11  Dodji Seketeli <dodji@redhat.com>
21378
21379	Support naming typedef and use them to speed up type canonicalization
21380	* include/abg-ir.h (typedef_decl_wptr): New typedef.
21381	(class_decl::{g,s}et_naming_typedef): Declare new member
21382	functions.
21383	* src/abg-dwarf-reader.cc (build_typedef_type): When the
21384	underlying type of a typedef is an anonymous class, the class type
21385	is said to have a naming typedef.
21386	* src/abg-ir.cc (is_anonymous_type):  An anonymous class that has
21387	a naming typedef is said to not be anonymous anymore.
21388	(class_decl::priv::naming_typedef): New data member.
21389	(class_decl::{g,s}et_naming_typedef): Define new member functions.
21390	(class_decl::get_pretty_representation): When called for internal
21391	purposes (e.g, for type canonicalization) compute the pretty
21392	representation of the class by using its typedef name, when class
21393	is anonymous and has a naming typedef.
21394	* src/abg-reader.cc (build_class_decl): Read the new
21395	"naming-typedef-id" attribute.
21396	* src/abg-writer.cc (write_naming_typedef): New function.
21397	(write_class_decl_opening_tag): Use the new write_naming_typedef
21398	function.
21399	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
21400	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
21401	Likewise.
21402	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
21403	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
21404	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
21405	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
21406	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
21407	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
21408	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
21409	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
21410	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
21411	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
21412	Likewise.
21413	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
21414
214152016-11-02  Dodji Seketeli <dodji@redhat.com>
21416
21417	Implement de-duplication for types and decls at DWARF loading time
21418	* include/abg-ir.h (method_type::priv_): Introduce new pimpl
21419	pointer here.
21420	(method_type::class_type_): Move this into the pimpl idiom.
21421	(method_type::method_type): Take a new is_const flag.
21422	(method_type::get_class_type): Make this method out-of-line.
21423	(method_type::{s,g}et_is_const): Declare new member functions.
21424	(get_method_type_name): Declare this function as a friend of
21425	the method_type type.
21426	* src/abg-dwarf-reader.cc: Include the new abg-ir-priv.h and
21427	abg-corpus-priv.h.
21428	(typedef die_tu_map_type): Fix comment.
21429	(typedef die_istring_map_type): New typedef.
21430	(class read_context::die_source_dependant_container_set): New
21431	class template.
21432	(read_context::{die_qualified_name_maps_, die_pretty_repr_maps_,
21433	die_pretty_type_repr_maps_}): Define new data members.
21434	(read_context::{get_die_qualified_name, get_die_qualified_name,
21435	get_die_qualified_type_name, get_die_pretty_type_representation,
21436	get_die_pretty_representation, lookup_type_artifact_from_die,
21437	lookup_artifact_from_die, lookup_artifact_from_die_representation,
21438	associate_die_to_artifact_by_repr,
21439	associate_die_to_artifact_by_repr_internal,
21440	lookup_type_from_die}): Define new member functions.
21441	(read_context::lookup_type_from_die_offset): Fix comment.
21442	(get_parent_die, get_scope_die, die_is_decl)
21443	(die_is_namespace, die_is_unspecified, die_is_void_type)
21444	(die_is_pointer_type, die_is_reference_type)
21445	(die_is_pointer_or_reference_type, die_is_class_type)
21446	(die_has_object_pointer, die_this_pointer_from_object_pointer)
21447	(die_this_pointer_is_const, is_decl_tag)
21448	(die_object_pointer_is_for_const_method, die_is_at_class_scope)
21449	(die_name, die_qualified_type_name, die_qualified_decl_name)
21450	(die_qualified_name, die_qualified_type_name_empty)
21451	(die_return_and_parm_names_from_fn_type_die)
21452	(die_function_signature, die_peel_qual_ptr)
21453	(die_function_type_is_method_type, die_pretty_print_type)
21454	(die_pretty_print_decl, die_pretty_print)
21455	(build_subranges_from_array_type_die)
21456	(build_or_get_fn_decl_if_not_suppressed)
21457	(lookup_class_or_typedef_type)
21458	(lookup_class_typedef_or_enum_type_from_corpus)
21459	(is_function_for_die_a_member_of_class)
21460	(add_or_update_member_function): Define new static functions.
21461	(read_context::associate_die_to_decl): Call
21462	associate_die_to_artifact_by_repr.
21463	(read_context::{associate_die_to_type,
21464	schedule_type_for_late_canonicalization}): Take just one "die"
21465	parameter rather than taking a die offset and a die source; adjust
21466	accordingly.
21467	(maybe_canonicalize_type): Likewise.
21468	(finish_member_function_reading): Take a const reference to
21469	function_decl_sptr.
21470	(die_loc_and_name): Use the new die_name function.
21471	(die_is_type): Rename is_type_die into this.
21472	(build_type_decl): Take a new "where_offset" parameter.  Adjust.
21473	If a type of the same name as the one for the current DIE is is
21474	already present, do not create a new type; just return the
21475	already-existing one.
21476	(build_enum_type): Take a new "where_offset" parameter.  Adjust.
21477	(finish_member_function_reading): Pass two smart pointers by const
21478	reference.  Assert that the type of the member function is a
21479	method_type.  Some light cleanups.
21480	(add_or_update_class_type): Rename build_class_type_and_add_to_ir.
21481	If a DIE defining the same class has already been seen, then
21482	return that class; don't construct any other internal
21483	representation for the same class.  Better handle the updating of
21484	member data and functions.  Do not duplicate member types.
21485	(build_qualified_type, build_pointer_type_def)
21486	(build_reference_type): Support de-duplication here.
21487	(build_function_type): Likewise.  Support detection and building
21488	of method type.  This also supports *const* method type building.
21489	(build_array_type): Use the new
21490	build_subranges_from_array_type_die.
21491	(build_type_decl): Cleanup logic.
21492	(build_or_get_var_decl_if_not_suppressed): Renamed
21493	build_var_decl_if_not_suppressed into this.  Perform
21494	de-duplication for data members.
21495	(build_function_decl): Don't set an empty source location.  If the
21496	function type cannot be constructed, do not construct the function
21497	decl either.  Adjust.
21498	(build_ir_node_from_die): Adjust.  When building a function for a
21499	DW_TAG_subroutine_type DIE, use the new
21500	build_or_get_fn_decl_if_not_suppressed.
21501	* src/abg-ir.cc (translation_unit::bind_function_type_life_time):
21502	Fix comment.
21503	(strip_typedef): Adjust.
21504	(qualified_type_def::build_name): Set the prefix name of a the
21505	name of a noop qualifier to "noop-qual", just like what is done in
21506	the new die_qualified_name function.
21507	(struct method_type::priv): New priv type for the method_type
21508	class.
21509	(method_type::method_type): Take a new 'is_const' parameter.
21510	Adjust as the method_type is now pimpl'ed.
21511	(method_type::{get_class_type, set_is_const, get_is_const}):
21512	Define new member functions.
21513	(function_decl::get_pretty_representation_of_declarator): Better
21514	detecter of const-ness.
21515	(class_decl::insert_member_decl):  Better setting of the
21516	const-ness.
21517	(class_decl::method_decl::method_decl): Adjust.  Deduce the
21518	const-ness of the method_decl from the const-ness of its
21519	method_type.
21520	(copy_member_function): Adjust.
21521	(set_member_is_static): Do not assume a non-nil scope anymore
21522	because member_decl can now be scope-less, at least for a little
21523	while.
21524	* src/abg-reader.cc (push_decl_to_current_scope): Adjust.
21525	(build_function_decl): Style adjustment.  Adjust for method_type
21526	const-ness changes.
21527	(build_function_type): Likewise.  Also, support the new
21528	"method-class-id" property that flags a function type as being a
21529	method type.
21530	* src/abg-writer.cc (write_function_decl): Style fixes.
21531	(write_function_type): Likewise.  Emit a new "method-class-id"
21532	property for function type that is actually a method type.  That
21533	property's value is the id of the class of the method type.
21534	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Adjust.
21535	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
21536	* tests/data/test-diff-filter/test0-report.txt: Adjust.
21537	* tests/data/test-diff-filter/test01-report.txt: Adjust.
21538	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
21539	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
21540	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
21541	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
21542	* 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.
21543	* 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.
21544	* 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.
21545	* 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.
21546	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
21547	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
21548	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
21549	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
21550	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
21551	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
21552	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
21553	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
21554	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
21555	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
21556	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
21557	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
21558	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
21559	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
21560	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
21561	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
21562	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust.
21563	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
21564
215652016-11-01  Dodji Seketeli <dodji@redhat.com>
21566
21567	Setup per-corpus type maps indexed by type names
21568	* include/abg-corpus.h (corpus::priv_): Make this public so that
21569	functions from outside of the class can access it.  These
21570	functions are meant to be used only by code that is *inside*
21571	libabigail.so, though.
21572	* src/abg-corpus-priv.h: New file.
21573	* src/abg-corpus.cc: Include the new abg-corpus-priv.h file.
21574	(struct regex_t_deleter): Move this to abg-sptr-utils.h.
21575	(build_sptr<regex_t>): Move the declaration of this function
21576	template specialization to abg-sptr-utils.h and its definition to
21577	abg-sptr-utils.cc.
21578	(typedef regex_t_sptrs_type, typedef str_var_ptr_map_type)
21579	(struct corpus::exported_decls_builder::priv, struct
21580	corpus::priv): Move these declarations to the new
21581	abg-corpus-priv.h.
21582	(maybe_update_types_lookup_map): Define overloads of this (one per
21583	kind of type).
21584	(lookup_{basic, class, enum, typedef, class_or_typedef,
21585	class_typedef_or_enum, qualified, pointer, reference, array,
21586	function}_type): Define new functions.
21587	* include/abg-ir.h (typedef istring_type_base_wptr_map_type)
21588	(typedef istring_type_or_decl_base_sptr_map_type): Declare new
21589	typedefs.
21590	(class_decl::find_member_function_from_signature): Declare new
21591	member function.
21592	* src/abg-ir.cc: Include the new abg-corpus-priv.h file.
21593	(maybe_update_types_lookup_map): Remove this initial function.
21594	There are now new overloads in abg-corpus.cc for it.
21595	(scope_decl::{add_member_decl, insert_member_decl}): Adjust.
21596	(class_decl::{set_is_declaration_only, find_member_function,
21597	add_member_function}): Adjust.
21598	(class_decl::find_member_function_from_signature): Define new
21599	member function.
21600	* include/abg-sptr-utils.h (struct regex_t_deleter): Declare new
21601	type.
21602	(build_sptr<regex_t>): New build function template
21603	specializations.
21604	* src/abg-sptr-utils.cc: New file.
21605	* src/Makefile.am: Add src/abg-sptr-utils.cc and
21606	src/abg-corpus-priv.h to the build system.
21607
216082016-11-01  Dodji Seketeli <dodji@redhat.com>
21609
21610	Allow pretty printing function decls for internal purposes
21611	* include/abg-ir.h
21612	(function_decl::get_pretty_representation_of_declarator): Take an
21613	"internal" flag.
21614	* src/abg-ir.cc
21615	(function_decl::get_pretty_representation_of_declarator): Take an
21616	"internal" flag.
21617	(function_decl::get_pretty_representation): Pass the "internal"
21618	flag to the function
21619	function_decl::get_pretty_representation_of_declarator.
21620	(function_decl::parameter::get_type_name):  Better handle variadic
21621	parameter type.
21622	(function_decl::parameter::get_type_pretty_representation):
21623	Likewise.
21624
216252016-11-26  Dodji Seketeli <dodji@redhat.com>
21626
21627	Make bash completion files non-executable
21628	* bash-completion/abicompat: Make this be non-executable.
21629	* bash-completion/abidiff: Likewise.
21630	* bash-completion/abidw: Likewise.
21631	* bash-completion/abilint: Likewise.
21632	* bash-completion/abinilint: Likewise.
21633	* bash-completion/abipkgdiff: Likewise.
21634	* bash-completion/abisym: Likewise.
21635	* bash-completion/fedabipkgdiff: Likewise.
21636
216372016-11-26  Dodji Seketeli <dodji@redhat.com>
21638
21639	A suppressed diff node implies suppressing all equivalent nodes too
21640	*class of equivalence* is visited once.  This is not only a way to
21641	prevent infinite loops while visiting the graph, but also an
21642	optimization as it avoids walking two equivalent diff nodes.
21643	But then it can happen that we forget to categorize some diff nodes
21644	inside a given class of equivalence, even though we categorized some
21645	others.
21646	This patch makes it so that when a diff node inside a class of
21647	equivalence is categorized as SUPPRESSED, the canonical diff node of
21648	that class of equivalence is categorized as SUPPRESSED too.  That way,
21649	to know if a diff node is suppressed, we just need to look at its
21650	canonical diff node.
21651	While doing this, I noticed that abidiff and abipkgdiff are not
21652	dropping private types from libabigail's internal representation, even
21653	though the Library now has that capability.  The patch fixes that.
21654	But then the patch adds a --dont-drop-private-types option to abidiff
21655	to avoid dropping those private types from the IR, so that regression
21656	tests can make sure that a suppressed diff node implies suppression
21657	all equivalent nodes too.
21658	* doc/manuals/abidiff.rst b/doc/manuals/abidiff.rst: Document the
21659	new --dont-drop-private-types option.
21660	* src/abg-comparison.cc (diff::is_filtered_out): If the canonical
21661	type was suppressed then the current diff node is filtered out.
21662	(suppression_categorization_visitor::visit_{begin,end}):
21663	Categorized the canonical node as SUPPRESSED if the current node
21664	is suppressed.
21665	* tools/abidiff.cc (options::drop_private_types): New data member.
21666	(options::options): Initialize it.
21667	(display_usage): Add new help string for the new
21668	--dont-drop-private-types option.
21669	(parse_command_line): Parse the new --dont-drop-private-types
21670	option.
21671	(set_suppressions): Generate suppression specification from header
21672	directories given in parameter and stick them to the read context.
21673	* tools/abipkgdiff.cc (compare): Likewise.
21674	* tests/data/test-diff-suppr/libtest34-v0.so: New test input.
21675	* tests/data/test-diff-suppr/libtest34-v1.so: Likewise.
21676	* tests/data/test-diff-suppr/test34-report-0.txt: New reference
21677	report.
21678	* tests/data/test-diff-suppr/test34-v0.c: Source code for the new
21679	test input.
21680	* tests/data/test-diff-suppr/test34-v1.c: Likewise.
21681	* tests/data/test-diff-suppr/test34-priv-include-dir-v0/test34-priv-include-v0.h:
21682	Likewise.
21683	* tests/data/test-diff-suppr/test34-priv-include-dir-v1/test34-priv-include-v1.h:
21684	Likewise.
21685	* tests/data/test-diff-suppr/test34-pub-include-dir-v0/test34-pub-include-v0.h:
21686	Likewise.
21687	* tests/data/test-diff-suppr/test34-pub-include-dir-v1/test34-pub-include-v1.h:
21688	Likewise.
21689	* tests/data/Makefile.am: Add new test input material above to
21690	source distribution.
21691	* tests/test-diff-suppr.cc (in_out_spec): Compare the two new test
21692	library provided.  Add --dont-drop-private-types to test30*.
21693	signed-off-by: Dodji Seketeli <dodji@redhat.com>
21694
216952016-11-26  Dodji Seketeli <dodji@redhat.com>
21696
21697	Forgot to consider libtest33-v{0,1}.so in test-diff-suppr.cc
21698	* tests/data/test-diff-suppr/test33-report-0.txt: New refernce report.
21699	* tests/test-diff-suppr.cc (in_out_specs): Compare libtest33-v0.so
21700	and libtest33-v1.so.
21701
217022016-11-24  Dodji Seketeli <dodji@redhat.com>
21703
21704	Bump version number to 1.0.rc7
21705	* configure.ac:
21706
217072016-11-24  Dodji Seketeli <dodji@redhat.com>
21708
21709	Update website for 1.0.rc6
21710	* doc/website/mainpage.txt: Update for 1.0.rc6 release
21711
217122016-11-23  Dodji Seketeli <dodji@redhat.com>
21713
21714	Update NEWS and ChangeLog for 1.0.rc6
21715	* ChangeLog: Update this automatically using "make
21716	update-changelog".
21717	* NEWS: update this by editing the output of 'git shortlog
21718	libabigail-1.0.rc5..HEAD'.
21719
217202016-11-24  Dodji Seketeli <dodji@redhat.com>
21721
21722	Avoid using size_t to get DWARF data
21723	* src/abg-dwarf-reader.cc (die_size_in_bits, die_location_expr):
21724	Take uint64_t rather than size_t and adjust.
21725	(expr_result::const_value_): Make this be int64_t rather than
21726	ssize_t.
21727	(expr_result::expr_result): Take int64_t rather than ssize_t.
21728	(expr_result::const_value): Return int64_t rather than ssize_t.
21729	(expr_result::{operator(), operator=, operator+=}): Make these
21730	operators return or take int64_t.
21731	too.
21732	(op_pushes_constant_value, op_manipulates_stack)
21733	(op_is_arith_logic, op_is_control_flow)
21734	(eval_last_constant_dwarf_sub_expr, die_member_offset)
21735	(die_virtual_function_index): Take
21736	uint64_t rather than size_t, or int64_t rather than ssize_t.
21737	(finish_member_function_reading, build_class_type_and_add_to_ir)
21738	(build_union_type_and_add_to_ir): Adjust.
21739
217402016-11-24  Dodji Seketeli <dodji@redhat.com>
21741
21742	Fix a compiler warning issued by GCC 6.2.1
21743	* src/abg-dwarf-reader.cc (find_import_unit_point_between_dies):
21744	Parameter 5 of find_import_unit_point_between_dies is not of type
21745	Dwarf_Off.
21746
217472016-11-24  Dodji Seketeli <dodji@redhat.com>
21748
21749	Fix offset type mismatch
21750	* src/abg-dwarf-reader.cc (die_member_offset): The last two
21751	parameters of die_unsigned_constant_attribute must be of type
21752	uint64_t.
21753
217542016-11-24  Dodji Seketeli <dodji@redhat.com>
21755
21756	Fix indentation in abg-writer.cc
21757	* src/abg-writer.cc (write_union_decl_opening_tag): Fix
21758	indentation.
21759
217602016-11-23  Dodji Seketeli <dodji@redhat.com>
21761
21762	Support reading data member offset from DW_AT_bit_offset
21763	* src/abg-dwarf-reader.cc (die_member_offset): Better comments.
21764	Support reading the bit offset also from the DW_AT_bit_offset
21765	attribute when it's present.  Make sure this always returns a
21766	value in bits.
21767	(build_class_type_and_add_to_ir): No need to multiply (by 8) the
21768	value returned by die_member_offset anymore because it's now in
21769	bits directly.
21770	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
21771	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
21772	* tests/data/test-read-dwarf/test1.abi: Adjust.
21773	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
21774	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
21775	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
21776	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
21777	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
21778	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
21779	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
21780	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
21781	Adjust.
21782	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
21783	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
21784	Adjust.
21785
217862016-11-23  Dodji Seketeli <dodji@redhat.com>
21787
21788	Lexicographically sort union data members in change reports
21789	* src/abg-comparison.cc (data_member_comp::operator()): Data
21790	members with the same offset are sorted lexicographically, by
21791	taking their name into account.
21792	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
21793	Adjust.
21794	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
21795	Likewise.
21796
217972016-11-23  Dodji Seketeli <dodji@redhat.com>
21798
21799	Better diagnostics when wget is missing
21800	* configure.ac: When wget is missing then make the disabling of
21801	the building of the fedabipkgdiff tool show up in the
21802	configuration summary and emit a notice.
21803
218042016-11-15  Dodji Seketeli <dodji@redhat.com>
21805
21806	Support union types
21807	* include/abg-fwd.h (class_or_union, union_decl): Forward-declare
21808	new types.
21809	(is_class_or_union_type, is_union_type): Declare new functions.
21810	* include/abg-ir.h (method_type::class_type_): Make this be of
21811	class_or_union_wptr type.
21812	(method_type::method_type): Make the class_type parameter be of
21813	class_or_union_wptr type.
21814	(method_type::{g,s}et_class_type): Take or return a
21815	class_or_union_sptr.
21816	(member_base, method_decl, member_function_template)
21817	(member_class_template, member_base::hash)
21818	(member_function_template::hash, member_class_template::hash):
21819	Take these class types out of the class_decl scope.
21820	(is_method_decl): Adjust.
21821	(operator==, opertor!=): Adjust overloads for
21822	member_function_template_sptr and member_class_template_sptr.
21823	(class class_or_union): Declare new type.
21824	(class class_decl): Make this class inherit class_or_union class.
21825	(class_decl::{add_member_decl, insert_member_decl,
21826	remove_member_decl, set_size_in_bits, get_size_in_bits,
21827	get_alignment_in_bits, set_alignment_in_bits,
21828	get_is_declaration_only, set_is_declaration_only,
21829	set_definition_of_declaration, get_definition_of_declaration,
21830	get_earlier_declaration, set_earlier_declaration,
21831	insert_member_type, add_member_type, remove_member_type,
21832	get_member_type, find_member_type, add_data_member,
21833	get_data_members, find_data_member, get_non_static_data_members,
21834	add_member_function, get_member_functions, find_member_function,
21835	add_member_function_template, get_member_function_templates,
21836	add_member_class_template, get_member_class_templates): Move these
21837	to the parent class class_or_union.
21838	(copy_member_function, equals): Add overloads for class_or_union.
21839	(struct class_or_union::hash): Declare new type.
21840	(class union_decl): Declare new type.
21841	(equals, copy_member_function): New overloads for class union_decl
21842	type.
21843	(ir_node_visitor::visit): Add new overloads for union_decl* and
21844	class_or_union*.
21845	* src/abg-ir.cc (get_member_function_is_ctor)
21846	(set_member_function_is_ctor, get_member_function_is_dtor)
21847	(set_member_function_is_dtor, get_member_function_is_const)
21848	(set_member_function_is_const, get_member_function_vtable_offset)
21849	(set_member_function_vtable_offset)
21850	(get_member_function_is_virtual, set_member_function_is_virtual)
21851	(maybe_update_types_lookup_map, get_location)
21852	(get_method_type_name, is_at_global_scope, is_at_class_scope):
21853	Adjust.
21854	(is_class_or_union_type, is_union_type): Define new functions.
21855	(type_base::get_canonical_type_for, maybe_adjust_canonical_type)
21856	(method_type::method_type, method_type::set_class_type)
21857	(function_decl::get_pretty_representation)
21858	(function_decl::get_first_non_implicit_parm)
21859	(function_decl::clone): Adjust.
21860	(equals): Adjust the overload for function_type.
21861	(struct class_or_union::priv): Define new type.
21862	(class::priv::{declaration_, definition_of_declaration_,
21863	member_types_, data_members_, non_static_data_members_,
21864	member_functions_, mem_fns_map_, member_function_templates_,
21865	member_class_templates_, is_declaration_only_}): Move these data
21866	member into class_or_union::priv.
21867	(class_priv::{mark_as_being_compared, unmark_as_being_compared,
21868	comparison_started}): Moved these member functions to
21869	class_or_union::priv.
21870	(class_or_union::{class_or_union, traverse, ~class_or_union,
21871	add_member_decl, remove_member_decl, insert_member_type,
21872	add_member_type, get_size_in_bits, remove_member_type,
21873	get_alignment_in_bits, set_alignment_in_bits, set_size_in_bits,
21874	get_is_declaration_only, set_is_declaration_only,
21875	set_definition_of_declaration, get_definition_of_declaration,
21876	get_earlier_declaration, set_earlier_declaration,
21877	get_member_types, find_member_type, add_data_member,
21878	get_data_member, find_data_member, add_member_function,
21879	get_member_functions, find_member_function,
21880	add_member_function_template, get_member_function_templates,
21881	add_member_class_template, get_member_class_templates,
21882	has_no_member, insert_member_decl, operator==}): Define new member
21883	functions.
21884	(class_decl::{add_member_decl, remove_member_decl,
21885	insert_member_type, add_member_type, get_size_in_bits,
21886	remove_member_type, get_alignment_in_bits, set_alignment_in_bits,
21887	set_size_in_bits, get_is_declaration_only,
21888	set_is_declaration_only, set_definition_of_declaration,
21889	get_earlier_declaration, set_earlier_declaration,
21890	get_member_types, find_member_type, add_data_member,
21891	get_data_member, find_data_member, add_member_function,
21892	get_member_functions, find_member_function,
21893	add_member_function_template, get_member_function_templates,
21894	add_member_class_template, get_member_class_templates): Move these
21895	member functions into class_or_union.
21896	(class_decl::{class_decl, get_definition_of_declaration,
21897	insert_member_decl, add_member_function, has_no_base_nor_member}):
21898	Adjust.
21899	(equals, copy_member_function): Define new overloads for
21900	class_or_union.
21901	(equals): Adjust the overload for class_decl.
21902	(method_decl::{method_decl, set_linkage_name, ~method_decl,
21903	get_type, set_scope}): Remove from the class_decl scope.
21904	(member_base::operator==, member_function_template::operator==):
21905	Likewise.
21906	(member_function_template::traverse)
21907	(member_class_template::operator==)
21908	(member_class_template::traverse): Likewise.
21909	(operator==, operator!=): Adjust the overlod for
21910	member_function_template_sptr.
21911	(is_method_decl, fixup_virtual_member_function)
21912	(set_member_is_static): Adjust.
21913	(virtual_member_function_less_than::operator()): Likewise.
21914	(union_decl::{union_decl, get_pretty_representation, operator==,
21915	traverse}): Define new member functions.
21916	(equals, copy_member_function): Define new overloads for
21917	union_decl.
21918	(hash_type_or_decl): Adjust.
21919	(ir_node_visitor::visit_{begin, end}): Adjust. Add new overloads
21920	for class_or_union* and union_decl*.
21921	* include/abg-comparison.h (changed_member_function_sptr)
21922	(string_member_function_sptr_map): Adjust these typedefs.
21923	(class class_or_union_diff): Declare new type.
21924	(class_diff): Adjust to make this inherit the new
21925	class_or_union_diff type.
21926	(class_diff::{get_priv, member_types_changes,
21927	data_members_changes, inserted_data_members, deleted_data_members,
21928	member_fn_tmpls_changes, member_fn_tmpls_changes,
21929	member_class_tmpls_changes}): These member functions got moved
21930	into -- and shared with -- class_or_union_diff class.
21931	(class union_diff): Declare new type.
21932	(typedef union_diff_sptr): New typedef.
21933	(compute_diff): New overload for union_diff
21934	(is_class_diff, is_union_diff): Declare new functions.
21935	* src/abg-comparison.cc (is_class_diff, is_union_diff): Define new
21936	functions.
21937	(compute_diff_for_types): Support union_decl.
21938	(represent):  Adjust.
21939	(represent_data_member): Do not show offset information for data
21940	members of unions as all union data members are at offset 0.
21941	(struct class_or_union_diff::priv): New type.
21942	(class_or_union_diff::priv::{member_type_has_changed,
21943	subtype_changed_dm, member_class_tmpl_has_changed,
21944	get_deleted_non_static_data_members_number,
21945	get_inserted_non_static_data_members_number,
21946	count_filtered_subtype_changed_dm, count_filtered_changed_dm,
21947	count_filtered_changed_mem_fns, count_filtered_inserted_mem_fns,
21948	count_filtered_deleted_mem_fns}): Define new member functions.
21949	(class_or_union_diff::{class_or_union_diff, finish_diff_type,
21950	lookup_tables_empty, lookup_tables_empty,
21951	ensure_lookup_tables_populated, allocate_priv_data, get_priv,
21952	~class_or_union_diff, first_class_or_union, second_class_or_union,
21953	member_types_changes, member_types_changes, data_members_changes,
21954	inserted_data_members, deleted_data_members, member_fns_changes,
21955	changed_member_fns, member_fns_changes, inserted_member_fns,
21956	member_fn_tmpls_changes, member_fn_tmpls_changes,
21957	member_class_tmpls_changes, member_class_tmpls_changes,
21958	has_changes, has_local_changes, report, chain_into_hierarchy}):
21959	Define new member functions.
21960	(class_diff::priv::{member_types_changes_, data_members_changes,
21961	member_fn_tmpls_changes_, member_class_tmpls_changes_,
21962	deleted_member_types_, inserted_member_types_,
21963	changed_member_types_, sorted_changed_member_types_,
21964	deleted_data_members_, deleted_dm_by_offset_,
21965	inserted_data_members_, inserted_dm_by_offset_,
21966	subtype_changed_dm_, sorted_subtype_changed_dm_, changed_dm_,
21967	sorted_changed_dm_, deleted_member_functions_,
21968	inserted_member_functions_, changed_member_functions_,
21969	sorted_changed_member_functions_, deleted_member_class_tmpls_,
21970	inserted_member_class_tmpls_, changed_member_class_tmpls_,
21971	sorted_changed_member_class_tmpls_}): Move these data members into
21972	class_or_union_diff::priv.
21973	(class_diff::{clear_lookup_tables, lookup_tables_empty,
21974	ensure_lookup_tables_populate}): Adjust.
21975	(class_diff::allocate_priv_data): Define new function.
21976	(class_diff::priv::{count_filtered_changed_mem_fns,
21977	count_filtered_inserted_mem_fns, count_filtered_deleted_mem_fns,
21978	chain_into_hierarchy, class_diff}): Likewise.
21979	(class_diff::{member_types_changes, data_members_changes,
21980	inserted_data_members, deleted_data_members,
21981	member_fn_tmpls_changes, member_fn_tmpls_changes,
21982	member_class_tmpls_changes}): These are deleted as they got moved
21983	to class_or_union_diff.
21984	(class_diff::report): Adjust.
21985	(union_diff::{clear_lookup_tables, lookup_tables_empty,
21986	ensure_lookup_tables_populated, allocate_priv_data, union_diff,
21987	finish_diff_type, first_union_decl, second_union_decl,
21988	get_pretty_representation, report}): Define new functions.
21989	(compute_diff): Define an overload for union_decl_sptr.
21990	(function_decl_diff::report): Adjust.
21991	(corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars):
21992	Adjust.
21993	(corpus_diff::report): Adjust.
21994	* src/abg-hash.cc (member_base::hash::operator)
21995	(member_function_template::hash::operator)
21996	(member_class_template::hash::operator): Move these out of the
21997	class_decl scope.
21998	(class_or_union::hash::operator): Define new member function.
21999	(class_decl::hash::operator): Adjust.
22000	(type_base::dynamic_hash::operator): Support hashing of
22001	union_decl.  Adjust.
22002	* src/abg-suppression.cc (type_suppression::suppresses_diff):
22003	Adjust.
22004	* src/abg-dwarf-reader.cc (typedef die_class_or_union_map_type):
22005	Define new typedef.
22006	(read_context::{die_wip_classes_map_,
22007	alternate_die_wip_classes_map_, type_unit_die_wip_classes_map_):
22008	Make these data member have type die_class_or_union_map_type.
22009	(read_context::{lookup_type_from_die_offset, die_wip_classes_map,
22010	is_wip_class_die_offset, resolve_declaration_only_classes}):
22011	Adjust.
22012	(finish_member_function_reading, build_class_type_and_add_to_ir)
22013	(build_function_type, build_function_decl, build_reference_type)
22014	(type_is_suppressed, build_function_decl)
22015	(maybe_canonicalize_type, maybe_set_member_type_access_specifier):
22016	Adjust.
22017	(build_union_type_and_add_to_ir): Define new static function.
22018	(build_ir_node_from_die): Support DW_TAG_union_type DIE tag.
22019	* src/abg-reader.cc (handle_element_node): Handle union_decl.
22020	(build_function_decl, build_function_decl_if_not_suppressed):
22021	Adjust.
22022	(build_union_decl_if_not_suppressed, build_union_decl)
22023	(handle_union_decl): Define new functions.
22024	(build_class_decl): Adjust.
22025	* src/abg-writer.cc (record_decl_only_type_as_emitted): Adjust.
22026	(write_decl): Adjust. Support writting union_decl type.
22027	p	(write_class_decl_opening_tag, write_class_decl): Adjust.  Call
22028	the new write_class_or_union_is_declaration_only.
22029	(write_union_decl_opening_tag, write_union_decl): Define new
22030	static functions.
22031	(write_member_tpe): Support writting union decl.
22032	* tests/test-diff-dwarf.cc (in_out_specs): Add new tests for this
22033	union type support.
22034	* tests/data/test-diff-dwarf/libtest37-union-v0.so: New test input.
22035	* tests/data/test-diff-dwarf/libtest37-union-v1.so: Likewise.
22036	* tests/data/test-diff-dwarf/libtest38-union-v0.so: Likewise.
22037	* tests/data/test-diff-dwarf/libtest38-union-v1.so: Likewise.
22038	* tests/data/test-diff-dwarf/libtest39-union-v0.so: Likewise.
22039	* tests/data/test-diff-dwarf/libtest39-union-v1.so: Likewise.
22040	* tests/data/test-diff-dwarf/test37-union-report-0.txt: Likewise.
22041	* tests/data/test-diff-dwarf/test38-union-report-0.txt: Likewise.
22042	* tests/data/test-diff-dwarf/test39-union-report-0.txt: Likewise.
22043	* tests/data/test-diff-dwarf/test37-union-v0.cc: Source code for
22044	new test input.
22045	* tests/data/test-diff-dwarf/test37-union-v1.cc: Likewise.
22046	* tests/data/test-diff-dwarf/test38-union-v0.cc: Likewise.
22047	* tests/data/test-diff-dwarf/test38-union-v1.cc: Likewise.
22048	* tests/data/test-diff-dwarf/test39-union-v0.cc: Likewise.
22049	* tests/data/test-diff-dwarf/test39-union-v1.cc: Likewise.
22050	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
22051	Update test reference.
22052	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
22053	Likewise.
22054	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
22055	Likewise.
22056	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
22057	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
22058	Likewise.
22059	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
22060	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
22061	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
22062	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
22063	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
22064	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
22065	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
22066	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
22067	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
22068	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
22069	Likewise.
22070	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
22071	Likewise.
22072	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
22073	Likewise.
22074	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
22075	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
22076	Likewise.
22077	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
22078	Likewise.
22079
220802016-11-10  Dodji Seketeli <dodji@redhat.com>
22081
22082	Support empty properties in INI files
22083	* include/abg-ini.h (simple_property::simple_property): Add a new
22084	constructor for empty values.
22085	(simple_property::has_empty_value): Declare new member function.
22086	* src/abg-ini.cc (simple_property::{simple_property,
22087	has_empty_value}): Define new member functions.
22088	(read_context::read_property): Support reading a property with no
22089	value.
22090	(write_property_value, write_property): Support writting a
22091	property with empty value.
22092
220932016-11-10  Dodji Seketeli <dodji@redhat.com>
22094
22095	Rename config::property_vector into config::properties_type
22096	* include/abg-ini.h (config::properties_type): Rename the typedef
22097	config::property_vector into this.
22098	(config::section::{section, get_properties, set_properties}):
22099	Adjust.
22100	* src/abg-ini.cc (config::section::priv::properties_): Adjust the
22101	name of its type.
22102	(config::section::{section, get_properties, set_properties,
22103	find_property}): Adjust.
22104	(write_section): Adjust.
22105	* src/abg-suppression.cc (read_function_suppression): Adjust.
22106
221072016-11-09  Dodji Seketeli <dodji@redhat.com>
22108
22109	Apply harmless and harmful filters in one pass
22110	* include/abg-comp-filter.h (class harmless_harmful_filter):
22111	Decalre new class.
22112	(typedef harmless_harmful_filter_sptr): Declare new typedef.
22113	(class harmless_filter, class harmful_filter): Remove these class
22114	declarations.
22115	(typedef harmful_filter_sptr, harmless_filter_sptr): Remove these
22116	typedefs.
22117	* src/abg-comp-filter.cc (categorize_harmless_diff_node)
22118	(categorize_harmful_diff_node): Define new static functions.
22119	({harmless, harmful}_filter::{visit, visit_end}): Remove these
22120	member functions.
22121	(harmless_harmful_filter::{visit, visit_end}): Define new member
22122	functions.
22123	* src/abg-comparison.cc (diff_context::diff_context): Register the
22124	new harmless_harmful_filter, and remove the premier
22125	harmless_filter and harmful_filter.
22126	# Please enter the commit message for your changes. Lines starting
22127	# with '#' will be ignored, and an empty message aborts the
22128	commit.  # On branch kabidiff-dedup # Changes to be committed: #
22129	(use "git reset HEAD <file>..." to unstage) # # modified:
22130	include/abg-comp-filter.h # modified: src/abg-comp-filter.cc #
22131	modified: src/abg-comparison.cc # # Untracked files: # (use "git
22132	add <file>..." to include in what will be committed) # # diff.txt
22133	# prtests/ # tests/data/test-read-dwarf/libtest23.so.abi.conflict
22134
221352016-11-08  Dodji Seketeli <dodji@redhat.com>
22136
22137	Avoid stripping typedefs too much
22138	* src/abg-ir.cc (types_are_compatible)
22139	(is_compatible_with_class_type): Do not strip typedefs.  Just get
22140	their leaf types.
22141
221422016-11-08  Dodji Seketeli <dodji@redhat.com>
22143
22144	Misc style cleanups in abg-ir.cc
22145	* src/abg-ir.cc (equals): In overloads for function_type and
22146	class_decl, avoid returning a constant when we can return a
22147	variable like in the rest of the code.
22148
221492016-11-01  Dodji Seketeli <dodji@redhat.com>
22150
22151	Factorize out string representation of array_type_def::subrange_type
22152	* src/abg-ir.cc (array_type_def::subrange_type::{as_string,
22153	vector_as_string}): Define methods.
22154	(array_type_def::get_subrange_representation): Use the new
22155	vector_as_string method.
22156
221572016-11-01  Dodji Seketeli <dodji@redhat.com>
22158
22159	Factorize out parsing of integral types
22160	* src/abg-ir-priv.h: New file.
22161	* src/Makefile.am: Add abg-ir-priv.h to the build system.
22162	* src/abg-ir.cc: Include the new abg-ir-priv.h header file.
22163	(class_integral_type): Move this type
22164	declaration to the new abg-ir-priv.h header.
22165	(integral_type::modifiers_type): Make this non-static.
22166	(parse_integral_type): This new overload is a factorized out of
22167	...
22168	(integral_type::integral_type): ... here.
22169
221702016-10-31  Dodji Seketeli <dodji@redhat.com>
22171
22172	Misc style fixes in abg-ir.cc
22173	* src/abg-ir.cc (get_function_type_name,
22174	get_pretty_representation): Misc style fixes.
22175
221762016-10-31  Dodji Seketeli <dodji@redhat.com>
22177
22178	Consider a method_decl as always being a member decl
22179	* src/abg-ir.cc (is_member_decl): Consider a method decl as always
22180	being a member decl.
22181	(is_member_function): Use is_member_decl.
22182
221832016-10-31  Dodji Seketeli <dodji@redhat.com>
22184
22185	Cleanup void and variadic parameter type interfaces
22186	* include/abg-ir.h (environment::{get_void_type,
22187	get_variadic_parameter_type}): Renamed get_void_type_decl and
22188	get_variadic_parameter_type_decl to these.
22189	(environment::is_void_type): Remove the overload that takes a bare
22190	pointer.
22191	(environment::is_variadic_parameter_type): Declare new member
22192	function.
22193	* src/abg-ir.cc (environment::void_type_): Renamed the data member
22194	void_type_decl_ into this.
22195	(environment::variadic_marker_type_): Renamed the data member
22196	variadic_marker_type_decl_ into this.
22197	(environment::{get_void_type, get_variadic_parameter_type}):
22198	Renamed get_void_type_decl and get_variadic_parameter_type_decl to
22199	these.
22200	(environment::is_void_type): Take a smart pointer now.
22201	(environment::is_variadic_parameter_type): Define new member
22202	function.
22203	(synthesize_function_type_from_translation_unit): Adjust.
22204	(function_decl::parameter::get_pretty_representation): Likewise.
22205	* src/abg-comparison.cc (is_diff_of_variadic_parameter_type):
22206	Adjust.
22207	* src/abg-dwarf-reader.cc (build_function_type)
22208	(build_ir_node_for_void_type): Likewise.
22209	* src/abg-reader.cc (build_function_parameter)
22210	(build_function_decl, build_function_type): Likewise.
22211
222122016-10-31  Dodji Seketeli <dodji@redhat.com>
22213
22214	Cleanup some entry points in abg-fwd.h
22215	* include/abg-fwd.h (add_decl_to_scope): Pass the scope smart
22216	pointer by reference.
22217	(is_member_type): pass the type smart pointer by reference.
22218	(is_function_decl, is_pointer_type, is_reference_type)
22219	(is_qualified_type, is_function_type, is_method_type)
22220	(is_array_type): Take a type_or_decl base pointer, rather than
22221	either a decl_base or type_base pointer.
22222	* include/abg-ir.h (translation_unit::set_corpus): Take a pointer
22223	to non-const corpus.
22224	(translation_unit::get_corpus): Add a non-const overload.
22225	(type_or_decl_base::get_corpus): Likewise.
22226	(type_or_decl_base::set_translation_unit): Take a pointer to
22227	non-corpus translation_unit.
22228	(type_or_decl_base::get_translation_unit): Add a non-const
22229	overload.
22230	(scope_decl::{add_member_decl, insert_member_decl}): Pass the
22231	member smart pointer by reference.
22232	(scope_decl::remove_member_decl): Take a non-const smart pointer.
22233	(class_decl::add_member_decl): Pass the decl smart pointer by
22234	reference.
22235	(is_method_decl): Take pointer or reference to type_or_decl_base
22236	rather than function_decl.
22237	* src/abg-ir.cc (translation_unit::priv::corpus): Make this a
22238	pointer to non-const corpus.
22239	(translation_unit::set_corpus): Take a pointer to non-const
22240	corpus.
22241	(translation_unit::get_corpus): Add a non-const overload.
22242	(translation_unit::get_global_scope): Adjust.
22243	(translation_unit::bind_function_type_life_time): Adjust.
22244	(type_or_decl_base::translation_unit): Make this a pointer to
22245	non-const translation_unit.
22246	(type_or_decl_base::get_corpus): Likewise.
22247	(type_or_decl_base::set_translation_unit): Take a pointer to
22248	non-corpus translation_unit.
22249	(type_or_decl_base::get_translation_unit): Add a non-const
22250	overload.
22251	(is_member_type): pass the type smart pointer by reference.
22252	(scope_decl::{add_member_decl, insert_member_decl}): Take a
22253	reference to the member decl smart pointer.  Adjust.
22254	(class_decl::add_member_decl): Likewise.
22255	(scope_decl::remove_member_decl): Take a non-const smart pointer.
22256	(add_decl_to_scope): Pass the scope smart pointer by reference.
22257	(is_decl, is_function_decl, is_pointer_type, is_reference_type)
22258	(is_qualified_type, is_function_type, is_method_type)
22259	(is_method_decl, is_array_type): Take a type_or_decl base pointer,
22260	rather than either a decl_base or type_base pointer.
22261
222622016-10-31  Dodji Seketeli <dodji@redhat.com>
22263
22264	Fix abigail::ir::get_type_scope()
22265	* src/abg-ir.cc (get_type_scope): Do not always return nil.
22266
222672016-10-27  Dodji Seketeli <dodji@redhat.com>
22268
22269	Bug 20740 Broken check for dwarf_getalt in configure.ac
22270	* configure.ac: Add missing spaces around the "=" of a conditional
22271	expression.
22272
222732016-10-11  Dodji Seketeli <dodji@redhat.com>
22274
22275	Canonicalize function types when reading from DWARF
22276	* src/abg-dwarf-reader.cc (build_function_decl): Canonicalize
22277	function types.
22278
222792016-10-11  Dodji Seketeli <dodji@redhat.com>
22280
22281	Misc cleanups here and there
22282	* src/abg-dwarf-reader.cc (canonicalize_types_scheduled): Fix
22283	identation.
22284	* src/abg-reader.cc (build_class_decl): Use class_decl_sptr rather
22285	than shared_ptr<class_decl>.
22286	* src/abg-writer.cc (write_class_is_declaration_only)
22287	(write_is_struct, write_decl, write_decl_in_scope)
22288	(write_type_decl, write_qualified_type_def)
22289	(write_pointer_type_def, write_reference_type_def)
22290	(write_array_type_def, write_enum_type_decl, write_typedef_decl)
22291	(write_elf_symbol, write_var_decl, write_function_decl)
22292	(write_member_type_opening_tag, write_member_type)
22293	(write_class_decl_opening_tag, write_class_decl): Cleanup
22294	parameters to use the right typedef, rather than the long
22295	shared_ptr<*> form.  Pass the shared pointers by reference as
22296	well.
22297
222982016-10-10  Dodji Seketeli <dodji@redhat.com>
22299
22300	Cleanup namespace importing in abg-interned-str.h
22301	* include/abg-interned-str.h: Inject std::tr1::shared_ptr,
22302	std::string and std::ostream inside the abigail namespace.
22303	(interned_string::{interned_string, raw, operator==, operator!=,
22304	operator<): Adjust.
22305	(operator==, operator!=, operator<<, operator+): Adjust.
22306
223072016-10-07  Dodji Seketeli <dodji@redhat.com>
22308
22309	Cleanup functions to detect infinite comparison of class_decl
22310	* src/abg-ir.cc (class_decl::priv::unmark_as_being_compared): In
22311	the overload that takes a pointer to class_decl, re-use the
22312	overload that takes a reference.
22313	(class_decl::priv::comparison_started): Do not crash if the klass
22314	pointer is nil.
22315	(equals): In the overload for class_decl&, undef the RESULT macro
22316	when it's not used anymore.
22317
223182016-10-07  Dodji Seketeli <dodji@redhat.com>
22319
22320	Cleanup class_decl inifite comparison detection
22321	* src/abg-ir.cc (environment::priv::classes_being_compared_): Make
22322	this use the new interned_string_set_type type.
22323	(class_decl::priv::{mark_as_being_compared, comparison_started}):
22324	Adjust.
22325
223262016-10-10  Dodji Seketeli <dodji@redhat.com>
22327
22328	Apply ODR-based type comparison optimization to function types
22329	* src/abg-ir.cc (type_eligible_for_odr_based_comparison):
22330	Factorize this out of type_base::get_canonical_type_for.  Also,
22331	add function types to the set of types to use the ODR-based
22332	comparison optimization on.
22333	(type_base::get_canonical_type_for): Use the new
22334	type_eligible_for_odr_based_comparison function.
22335
223362016-10-07  Dodji Seketeli <dodji@redhat.com>
22337
22338	Prevent infinite loops while comparing two function_type
22339	* include/abg-ir.h (class environment): Make class function_type
22340	be a friend of this class.
22341	(class function_type): Make the equality function for
22342	function_types be a friend of this class.
22343	* src/abg-ir.cc (environment::priv::fn_types_being_compared_): New
22344	data member.
22345	(function_type::priv::{mark_as_being_compared,
22346	unmark_as_being_compared, comparison_started}): Define new member
22347	functions.
22348	(equals): In the overload for function_types, if any of the the
22349	function_type being compared is already being compared, return
22350	early saying that the two function_types are equal.  This avoids
22351
223522016-10-06  Dodji Seketeli <dodji@redhat.com>
22353
22354	Define a new interned_string_set_type typedef
22355	* include/abg-interned-str.h (interned_string_set_type): Define a new
22356	typedef for unordered_set<interned_string>.
22357
223582016-09-23  Dodji Seketeli <dodji@redhat.com>
22359
22360	Update reference output of runtestreaddwarf
22361	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
22362	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
22363	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
22364	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
22365	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
22366
223672016-09-21  Matthias Klose <doko@debian.org>
22368
22369	Fix typo in abipkgdiff
22370	* tools/abipkgdiff.cc (extract_deb): Fix typo.
22371
223722016-09-12  Dodji Seketeli <dodji@redhat.com>
22373
22374	Better handle fedabipkgdiff dependencies detection
22375	* configure.ac: It's only when --enable-fedabipkgdiff is provided
22376	that a missing dependency of the fedabipkgdiff program results in
22377	a fatal error.  Otherwise, building fedabipkgdiff is just
22378	disabled.
22379
223802016-09-16  Dodji Seketeli <dodji@redhat.com>
22381
22382	Add default suppression specifications for C++ binaries
22383	* default.abignore: Add suppressions for non-libstdc++ and
22384	non-boost C++ libraries.
22385
223862016-09-20  Dodji Seketeli <dodji@redhat.com>
22387
22388	Add default suppression specification for webkitgtk
22389	* default.abignore: New suppression specifications for webkitgtk.
22390
223912016-09-19  Dodji Seketeli <dodji@redhat.com>
22392
22393	Drop suppressed ABI artifacts from the IR
22394	* doc/manuals/abidw.rst: Document the new --suppressions and
22395	--headers-dir options off the abidw tool.
22396	* doc/manuals/abilint.rst: Document the new --suppressions and
22397	--headers-dir options on the abilint tool.
22398	* doc/manuals/libabigail-concepts.rst: Document the new "drop" and
22399	"name_not_regexp" properties on suppression directives.
22400	* include/abg-corpus.h (corpus::corpus): Add a default argument to
22401	the path parameter.
22402	* src/abg-suppression-priv.h: New private header file.
22403	* src/Makefile.am: Add the new abg-suppression-priv.h file to
22404	source distribution.
22405	* include/abg-suppression.h ({suppression_base, type_suppression,
22406	function_suppression, variable_suppression}::priv): Make these
22407	public.
22408	(suppression_base::{g,s}et_drops_artifact_from_ir): Declare new
22409	member functions.
22410	(type_suppression::{suppressed_type}): Likewise.
22411	(suppression_base::{names,sonames}_of_binaries_match): Remove
22412	member functions.
22413	(function_suppression::{get_name, set_name, get_name_regex_str,
22414	set_name_regex_str}): Renamed get_function_name,
22415	set_function_name, get_function_name_regex_str,
22416	set_function_name_regex_str into these.
22417	({variable,function}_suppression::{g,s}et_name_not_regex_str):
22418	Declare new member functions.
22419	* src/abg-suppression.cc: Include the new abg-suppression-priv.h
22420	private header.
22421	(class suppression_base::priv, class type_suppression::priv, class
22422	function_suppression::parameter_spec::priv, class
22423	function_suppression::priv, class variable_suppression::priv):
22424	Move these types to that new private header.
22425	(suppression_base::{g,s}et_drops_artifact_from_ir)
22426	(function_suppression::{g,s}et_name_not_regex_str)
22427	(variable_suppression::{g,s}et_name_not_regex_str): New member
22428	functions.
22429	(sonames_of_binaries_match): New static function, taken from
22430	suppression_base::sonames_of_binaries_match.
22431	(names_of_binaries_match): New static function, taken from
22432	suppression_base::names_of_binaries_match.
22433	(suppression_matches_type_no_name): New static function.
22434	(type_suppression::suppresses_type): Adjust
22435	(function_suppression::suppresses_function)
22436	(variable_suppression::suppresses_variable): Adjust.  Evaluate the
22437	new "name_not_regexp" property.
22438	(suppression_matches_type_name)
22439	(suppression_matches_type_location)
22440	(suppression_matches_type_name_or_location)
22441	(suppression_matches_function_name)
22442	(suppression_matches_function_sym_name)
22443	(suppression_matches_variable_name)
22444	(suppression_matches_variable_sym_name, suppression_matches_type):
22445	New functions.
22446	(read_type_suppression): Support the new "drop_artifacts" and
22447	"drop" properties.
22448	(read_function_suppression, read_variable_suppression): Support
22449	the new "drop_artifacts", "drop", and "name_not_regexp"
22450	properties.
22451	(function_suppression::{g,s}et_name): Renamed
22452	{g,s}et_function_name into these.
22453	(function_suppression::set_name_not_regex_str): Renamed
22454	{g,s}et_name_regex_str into this.
22455	(function_suppression::suppresses_function_symbol): Adjust.
22456	* include/abg-dwarf-reader.h (add_read_context_suppressions):
22457	Declare new function.
22458	* src/abg-dwarf-reader.cc: Use the new private
22459	abg-suppression-priv.h header file.
22460	(read_context::supprs_): New data member.
22461	(read_context::get_suppressions): New member function.
22462	(read_context::get_die_source): Make this const.
22463	(read_context::tu_die_imported_unit_points_map): Add a const
22464	overload.
22465	(read_context::cur_transl_unit): Renamed current_translation_unit
22466	unit into this;
22467	(read_context::cur_tu): Remove or rename into cur_transl_unit.
22468	(get_scope_for_die, build_translation_unit_and_add_to_ir)
22469	(build_enum_type, build_pointer_type_def, build_reference_type)
22470	(build_function_type, build_array_type, build_function_decl):
22471	Adjust.
22472	(read_context::{suppression_can_match,
22473	suppression_matches_function_sym_name,
22474	suppression_matches_function_name,
22475	suppression_matches_variable_sym_name,
22476	suppression_matches_variable_name,
22477	suppression_matches_type_name_or_location,
22478	suppression_matches_type_name}): Add member functions.
22479	(die_signed_constant_attribute): Remove this as dead code.
22480	(die_location, die_loc_and_name)
22481	(find_import_unit_point_between_dies)
22482	(find_import_unit_point_before_die, get_parent_die): Make the
22483	read_context& parameter be const and adjust as required.
22484	(build_var_decl_if_not_suppressed, function_is_suppressed)
22485	(variable_is_suppressed, type_is_suppressed): Define new static
22486	functions.
22487	(add_read_context_suppressions): Define new function.
22488	(build_class_type_and_add_to_ir): Do not add suppressed static
22489	data members to the IR.
22490	(build_ir_node_from_die): Do not add suppressed enum types, class
22491	types, variables or functions to the IR.  Adjust for the
22492	read_context::cur_tu -> read_context::cur_transl_unit rename.
22493	* include/abg-reader.h (read_context_sptr): Declare new type.
22494	(create_native_xml_read_context, read_corpus_from_input)
22495	(add_read_context_suppressions): Declare new functions.
22496	* src/abg-reader.cc: Include the new private
22497	abg-suppression-priv.h header file.
22498	(read_context::m_exported_decls_builder): Renamed
22499	m_exported_decls_builder_ into this.
22500	(read_context::get_exported_decls_builder): Adjust.
22501	(read_context::get_cur_scope): Make this const.
22502	(read_location): Take a const read_context and adjust.
22503	(read_corpus_from_input): Make this non-static.
22504	(build_namespace_decl): Don't abort if trying to add an artifact
22505	to the IR doesn't succeed.  It might be suppressed now.
22506	(read_context::{m_path, m_supprs}): New data members.
22507	(read_context::{g,s}et_path): New member functions.
22508	(read_context::{get_suppressions,
22509	suppression_matches_function_name, suppression_can_match,
22510	suppression_matches_function_name,
22511	suppression_matches_function_sym_name,
22512	suppression_matches_variable_name,
22513	suppression_matches_variable_sym_name,
22514	suppression_matches_type_name_or_location}): Likewise.
22515	(add_read_context_suppressions, create_native_xml_read_context)
22516	(read_corpus_from_native_xml): New functions.
22517	(build_function_decl_if_not_suppressed, function_is_suppressed)
22518	(type_is_suppressed, build_var_decl_if_not_suppressed)
22519	(variable_is_suppressed, build_enum_type_decl_if_not_suppressed)
22520	(build_class_decl_if_not_suppressed): New static functions.
22521	(build_class_decl): Add member types that are being built early,
22522	so that their sub-types can be evaluated for suppression.  Do not
22523	add suppressed static data members or suppressed member functions
22524	to the IR.
22525	(build_type): Do not add an enum type or a class type to the IR if
22526	they are suppressed.
22527	(handle_enum_type_decl): Do not add an enum type to the IR if its
22528	suppressed.
22529	(handle_var_decl): Likewise for a variable decl.
22530	(handle_function_decl): Likewise for a function decl.
22531	(handle_class_decl): Likewise for a class decl.
22532	* src/abg-tools-utils.cc (handle_fts_entry): Drop suppressed ABI
22533	from the IR.
22534	* tools/abidiff.cc (display_usage): Fix help strings for
22535	--headers-dirs{1,2}.
22536	(set_suppressions): New static function.
22537	(main): Adjust.  Release the memory used by read_context early.
22538	* tools/abidw.cc (options::{headers_dir, suppression_paths}):
22539	(display_usage): New help strings for the new --header-dir and
22540	--suppressions options.
22541	(parse_command_line): Parse the new --header-dir and
22542	--suppressions options.
22543	(maybe_check_suppression_files, set_suppressions): New static
22544	functions.
22545	(main): Use the two new functions above.  Free the memory used by
22546	the read context before working with the corpus.
22547	* tools/abilint.cc (options::suppression_paths):
22548	(display_usage): New help strings for the new --header-dir and
22549	--suppressions options.
22550	(parse_command_line): Parse the new --header-dir and
22551	--suppressions options.
22552	(maybe_check_suppression_files, set_suppressions): New static
22553	functions.
22554	(main): Use the two new functions above.  Free the memory used by
22555	the read context before working with the corpus.
22556	* tests/data/test-diff-suppr/test24-soname-suppr-{2,3].txt:
22557	Adjust.
22558	* tests/data/test-diff-suppr/test29-suppr-6.txt: Likewise.
22559	* tests/data/test-diff-suppr/test29-suppr-8.txt: Likewise.
22560	* tests/data/test-diff-suppr/libtest31-v{0,1}.so: New test input.
22561	* tests/data/test-diff-suppr/libtest31.suppr: Likewise
22562	* tests/data/test-diff-suppr/libtest32-v{0,1}.so: Likewise.
22563	* tests/data/test-diff-suppr/libtest32-0.suppr: Likewise.
22564	* tests/data/test-diff-suppr/libtest33-v{0,1}.so: Likewise.
22565	* tests/data/test-diff-suppr/test31-report-{0,1}.txt: Likewise.
22566	* tests/data/test-diff-suppr/test31-v{0,1}.cc: Likewise.
22567	* tests/data/test-diff-suppr/test32-report-{0,1}.txt: Likewise.
22568	* tests/data/test-diff-suppr/test32-v{0,1}.c: Likewise.
22569	* tests/data/test-diff-suppr/test33-suppr-1.txt: Likewise.
22570	* tests/data/test-diff-suppr/test33-v{0,1}.cc: Likewise.
22571	* tests/data/test-diff-suppr/test33-v{0,1}.h: Likewise.
22572	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
22573	Likewise.
22574	* tests/data/test-read-dwarf/libtest24-drop-fns.so: Likewise.
22575	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
22576	* tests/data/test-read-dwarf/test24-drop-fns-0.suppr: Likewise.
22577	* tests/data/test-read-dwarf/test24-drop-fns.cc: Likewise.
22578	* tests/data/test-read-write/test28-drop-std-fns.abignore:
22579	Likewise.
22580	* tests/data/test-read-write/test28-drop-std-vars.abignore:
22581	Likewise.
22582	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
22583	Likewise.
22584	* tests/data/test-read-write/test28-without-std-fns.xml: Likewise.
22585	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
22586	Likewise.
22587	* tests/data/test-read-write/test28-without-std-vars.xml:
22588	Likewise.
22589	* tests/data/test-read-write/test28.xml: Likewise.
22590	* tests/data/Makefile.am: Add the new test artifacts to source
22591	distribution.
22592	* tests/test-diff-suppr.cc (in_out_spec): Take the new test inputs
22593	into account.
22594	* tests/test-read-dwarf.cc (Inoutspec::in_suppr_spec_path): New
22595	data member.
22596	(in_out_spec): Adjust.  The new test inputs into account.
22597	(set_suppressions): New static function.
22598	(handle_in_out_spec): Adjust.
22599	* tests/test-read-write.cc (Inoutspec::{in_suppr_spec_path,
22600	ref_out_path}): New data members.
22601	(in_out_spec): Adjust.  Take new test inputs into account.
22602	(main): Adjust.
22603
226042016-09-19  Dodji Seketeli <dodji@redhat.com>
22605
22606	Pimplify the abigail::ir::scope_decl type
22607	* include/abg-ir.h (scope_decl::{priv, priv_sptr}) Declare new types.
22608	(scope_decl::priv_): New pimpl data member.
22609	(scope_decl::{member_, member_scopes}): Move this as data member
22610	of the new scope_decl::priv type in the abg-ir.cc file.
22611	(scope_decl::{scope_decl, get_member_decls, get_member_scopes,
22612	is_empty}): Make these inline member functions be out-of-line.
22613	* src/abg-ir.cc (struct scope_decl::priv): Define new type.
22614	(scope_decl::{scope_decl, get_member_decls, get_member_scopes,
22615	is_empty}): Define these new member functions here.  They were
22616	inline in the include/abg-ir.h header files before.
22617	(scope_decl::{add_member_decl, insert_member_decl,
22618	remove_member_decl}): Adjust.
22619
226202016-09-19  Dodji Seketeli <dodji@redhat.com>
22621
22622	Add new helper functions
22623	* include/abg-fwd.h (get_location, build_qualified_name): Declare
22624	new functions.
22625	* include/abg-ir.h (is_method_decl): Declare two new overloads of
22626	this function.
22627	* src/abg-ir.cc (get_location, build_qualified_name)
22628	(is_method_decl): Define these functions declared above.
22629
226302016-09-19  Dodji Seketeli <dodji@redhat.com>
22631
22632	Do not emit empty namespaces in abixml
22633	* include/abg-ir.h
22634	(namespace_decl::is_empty_or_has_empty_sub_namespaces): Declare
22635	new function ...
22636	* src/abg-ir.cc
22637	(namespace_decl::is_empty_or_has_empty_sub_namespaces): ... and
22638	define it.
22639	* src/abg-writer.cc (write_namespace_decl): Do not write empty
22640	namespaces or namespaces containing empty namespaces.
22641	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
22642	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
22643	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
22644	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
22645	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
22646	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
22647	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
22648	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
22649	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
22650	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
22651	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
22652	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
22653
226542016-09-21  Dodji Seketeli <dodji@redhat.com>
22655
22656	Fix misleading indentation issues
22657	* tools/abipkgdiff.cc (compare): Likewise.
22658	* tools/abisym.cc (main): Fix misleading indentation.
22659
226602016-08-30  Dodji Seketeli <dodji@redhat.com>
22661
22662	Bug 20534 - abipkgdiff wrongly displays the name of added binary files
22663	* tools/abipkgdiff.cc (compare): Show the name of the added
22664	binary, rather than its address.
22665
226662016-08-24  Dodji Seketeli <dodji@redhat.com>
22667
22668	Bug 20420 - Wrong ODR-based type comparison optimization on qualified type
22669	* src/abg-ir.cc:
22670
226712016-08-23  Dodji Seketeli <dodji@redhat.com>
22672
22673	Don't walk diff trees indefinitely when applying suppressions
22674	* src/abg-comparison.cc:
22675
226762016-07-27  Dodji Seketeli <dodji@redhat.com>
22677
22678	Control symbols exported from libabigail.so
22679	* VISIBILITY: New documentation about this visiblity business.
22680	* CONTRIBUTING: Update the "contributing guide" to refer to symbol
22681	visibility issues.
22682	* configure.ac: Define a variable VISIBILITY_FLAGS that is set to
22683	the -fvisibility=hidden flag to pass to GCC, when its available.
22684	* src/Makefile.am: Add VISIBILITY to source distribution.  Also
22685	add COMPILING and COMMIT-LOG-GUIDELINES that were missing.
22686	* src/Makefile.am: Use the new $(VISIBILITY_FLAGS) when buiding
22687	the library.
22688	* tests/Makefile.am: Use the new $(VISIBILITY_FLAGS) when buiding
22689	tests.
22690	* tools/Makefile.am: Use the new $(VISIBILITY_FLAGS) when buiding
22691	tools.
22692	* src/abg-comp-filter.cc: Enclose inclusion of public headers in
22693	ABG_BEGIN_EXPORT_DECLARATIONS and ABG_END_EXPORT_DECLARATIONS to
22694	export the symbols of entities declared in there.
22695	* src/abg-comparison.cc: Likewise.
22696	* src/abg-config.cc: Likewise.
22697	* src/abg-corpus.cc: Likewise.
22698	* src/abg-diff-utils.cc: Likewise.
22699	* src/abg-dwarf-reader.cc: Likewise.
22700	* src/abg-hash.cc: Likewise.
22701	* src/abg-ini.cc: Likewise.
22702	* src/abg-ir.cc: Likewise.
22703	* src/abg-libxml-utils.cc: Likewise.
22704	* src/abg-libzip-utils.cc: Likewise.
22705	* src/abg-reader.cc: Likewise.
22706	* src/abg-suppression.cc: Likewise.
22707	* src/abg-tools-utils.cc: Likewise.
22708	* src/abg-traverse.cc: Likewise.
22709	* src/abg-viz-common.cc: Likewise.
22710	* src/abg-viz-dot.cc: Likewise.
22711	* src/abg-viz-svg.cc: Likewise.
22712	* src/abg-workers.cc: Likewise.
22713	* src/abg-writer.cc: Likewise.
22714
227152016-07-26  Dodji Seketeli <dodji@redhat.com>
22716
22717	Support DW_TAG_type_unit
22718	* src/abg-dwarf-reader.cc (TYPE_UNIT_DIE_SOURCE): New enumerator
22719	in enum die_source.
22720	(read_context::{type_unit_die_decl_map_, type_unit_die_type_map_,
22721	type_unit_die_wip_classes_map_,
22722	type_unit_die_wip_function_types_map_,
22723	type_unit_types_to_canonicalize_,
22724	type_units_tu_die_imported_unit_points_map_,
22725	type_section_die_parent_map_}): New data members.
22726	(read_context::{get_die_source, associate_die_to_decl,
22727	lookup_decl_from_die_offset, die_type_map, clear_die_type_maps,
22728	die_wip_classes_map, die_wip_function_types_map,
22729	types_to_canonicalize, clear_types_to_canonicalize,
22730	tu_die_imported_unit_points_map, die_parent_map}): Support
22731	TYPE_UNIT_DIE_SOURCE.
22732	(get_parent_die, get_scope_for_die): Likewise.
22733	(read_context::{lookup_decl_from_type_unit_die_offset,
22734	type_section_die_parent_map}): Define new member functions.
22735	(read_context::build_die_parent_maps): Build a DIE -> parent map
22736	for DIEs coming from the .debug_types section.
22737	* tests/data/test-read-dwarf/libtest23.so: New test input.
22738	* tests/data/test-read-dwarf/libtest23.so.abi: New reference output.
22739	* tests/data/test-read-dwarf/test23-first-tu.cc: Source code of
22740	the new binary above.
22741	* tests/data/test-read-dwarf/test23-second-tu.cc: Likewise.
22742	* tests/data/Makefile.am: Add the new test material above to
22743	source distribution.
22744	* tests/test-read-dwarf.cc (in_out_specs): Make this test harness
22745	execute over the new test input and reference output.
22746
227472016-07-26  Dodji Seketeli <dodji@redhat.com>
22748
22749	Misc code cleanup
22750	* src/abg-dwarf-reader.cc (build_function_decl): Use the more
22751	readable is_class_type rather than a dynamic_cast.
22752
227532016-07-26  Dodji Seketeli <dodji@redhat.com>
22754
22755	Generalize DIE source concept in DWARF reader
22756	* src/abg-dwarf-reader.cc (enum die_source): Define new enum.
22757	(operator++): Define new prefix increment operator for the
22758	die_source enum.
22759	(imported_unit_point::imported_unit_from_alt_di): Remove this
22760	data member.
22761	(imported_unit_point::imported_unit_die_source):
22762	New data member of type die_source.
22763	(read_context::primary_die_parent_map_): Renamed
22764	die_parent_map_ data member into this.
22765	(read_context::clear_per_corpus_data): Use the new
22766	clear_die_type_maps function, not die_type_map.  Also use the
22767	new clear_types_to_canonicalize overload that takes no
22768	parameter.
22769	(read_context::{get_die_source, clear_die_type_maps,
22770	clear_types_to_canonicalize}): New member functions.
22771	(build_ir_node_from_die, die_die_attribute, get_parent_die)
22772	(get_scope_for_die, build_namespace_decl_and_add_to_ir)
22773	(build_type_decl, build_enum_type)
22774	(build_class_type_and_add_to_ir, build_qualified_type)
22775	(build_pointer_type_def, build_reference_type)
22776	(build_function_type, build_array_type, build_typedef_type)
22777	(build_var_decl, build_function_decl): Remove the boolean
22778	parameter that was designating the source of the DIE.  If
22779	necessary, get the source of the DIE from inside the function
22780	using the new read_context::get_die_source.
22781	(read_debug_info_into_corpus): Adjust.
22782	(maybe_canonicalize_type, find_import_unit_point_between_dies)
22783	(maybe_canonicalize_type, read_context::{associate_die_to_decl,
22784	lookup_decl_from_die_offset, die_type_map, associate_die_to_type,
22785	lookup_type_from_die_offset, die_wip_classes_map,
22786	die_wip_function_types_map, is_wip_class_die_offset,
22787	is_wip_function_type_die_offset, types_to_canonicalize,
22788	schedule_type_for_late_canonicalization,
22789	canonicalize_types_scheduled, add_late_canonicalized_types_stats,
22790	perform_late_type_canonicalizing}): Take a die_source as the
22791	source of the DIE, not a boolean.  Adjust the code of the function
22792	accordingly.
22793	(read_context::{tu_die_imported_unit_points_map}): Modified
22794	this to make it take a die_source and return the appropriate
22795	map depending on the source.
22796	(read_context::build_die_parent_relations_under): Turn the
22797	non-member static function build_die_parent_relations_under
22798	into a member function.
22799	(read_context::build_die_parent_maps): Turn the non-member
22800	static function build_die_parent_maps into a member function.
22801	Make this function build a DIE -> parent map also for type
22802	DIEs that are in the .type_units section.
22803
228042016-07-25  Dodji Seketeli <dodji@redhat.com>
22805
22806	Cleanup is_class and is_compatible_with_class_type
22807	* include/abg-fwd.h (is_class): Remove the overloads that take a
22808	decl_base or a type_base.  Add one that takes a type_or_decl_base.
22809	(is_compatible_with_class_type): Make this take a reference to
22810	smart pointer, not just the smart pointer.
22811	* src/abg-ir.cc (is_class): Do the same as in the header file.
22812	(is_compatible_with_class_type): Likewise.
22813
228142016-07-22  Dodji Seketeli <dodji@redhat.com>
22815
22816	Add ABG_ASSERT_NOT_REACHED macro
22817	* include/abg-tools-utils.h (ABG_ASSERT_NOT_REACHED): New macro.
22818	* src/abg-dwarf-reader.cc (stt_to_elf_symbol_type)
22819	(stb_to_elf_symbol_binding, get_elf_class_size_in_bytes)
22820	(build_ir_node_from_die): Use the new ABG_ASSERT_NOT_REACHED macro
22821	in lieu of just calling abort().
22822
228232016-07-22  Dodji Seketeli <dodji@redhat.com>
22824
22825	Prepare support for symbol visibility control
22826	* configure.ac: Detect compiler support for
22827	__attribute__((visibility("hidden")) and define the
22828	HAS_GCC_VISIBILITY_ATTRIBUTE macro accordingly.  Update the
22829	configuration report.
22830	* src/abg-internal.h: New internal header file that defines macros
22831	to be used in the source code to control declaration visibility.
22832	* src/Makefile.am: Add abg-internal.h to source distribution.  Add
22833	src/ to the include search path.
22834
228352016-07-06  Chenxiong Qi <cqi@redhat.com>
22836
22837	Make fedabipkgdiff consistent with Libabigail's other tests
22838	* configure.ac: Do not require Python dependencies itertools,
22839	unittest and StringIO anymore as they are not used anymore.
22840	Require new module tempfile now.  Generate new executable script
22841	tests/mockfedabipkgdiff from tests/mockfedabipkgdiff.in.
22842	* doc/manuals/abipkgdiff.rst: Add doc for new option
22843	--show-identical-binaries to abipkgdiff
22844	* doc/manuals/fedabipkgdiff.rst: Add doc for new options
22845	--show-identical-binaries to fedabipkgdiff.
22846	* tools/abipkgdiff.cc (options::show_identical_binaries): New data
22847	member.
22848	(options::options): Initialize new data member.
22849	(display_usage): Add a new help string for the new
22850	--show-identical-binaries option.
22851	(parse_command_line): Parse the newq --show-identical-binaries
22852	command line switch.
22853	(pthread_routine_compare): When the comparison of two binaries is
22854	empty, if --show-identical-binaries was provided, then emit some
22855	output saying the comparison did yield the empty set.
22856	* tools/fedabipkgdiff (DEFAULT_ABIPKGDIFF): Store the default path
22857	to abipkgdiff in this new global variable.  Naming this default
22858	path is useful because it can then be cleanly overloaded when
22859	using mock.patch.
22860	(build_path_to_abipkgdiff): Return the new DEFAULT_ABIPKGDIFF
22861	global variable.
22862	(cmd): Parse the new --show-identical-binaries command line
22863	switch.
22864	* tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt:
22865	New reference output.
22866	* tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt:
22867	Likewise.
22868	* tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt:
22869	Likewise.
22870	* tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt:
22871	Likewise.
22872	* tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt:
22873	Likewise.
22874	* tests/mockfedabipkgdiff.in: New uninstalled script template.
22875	* tests/runtestfedabipkgdiff.py.in (counter)
22876	(temp_file_or_dir_prefix, UtilsTest, RPMTest, LocalRPMTest)
22877	(RunAbipkgdiffTest, GetPackageLatestBuildTest, DownloadRPMTest)
22878	(BrewListRPMsTest, AssertionHelper, MockGlobalConfig)
22879	(BUILT_ABIPKGDIFF, CompareABIFromCommandLineTest): Remove these
22880	classes, global variables and functions.
22881	(FEDABIPKGDIFF, TEST_SRC_DIR, TEST_BUILD_DIR, INPUT_DIR)
22882	(OUTPUT_DIR, FEDABIPKGDIFF_TEST_SPECS): New global variables.
22883	(ensure_output_dir_created, run_fedabipkgdiff_tests, main): New
22884	functions.
22885	* tests/test-diff-pkg.cc (in_out_specs): Add
22886	tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt
22887	to the set of reference outputs to consider.
22888	* tests/Makefile.am: Add non-installed script mockfedabipkgdiff to
22889	source distribution. Also added
22890	tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt,
22891	tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt,
22892	tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt,
22893	tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt
22894	and
22895	tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt
22896	to source distribution.
22897
228982016-07-13  Dodji Seketeli <dodji@redhat.com>
22899
22900	Fix spurious type size change report for distinct_diff
22901	* src/abg-comparison.cc (report_size_and_alignment_changes):
22902	Report size change only when the sizes are different.
22903	* tests/data/test-diff-filter/test33-report-0.txt: Adjust.
22904
229052016-07-13  Dodji Seketeli <dodji@redhat.com>
22906
22907	Bug 20199 - Consider integral type synonyms as being equal
22908	* src/abg-ir.cc (class integral_type): New class declaration and
22909	definition.
22910	(operator|, operator&, operator&=): New non-member bitwise
22911	operators for integral_type.
22912	(parse_integral_type_modifier, parse_base_integral_type)
22913	(parse_integral_type_modifier): New static function definitions.
22914	(type_decl::type_decl): Use the parse_integral_type to parse an
22915	integral type out of the current type_decl being built and
22916	transform the current type name into a canonical form.
22917	* tests/data/test-abidiff/test-PR18791-v0.so.abi: Adjust.
22918	* tests/data/test-abidiff/test-PR18791-v1.so.abi: Likewise.
22919	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
22920	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
22921	* tests/data/test-diff-filter/test33-report-0.txt: Likewise.
22922	* tests/data/test-diff-filter/test34-report-0.txt: Likewise.
22923	* 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.
22924	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
22925	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
22926	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
22927	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
22928	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
22929	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
22930	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
22931	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
22932	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
22933	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
22934	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
22935	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
22936	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
22937	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
22938
229392016-07-08  Dodji Seketeli <dodji@redhat.com>
22940
22941	Bug 20332 - too many ...'s counted as parameters
22942	* src/abg-dwarf-reader.cc (build_function_type): Create a variadic
22943	parameter just for the first DW_TAG_unspecified_parameters seen.
22944	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
22945	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
22946	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
22947
229482016-07-06  Dodji Seketeli <dodji@redhat.com>
22949
22950	Better recognize qualified void type
22951	* include/abg-ir.h (environment::is_void_type): Declare new member
22952	function.
22953	* src/abg-ir.cc (environment::is_void_type): Define new member
22954	function.
22955	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Strip const
22956	qualifier from const void.
22957	* tests/data/test-diff-filter/test34-libjemalloc.so.2-gcc-6.1.0:
22958	New test input.
22959	* tests/data/test-diff-filter/test34-libjemalloc.so.2-intel-16.0.3: Likewise.
22960	* tests/data/test-diff-filter/test34-report-0.txt: New reference output.
22961	* tests/data/Makefile.am: Add the new files above to the source
22962	distribution.
22963	* tests/test-diff-filter.cc (in_out_specs): Compare the two new
22964	binaries above.
22965	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
22966	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
22967	* 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.
22968	* 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.
22969	* tests/data/test-read-dwarf/test1.abi: Adjust.
22970	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
22971	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
22972	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
22973	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
22974	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
22975	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
22976	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
22977	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
22978	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
22979	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
22980	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
22981	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
22982	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
22983	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
22984
229852016-07-05  Dodji Seketeli <dodji@redhat.com>
22986
22987	Bug 20194 - Fail to recognize void type represented by DW_TAG_base_type
22988	* src/abg-dwarf-reader.cc (build_type_decl): Recognize a
22989	DW_TAG_base_type of size zero and of name "void" as a void
22990	type.
22991	* tests/data/test-diff-filter/test33-libelf.so.0.8.13-gcc: New
22992	binary test input.
22993	* tests/data/test-diff-filter/test33-libelf.so.0.8.13-intel16.0.3: Likewise.
22994	* tests/data/test-diff-filter/test33-report-0.txt: New reference output.
22995	* tests/data/Makefile.am: Add the new files above to source
22996	distribution.
22997	* tests/test-diff-filter.cc (in_out_specs): Make this test harness
22998	run over the new test inputs above.
22999
230002016-07-04  Dodji Seketeli <dodji@redhat.com>
23001
23002	Add a new overload for is_type_decl
23003	* include/abg-fwd.h (is_type_decl): Declare a new overload
23004	* src/abg-ir.cc (is_type_decl): Define a new overload.
23005	(function_decl::parameter::get_pretty_representation): Adjust.
23006
230072016-06-29  Chenxiong Qi <cqi@redhat.com>
23008
23009	Add --abipkgdiff option in manual and bash completion
23010	* doc/manuals/fedabipkgdiff.rst: Add description of --abipkgdiff
23011	option. Reformat paragraph.
23012	* bash-completion/fedabipkgdiff: Add --abipkgdiff
23013
230142016-06-29  Chenxiong Qi <cqi@redhat.com>
23015
23016	Add fedabipkgdiff bash completion to dist
23017	* bash-completion/Makefile.am: Add fedabipkgdiff
23018	* bash-completion/fedabipkgdiff: Change mode to 775
23019
230202016-06-29  Chenxiong Qi <cqi@redhat.com>
23021
23022	Update bash completion for fedabipkgdiff
23023	* bash-completion/fedabipkgdiff: New bash completion file.
23024
230252016-06-29  Dodji Seketeli <dodji@redhat.com>
23026
23027	Bump version number to 1.0.rc6
23028	* configure.ac: Bump version number to 1.0.rc6
23029
230302016-06-29  Dodji Seketeli <dodji@redhat.com>
23031
23032	Update web page for 1.0.rc5
23033	* doc/website/mainpage.txt: Update web page.
23034
230352016-06-27  Dodji Seketeli <dodji@redhat.com>
23036
23037	Update ChangeLog for 1.0.rc5
23038	* ChangeLog: Update by doing "make update-changelog" in the build
23039	directory.
23040
230412016-06-27  Dodji Seketeli <dodji@redhat.com>
23042
23043	Update NEWS file in preparation for 1.0.rc5
23044	* NEWS: update with the edited content of the command:
23045	git shortlog libabigail-1.0.rc4..HEAD
23046
230472016-06-27  Dodji Seketeli <dodji@redhat.com>
23048
23049	Fix python interpreter path for el6
23050	* tests/runtestdefaultsupprs.py.in: Use the python interpreter at
23051	/usr/bin/python, not the one at /bin/python.
23052
230532016-06-24  Dodji Seketeli <dodji@redhat.com>
23054
23055	Misc cleanup in abg-reader.cc
23056	* src/abg-reader.cc (read_context::push_decl_to_current_scope):
23057	Pass the decl smart pointer by value.
23058
230592016-06-22  Dodji Seketeli <dodji@redhat.com>
23060
23061	Use ODR-based optimization on C/C++ translation unit only
23062	* src/abg-ir.cc (strip_typedef): Set the translation unit of the
23063	new ABI artifact.
23064	(type_base::get_canonical_type_for): Perform the ODR-based
23065	optimization only for ABI artifact in C and C++ language
23066	translation units.
23067	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Assert that
23068	the new ABI artifact has its translation unit set.
23069	* src/abg-reader.cc (read_context::{push_decl_to_current_scope,
23070	push_and_key_type_decl}): Set the translation unit of the current
23071	decl, irrespective of if it was added to the current scope or not.
23072	Assert that the decl that was newly pushed to the current scope is
23073	added to the current translation unit.
23074
230752016-06-10  Dodji Seketeli <dodji@redhat.com>
23076
23077	Misc white space and comment cleanups
23078	* include/abg-ir.h (typedef type_or_decl_base): Cleanup comment.
23079	* src/abg-ir.cc (struct type_or_decl_base::priv): Fix comment.
23080
230812016-06-10  Dodji Seketeli <dodji@redhat.com>
23082
23083	Cleanup function_decl::parameter::get_pretty_representation
23084	* src/abg-ir.cc
23085	(function_decl::parameter::get_pretty_representation): Assert that
23086	the environment is always non-nil.  Then no needs to check for it
23087	being non-nil anymore.  Use is_type_decl instead of
23088	dynamic_pointer_cast.
23089
230902016-06-07  Chenxiong Qi <cqi@redhat.com>
23091
23092	Fix package NVR comparison in fedabipkgdiff
23093	* configure.ac: Add new dependency.
23094	* tests/runtestfedabipkgdiff.py.in (builds): Add new builds for
23095	running tests to test selecting latest build from a package.
23096	(packages): Add new package gnutls.
23097	(GetPackageLatestBuildTest.{test_get_latest_one,
23098	test_cannot_find_a_latest_build_with_invalid_distro}): Use new
23099	builds of package gnutls to run tests.
23100	* tools/fedabipkgdiff (cmp_nvr): New function used to compare nvrs
23101	by Python built-in function sorted.
23102	(Brew.listBuilds): Use the new cmp_nvr function.
23103
231042016-06-06  Chenxiong Qi <cqi@redhat.com>
23105
23106	Bug 20135 - Make fedabipkgdiff compare ABIs using devel packages
23107	* doc/manuals/fedabipkgdiff.rst: Add documentation for the new
23108	--no-devel-pkg command line option, as well as for the new default
23109	behaviour of taking devel packages into account during ABI
23110	comparison.
23111	* tools/fedabipkgdiff (PkgInfo): Add new attribute
23112	devel_package.
23113	(RPM.is_devel): New property to determine if rpm is a
23114	development package.
23115	(LocalRPM._find_rpm): New method to find a specific rpm.
23116	(LocalRPM.find_debuginfo): Use new method _find_rpm to find
23117	debuginfo package.
23118	(LocalRPM.find_devel): New method to find an associated
23119	development package.
23120	(Brew.select_rpms_from_a_build): RPMs selector method is
23121	changed to select development package also.
23122	(abipkgdiff): Construct and run abipkgdiff with and without
23123	--devel-pkg[12] options.
23124	(magic_construct): Construct PkgInfo with development package.
23125	(run_abipkgdiff): Run abipkgdiff against rpms with development
23126	packages.
23127	(diff_local_rpm_with_latest_rpm_from_koji): Find development
23128	package, and call method abipkgdiff with development package.
23129	(build_commandline_args_parser): add new option --no-devel-pkg.
23130	* tests/runtestfedabipkgdiff.py.in (packages): Add new package
23131	nss-util.
23132	(builds): Add new builds of nss-utils, nss-util-3.12.6-1.fc14
23133	and nss-util-3.24.0-2.0.fc25.
23134	(rpms): Add new associated rpms of the two new builds.
23135	(AssertionHelper.assert_functions_changes_summary): New method
23136	to match and assert functions changes summary.
23137	(AssertionHelper.assert_abi_comparison_result): Changed to
23138	support to help assert functions changes summary.
23139	(MockGlobalConfig.{no_devel_pkg, check_all_subpackages}): New
23140	fake options with default value for running tests.
23141	(RPMTest.setUp): add new development package for running test
23142	case.
23143	(RPMTest.test_is_devel): New test to test is_devel property.
23144	(RunAbipkgdiffTest.setUp): Add new development packages for
23145	running test case.
23146	(RunAbipkgdiffTest.{test_all_success, test_all_failure,
23147	test_partial_failure}): Mock global config.
23148	(RunAbipkgdiffWithDSOOnlyOptionTest): Removed.
23149	(CompareABIFromCommandLineTest.test_compare_with_no_devel_pkg):
23150	New test to test fedabipkgdiff with or without --no-devel-pkg
23151	option.
23152	* tests/data/Makefile.am: Add new rpms.
23153	* tests/data/test-fedabipkgdiff/packages/nss-util/3.12.6/1.fc14/
23154	x86_64/nss-util-3.12.6-1.fc14.x86_64.rpm: New rpm for running
23155	tests.
23156	* tests/data/test-fedabipkgdiff/packages/nss-util/3.12.6/1.fc14/
23157	x86_64/nss-util-debuginfo-3.12.6-1.fc14.x86_64.rpm: New rpm for
23158	running tests.
23159	* tests/data/test-fedabipkgdiff/packages/nss-util/3.12.6/1.fc14/
23160	x86_64/nss-util-devel-3.12.6-1.fc14.x86_64.rpm: New rpm for
23161	running tests.
23162	* tests/data/test-fedabipkgdiff/packages/nss-util/3.24.0/2.0.fc25/
23163	x86_64/nss-util-3.24.0-2.0.fc25.x86_64.rpm: New rpm for running
23164	tests.
23165	* tests/data/test-fedabipkgdiff/packages/nss-util/3.24.0/2.0.fc25/
23166	x86_64/nss-util-debuginfo-3.24.0-2.0.fc25.x86_64.rpm: New rpm
23167	for running tests.
23168	* tests/data/test-fedabipkgdiff/packages/nss-util/3.24.0/2.0.fc25/
23169	x86_64/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm: New rpm for
23170	running tests.
23171
231722016-06-03  Dodji Seketeli <dodji@redhat.com>
23173
23174	Improve python modules detection
23175	* configure.ac: Include
23176	autoconf-archive/ax_check_python_modules.m4 rather than
23177	autoconf-archive/ax_python_module.m4.  Use AX_CHECK_PYTHON_MODULES
23178	rather than AX_PYTHON_MODULE.
23179	* Makefile.am: Add the new file
23180	autoconf-archive/ax_check_python_modules.m4 to source distribution
23181	and remove the older autoconf-archive/ax_python_module.m4 one.
23182	* autoconf-archive/ax_check_python_modules.m4: New file.
23183	* autoconf-archive/ax_python_module.m4: Remove.
23184
231852016-05-30  Chenxiong Qi <cqi@redhat.com>
23186
23187	Add integration tests for fedabipkgdiff
23188	* configure.ac: do not detect shutil module.
23189	* tests/runtestfedabipkgdiff.py.in: do not import shutil
23190	anymore.
23191	(BUILT_ABIPKGDIFF): new global variable to reference the
23192	abipkgdiff built from source code, as the new test case' tests
23193	require this command directly rather than mocking the
23194	global_config.
23195	(test_data_dir): convert variable name to uppercase,
23196	reference to the test data directory by absolute path instead of
23197	relative path.
23198	(TEST_TOPDIR): new global variable to use data directory as the
23199	topdir passed to fedabpkgdiff to download rpms.
23200	(TEST_DOWNLOAD_CACHE_DIR): new global variable referencing a
23201	fake download cache directory for tests only.
23202	(packages, builds, rpms): new global variables as a fake
23203	storage holding packages, builds and rpms.
23204	(AssertionHelper): new class helping to assert abipkgdiff
23205	result easily.
23206	(MockClientSession): new class to mock koji.ClientSession.
23207	(MockGlobalConfig.abipkgdiff): set this option to global
23208	variable BUILT_ABIPKGDIFF.
23209	(MockKojiClientSessin): removed.
23210	(mock_get_session): removed.
23211	(GetPackageLatestBuildTest.{test_get_latest_one,
23212	test_cannot_find_a_latest_build_with_invalid_distro,
23213	test_cannot_find_a_latest_build_with_invalid_distro}): mock
23214	koji.ClientSession with new class MockClientSession. Remove
23215	invalid documentation from docstring. Use new package rather
23216	than httpd.
23217	(DownloadRPMTest.setUp): remove self.download_dir and use global
23218	TEST_DOWNLOAD_CACHE_DIR.
23219	(DownloadRPMTest.tearDown): do not remove download cache
23220	directory.
23221	(DownloadRPMTest.make_remote_file_url): do not omit positional
23222	argument specifiers in string format.
23223	(DownloadRPMTest.{test_succeed_to_download_a_rpm,
23224	test_failed_to_download_a_rpm}): set fake download cache
23225	directory to mocked get_download_dir in mock.patch decorator.
23226	(BrewListRPMsTest.test_select_specific_rpms): use new
23227	MockClientSession to mock koji.ClientSession. Rewrite test by
23228	using the new package listed in global variable packages.
23229	(RunAbipkgdiffWithDSOOnlyOptionTest.{test_abipkgdiff_with_dso_only,
23230	test_abipkgdiff_without_dso_only}): set fake download cache
23231	directory to mocked get_download_dir in mock.patch decorator.
23232	(CompareABIFromCommandLineTest): new integration test case.
23233	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
23234	i686/dbus-glib-0.100.2-2.fc20.i686.rpm: new rpm for running tests.
23235	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
23236	i686/dbus-glib-debuginfo-0.100.2-2.fc20.i686.rpm: new rpm for
23237	running tests.
23238	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
23239	i686/dbus-glib-devel-0.100.2-2.fc20.i686.rpm: new rpm for
23240	running tests.
23241	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
23242	x86_64/dbus-glib-0.100.2-2.fc20.x86_64.rpm: new rpm for running
23243	tests.
23244	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
23245	x86_64/dbus-glib-debuginfo-0.100.2-2.fc20.x86_64.rpm: new rpm
23246	for running tests.
23247	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/
23248	x86_64/dbus-glib-devel-0.100.2-2.fc20.x86_64.rpm: new rpm for
23249	running tests.
23250	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
23251	i686/dbus-glib-0.106-1.fc23.i686.rpm: new rpm for running tests.
23252	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
23253	i686/dbus-glib-debuginfo-0.106-1.fc23.i686.rpm: new rpm for
23254	running tests.
23255	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
23256	i686/dbus-glib-devel-0.106-1.fc23.i686.rpm: new rpm for running
23257	tests.
23258	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
23259	x86_64/dbus-glib-0.106-1.fc23.x86_64.rpm: new rpm for running
23260	tests.
23261	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
23262	x86_64/dbus-glib-debuginfo-0.106-1.fc23.x86_64.rpm: new rpm for
23263	running tests.
23264	* tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/
23265	x86_64/dbus-glib-devel-0.106-1.fc23.x86_64.rpm: new rpm for
23266	running tests.
23267	* tests/data/Makefile.am: add new rpms.
23268
232692016-05-31  Dodji Seketeli <dodji@redhat.com>
23270
23271	Bug 19967 - System-level suppressions for glibc
23272	* default.abignore: Add initial suppression specifications for
23273	glibc.
23274
232752016-05-31  Dodji Seketeli <dodji@redhat.com>
23276
23277	Escape all characters when reading a string in ini files
23278	* src/abg-ini.cc (read_context::peek): Take an output parameter to
23279	tell the caller when this function escaped the returned
23280	character.  Added an overload without this new parameter.
23281	(read_context::read_string): Accept all characters as part of the
23282	string.
23283	* tests/data/test-diff-suppr/test7-var-suppr-9.suppr: New test
23284	input.
23285	* tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: New
23286	test reference output.
23287	* tests/data/Makefile.am: Add the files above to source
23288	distribution.
23289	* tests/test-diff-suppr.cc (in_out_spec): Run a new comparison of
23290	libtest7-var-suppr-v{0,1}.so this time using the new
23291	test7-var-suppr-9.suppr specification that exercices a string with
23292	the escaped characters that we were having difficulty with.
23293
232942016-05-31  Dodji Seketeli <dodji@redhat.com>
23295
23296	Don't require all version symbol sections to present
23297	* src/abg-dwarf-reader.cc (get_symbol_versionning_sections): Allow
23298	returning just some of the three version-related section, not
23299	necessarily all of them.  Adjust comment.
23300	(get_version_for_symbol): Be ready to not necessarily having the
23301	three version-related sections available.
23302
233032016-05-30  Dodji Seketeli <dodji@redhat.com>
23304
23305	Bug 20180 - Support system-wide suppression specifications
23306	* doc/manuals/abidiff.rst: Document the default suppression
23307	scheme, its interaction with the --supprs option and the new
23308	--no-default option.
23309	* doc/manuals/abipkgdiff.rst: Likewise.
23310	* doc/manuals/fedabipkgdiff.rst: Likewise.
23311	* configure.ac: Generate the tests/runtestdefaultsupprs.py file
23312	from the new tests/runtestdefaultsupprs.py.in template.
23313	* default.abignore: New file.
23314	* Makefile.am: Add it to source distribution.
23315	* src/Makefile.am: Define the ABIGAIL_ROOT_SYSTEM_LIBDIR
23316	preprocessor macro that is set the value of the $libdir autotools
23317	macro.
23318	* include/abg-tools-utils.h: Update copyright years.
23319	(get_system_libdir, get_default_system_suppression_file_path)
23320	(get_default_user_suppression_file_path)
23321	(load_default_system_suppressions)
23322	(load_default_user_suppressions): Declare new functions
23323	* src/abg-tools-utils.cc (get_system_libdir)
23324	(get_default_system_suppression_file_path)
23325	(get_default_user_suppression_file_path)
23326	(load_default_system_suppressions)
23327	(load_default_user_suppressions): Define new functions.
23328	(is_regular_file): Amend this so that it return true for symlinks
23329	to regular files too.
23330	(is_dir): Amend this so that it returns true for symlinks to
23331	directories too.
23332	* tools/abidiff.cc (options::no_default_supprs): New data member.
23333	(options::options): Initialize the new data member.
23334	(display_usage): Display a new help string for the new
23335	--no-default-suppression command line option.
23336	(parse_command_line): Parse this new command line option.
23337	(set_diff_context_from_opts): Load the default suppression
23338	specifications, unless --no-default-suppression or --supprs was
23339	provided.
23340	* tools/abipkgdiff.cc (options::no_default_supprs): New data
23341	member.
23342	(options::options): Initialize the new data member.
23343	(parse_command_line): Parse the new --no-default-suppression
23344	command line option.
23345	(main): Load the default suppression specifications, unless
23346	--no-default-suppression or --supprs was provided.
23347	* tools/fedabipkgdiff (abipkgdiff): Add --no-default-suppression
23348	to the invocation of abipkgdiff if it was provided on the command
23349	line.
23350	(build_commandline_args_parser): Parse the new
23351	--no-default-suppression command line option.
23352	* tests/runtestdefaultsupprs.py.in: New test harness template.
23353	* tests/Makefile.am: Add the new runtestdefaultsupprs.py to the
23354	set of tests.
23355	* tests/data/test-default-supprs/test0-type-suppr-0.suppr: New
23356	test input.
23357	* tests/data/test-default-supprs/test0-type-suppr-report-0.txt: Likewise.
23358	* tests/data/test-default-supprs/test0-type-suppr-v0.o: Likewise.
23359	* tests/data/test-default-supprs/test0-type-suppr-v1.o: Likewise.
23360	* tests/data/test-default-supprs/dirpkg-1-dir-report-0.txt:
23361	Likewise.
23362	* tests/data/test-default-supprs/dirpkg-1-dir1: Likewise.
23363	* tests/data/test-default-supprs/dirpkg-1-dir2: Likewise.
23364	* tests/data/Makefile.am: Add new the new tests input above to
23365	Makefile.am.
23366	* tests/runtestcanonicalizetypes.sh.in: Pass
23367	--no-default-suppression to abidiff invocations.
23368	* tests/runtestdefaultsupprs.py.in: Likewise.
23369	* tests/test-abidiff-exit.cc: Likewise.
23370	* tests/test-diff-dwarf-abixml.cc: Likewise.
23371	* tests/test-diff-filter.cc: Likewise.
23372	* tests/test-diff-suppr.cc: Likewise.
23373	* tools/abidiff.cc: Likewise.
23374
233752016-05-30  Dodji Seketeli <dodji@redhat.com>
23376
23377	Add --abipkgdiff option to fedabipkgdiff
23378	* tools/fedabipkgdiff (build_path_to_abipkgdiff): Define new
23379	function.
23380	(abipkgdiff): Invoke the new build_path_to_abipkgdiff() here.
23381	(build_commandline_args_parser): Parse the new --abipkgdiff
23382	option.
23383
233842016-05-28  Dodji Seketeli <dodji@redhat.com>
23385
23386	Better diagnostics when abipkgdiff has an extra argument
23387	* tools/abipkgdiff.cc (options::wrong_arg): New data member.
23388	(parse_command_line): Set options::wrong_arg
23389	to the wrong argument passed.
23390	(main): Tell wrong argument case apart, and report it.
23391
233922016-05-26  Dodji Seketeli <dodji@redhat.com>
23393
23394	Fix suppr spec wording in abipkgdiff manual
23395	* doc/manuals/abipkgdiff.rst: Fix the wording for the --suppr
23396	option.
23397
233982016-05-26  Dodji Seketeli <dodji@redhat.com>
23399
23400	Update reference to tools in libabigail-concepts manual
23401	* doc/manuals/libabigail-concepts.rst: Do not refer just to
23402	abidiff when talking about suppression specification.  Also
23403	refer to abipkgdiff and other tools.
23404
234052016-05-30  Dodji Seketeli <dodji@redhat.com>
23406
23407	Fix some wording in the Libabigail overview manual page
23408	* doc/manuals/libabigail-overview.rst: Cleanup some confusion
23409	about Abigail-the-framework and libabigail-the-library.
23410
234112016-05-25  Dodji Seketeli <dodji@redhat.com>
23412
23413	Add test data for tests/runtestfedabipkgdiff.py
23414	* tests/data/test-fedabipkgdiff/dbus-glib-0.104-3.fc23.x86_64.rpm:
23415	New file.
23416	* tests/data/test-fedabipkgdiff/dbus-glib-0.80-3.fc12.x86_64.rpm: Likewise.
23417	* tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm:
23418	Likewise.
23419	* tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm:
23420	Likewise.
23421
234222016-05-25  Dodji Seketeli <dodji@redhat.com>
23423
23424	Add a 'check-valgrind' target to the top-most Makefile.am
23425	* Makefile.am (check-valgrind): Add this new target here.
23426
234272016-05-21  Chenxiong Qi <cqi@redhat.com>
23428
23429	Bug 20085 - Add --dso-only option to fedabipkgdiff
23430	* tools/fedabipkgdiff: Do not import shlex anymore.
23431	(ABIDIFF_OK, ABIDIFF_ERROR, ABIDIFF_USAGE_ERROR)
23432	(ABIDIFF_ABI_CHANGE): New global constant variables.
23433	(abipkgdiff): Pass the --dso-only option to the abipkgdiff command
23434	line tool, if that option was passed to fedabipkgdiff. Build this
23435	abipkgdiff command invocation from an array of strings, rather
23436	than from formatting a string.  This makes us get rid of the shlex
23437	module.  Fix typo in dry-run logged string.  If there was an
23438	internal error reported by abipkgdiff, report it to stderr.
23439	(build_commandline_args_parser): Parse the --dso-only command line
23440	option.
23441	* tests/runtestfedabipkgdiff.py.in (fedabipkgdiff_mod): Fix a typo
23442	in initializing this global variable.
23443	(test_data_dir): New global variable, that is used to reference
23444	tests/data/test-fedabipkgdiff/.
23445	(RunAbipkgdiffTest.{test_all_success, test_partial_failure}): Fix
23446	typo.
23447	(Mockglobalconfig.{koji_topdir, dso_only}): New data members.
23448	(GetPackageLatestBuildTest.{test_get_latest_one,
23449	test_cannot_find_a_latest_build_with_invalid_distro,
23450	test_succeed_to_download_a_rpm, test_failed_to_download_a_rpm}):
23451	Fix typo.
23452	(BrewListRPMsTest.test_select_specific_rpms): Fix typo.
23453	(RunAbipkgdiffWithDSOOnlyOptionTest): New test case class.
23454	* doc/manuals/fedabipkgdiff.rst: update document for this new
23455	--dso-only option.
23456	* tests/data/test-fedabipkgdiff/dbus-glib-0.104-3.fc23.x86_64.rpm:
23457	New symbolic link to
23458	test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64.rpm.
23459	* tests/data/test-fedabipkgdiff/dbus-glib-0.80-3.fc12.x86_64.rpm:
23460	New symbolic link to
23461	test-diff-pkg/dbus-glib-0.80-3.fc12.x86_64.rpm.
23462	* tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm:
23463	New symbolic link to
23464	test-diff-pkg/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm.
23465	* tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm:
23466	New symbolic link to
23467	test-diff-pkg/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm.
23468	* tests/data/Makefile.am: add tests/data/test-fedabipkgdiff so
23469	that this data directory and all things within it can be included
23470	in tarball.
23471
234722016-05-24  Sinny Kumari <sinny@redhat.com>
23473
23474	Change parent directory for keeping extracted packages in abipkgdiff
23475	* tools/abipkgdiff.cc (extracted_packages_parent_dir): Change
23476	TMPDIR environment variable to XDG_CACHE_HOME and default
23477	temporary parent directory to $HOME/.cache/libabigail/
23478
234792016-05-20  Dodji Seketeli <dodji@redhat.com>
23480
23481	Make abi{pkg}diff filter out changes about private types
23482	* include/abg-comp-filter.h: Update copyright year.
23483	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): Make this
23484	static function become exported.
23485	(has_virtual_mem_fn_change): Declare new function.
23486	* include/abg-suppression.h
23487	(suppression_base::{get,set}_is_artificial): Declare new
23488	accessors.
23489	(type_suppression::get_source_locations_to_keep): Return an
23490	unordered set of strings, not a vector.  Add a non-const overload.
23491	(type_suppression::set_source_locations_to_keep): Set an unordered
23492	set of strings, not a vector.
23493	* src/abg-suppression.cc (suppression_base::priv::is_artificial_):
23494	New data member.
23495	(suppression_base::priv::priv): Initialize the new data member.
23496	(suppression_base::{get,set}_is_artificial): Define new accessors.
23497	(type_suppression::priv::source_locations_to_keep_): Change the
23498	vector of strings representing source file names into unordered
23499	set of string.
23500	(type_suppression::get_source_locations_to_keep): Return an
23501	unordered set of strings, not a vector.  Define a non-const
23502	overload.
23503	(type_suppression::set_source_locations_to_keep): Set an unordered
23504	set of strings, not a vector.
23505	(type_suppression::suppresses_diff): Make this suppress virtual
23506	member function diffs if the enclosing type of the changed virtual
23507	member is suppressed by the current type_suppression.
23508	(read_type_suppression): Adjust to use the fact that the source
23509	locations are not stored in an unordered set, not in a vector
23510	anymore.  Otherwise, using a vector here make things too slow.
23511	(type_suppression::suppresses_type): Likewise.  Also, If the type
23512	we are looking at has no location because it's a true opaque type
23513	and if the current suppression is an artificial suppression that
23514	is meant to suppress change reports about non-public types, then
23515	suppress the type.
23516	* include/abg-tools-utils.h (gen_suppr_spec_from_headers): Declare
23517	new public function.
23518	* src/abg-tools-utils.cc (PRIVATE_TYPES_SUPPR_SPEC_NAME): Define a
23519	new constant variable.
23520	(handle_fts_entry): Define new static function.
23521	(gen_suppr_spec_from_headers): Define new public function.
23522	* src/abg-comparison.cc
23523	(corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars):
23524	If a type suppression suppresses a given class C, make it change
23525	added/removed virtual functions whose enclosing type is C.
23526	* tools/abidiff.cc (options::{headers_dir1, headers_dir2}): New
23527	data members.
23528	(display_usage): Add help strings for --headers-dir1 and
23529	--headers-dir2.
23530	(parse_command_line): Parse the new --headers-dir1 and
23531	--headers-dir2 options.
23532	(set_diff_context_from_opts): Generate suppression specifications
23533	to filter out changes on private types, if --headers-dir1 or
23534	--headers-dir2 is given.
23535	* tools/abipkgdiff.cc (options::{devel_package1, devel_package2}):
23536	New data members.
23537	(typedef package_sptr): New typedef.
23538	(enum package::kind): New enum.
23539	(package::kind_): New data member.  This replaces ...
23540	(package::is_debug_info_): ... this data member.
23541	(package::{devel_package_, private_types_suppressions_}): New data
23542	members.
23543	(package::package): Adjust.
23544	(package::get_kind): Define new member function.  This replaces
23545	...
23546	(package::is_debug_info): ... this member function overload.
23547	(package::set_kind): Define new member functin.  It replaces ...
23548	(package::is_debug_info): ... this member function overload.
23549	(package::{devel_package, private_types_suppressions}): Define new
23550	accessors.
23551	(package::erase_extraction_directies): Erase the sub-directory
23552	where development packages are extracted to.
23553	(compare_args::private_types_suppr{1,2}): New data members.
23554	(compare_args::compare_args): Adjust.
23555	(display_usage): Add help strings for --devel-pkg1/--devel-pkg2.
23556	(compare): Make the overload that compares elf files take private
23557	types suppressions.  Add the private types suppressions to the
23558	diff context.
23559	(pthread_routine_compare): Adjust the call to compare.
23560	(maybe_create_private_types_suppressions): Define new static
23561	function.
23562	(pthread_routine_extract_pkg_and_map_its_content): If a devel
23563	package was specified for the main package then extract it in
23564	parallel with the other package extraction.  When the extraction
23565	is done, create private types suppressions by visiting the
23566	directories that contain the header files.
23567	(compare): In the overload that compares packages by scheduling
23568	comparison of individual elf files that are in the packages, pass
23569	in the private type suppressions too.
23570	(parse_command_line): Parse the new --devel-pkg{1,2} command line
23571	options.
23572	(main): Associate the devel package to the main package, if the
23573	--devel-pkg{1,2}.
23574	* doc/manuals/abidiff.rst: Add documentation about the new
23575	--headers-dir1 and --headers-dir2 options.
23576	* doc/manuals/abipkgdiff.rst: Likewise, add documentation about
23577	the new --devel-pkg1 and --devel-pkg2 libraries.
23578	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
23579	New test reference output.
23580	* tests/data/test-diff-pkg/tbb-devel-4.1-9.20130314.fc22.x86_64.rpm:
23581	New test input package.
23582	* tests/data/test-diff-pkg/tbb-devel-4.3-3.20141204.fc23.x86_64.rpm: Likewise.
23583	* tests/test-diff-pkg.cc b/tests/test-diff-pkg.cc
23584	(InOutSpec::{first,second}_in_devel_package_path): New data
23585	members.
23586	(in_out_specs): Adjust.  Also, add a new entry describing the new
23587	test inputs above.
23588	(test_task::perform): When the new test entry contains devel
23589	packages, pass them to abipkgdiff using the --devel1 and --devel2
23590	options.
23591	* tests/data/test-diff-suppr/test30-include-dir-v0/test30-pub-lib-v0.h:
23592	A new test input source code.
23593	* tests/data/test-diff-suppr/test30-include-dir-v1/test30-pub-lib-v1.h: Likewise.
23594	* tests/data/test-diff-suppr/test30-priv-lib-v0.cc: Likewise.
23595	* tests/data/test-diff-suppr/test30-priv-lib-v0.h: Likewise.
23596	* tests/data/test-diff-suppr/test30-priv-lib-v1.cc: Likewise.
23597	* tests/data/test-diff-suppr/test30-priv-lib-v1.h: Likewise.
23598	* tests/data/test-diff-suppr/test30-pub-lib-v0.cc: Likewise.
23599	* tests/data/test-diff-suppr/test30-pub-lib-v0.so: Add new test
23600	binary input.
23601	* tests/data/test-diff-suppr/test30-pub-lib-v1.cc: Add new test
23602	input source code.
23603	* tests/data/test-diff-suppr/test30-pub-lib-v1.so: Add new test
23604	binary input.
23605	* tests/data/test-diff-suppr/test30-report-0.txt: Add new test
23606	reference output.
23607	* tests/data/test-diff-suppr/test30-report-1.txt: Add new test
23608	reference output.
23609	* tests/test-diff-suppr.cc (InOutSpec::headers_dir{1,2}): New data
23610	members.
23611	(InOutSpec::abidiff_options): Renamed the bidiff_options data
23612	member into this.
23613	(in_out_specs): Adjust.  Also, added the new test input above to
23614	this.
23615	(main): Adjust to invoke abidiff with the new --hd1 and --hd2
23616	options if the input specs for the tests has the new
23617	InOutSpec::headers_dir{1,2} data member set.  Renamed bidiff into
23618	abidiff.
23619	* tests/data/Makefile.am: Add the new test inputs to the source
23620	distribution.
23621
236222016-05-24  Dodji Seketeli <dodji@redhat.com>
23623
23624	Fix the number of removed functions in change report
23625	* src/abg-suppression.cc (corpus_diff::report): Show the net
23626	number of removed functions, not the total number of the removed
23627	functions.
23628
236292016-05-23  Dodji Seketeli <dodji@redhat.com>
23630
23631	Document how to handle regression tests in CONTRIBUTING
23632	* CONTRIBUTING: Add a section about regression tests.
23633	* Makefile.am: Add a check-valgrind-recursive target.
23634
236352016-05-21  Dodji Seketeli <dodji@redhat.com>
23636
23637	Fix whitespaces in autotools files
23638	* configure.ac: Fix some white spaces.
23639	* tests/Makefile.am: Likewise.
23640
236412016-05-22  Dodji Seketeli <dodji@redhat.com>
23642
23643	Fix white space in abg-comparison.cc
23644	* src/abg-comparison.cc (struct diff_context::priv): Fix indentation.
23645
236462016-05-21  Dodji Seketeli <dodji@redhat.com>
23647
23648	Fix bash completion configure status
23649	* configure.ac: If bash completion is disabled, say so.
23650
236512016-05-22  Dodji Seketeli <dodji@redhat.com>
23652
23653	Enhance API doc for diff_context::add_diff
23654	* src/abg-comparison.cc (diff_context::add_diff): Enhance the API
23655	doc string.
23656
236572016-05-20  Dodji Seketeli <dodji@redhat.com>
23658
23659	Add missing API doc strings
23660	* src/abg-comparison.cc (diff::diff)
23661	(decl_diff_base::decl_diff_base, distinct_diff::distinct_diff)
23662	(base_diff::base_diff, scope_diff::scope_diff)
23663	(fn_parm_diff::fn_parm_diff)
23664	(function_type_diff::function_type_diff)
23665	(type_decl_diff::type_decl_diff, typedef_diff::typedef_diff)
23666	(translation_unit_diff::translation_unit_diff)
23667	(corpus_diff::corpus_diff): Add missing API doc strings.
23668
236692016-05-20  Dodji Seketeli <dodji@redhat.com>
23670
23671	Optimize out some shared_ptr use
23672	* include/abg-ir.h (pointer_type_def::get_naked_pointed_to_type):
23673	Declare new member function.
23674	* src/abg-ir.cc (pointer_type_def::priv::naked_pointed_to_type_):
23675	New data member.
23676	(pointer_type_def::priv::priv): Adjust to initialize the new data
23677	member.
23678	(pointer_type_def::pointer_type_def): Adjust to use the
23679	constructor pointer_type_def::priv::priv to initialize the
23680	pointed-to type (including its new naked pointer variant).  So we
23681	do not have to initialize the priv_->pointed_to_type_ explicitely
23682	in the constructor anymore.
23683	(pointer_type_def::get_naked_pointed_to_type): Define new data
23684	member.
23685	(pointer_type_def::get_qualified_name): Use a naked pointer to the
23686	pointed-to type, rather than a smart pointer.
23687
236882016-05-20  Dodji Seketeli <dodji@redhat.com>
23689
23690	Light optimizations by passing reference to smart pointers around
23691	* include/abg-fwd.h (get_type_name): Take a reference to type_sptr.
23692	* src/abg-ir.cc (get_type_name): Take a reference to type_sptr.
23693	(suppression_base::priv::{get_file_name_regex,
23694	get_file_name_not_regex, get_soname_regex, get_soname_not_regex}):
23695	Return a reference to regex_t_sptr.
23696
236972016-05-20  Dodji Seketeli <dodji@redhat.com>
23698
23699	Minimize number of string::length calculation
23700	* src/abg-tools-utils.cc (string_ends_with): Call string::length
23701	just once on each instance of string that matters.
23702
237032016-05-20  Dodji Seketeli <dodji@redhat.com>
23704
23705	Avoid unnecessary computation of type name in suppression evaluation
23706	* src/abg-suppression.cc (type_suppression::suppresses_type):  If
23707	neither the type suppression "name" or "name_regex" properties
23708	where provided in the suppression specification, then do not try
23709	to look at the type name.
23710
237112016-05-22  Dodji Seketeli <dodji@redhat.com>
23712
23713	Plug leak of diffs of member variables of class type
23714	* include/abg-comparison.h (diff_wptr, unordered_diff_sptr_set): New typedefs.
23715	(struct diff_sptr_hasher): Define new type.
23716	(diff_context::keep_diff_alive): Declare new member function.
23717	(diff::children_nodes): Return a vector of diff*, rather than a
23718	vector of diff_sptr.
23719	* src/abg-comparison.cc (diff_context::priv::live_diffs_): New
23720	data member.
23721	(diff_context::keep_diff_alive): Define new data member.
23722	(diff::priv::children_): Make this be a vector of diff*, rather
23723	than a vector of diff_sptr.
23724	(diff_less_than_functor::operator()): Add a new overload for
23725	diff*.  Make the existing overload of diff_sptr use the new one.
23726	(diff::children_nodes): Adjust;
23727	(diff::append_child_node): Make sure the child node is kept
23728	alive.  Only add the naked pointer to the child node to the vector
23729	of children.
23730	(diff::traverse): Adjust.
23731	(var_diff::priv::type_diff_): Make this be a weak pointer, rather
23732	than a shared pointer.
23733	(var_diff::type_diff): The var_diff::priv::type_diff_ data member
23734	is now a weak pointer, so make this accessor convert it to a
23735	shared pointer.
23736	(corpus_diff::priv::children_): Turn this into a vector of diff*,
23737	rather than a vector of diff_sptr.
23738	(corpus_diff::children_nodes): Adjust.
23739	(corpus_diff::append_child_node): Make sure the child node is kept
23740	alive.  Only add the naked pointer to the child node to the vector
23741	of children.
23742	(category_propagation_visitor::visit_end): Adjust.
23743	(suppression_categorization_visitor::visit_end): Adjust.
23744	(redundancy_marking_visitor::{visit_begin, visit_end}): Adjust.
23745
237462016-05-20  Dodji Seketeli <dodji@redhat.com>
23747
23748	Speedup diff node child insertion
23749	* src/abg-comparison.cc (corpus_diff::append_child_node): Insert
23750	the new child at the right point in the vector of children, so
23751	that it remains sorted.
23752
237532016-05-21  Dodji Seketeli <dodji@redhat.com>
23754
23755	Fix invocation of delete operator in test-read-dwarf.cc
23756	* tests/test-read-dwarf.cc (main): Call delete[], not delete.
23757
237582016-05-22  Dodji Seketeli <dodji@redhat.com>
23759
23760	Plug leak of debug info handles
23761	* configure.ac: Check the presence of dwarf_getalt in libdw.  If
23762	it's present, define the preprocessor macro
23763	LIBDW_HAS_DWARF_GETALT.  Update the autoconf configuration
23764	summary.
23765	* src/abg-dwarf-reader.cc: Add config.h.
23766	(find_alt_debug_info_location): Factorize this out of ...
23767	(find_alt_debug_info): ... this function.  Use dwarf_getalt if
23768	present, otherwise, keep using dwfl_standard_find_debuginfo.  In
23769	the later case, return the file descriptor opened to access the
23770	alternate debug info, by parameter, so that the caller can fclose
23771	it.
23772	(read_context::alt_fd_): New data member.
23773	(read_context::read_context): Initialize the new alt_fd_ data
23774	member.
23775	(read_context::load_debug_info): Store the file descriptor used to
23776	access the alternate debug info into the new alt_fd_ data member.
23777	(read_context::~read_context): New desctructor.
23778	(get_soname_of_elf_file, get_type_of_elf_file): Free the elf
23779	handle.
23780	(read_context::load_debug_info): Be paranoid in making sure we
23781	never override alt_dwarf_.
23782	* tests/data/test-alt-dwarf-file/test0-report.txt: Adjust.
23783
237842016-05-22  Dodji Seketeli <dodji@redhat.com>
23785
23786	Plug leak of shared private data of class_diff type
23787	* include/abg-comparison.h (class_diff::get_priv): Declare new
23788	member function.
23789	(class_diff::get_priv): Define new member function.
23790	(class_diff::{chain_into_hierarchy, base_changes, deleted_bases,
23791	inserted_bases, changed_bases, base_changes, member_types_changes,
23792	member_types_changes, data_members_changes, inserted_data_members,
23793	deleted_data_members, member_fns_changes, changed_member_fns,
23794	member_fns_changes, deleted_member_fns, inserted_member_fns,
23795	member_fn_tmpls_changes, member_class_tmpls_changes,
23796	member_class_tmpls_changes, report}): Rather than accessing
23797	class_diff::priv directly, use the new class_diff::get_priv.
23798
237992016-05-21  Dodji Seketeli <dodji@redhat.com>
23800
23801	Remove circular ref from class_decl::priv::definition_of_declaration
23802	* include/abg-ir.cc (class_decl::get_definition_of_declaration):
23803	Return a shared pointer, rather than a reference to a shared pointer.
23804	* src/abg-ir.cc (class_decl::priv::definition_of_declaration_):
23805	Make this be a weak pointer.
23806	(class_decl::get_definition_of_declaration):
23807	Likewise.  And return the shared pointer built out of the weak
23808	pointer we have in there now.
23809
238102016-05-21  Dodji Seketeli <dodji@redhat.com>
23811
23812	Plug leak of regex_t in suppression engine
23813	* include/abg-sptr-utils.h (build_sptr<T>): Declare an overload that
23814	allocates a T* and wraps it into a shared_ptr<T>.
23815	(build_sptr<regex_t>): Declare a specialization for regex_t.
23816	* src/abg-corpus.cc (build_sptr<regex_t>()): Define the
23817	specialization here.
23818	* src/abg-suppression.ccp
23819	(suppression_base::priv::{get_file_[not]_name_regex,
23820	get_soname_[not]_regex}): Use the new build_sptr<regex_t>().
23821	(type_suppression::priv::{get_type_name_regex,
23822	get_source_location_to_keep_regex}): Likewise.
23823	(function_suppression::parameter_spec::priv::get_type_name_regex):
23824	Likewise.
23825	(function_suppression::priv::{get_name_regex,
23826	get_return_type_regex, get_symbol_name_regex,
23827	get_symbol_version_regex}): Likewise.
23828	(variable_suppression::priv::{get_name_regex,
23829	get_symbol_name_regex, get_symbol_version_regex,
23830	get_type_name_regex}): Likewise.
23831
238322016-05-18  Dodji Seketeli <dodji@redhat.com>
23833
23834	Plug leak of diff_context_sptr after calling compute_diff
23835	* src/abg-comparison.cc (diff::priv::ctxt_): Make this a weak_ptr.
23836	(diff::priv::get_context): Convert the weak pointer to the context
23837	into a shared_ptr and return it.
23838	(diff::priv::is_filtered_out): Adjust to use
23839	diff::priv::get_context() to access the context.
23840	(diff::context): Likewise.
23841	(corpus_diff::priv::ctxt_): Make this a weak_ptr.
23842	(corpus_diff::priv::priv): Add a new overload that takes two
23843	corpora and a diff context.
23844	(corpus_diff::priv::get_context): Convert the weak pointer to the
23845	context into a shared_ptr and return it.
23846	(corpus_diff::priv::ensure_lookup_tables_populated): Adjust to use
23847	the new corpus_diff::priv::get_context to get the context.
23848	(variable_is_suppressed): Likewise.
23849	(corpus_diff::priv::{apply_suppressions_to_added_removed_fns_vars,
23850	apply_filters_and_compute_diff_stats, emit_diff_stats,
23851	categorize_redundant_changed_sub_nodes,
23852	clear_redundancy_categorization}): Likewise.
23853	(corpus_diff::{corpus_diff, context,
23854	apply_filters_and_suppressions_before_reporting}): Adjust.
23855	* tools/abipkgdiff.cc (compare): Make the overload that compares
23856	elf binaries take a diff context output parameter.  After the
23857	context is created by this function, it's return to the caller, so
23858	that it's life time is bound to the scope this function was
23859	called from.
23860	(pthread_routine_compare): Create a shared pointer to hold a
23861	reference on a diff context.  Pass that shared pointer by
23862	reference to the compare function that compares elf binaries.
23863	Rather than storing corpora in the reports_map, (as those corpora
23864	would then out-live the diff context and thus create memory
23865	corruption issues), emit the report directly into an ostringstream
23866	and store that stream in reports_map.
23867	(compare): In the overoad that compares packages, rather than
23868	trying to get corpora from the report_map, just emit the content
23869	of the ostringstream that is now there.
23870
238712016-05-22  Dodji Seketeli <dodji@redhat.com>
23872
23873	Fix a read passed-the-end in abg-dwarf-reader.cc
23874	* src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Do
23875	not read passed the end of the array.
23876
238772016-05-21  Dodji Seketeli <dodji@redhat.com>
23878
23879	Support running "make check-valgrind"
23880	* autoconf-archive/ax_valgrind_check.m4: Add new file.  Copied it
23881	from http://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html.
23882	* configure.ac: Include the new ax_valgrind_check.m4 file.
23883	Initialize the valgrind checking on tests.  Update the configure
23884	status.
23885	* tests/test-valgrind-suppressions.supp: New valgrind suppression
23886	file to silence memcheck leak errors from python.
23887	* tests/Makefile.am: Add test-valgrind-suppressions.supp to source
23888	distribution.  Add check-valgrind-memcheck-recursive target.
23889
238902016-05-22  Dodji Seketeli <dodji@redhat.com>
23891
23892	Update the CONTRIBUTING file
23893	* CONTRIBUTING: Cleanup.
23894
238952016-05-22  Dodji Seketeli <dodji@redhat.com>
23896
23897	Update the COMMIT-LOG-GUIDELINES file
23898	* COMMIT-LOG-GUIDELINES: Various enhancements.
23899
239002016-05-16  Dodji Seketeli <dodji@redhat.com>
23901
23902	Do not run fedabipkgdiff tests if --enable-fedabipkgdiff is turned off
23903	* tests/Makefile.am: Make running runtestfedabipkgdiff be
23904	dependent on ENABLE_FEDABIPKGDIFF.
23905
239062016-05-13  Chenxiong Qi <cqi@redhat.com>
23907
23908	Fix pep8 error
23909	* tools/fedabipkgdiff (build_commandline_args_parser): Fix
23910	PEP8 error, line is too long.
23911
239122016-05-13  Chenxiong Qi <cqi@redhat.com>
23913
23914	Use consistent string format
23915	* tools/fedabipkgdiff (download_rpm): do not omit positional
23916	argument specifiers in string format.
23917
239182016-05-16  Dodji Seketeli <dodji@redhat.com>
23919
23920	Remove config.h.in from the repository
23921	* config.h.in: Remove from repository.
23922
239232016-02-09  Chenxiong Qi <cqi@redhat.com>
23924
23925	Bug 19428 - New fedabipkgdiff utility
23926	* autoconf-archive/ax_compare_version.m4: New file copied from the
23927	autoconf-archive project.
23928	* autoconf-archive/ax_prog_python_version.m4: Likewise.
23929	* autoconf-archive/ax_python_module.m4: Likewise.
23930	* Makefile.am: Add the new files above to the source distribution.
23931	* configure.ac: Include the new m4 macros from the autoconf
23932	archive. Add a new --enable-fedabipkgdiff option. Update the
23933	report at the end of the configure process to show the status of
23934	the fedabipkgdiff feature. Add check for prerequisite python
23935	modules argparse, glob, logging, os, re, shlex, subprocess, sys,
23936	itertools, urlparse, itertools, shutil, unittest, xdg, koji and
23937	mock.  These are necessary for the unit test of
23938	fedabipkgdiff. Generate tests/runtestfedabipkgdiff.py into the
23939	build directory, from the tests/runtestfedabipkgdiff.py.in input
23940	file.
23941	* tools/Makefile.am: Include the fedabipkgdiff to the source
23942	distribution and install it if the "fedabipkgdiff" feature is
23943	enabled.
23944	* tests/Makefile.am: Rename runtestfedabipkgdiff.sh into
23945	runtestfedabipkgdiff.py.  Add the new runtestfedabipkgdiff.py.in
23946	autoconf template file in here.
23947	* tests/runtestfedabipkgdiff.py.in: New unit test file.
23948	* tools/fedabipkgdiff: New fedabipkgdiff tool.
23949	* doc/manuals/fedabipkgdiff.rst: New manual.
23950
239512016-05-07  Dodji Seketeli <dodji@redhat.com>
23952
23953	Implement a [suppress_file] suppression directive
23954	* doc/manuals/libabigail-concepts.rst: Document the new
23955	'suppress_file' directive.
23956	* include/abg-suppression.h (file_suppression): Define new class.
23957	(file_suppression_sptr): Define new typedef.
23958	(is_file_suppression, file_is_suppressed): Declare new functions.
23959	* src/abg-suppression.cc ():
23960	(read_file_suppression, is_file_suppression, file_is_suppressed):
23961	Define new functions.
23962	(file_suppression::{file_suppression, suppresses_file,
23963	~file_suppression}): Define new member functions.
23964	* tools/abidiff.cc (main): If a suppression specification
23965	suppresses one of the input files, then do not perform the
23966	comparison.
23967	* tools/abipkgdiff.cc (compare): If a suppression specification
23968	suppresses a file that is to be compared, then do not perform the
23969	comparison.
23970	* tools/abicompat.cc (create_diff_context): New static function.
23971	(perform_compat_check_in_normal_mode)
23972	(perform_compat_check_in_weak_mode): Adjust to take a context in
23973	parameter.  Do not create a diff context here anymore, do not load
23974	suppression files here either.
23975	(main): Use the new create_diff_context to create a diff context
23976	and initialize it, including loading suppression specifications.
23977	If any suppression specification suppresses a file to load, then
23978	do not load perform any compatibility checking.  Adjust
23979	invocations of perform_compat_check_in_weak_mode and
23980	perform_compat_check_in_normal_mode to pass the diff context.
23981	* tests/data/test-diff-suppr/test0-type-suppr-3.suppr: New test
23982	input.
23983	* tests/data/test-diff-suppr/test0-type-suppr-4.suppr: Likewise.
23984	* tests/data/test-diff-suppr/test0-type-suppr-report-4.txt: Likewise.
23985	* tests/data/test-diff-suppr/test0-type-suppr-5.suppr: Likewise.
23986	* tests/data/test-diff-suppr/test0-type-suppr-report-5.txt:
23987	Likewise.
23988	* tests/data/test-diff-suppr/test0-type-suppr-6.suppr: Likewise.
23989	* tests/data/test-diff-suppr/test0-type-suppr-report-6.txt:
23990	Likewise.
23991	* tests/data/test-diff-suppr/test0-type-suppr-report-7.txt:
23992	Likewise.
23993	* tests/test-diff-suppr.cc (in_out_specs): Use the new test
23994	inputs.
23995	* tests/data/test-abicompat/test0-fn-changed-1.suppr: New test
23996	input.
23997	* tests/data/test-abicompat/test0-fn-changed-report-3.txt:
23998	Likewise.
23999	* tests/test-abicompat.cc (in_out_specs):: Use the new test
24000	inputs.
24001	* tests/data/Makefile.am: Add the new test material to source
24002	distribution.
24003
240042016-05-07  Dodji Seketeli <dodji@redhat.com>
24005
24006	Split suppression engine off of abg-comparison.{cc,h}
24007	* include/Makefile.am: Add abg-suppression.h to source
24008	distribution.
24009	* include/abg-comparison.h: Remove abg-ini.h include directive.
24010	(suppression_sptr, suppressions_type): Move these typedefs to
24011	abg-fwd.h.
24012	(class suppression_base, type_suppression)
24013	(type_suppression::insertion_range)
24014	(type_suppression::insertion_range::boundary)
24015	(type_suppression::insertion_range::integer_boundary)
24016	(type_suppression::insertion_range::fn_call_expr_boundary)
24017	(function_suppression, function_suppression::parameter_spec)
24018	(variable_suppression): Move these type definitions to the new
24019	abg-suppression.h.
24020	(read_suppressions, is_type_suppression, is_integer_boundary)
24021	(is_fn_call_expr_boundary, is_function_suppression)
24022	(is_variable_suppression, operator&)
24023	(operator|): Move these function declarations to the new
24024	abg-suppression.h.
24025	(type_suppression, type_suppression_sptr, type_suppression_type)
24026	(function_suppression, function_suppression_sptr)
24027	(function_suppressions_type, variable_suppression)
24028	(variable_suppression_sptr, variable_suppressions_type): Move
24029	these forward declaration and typedefs to the new
24030	abg-suppression.h.
24031	(diff_context::suppressions): Adjust return type to
24032	suppr::suppressions_type&.
24033	(diff_context::add_suppression): Adjust parameter type to
24034	suppr::suppressions_sptr.
24035	(diff_context::add_suppressions): Adjust parameter type
24036	suppr::suppressions_type&.
24037	(is_type_diff, is_decl_diff, is_var_diff, is_function_decl_diff)
24038	(is_pointer_diff, is_reference_diff, is_fn_parm_diff)
24039	(is_base_diff, is_child_node_of_function_parm_diff)
24040	(is_child_node_of_base_diff): Declare these new functions.  They
24041	were previously static, local to abg-comparison.cc only.  Now they
24042	need to be exported because they are used by the suppression
24043	engine's code that now lives in its one files.
24044	* include/abg-fwd.h (suppr::{suppression_base, suppression_sptr,
24045	suppressions_type}): Forward declare these here.
24046	* include/abg-suppression.h (class suppression_base)
24047	(type_suppression, type_suppression::insertion_range)
24048	(type_suppression::insertion_range::boundary)
24049	(type_suppression::insertion_range::integer_boundary)
24050	(type_suppression::insertion_range::fn_call_expr_boundary)
24051	(function_suppression, function_suppression::parameter_spec)
24052	(variable_suppression): Move these type definitions here, in the
24053	namespace suppr.
24054	(read_suppressions, is_type_suppression, is_integer_boundary)
24055	(is_fn_call_expr_boundary, is_function_suppression)
24056	(is_variable_suppression, operator&)
24057	(operator|): Move these function decalration here, in the
24058	namespace suppr.
24059	(type_suppression_sptr, type_suppressions_type)
24060	(function_suppression_sptr, function_suppressions_type)
24061	(variable_suppression_sptr, variable_suppressions_type): Move
24062	these typedefs here, in the namespace suppr.
24063	* src/Makefile.am: add src/abg-suppression.cc to source
24064	distribution.
24065	* src/abg-comparison.cc (is_type_diff, is_decl_diff, is_var_diff)
24066	(is_function_decl_diff, is_pointer_diff, is_reference_diff)
24067	(is_reference_or_pointer_diff, is_fn_parm_diff, is_base_diff)
24068	(is_child_node_of_function_parm_diff, is_child_node_of_base_diff):
24069	Export these functions.
24070	(*suppression*): Move all the suppression-related definitions to
24071	the new abg-suppression.cc.
24072	* src/abg-suppression.cc: New file. Contains all the *suppression*
24073	definitions from src/abg-comparison.cc, that are put in the suppr
24074	namespace.
24075	* tools/abicompat.cc: Adjust.
24076	* tools/abidiff.cc: Likewise.
24077	* tools/abipkgdiff.cc: Likewise.
24078
240792016-05-08  Dodji Seketeli <dodji@redhat.com>
24080
24081	Fix indentation for abidiff manual
24082	* doc/manuals/abidiff.rst: Fix indentation for the --suppression
24083	paragraph.
24084
240852016-05-08  Dodji Seketeli <dodji@redhat.com>
24086
24087	Add several shortcuts to options for abicompat
24088	* doc/manuals/abicompat.rst: Update documentation.
24089	* tools/abicompat.cc (display_usage): Update help strings.
24090	(parse_command_line): Add shortcuts --suppr, --appd, --libd1 and
24091	--libd2.
24092
240932016-05-08  Dodji Seketeli <dodji@redhat.com>
24094
24095	Update copyright year in tools/abicompat.cc
24096	* tools/abicompat.cc: Update copyright years to 2016.
24097
240982016-05-07  Dodji Seketeli <dodji@redhat.com>
24099
24100	Fix mention of tool's name in abidiff error message
24101	* src/abg-tools-utils.cc (emit_prefix): Try to emit the prefix
24102	only if the program name was provided.
24103	* abidiff.cc (maybe_check_suppression_files): Pass the name of the
24104	tool to the check_file function.
24105
241062016-05-07  Dodji Seketeli <dodji@redhat.com>
24107
24108	Update copyright year on abg-comparison.h
24109	* include/abg-comparison.h: Update copyright year.
24110
241112016-05-08  Dodji Seketeli <dodji@redhat.com>
24112
24113	Doc not show classes' inherited members in apidoc
24114	* doc/api/libabigail.doxy: Don't show inherited member functions
24115	or variables of a given class.
24116
241172016-05-08  Dodji Seketeli <dodji@redhat.com>
24118
24119	Fix typo in concept manual
24120	* doc/manuals/libabigail-concepts.rst: Do not refer to abidiff
24121	specifically for suppressions because several tools use
24122	suppressions.
24123
241242016-05-08  Dodji Seketeli <dodji@redhat.com>
24125
24126	Fix indentation in concepts manual
24127	* doc/manuals/libabigail-concepts.rst: Fix indentation.
24128
241292016-05-06  Dodji Seketeli <dodji@redhat.com>
24130
24131	Add some apidoc to dwarf_reader
24132	* include/abg-dwarf-reader.h (namespace dwarf_reader): Add apidoc.
24133	(enum elf_type): Add an apidoc for each enumerator.
24134	* src/abg-dwarf-reader.cc (get_type_of_elf_file): Add an apidoc
24135	for the 'type' parameter.
24136
241372016-04-28  Dodji Seketeli <dodji@redhat.com>
24138
24139	[abipkgdiff] Show SONAME of removed/added libraries
24140	* tools/abipkgdiff.cc (abi_diff::{added,removed}_binaries): Change
24141	the type of these data member from vector<string> to
24142	vector<elf_file_sptr>.
24143	(compare): Adjust.  Show the soname of added/removed binaries.
24144
241452016-04-27  Dodji Seketeli <dodji@redhat.com>
24146
24147	Bug 20015 - support file_name_not_regexp and soname_not_regexp in suppr specs
24148	* include/abg-comparison.h
24149	(suppression_base::{get,set}_file_name_not_regex_str): Declare new
24150	member functions.
24151	(suppression_base::{get,set}_soname_not_regex_str): Likewise.
24152	(suppression_base::{names,sonames}_of_binaries_match): Likewise.
24153	* src/abg-comparison.cc
24154	(suppression_base::priv::get_file_name_regex): Fix comment.
24155	(suppression_base::priv::get_file_name_not_regex): New member
24156	function.
24157	(suppression_base::priv::get_soname_regex): Fix comment.
24158	(suppression_base::priv::get_soname_not_regex): New member
24159	function.
24160	(suppression_base::{get,set}_file_name_not_regex_str): Define new
24161	member functions.
24162	(suppression_base::{get,set}_soname_not_regex_str): Likewise.
24163	(suppression_base::{names,sonames}_of_binaries_match): Likewise.
24164	These got factorized out of type_suppression::suppresses_type,
24165	function_suppression::suppresses_function,
24166	function_suppression::suppresses_function_symbol,
24167	variable_suppression::suppresses_variable,
24168	variable_suppression::suppresses_variable_symbol.
24169	(type_suppression::suppresses_type): Use the new
24170	suppression_base::{names,sonames}_of_binaries_match.
24171	(read_type_suppression): Read the new file_name_not_regexp and
24172	soname_not_regexp properties.
24173	(function_suppression::{suppresses_function,
24174	suppresses_function_symbol}): Use the new
24175	suppression_base::{names,sonames}_of_binaries_match.
24176	(read_function_suppression): Read the new file_name_not_regexp and
24177	soname_not_regexp properties.
24178	(variable_suppression::{suppresses_variable,
24179	variable_suppression::suppresses_variable_symbol}): Use the new
24180	suppression_base::{names,sonames}_of_binaries_match.
24181	(read_variable_suppression): Use the new
24182	suppression_base::{names,sonames}_of_binaries_match.
24183	* doc/manuals/libabigail-concepts.rst: Document the new
24184	file_name_not_regexp and soname_not_regexp suppression properties.
24185	* tests/data/test-diff-suppr/test24-soname-report-10.txt: New test
24186	reference output.
24187	* tests/data/test-diff-suppr/test24-soname-report-11.txt: Likewise.
24188	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
24189	* tests/data/test-diff-suppr/test24-soname-report-13.txt: Likewise.
24190	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
24191	* tests/data/test-diff-suppr/test24-soname-report-15.txt: Likewise.
24192	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
24193	* tests/data/test-diff-suppr/test24-soname-report-9.txt: Likewise.
24194	* tests/data/test-diff-suppr/test24-soname-suppr-10.txt: New test input.
24195	* tests/data/test-diff-suppr/test24-soname-suppr-11.txt: Likewise.
24196	* tests/data/test-diff-suppr/test24-soname-suppr-12.txt: Likewise.
24197	* tests/data/test-diff-suppr/test24-soname-suppr-13.txt: Likewise.
24198	* tests/data/test-diff-suppr/test24-soname-suppr-14.txt: Likewise.
24199	* tests/data/test-diff-suppr/test24-soname-suppr-15.txt: Likewise.
24200	* tests/data/test-diff-suppr/test24-soname-suppr-16.txt: Likewise.
24201	* tests/data/test-diff-suppr/test24-soname-suppr-9.txt: Likewise.
24202	* tests/data/test-diff-suppr/test29-soname-report-2.txt: New test
24203	reference output.
24204	* tests/data/test-diff-suppr/test29-soname-report-3.txt: Likewise.
24205	* tests/data/test-diff-suppr/test29-soname-report-4.txt: Likewise.
24206	* tests/data/test-diff-suppr/test29-soname-report-5.txt: Likewise.
24207	* tests/data/test-diff-suppr/test29-soname-report-6.txt: Likewise.
24208	* tests/data/test-diff-suppr/test29-soname-report-7.txt: Likewise.
24209	* tests/data/test-diff-suppr/test29-soname-report-8.txt: Likewise.
24210	* tests/data/test-diff-suppr/test29-suppr-2.txt: New test input.
24211	* tests/data/test-diff-suppr/test29-suppr-3.txt: Likewise.
24212	* tests/data/test-diff-suppr/test29-suppr-4.txt: Likewise.
24213	* tests/data/test-diff-suppr/test29-suppr-5.txt: Likewise.
24214	* tests/data/test-diff-suppr/test29-suppr-6.txt: Likewise.
24215	* tests/data/test-diff-suppr/test29-suppr-7.txt: Likewise.
24216	* tests/data/test-diff-suppr/test29-suppr-8.txt: Likewise.
24217	* tests/data/Makefile.am: Add the new test material to source
24218	distribution.
24219	* tests/test-diff-suppr.cc (in_out_specs): Make this test harness
24220	run over the new test inputs.
24221
242222016-04-27  Dodji Seketeli <dodji@redhat.com>
24223
24224	Make API documentation of thread pools visible
24225	* include/abg-workers.h: Document the workers namespace, the task,
24226	queue and queue::task_done_notify types.
24227	* src/abg-workers.cc: Move the documentation of the thread_pool
24228	module inside the abigail::worker namespace, so that references to
24229	task and queue types (which are also in the abigail::worker
24230	namespace) can be resolved in the apidoc.
24231
242322016-04-27  Dodji Seketeli <dodji@redhat.com>
24233
24234	Update documentation to require doxygen and python-sphinx for building
24235	* COMPILING: Add python-sphinx to the set of required packages to
24236	build the documentation.
24237	* doc/website/mainpage.txt: Update the website to mention doxygen
24238	and python-sphinx for documentation.
24239
242402016-04-27  Dodji Seketeli <dodji@redhat.com>
24241
24242	Add doc, info, man and html-doc targets to generate documentation
24243	* Makefile.am: Add info, man and html-doc targets to generate
24244	documentation in info, man and html formats.  If you want to
24245	generate them all, then the doc target is the one to be used.
24246	* COMPILING: Add documentation for the above.
24247
242482016-04-25  Dodji Seketeli <dodji@redhat.com>
24249
24250	Bug 19964 - Cannot load function aliases on ppc64
24251	* src/abg-dwarf-reader.cc (read_context::load_symbol_maps): While
24252	filling the ppc64-specific "function-entry-address => symbol" map,
24253	if we stumble accross a function-entry-address that belongs to an
24254	alias of 'symbol', then assume the alias must have been registered
24255	as an alias already, by the platform-agnostic code.  Do not try to
24256	register the alias again.
24257	* tests/data/Makefile.am: Add the new test input binaries to the
24258	source distribution.
24259	* tests/data/test-diff-dwarf/libtest36-ppc64-aliases-v0.so: New
24260	binary test input.
24261	* tests/data/test-diff-dwarf/libtest36-ppc64-aliases-v1.so: Likewise.
24262	* tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt:
24263	New test reference output.
24264	* tests/data/test-diff-dwarf/test36-ppc64-aliases-v0.cc: Source
24265	code for the new binary test input above.
24266	* tests/data/test-diff-dwarf/test36-ppc64-aliases-v1.cc: Likewise.
24267	* tests/test-diff-dwarf.cc: Add the new test input to the list of
24268	test inputs considered by this test harness.
24269
242702016-04-20  Sinny Kumari <sinny@redhat.com>
24271
24272	Bug 19961 - Distinguish between PI executable and shared library
24273	* include/abg-dwarf-reader.h (elf_type): Add new enumerator
24274	ELF_TYPE_PI_EXEC.
24275	* src/abg-dwarf-reader.cc
24276	(lookup_data_tag_from_dynamic_segment): New function for
24277	data tag lookup in dynamic segment of an elf
24278	(elf_file_type): Return ELF_TYPE_PI_EXEC file type for
24279	a PI executable.
24280	(get_elf_file_type): Change this to take an elf handle.
24281	(get_type_of_elf_file): New function that got factorized out of ...
24282	(load_dt_soname_and_needed): ... this one.
24283	* tools/abipkgdiff.cc (create_maps_of_package_content): Also
24284	consider ELF_TYPE_PI_EXEC file type.
24285	(compare): Likewise.
24286	* tests/test-diff-pkg.cc (in_out_specs): Test case additions
24287	* tests/data/Makefile.am: Include test files
24288	* tests/data/test-diff-pkg/tarpkg-1-dir1.tar.gz: New test data
24289	* tests/data/test-diff-pkg/tarpkg-1-dir2.tar.gz: New test data
24290	* tests/data/test-diff-pkg/tarpkg-1-report-0.txt: New test result
24291
242922016-04-17  Dodji Seketeli <dodji@redhat.com>
24293
24294	Update website to 1.0.rc4
24295	* doc/website/mainpage.txt: Update tarball reference to 1.0.rc4
24296
242972016-04-17  Dodji Seketeli <dodji@redhat.com>
24298
24299	Bump current version number to 1.0.rc5
24300	* configure.ac: Bump current version number to 1.0.rc5
24301
243022016-04-17  Dodji Seketeli <dodji@redhat.com>
24303
24304	Add a 'release' target to main Makefile
24305	* Makefile.am: Add tarball, upload-release-only, upload-release
24306	and release targets.
24307
243082016-04-11  Dodji Seketeli <dodji@redhat.com>
24309
24310	Update ChangeLog for 1.0.rc4
24311	* ChangeLog: Update automatically by running "make
24312	update-changelog"
24313
243142016-04-11  Dodji Seketeli <dodji@redhat.com>
24315
24316	Update NEWS for 1.0.rc4
24317	* NEWS: Update for 1.0.rc4
24318
243192016-04-16  Dodji Seketeli <dodji@redhat.com>
24320
24321	Fix typos in the suppression specifications manual
24322	* doc/manuals/libabigail-concepts.rst: Fix typos.
24323
243242016-04-16  Dodji Seketeli <dodji@redhat.com>
24325
24326	Ease use of soname_regexp/file_name_regexp in suppr specs
24327	* doc/manuals/libabigail-concepts.rst: Update the manual to
24328	reflect the changes in the suppression_type, suppress_function and
24329	suppress_variable directives.
24330	* src/abg-comparison.cc (read_type_suppression): Accept that
24331	the suppress_type directive contains only file_name_regexp
24332	or the soname_regexp property.
24333	(read_function_suppression): Likewise for the suppress_function
24334	directive.
24335	(read_variable_suppression): Likewise for the suppress_variable
24336	directive.
24337	* tests/data/test-diff-suppr/libtest29-soname-v0.so: New binary
24338	test input.
24339	* tests/data/test-diff-suppr/libtest29-soname-v1.so: Likewise.
24340	* tests/data/test-diff-suppr/test24-soname-report-5.txt: New
24341	reference test output.
24342	* tests/data/test-diff-suppr/test24-soname-report-6.txt: Likewise.
24343	* tests/data/test-diff-suppr/test24-soname-report-7.txt: Likewise.
24344	* tests/data/test-diff-suppr/test24-soname-report-8.txt: Likewise.
24345	* tests/data/test-diff-suppr/test24-soname-suppr-5.txt: New test
24346	suppression file.
24347	* tests/data/test-diff-suppr/test24-soname-suppr-6.txt: Likewise.
24348	* tests/data/test-diff-suppr/test24-soname-suppr-7.txt: Likewise.
24349	* tests/data/test-diff-suppr/test24-soname-suppr-8.txt: Likewise.
24350	* tests/data/test-diff-suppr/test29-soname-report-0.txt: New
24351	reference test output.
24352	* tests/data/test-diff-suppr/test29-soname-report-1.txt: Likewise.
24353	* tests/data/test-diff-suppr/test29-soname-v0.cc: Source code for
24354	the new binary output above.
24355	* tests/data/test-diff-suppr/test29-soname-v1.cc: Likewise.
24356	* tests/data/test-diff-suppr/test29-suppr-0.txt: New test
24357	suppression file.
24358	* tests/data/test-diff-suppr/test29-suppr-1.txt: Likewise.
24359	* tests/data/Makefile.am: Add the new test material above to
24360	source distribution.
24361	* tests/test-diff-suppr.cc (in_out_specs): Make this test harness
24362	run over the new test input above.
24363
243642016-03-31  Dodji Seketeli <dodji@redhat.com>
24365
24366	Fix comments in tests/test-diff-pkg.cc
24367	* tests/test-diff-pkg.cc: Fix the wording of the introductory
24368	comments.
24369
243702016-03-30  Dodji Seketeli <dodji@redhat.com>
24371
24372	Bug 19885 - Cannot associates a function DIE to a symbol on powerpc64
24373	*from* the address of its entry point.
24374	More precisely, on ppc64, the address of a function is the address of
24375	a function descriptor.  The function descriptor is a set of three 64
24376	bits addresses.  The first element of the triplet is the function
24377	entry pointer address.  So to get the symbol a given function entry
24378	point address belongs to, one must get to the function descriptor
24379	which contains said function entry point address.  And function
24380	descriptors are in the ".opd" special section.
24381	Unfortunately, Libabigail's  ELF/DWARF reader has no knowledge of all
24382	this.  So it cannot get the symbol of a given function DWARF
24383	description.  So it considers all functions as having no ELF symbols.
24384	So it shows no ABI change pertaining to function sub-types on ppc64.
24385	This patch makes Libabigail support function descriptors on ppc64 so
24386	it can detect changes on function sub-types there.
24387	* src/abg-dwarf-reader.cc (read_context::{opd_section_,
24388	fun_entry_addr_sym_map_}): New data members.
24389	(read_context::read_context): Initialize the new opd_section_ data
24390	member.
24391	(read_context::{find_opd_section,
24392	lookup_ppc64_elf_fn_entry_pointer_address,
24393	fun_entry_addr_sym_map_sptr, fun_entry_addr_sym_map,
24394	elf_architecture_is_ppc64, elf_architecture_is_big_endian}): New
24395	member functions.
24396	(read_context::lookup_elf_fn_symbol_from_address): Adjust to use
24397	the new read_context::fun_entry_addr_sym_map() function.
24398	(read_context::load_symbol_maps): Populate the function entry
24399	addresses -> symbol map, for ppc64 ELFv1.
24400	(read_context::load_elf_properties): Renamed
24401	read_context::load_remaining_elf_data into this.
24402	(read_corpus_from_elf): Load elf properties before trying to load
24403	elf symbols information.
24404	* tests/data/test-diff-filter/libtest32-struct-change-v0.so: New
24405	binary test input, compiled for ppc64le.
24406	* tests/data/test-diff-filter/libtest32-struct-change-v1.so: Likewise.
24407	* tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt:
24408	New test reference output.
24409	* tests/data/test-diff-filter/test32-ppc64le-struct-change-v0.c:
24410	Source code of the new binary test input above.
24411	* tests/data/test-diff-filter/test32-ppc64le-struct-change-v1.c:
24412	Likewise.
24413	* tests/data/Makefile.am: Add the new test material above to
24414	source distribution.
24415	* tests/test-diff-filter.cc (in_out_spec): Make this test harness
24416	run over the new test input binaries above.
24417
244182016-03-25  Dodji Seketeli <dodji@redhat.com>
24419
24420	Fix logs in abipkgdiff and add some more
24421	* tools/abipkgdiff.cc (compare): Fix logs to make them more
24422	readable in a multithreaded context.
24423	(create_maps_of_package_content): Likewise.  Add logs about the
24424	number of elf files found in a given directory.  Add logs about
24425	skipping files.
24426
244272016-03-25  Dodji Seketeli <dodji@redhat.com>
24428
24429	Bug 19867 - abipkgdiff skips symbolic links
24430	* include/abg-tools-utils.h (maybe_get_symlink_target_file_path):
24431	Declare new function.
24432	* src/abg-tools-utils.cc (get_stat): Use lstat here, not stat.
24433	Update comment.
24434	* tools/abipkgdiff.cc (first_package_tree_walker_callback_fn)
24435	(second_package_tree_walker_callback_fn): Follow symbolic links to
24436	elf files to get their target paths, and only work with that
24437	target path.
24438	(maybe_get_symlink_target_file_path): Define new function.
24439	* test-diff-pkg/symlink-dir-test1-report0.txt New test material.
24440	* test-diff-pkg/symlink-dir-test1/dir1/symlinks/foo.o: Likewise.
24441	* test-diff-pkg/symlink-dir-test1/dir1/symlinks/libfoo.so: Likewise.
24442	* test-diff-pkg/symlink-dir-test1/dir1/targets/foo.c: Likewise.
24443	* test-diff-pkg/symlink-dir-test1/dir1/targets/foo.o: Likewise.
24444	* test-diff-pkg/symlink-dir-test1/dir1/targets/libfoo.so: Likewise.
24445	* test-diff-pkg/symlink-dir-test1/dir2/symlinks/foo.o: Likewise.
24446	* test-diff-pkg/symlink-dir-test1/dir2/symlinks/libfoo.so: Likewise.
24447	* test-diff-pkg/symlink-dir-test1/dir2/targets/foo.c: Likewise.
24448	* test-diff-pkg/symlink-dir-test1/dir2/targets/foo.o: Likewise.
24449	* test-diff-pkg/symlink-dir-test1/dir2/targets/libfoo.so: Likewise.
24450	* tests/data/Makefile.am: Add the new test material to source
24451	distribution.
24452	* tests/test-diff-pkg.cc (in_out_spec): Run this test harness
24453	over the new test material above.
24454
244552016-03-21  Dodji Seketeli <dodji@redhat.com>
24456
24457	Fix typo on the web page
24458	* doc/website/mainpage.txt: Fix typo.
24459
244602016-03-18  Roland McGrath <roland@hack.frob.com>
24461
24462	Fix typo in configure --enable-deb help text
24463	* configure.ac: Fix typo in --enable-deb usage text.
24464
244652016-03-18  Dodji Seketeli <dodji@redhat.com>
24466
24467	Bug 19846 - variable decl associated with the wrong debug info section
24468	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Associate the
24469	decl of the variable to the same debug info file (alternate or
24470	not) as the DIE, not as its specification DIE.
24471
244722016-03-18  Dodji Seketeli <dodji@redhat.com>
24473
24474	Fix typo in the manual of abidiff
24475	* doc/manuals/abidiff.rst: Fix typo.
24476
244772016-03-18  Dodji Seketeli <dodji@redhat.com>
24478
24479	Fix typos in comments in src/abg-dwarf-reader.cc
24480	* src/abg-dwarf-reader.cc (read_context::{die_type_map,
24481	is_wip_class_die_offset, is_wip_function_type_die_offset}): Fix
24482	typo in comments.
24483
244842016-03-18  Dodji Seketeli <dodji@redhat.com>
24485
24486	Bug 19844 - Cannot try to canonicalize a type that is being constructed
24487	* src/abg-dwarf-reader.cc
24488	(read_context::{alternate_die_wip_classes_map_,
24489	alternate_die_wip_function_types_map_}): New data members.
24490	(read_context::lookup_type_from_die_offset): Lookup WIP class and
24491	function types too.
24492	(read_context::{die_wip_classes_map, die_wip_function_types_map}):
24493	Take a flag saying if we should get the map for the alternate
24494	debug info section or not.
24495	(read_context::{is_wip_class_die_offset,
24496	is_wip_function_type_die_offset}): Take a flagy saying if the DIE
24497	is in the alternate debug info section or not.
24498	(build_class_type_and_add_to_ir, build_function_type)
24499	(maybe_canonicalize_type): Adjust.
24500	(build_ir_node_from_die): Do not call maybe_canonicalize_type on
24501	type DIEs which no type has been constructed for.
24502	* tests/data/test-diff-pkg/gtk2-debuginfo-2.24.22-5.el7.i686.rpm:
24503	New test input.
24504	* tests/data/test-diff-pkg/gtk2-debuginfo-2.24.28-8.el7.i686.rpm:
24505	Likewise.
24506	* tests/data/test-diff-pkg/gtk2-immodule-xim-2.24.22-5.el7.i686.rpm:
24507	Likewise.
24508	* tests/data/test-diff-pkg/gtk2-immodule-xim-2.24.28-8.el7.i686.rpm:
24509	Likewise.
24510	* 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:
24511	New test reference output.
24512	* tests/data/Makefile.am: Add the new test material to the source
24513	distribution.
24514	* tests/test-diff-pkg.cc (in_out_spec): Make this test harness run
24515	on the new test input above.
24516
245172016-03-16  Dodji Seketeli <dodji@redhat.com>
24518
24519	Fix a typo in include/abg-tools-utils.h
24520	* include/abg-tools-utils.h (enum abidiff_status): Fix typo in
24521	comment.
24522
245232016-03-16  Dodji Seketeli <dodji@redhat.com>
24524
24525	Update copyright dates for the manuals
24526	* doc/manuals/conf.py: Update copyright years.
24527
245282016-03-16  Dodji Seketeli <dodji@redhat.com>
24529
24530	More docs about ABIDIFF_ABI_INCOMPATIBLE_CHANGE
24531	* doc/manuals/abidiff.rst: Explain the kind of changes that flip
24532	the ABIDIFF_ABI_INCOMPATIBLE_CHANGE flag.
24533
245342016-03-09  Dodji Seketeli <dodji@redhat.com>
24535
24536	Fix typos on the web page
24537	* doc/website/mainpage.txt: Fix typos.
24538
245392016-03-08  Dodji Seketeli <dodji@redhat.com>
24540
24541	Bump version number to 1.0.rc4
24542	* configure.ac: Bump version number to 1.0.rc4
24543
245442016-03-08  Dodji Seketeli <dodji@redhat.com>
24545
24546	Fix potential race condition in test-diff-pkg.cc
24547	* tests/test-diff-pkg.cc (in_out_spec): Make the tar format tests
24548	output have different names.
24549
245502016-03-08  Dodji Seketeli <dodji@redhat.com>
24551
24552	Updated website to point to 1.0.rc3 tarball
24553	* doc/website/mainpage.txt: Updated website to point to 1.0.rc3
24554	tarball.
24555
245562016-03-08  Dodji Seketeli <dodji@redhat.com>
24557
24558	Update ChangeLog before 1.0.rc3
24559	* ChangeLog: Update for 1.0.rc3
24560
245612016-03-08  Dodji Seketeli <dodji@redhat.com>
24562
24563	Update NEWS file for 1.0.rc3
24564	* NEWS: update for 1.0.rc3
24565
245662016-03-07  Dodji Seketeli <dodji@redhat.com>
24567
24568	Walk function_type_diff tree in a deterministic way
24569	* src/abg-comparison.cc
24570	(function_type_diff::priv::{sorted_subtype_changed_parms_,
24571	sorted_changed_parms_by_id_}): Add two data members.
24572	(function_type_diff::ensure_lookup_tables_populated): Sort the
24573	changed parameters here ...
24574	(function_type_diff::report): ... not here.
24575	(function_type_diff::chain_into_hierarchy): Chain the *sorted*
24576	changed parameters.
24577
245782016-03-07  Dodji Seketeli <dodji@redhat.com>
24579
24580	Fix reference to test file in Makefile.am
24581	* tests/data/Makefile.am: Fix bogus reference to
24582	libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt.
24583
245842016-03-07  Dodji Seketeli <dodji@redhat.com>
24585
24586	Bug 19780 - abipkgdiff doesn't support parallel execution
24587	* tools/abipkgdiff.cc: Update copyright notice.
24588	(package::extracted_packages_parent_dir): Use mkdtemp to generate
24589	the unique root directory under which packages are extracted.
24590	* tests/test-diff-pkg.cc (struct test_task): New type.
24591	(main): Use worker threads to run abipkgdiff in parallel,
24592	depending on the number of CPUs advertised by the underlying
24593	machine.
24594
245952016-03-07  Dodji Seketeli <dodji@redhat.com>
24596
24597	Bug 19778 - diff_has_ancestor_filtered_out() loops forever
24598	* src/abg-comparison.cc (diff_has_ancestor_filtered_out): Add an
24599	overload that takes an additional map of pointer values.  Make the
24600	older overload call the new one.
24601	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm: New test material.
24602	* 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:
24603	New reference output.
24604	* tests/data/test-diff-pkg/libICE-1.0.9-2.el7.x86_64.rpm: New test material.
24605	* tests/data/test-diff-pkg/libICE-debuginfo-1.0.6-1.el6.x86_64.rpm: New test material.
24606	* tests/data/test-diff-pkg/libICE-debuginfo-1.0.9-2.el7.x86_64.rpm:
24607	New test material.
24608	* tests/data/Makefile.am: Add the new test material to source distribution.
24609	* tests/test-diff-pkg.cc (in_out_specs): Run this test harness
24610	over the new tests material above.
24611
246122016-03-07  Dodji Seketeli <dodji@redhat.com>
24613
24614	Forgot to add test2-filtered-removed-fns-v{0,1}.o
24615	* test2-filtered-removed-fns-v{0,1}.o: Add these test input files.
24616
246172016-03-03  Dodji Seketeli <dodji@redhat.com>
24618
24619	Bug 19596 - Suppressed removed symbol changes still considered incompatible
24620	* src/abg-comparison.cc (corpus_diff::has_incompatible_changes):
24621	Consider the *net* number of removed function and variable
24622	symbols.  Also, if all function sub-type changes have been
24623	suppressed, then no virtual offset change should be considered
24624	incompatible.
24625	* tests/data/test-abidiff-exit/test1-voffset-change-report1.txt
24626	* tests/data/test-abidiff-exit/test1-voffset-change.abignore
24627	* tests/data/test-abidiff-exit/test2-filtered-removed-fns-report0.txt
24628	* tests/data/test-abidiff-exit/test2-filtered-removed-fns-report1.txt
24629	* tests/data/test-abidiff-exit/test2-filtered-removed-fns-v0.c
24630	* tests/data/test-abidiff-exit/test2-filtered-removed-fns-v1.c
24631	* tests/data/test-abidiff-exit/test2-filtered-removed-fns.abignore
24632	* tests/data/Makefile.am: Add the new test material above to
24633	source distribution.
24634	* tests/test-abidiff-exit.cc (InOutSpec::in_suppr_path): New data
24635	member.
24636	(in_out_specs): Adjust. Add new test inputs.
24637	(main): Adjust.
24638
246392016-02-25  Dodji Seketeli <dodji@redhat.com>
24640
24641	Fixup virtual member functions with linkage and no underlying symbol
24642	* src/abg-dwarf-reader.cc (die_function_decl_map_type): New
24643	typedef.
24644	(read_context::die_function_with_no_symbol_map_): New data member.
24645	(read_context::die_function_decl_with_no_symbol_map): New
24646	accessor.
24647	(read_context::fixup_functions_with_no_symbols): New member
24648	function.
24649	(finish_member_function_reading): Take a read_context.  Schedule
24650	virtual member functions with linkage and no underlying symbol to
24651	be fixed up after all the debug info is read.
24652	(build_function_decl): After a virtual member function_decl has
24653	been updated, if it has its underlying symbol and was scheduled
24654	for fixup, then de-schedule it.
24655	(build_class_type_and_add_to_ir, build_ir_node_from_die): Adjust
24656	call to finish_member_function_reading.
24657	(read_corpus_from_elf): Move the pure ELF (symbol and other mundane
24658	information) information reading ...
24659	(read_debug_info_into_corpus): ...  here.  Make it happen *before*
24660	actual reading of DWARF information.  We need symbol information
24661	to be present and fully set before we start reading debug info.
24662	This is so that we can know when a virtual member function doesn't
24663	need to be fixed up.  Also, perform the fixup after the debug
24664	information was read.
24665	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
24666
246672016-02-25  Dodji Seketeli <dodji@redhat.com>
24668
24669	Add --verbose to abidw
24670	* doc/manuals/abidw.rst: Update the manual for the new --verbose
24671	option.
24672	* tools/abidw.cc (options::do_log): New data member.
24673	(options::options): Initialize it.
24674	(display_usage): New string for --verbose.
24675	(parse_command_line): Parse the --verbose option.
24676	(main): Set the the logging option.
24677
246782016-02-25  Dodji Seketeli <dodji@redhat.com>
24679
24680	Update copyright information
24681	* tools/abidiff.cc: Update copyright info for 2016.
24682	* tools/abidw.cc: Likewise.
24683
246842016-02-24  Dodji Seketeli <dodji@redhat.com>
24685
24686	Make libabigail link with pthread
24687	* src/Makefile.am: Add -pthread to libabigail_la_LDFLAGS.
24688	* tools/Makefile.am: Do not use abinilint_LDFLAGS when it should
24689	be abinilint_LDADD.  This one was fixed by Michi Henning.
24690
246912016-02-24  Dodji Seketeli <dodji@redhat.com>
24692
24693	Update mentions to the build dependencies in the doc
24694	* COMPILING: Mention elfutils, libtool, autoconf, automake and
24695	libtool.
24696	* doc/website/mainpage.txt: Mention automake and libtool.  Fix a typo.
24697
246982016-02-24  Dodji Seketeli <dodji@redhat.com>
24699
24700	Bug 19706 - Core dump from abidiff with suppression
24701	* src/abg-comparison.cc
24702	(function_suppression::suppresses_function): Make sure a function
24703	has a symbol before (de)referencing it.
24704
247052016-02-24  Dodji Seketeli <dodji@redhat.com>
24706
24707	Some small speed optimizations
24708	* include/abg-ir.h (var_decl::get_naked_type): Declare new member function.
24709	* src/abg-ir.cc (var_decl::get_naked_type): Define it.
24710	(equals): For the var_decl overload, avoid copying symbol
24711	smart pointers.  Likewise for variable type smart pointers.
24712	(hash_type_or_decl): Avoid accessing canonical type smart pointer.
24713
247142016-02-24  Dodji Seketeli <dodji@redhat.com>
24715
24716	Mist style cleanups
24717	* include/abg-ir.h: Add missing comments.  Space cleanups.  Use
24718	shorter typedefs rather than long template instantiation names.
24719	Use string rather than the longer std::string.
24720	* src/abg-ir.cc: Space cleanups. Add missing comments.  User
24721	shorter typedefs.
24722	* src/abg-reader.cc: Likewise.
24723	* src/abg-writer.cc: Likewise.
24724
247252016-02-24  Dodji Seketeli <dodji@redhat.com>
24726
24727	Implement string interning for Libabigail
24728	* include/Makefile.am: Add the new abg-interned-str.h file to
24729	source distribution.
24730	* include/abg-corpus.h (corpus::corpus): Re-arrange the order of
24731	* src/abg-corpus.cc
24732	(corpus::exported_decls_builder::priv::get_id): Return
24733	interned_string rather than std::string.
24734	(corpus::corpus): Re-arrange the order of parameters: take an
24735	environment as first parameter.  parameters: take an environment
24736	as first parameter.
24737	* include/abg-dwarf-reader.h (lookup_symbol_from_elf)
24738	(lookup_public_function_symbol_from_elf): Likewise.
24739	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
24740	(lookup_symbol_from_gnu_hash_tab)
24741	(lookup_symbol_from_elf_hash_tab, lookup_symbol_from_symtab)
24742	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf)
24743	(lookup_public_variable_symbol_from_elf, lookup_symbol_from_elf)
24744	(lookup_public_function_symbol_from_elf): Take an environment as
24745	first parameter and adjust.
24746	(build_translation_unit_and_add_to_ir)
24747	(build_namespace_decl_and_add_to_ir, build_type_decl)
24748	(build_enum_type, finish_member_function_reading)
24749	(build_class_type_and_add_to_ir, build_function_type)
24750	(read_debug_info_into_corpus, read_corpus_from_elf): Adjust.
24751	* include/abg-fwd.h: Include abg-interned-str.h
24752	(get_type_name, get_function_type_name, get_method_type_name):
24753	Return a interned_string, rather than a std::string.
24754	* include/abg-interned-str.h: New declarations for interned strings
24755	and their pool.
24756	* include/abg-ir.h (environment::intern): Declare new method.
24757	(elf_symbol::{g,s}et_environment): Likewise.
24758	(type_or_decl_base::type_or_decl_base): Make the default
24759	constructor private.
24760	({translation, type_or_decl_base}::set_environment)
24761	(set_environment_for_artifact): Take a const environment*.
24762	(elf_symbol::elf_symbol)
24763	(elf_symbol::create)
24764	(type_or_decl_base::type_or_decl_base)
24765	(translation::translation, decl_base::decl_base)
24766	(scope_decl::scope_decl, type_base::type_base)
24767	(type_decl::type_decl, scope_type_decl::scope_type_decl)
24768	(namespace_decl::namespace_decl)
24769	(enum_type_decl::enumerator::enumerator)
24770	(function_type::function_type, method_type::method_type)
24771	(template_decl::template_decl, function_tdecl::function_tdecl)
24772	(class_tdecl::class_tdecl, class_decl::class_decl): Take an
24773	environment.
24774	(type_or_decl_base::operator=)
24775	(enum_type_decl::enumerator::get_environment): Declare new method.
24776	(decl_base::{peek_qualified_name, peek_temporary_qualified_name,
24777	get_qualified_name, get_name, get_qualified_parent_name,
24778	get_linkage_name}, qualified_type_def::get_qualified_name)
24779	(reference_type_def::get_qualified_name)
24780	(array_type_def::get_qualified_name)
24781	(enum_type_decl::enumerator::{get_name, get_qualified_name})
24782	({var,function}_decl::get_id)
24783	(function_decl::parameter::{get_type_name, get_name_id}): Return
24784	an interned_string, rather than a std::string.
24785	(decl_base::{set_qualified_name, set_temporary_qualified_name,
24786	get_qualified_name, set_linkage_name})
24787	(qualified_type_def::get_qualified_name)
24788	(reference_type_def::get_qualified_name)
24789	(array_type_def::get_qualified_name)
24790	(function_decl::parameter::get_qualified_name): Take an
24791	interned_string, rather than a std::string.
24792	(class_decl::member_{class,function}_template::member_{class,function}_template):
24793	Adjust.
24794	* src/abg-ir.cc (environment_setter::env_): Make this be a pointer
24795	to const environment.
24796	(environment_setter::visit_begin): Adjust.
24797	(interned_string_pool::priv): Define new type.
24798	(interned_string_pool::*): Define the method declared in
24799	abg-interned-str. h.
24800	(operator==, operator!=, operator+): Define operator for interned_string and
24801	std::string
24802	(operator<<): Define for interned_string.
24803	(translation_unit::priv::env_): Make this be a pointer to const
24804	environment.
24805	(translation_unit::priv::priv): Take a pointer to const
24806	environment.
24807	(elf_symbol::priv::env_): New data member.
24808	(elf_symbol::priv::priv): Adjust.  Make an overoad take an
24809	environment.
24810	(translation_unit::{g,s}et_environment): Adjust.
24811	(interned_string_bool_map_type): New typedef.
24812	(environment::priv::classes_being_compared_): Make this hastable
24813	of string be a hashtable of interned_string.
24814	(environment::priv::string_pool_): New data member.
24815	(environment::{get_void_type_decl,
24816	get_variadic_parameter_type_decl}): Adjust.
24817	(type_or_decl_base::priv::env_): Make this be a pointer to const
24818	environment.
24819	(type_or_decl::base::priv::priv): Adjust.
24820	(type_or_decl_base::set_environment)
24821	(set_environment_for_artifact): Take a pointer to const
24822	environment.
24823	(elf_symbol::{g,s}et_environment, environment::intern)
24824	(type_or_decl_base::operator=): Define new methods.
24825	(decl_base::priv::{name_, qualified_parent_name_,
24826	temporary_qualified_name_, qualified_name_, linkage_name_}): Make
24827	these data member be of tpe interned_string.
24828	(decl_base::priv::priv): Make this take an environment. Adjust.
24829	(decl_base::{peek_qualified_name, peek_temporary_qualified_name,
24830	get_linkage_name, get_qualified_parent_name, get_name,
24831	get_qualified_name}, get_type_name, get_function_type_name)
24832	(get_method_type_name, get_node_name)
24833	(qualified_type_def::get_qualified_name)
24834	(pointer_type_def::get_qualified_name)
24835	(array_type_def::get_qualified_name)
24836	(enum_type_decl::enumerator::get_qualified_name)
24837	(var_decl::get_id, function_decl::get_id)
24838	(function_decl::parameter::get_{name_id, type_name}): Return an
24839	interned_string.
24840	(decl_base::{set_qualified_name, set_temporary_qualified_name})
24841	(qualified_type_def::get_qualified_name)
24842	(pointer_type_def::get_qualified_name)
24843	(reference_type_def::get_qualified_name)
24844	(array_type_def::get_qualified_name)
24845	(function_decl::parameter::get_qualified_name): Take an
24846	interned_string.
24847	(decl_base::{set_name, set_linkage_name}): Intern the std::string
24848	passed in parameter.
24849	(equals): In the overload for decl_base, adjust for a little speed
24850	optimization that is justified by profiling.
24851	(pointer_type_def::priv::{internal_qualified_name_,
24852	temp_internal_qualified_name_}): Make these data member be
24853	interned_string.
24854	(enum_type_decl::enumerator::priv::env_): New data member.
24855	(enum_type_decl::enumerator::priv::{name_, qualified_name}): Make
24856	these data member be of type interned_string.
24857	(enum_type_decl::enumerator::get_environment): New method.
24858	(enum_type_decl::enumerator::priv::priv) Adjust.
24859	(typedef_decl::operator==): Implement a little speed optimization.
24860	(var_decl::priv::nake_type_): New data member.
24861	(var_decl::priv::id_): Make this data member be of type
24862	interned_string.
24863	(equals): In the overload for var_decl, function_type,
24864	function_decl, adjust for the use of interned_string.
24865	(function_decl::priv::id_): Make this be of type interned_string.
24866	(scope_decl::{add_member_decl, insert_member_decl})
24867	(lookup_function_type_in_translation_unit)
24868	(synthesize_type_from_translation_unit, lookup_node_in_scope)
24869	(lookup_type_in_scope, scope_decl::scope_decl)
24870	(qualified_type_def::qualified_type_def)
24871	(qualified_type_def::get_qualified_name)
24872	(pointer_type_def::pointer_type_def)
24873	(reference_type_def::reference_type_def)
24874	(array_type_def::array_type_def, array_type_def::append_subrange)
24875	(array_type_def::get_qualified_name)
24876	(enum_type_decl::enum_type_decl)
24877	(enum_type_decl::enumerator::get_qualified_name)
24878	(enum_type_decl::enumerator::set_name)
24879	(typedef_decl::typedef_decl, var_decl::var_decl)
24880	(function_type::function_type, method_type::method_type)
24881	(function_decl::function_decl)
24882	(function_decl::parameter::parameter)
24883	(class_decl::priv::comparison_started)
24884	(class_decl::add_base_specifier)
24885	(class_decl::base_spec::base_spec)
24886	(class_decl::method_decl::method_decl)
24887	(type_tparameter::type_tparameter)
24888	(non_type_tparameter::non_type_tparameter)
24889	(template_tparameter::template_tparameter)
24890	(type_composition::type_composition)
24891	(function_tdecl::function_tdecl, class_tdecl::class_tdecl)
24892	(qualified_name_setter::do_update): Adjust.
24893	(translation_unit::translation_unit, elf_symbol::elf_symbol)
24894	(elf_symbol::create, type_or_decl_base::type_or_decl_base)
24895	(decl_base::decl_base, type_base::type_base)
24896	(type_decl::type_decl, scope_type_decl::scope_type_decl)
24897	(namespace_decl::namespace_decl)
24898	(enum_type_decl::enumerator::enumerator, class_decl::class_decl)
24899	(template_decl::template_decl, function_tdecl::function_tdecl)
24900	(class_tdecl::class_tdecl): Take an environment.
24901	* src/abg-comparison.cc
24902	(function_suppression::suppresses_function): Adjust.
24903	* src/abg-reader.cc (read_translation_unit)
24904	(read_corpus_from_input, build_namespace_decl, build_elf_symbol)
24905	(build_function_parameter, build_function_decl, build_type_decl)
24906	(build_function_type, build_enum_type_decl, build_enum_type_decl)
24907	(build_class_decl, build_function_tdecl, build_class_tdecl)
24908	(read_corpus_from_native_xml): Likewise.
24909	* src/abg-writer.cc (id_manager::m_cur_id): Make this mutable.
24910	(id_manager::m_env): New data member.
24911	(id_manager::id_manager): Adjust.
24912	(id_manager::get_environment): New method.
24913	(id_manager::{get_id, get_id_with_prefix}): Return an
24914	interned_string.
24915	(type_ptr_map): Make this be a hash map of type_base* ->
24916	interned_string, rather a type_base* -> string.
24917	(write_context::m_env): New data member.
24918	(write_context::m_type_id_map): Make this data member be mutable.
24919	(write_context::m_emitted_type_id_map): Make this be a hash map of
24920	interned_string -> bool, rather than string -> bool.
24921	(write_context::write_context): Take an environment and adjust.
24922	(write_context::get_environment): New method.
24923	(write_context::get_id_manager): New const overload.
24924	(write_context::get_id_for_type): Return an interned_string; adjust.
24925	(write_context::{record_type_id_as_emitted,
24926	record_type_as_referenced}): Adjust.
24927	(write_context::type_id_is_emitted): Take an interned_string.
24928	(write_context::{type_is_emitted,
24929	record_decl_only_type_as_emitted}): Adjust.
24930	(write_translation_unit, write_corpus_to_native_xml, dump):
24931	Adjust.
24932	* tools/abisym.cc (main): Adjust.
24933	* tests/data/test-read-write/test22.xml: Adjust.
24934	* tests/data/test-read-write/test23.xml: Adjust.
24935	* tests/data/test-read-write/test26.xml: Adjust.
24936
249372016-02-24  Dodji Seketeli <dodji@redhat.com>
24938
24939	Update copyright notice
24940	* include/abg-corpus.h: Update copyright notice.
24941	* include/abg-dwarf-reader.h: Likewise.
24942	* src/abg-comparison.cc: Likewise.
24943	* src/abg-corpus.cc: Likewise.
24944	* src/abg-ir.cc: Likewise.
24945
249462016-02-23  Dodji Seketeli <dodji@redhat.com>
24947
24948	Fix crash when handling templates with empty patterns
24949	* src/abg-ir.cc (function_tdecl::traverse): Do not crash when
24950	traversing a template with empty pattern.
24951	(class_tdecl::operator==): Do not crash when comparing templates
24952	with empty patterns.
24953
249542016-02-23  Dodji Seketeli <dodji@redhat.com>
24955
24956	Add missing inequality operators for ABI artifacts
24957	* include/abg-ir.h ({translation_unit, elf_symbol::version,
24958	context_rel, decl_base, type_base, type_decl,
24959	array_type_def::subrange_type, enum_type_def::enumerator,
24960	dm_context_rel, template_parameter}::operator!=): Declare.
24961	(operator==): Make the overload form translation_unit_sptr,
24962	scope_decl_sptr, class_decl::base_spec_sptr,
24963	class_decl::member_function_template_sptr,
24964	class_decl::member_class_template_sptr take const references.
24965	(operator!=): Declare an an overload for the non-member operator
24966	!= of translation_unit_sptr, elf_symbol_sptr,
24967	type_or_decl_base_sptr, type_base_sptr, scope_decl_sptr,
24968	type_decl, qualified_type_def_sptr, pointer_type_def_sptr,
24969	reference_type_def_sptr, enum_type_decl_sptr, class_decl_sptr,
24970	class_decl::base_spec_sptr,
24971	class_decl::member_function_template_sptr,
24972	class_decl::member_class_template_sptr.
24973	* src/abg-ir.cc ({translation_unit, elf_symbol::version,
24974	context_rel, decl_base, type_base, type_decl,
24975	array_type_def::subrange_type, enum_type_def::enumerator,
24976	dm_context_rel, template_parameter}::operator!=): Define.
24977	(operator==): Make the overload for translation_unit_sptr,
24978	scope_decl_sptr, class_decl::base_spec_sptr,
24979	class_decl::member_function_template_sptr,
24980	class_decl::member_class_template_sptr take const references.
24981	(operator!=): Define an an overload for the non-member operator !=
24982	of translation_unit_sptr, elf_symbol_sptr, type_or_decl_base_sptr,
24983	type_base_sptr, scope_decl_sptr, type_decl,
24984	qualified_type_def_sptr, pointer_type_def_sptr,
24985	reference_type_def_sptr, enum_type_decl_sptr, class_decl_sptr,
24986	class_decl::base_spec_sptr,
24987	class_decl::member_function_template_sptr,
24988	class_decl::member_class_template_sptr.
24989
249902016-02-20  Dodji Seketeli <dodji@redhat.com>
24991
24992	Make the tree pass distcheck again.
24993	* tests/data/Makefile.am: Add file
24994	test-diff-suppr/test28-add-aliased-function-report-0.txt to source
24995	distribution.
24996
249972016-02-18  Dodji Seketeli <dodji@redhat.com>
24998
24999	Bug 19658 - Type canonicalization slow for the 2nd binary loaded
25000	* include/abg-corpus.h (corpus::{record_canonical_type,
25001	lookup_canonical_type}): Declare new member functions.
25002	* src/abg-corpus.cc (corpus::priv::canonical_types_): New data
25003	member.
25004	(corpus::{record_canonical_type, lookup_canonical_type}): Define
25005	new member functions.
25006	* src/abg-ir.cc (type_base::get_canonical_type_for): Cache the
25007	canonical type inside the corpus of the type being canonicalized.
25008	Then later when canonicalizing another type, lookup in the cache
25009	inside its corpus to see if there is a type with the same name.
25010	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
25011	Adjust.
25012
250132016-02-18  Dodji Seketeli <dodji@redhat.com>
25014
25015	Add --verbose option to abidiff
25016	* doc/manuals/abidiff.rst: Add documentation for new --verbose
25017	option.
25018	* include/abg-dwarf-reader.h (set_do_log): Declare new function.
25019	* src/abg-dwarf-reader.cc (read_context::do_log_): New data
25020	member.
25021	(read_context::read_context): Initialize the new data member.
25022	(read_context::do_log): Define accessors.
25023	(set_do_log): Define new function;
25024	(read_context::canonicalize_types_scheduled)
25025	(read_debug_info_into_corpus): Add logs.
25026	* tools/abidiff.cc (options::do_log): New data member.
25027	(options::options): Initialize it.
25028	(display_usage): Add an usage string for --verbose.
25029	(parse_command_line): Parse the new --verbose option.
25030	(main): Set the dwarf reader's context wrt presence of the
25031	--verbose option.
25032
250332016-02-18  Dodji Seketeli <dodji@redhat.com>
25034
25035	Fix indentation
25036	* tools/abipkgdiff.cc (parse_command_line): Fix a wrong indentation.
25037
250382016-02-17  Dodji Seketeli <dodji@redhat.com>
25039
25040	Bug 19638 - DWARF reader fails to link clone function to its declaration
25041	* include/abg-ir.h (decl_base::set_linkage_name): Make this member
25042	function virtual.
25043	(class_decl::string_mem_fn_ptr_map_type): Define new member type.
25044	(class_decl::find_member_function): Declare new member function.
25045	(copy_member_function): Declare new function.  Declare it as
25046	friend of class_decl.
25047	(method_decl::set_linkage_name): Declare an overload for this
25048	virtual function.
25049	* src/abg-dwarf-reader.cc (build_function_decl): Allow updating of
25050	linkage_name even if the linkage_name was already defined.
25051	(build_ir_node_from_die): In the case DW_TAG_subprogram, make the
25052	lookup of scope of the DIE work even if it has both an abstract
25053	origin and a specification (DW_AT_abstract_origin and
25054	DW_AT_specification).
25055	* src/abg-ir.cc (maybe_adjust_canonical_type): Define new
25056	function.
25057	(canonicalize): Use it.
25058	(function_decl::get_id): Return the linkage name first, if it
25059	exist.
25060	(class_decl::priv::mem_fns_map_): New data member.
25061	(class_decl::find_member_function): Define new member function.
25062	(class_decl::method_decl::set_linkage_name): Likewise.
25063	(class_decl::add_member_function): Update the new data member
25064	class_decl::priv::mem_fns_map_.
25065	(copy_member_function): Define new static function.
25066	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
25067	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
25068	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
25069	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
25070	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
25071	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
25072	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
25073	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
25074	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
25075
250762016-02-17  Dodji Seketeli <dodji@redhat.com>
25077
25078	Add function lookup by linkage name to libabigail::corpus
25079	* include/abg-corpus.h (corpus::lookup_functions): Declare new
25080	member function.
25081	* src/abg-corpus.cc (class corpus::exported_decls_builder::priv):
25082	Make class corpus be a friend of this type.
25083	(corpus::exported_decls_builder::priv::add_fn_to_id_fns_map): Fix
25084	a thinko that was preventing the fn_id -> functions map from ever
25085	being filled.  Fix this function to make it associate each aliases
25086	of a given function to the function, in the hash table.
25087	(corpus::lookup_functions): Define new member function.
25088
250892016-02-17  Dodji Seketeli <dodji@redhat.com>
25090
25091	Fix style cleanups
25092	* include/abg-ir.h (method_type::{method_type, set_class_type,
25093	get_type, set_type}): Use type_base_sptr and class_decl_sptr
25094	instead of the full non-typedefed name.
25095	(method_type):Do some cleanups in the definition of the
25096	convenience typedefs.
25097	* src/abg-ir.cc (method_type::{method_type, set_class_type,
25098	get_type, set_type}): Use type_base_sptr and class_decl_sptr
25099	instead of the full non-typedefed name.
25100	* src/abg-writer.cc (write_class_decl): Add a comment.
25101
251022016-02-13  Dodji Seketeli <dodji@redhat.com>
25103
25104	Bug 19619 - failing to suppress added aliased function reports for C++
25105	* src/abg-comparison.cc
25106	(function_suppression::suppresses_function): Make the evaluation
25107	of the "name" and "name_regexp" consider the cases of languages in
25108	which the function name is the same as the symbol name and the
25109	case of languages in which it is not.  In the former case, all
25110	symbol alias names must be matched.  In the latter case, if "name"
25111	and "name_regexp" match the function name, the suppression
25112	specification is considered to match the report about the function
25113	change.  Also, use the elf_symbol::is_main_symbol() predicate to
25114	test for the symbol being a main symbol, rather than using
25115	error-prone pointer equality.
25116	* tests/data/test-diff-suppr/test27-add-aliased-function-0.suppr:
25117	New test input.
25118	* tests/data/test-diff-suppr/test27-add-aliased-function-1.suppr: Likewise.
25119	* tests/data/test-diff-suppr/test27-add-aliased-function-2.suppr: Likewise.
25120	* tests/data/test-diff-suppr/test27-add-aliased-function-3.suppr: Likewise.
25121	* tests/data/test-diff-suppr/test27-add-aliased-function-4.suppr: Likewise.
25122	* tests/data/test-diff-suppr/test27-add-aliased-function-report-0.txt: Likewise.
25123	* tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise.
25124	* tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise.
25125	* tests/data/test-diff-suppr/test27-add-aliased-function-report-3.txt: Likewise.
25126	* tests/data/test-diff-suppr/test27-add-aliased-function-report-4.txt: Likewise.
25127	* tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise.
25128	* tests/data/test-diff-suppr/test27-add-aliased-function-v0.cc: Likewise.
25129	* tests/data/test-diff-suppr/test27-add-aliased-function-v0.o: Likewise.
25130	* tests/data/test-diff-suppr/test27-add-aliased-function-v1.cc: Likewise.
25131	* tests/data/test-diff-suppr/test27-add-aliased-function-v1.o: Likewise.
25132	* tests/data/test-diff-suppr/test28-add-aliased-function-0.suppr: Likewise.
25133	* tests/data/test-diff-suppr/test28-add-aliased-function-1.suppr: Likewise.
25134	* tests/data/test-diff-suppr/test28-add-aliased-function-2.suppr: Likewise.
25135	* tests/data/test-diff-suppr/test28-add-aliased-function-3.suppr: Likewise.
25136	* tests/data/test-diff-suppr/test28-add-aliased-function-4.suppr: Likewise.
25137	* tests/data/test-diff-suppr/test28-add-aliased-function-5.suppr: Likewise.
25138	* tests/data/test-diff-suppr/test28-add-aliased-function-report-0.txt: Likewise.
25139	* tests/data/test-diff-suppr/test28-add-aliased-function-report-1.txt: Likewise.
25140	* tests/data/test-diff-suppr/test28-add-aliased-function-report-2.txt: Likewise.
25141	* tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise.
25142	* tests/data/test-diff-suppr/test28-add-aliased-function-report-4.txt: Likewise.
25143	* tests/data/test-diff-suppr/test28-add-aliased-function-report-5.txt: Likewise.
25144	* tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise.
25145	* tests/data/test-diff-suppr/test28-add-aliased-function-v0.c: Likewise.
25146	* tests/data/test-diff-suppr/test28-add-aliased-function-v0.o: Likewise.
25147	* tests/data/test-diff-suppr/test28-add-aliased-function-v1.c: Likewise.
25148	* tests/data/test-diff-suppr/test28-add-aliased-function-v1.o: Likewise.
25149	* tests/data/Makefile.am: Add the new test material above to the
25150	source distribution.
25151	* tests/test-diff-suppr.cc: Add the new test inputs above to this
25152	test harness.
25153
251542016-02-12  Dodji Seketeli <dodji@redhat.com>
25155
25156	Emit more informational messages on unrecognized options
25157	* tools/abicompat.cc (options::prog_name): New data member.
25158	(display_help, perform_compat_check_in_normal_mode)
25159	(perform_compat_check_in_weak_mode, main): Prefix error messages
25160	with the name of the program.
25161	* tools/abidw.cc (options::wrong_option): New data member.
25162	(display_help): Prefix error messages with the name of the
25163	program.n
25164	(parse_command_line): Record the name of the unrecognized option.
25165	(main): Tell the name of the unrecognized option.  Prefix error
25166	messages with the name of the program.
25167	* tools/abilint.cc (optionqs::wrong_option): New data member
25168	(display_usage): Prefix error messages with the name of the
25169	program.
25170	(parse_command_line): Record the name of the unrecognized option.
25171	(main): Tell the name of the unrecognized option.  Prefix error
25172	messages with the name of the program.
25173	* tools/abipkgdiff.cc (options::{wrong_option, prog_name}): New
25174	data members.
25175	(package::erase_extraction_directory, display_usage, extract_rpm)
25176	(extract_deb, extract_tar)
25177	(erase_created_temporary_directories_parent, extract_package)
25178	(compare, create_maps_of_package_content): Prefix error messages
25179	with the name of the program.
25180	(maybe_check_suppression_files): Adjust.
25181	(parse_command_line): Record the name of the unrecognized option,
25182	and the name of option which lacks an operand.
25183	(main): Give the name of the unrecognized option.  Prefix error
25184	messages with the name of the program.
25185
251862016-02-12  Dodji Seketeli <dodji@redhat.com>
25187
25188	Prefix abidiff error message with the 'abidiff' program name
25189	* include/abg-tools-utils.h (emit_prefix): Declare new function.
25190	(check_file): Add a new parameter with a default value, so that
25191	existing code keeps compiling.
25192	* src/abg-tools-utils.cc (emit_prefix): Define new function.
25193	(check_file): Use the emit_prefix function and give it the program
25194	name passed as a new parameter.
25195	* tools/abidiff.cc (display_usage, main): Use the new emit_prefix
25196	to prefix error messages.
25197
251982016-02-11  Dodji Seketeli <dodji@redhat.com>
25199
25200	Bug 19606 - Need better error message for invalid options
25201	* tools/abidiff.cc (options::wrong_option): New data member.
25202	(parse_command_line): Record the name of the unknown option and of
25203	the option which value is missing.
25204
252052016-02-11  Dodji Seketeli <dodji@redhat.com>
25206
25207	Add a comment about libabigail needing elfutils 0.159 at least.
25208	* configure.ac: Add a comment saying that we require at least
25209	elfutils 0.159.
25210
252112016-02-11  Dodji Seketeli <dodji@redhat.com>
25212
25213	Talk about mandatory properties in suppress_* directives
25214	* doc/manuals/libabigail-concepts.rst: Talk about the mandatory
25215	properties for suppress_type, suppress_function and
25216	suppress_variable directives.
25217
252182016-02-11  Dodji Seketeli <dodji@redhat.com>
25219
25220	Make abipkgdiff check for the presence of suppression spec files
25221	* tools/abipkgdiff.cc (maybe_check_suppression_files): Define new
25222	static function.
25223	(main): Use it.
25224
252252016-02-11  Dodji Seketeli <dodji@redhat.com>
25226
25227	Make abipkgdiff return correct exit code on usage error
25228	* tools/abipkgdiff.cc (main): Return the correct error code on
25229	usage error.
25230
252312016-02-11  Dodji Seketeli <dodji@redhat.com>
25232
25233	Bug 19604 - abidiff --suppressions doesn't complain about invalid file name
25234	* tools/abidiff.cc (maybe_check_suppression_files): Define new
25235	static function.
25236	(main): Use it.
25237
252382016-02-10  Dodji Seketeli <dodji@redhat.com>
25239
25240	Use proper WIFEXITED and WEXITSTATUS macros to get exit code
25241	* tests/test-diff-dwarf-abixml.cc (main): Use WIFEXITED and
25242	WEXITSTATUS macros to get the return code of the abidiff program.
25243	* tests/test-diff-filter.cc (test_task::perform): Likewise.
25244	* tests/test-diff-pkg.cc (main): Likewise.
25245	* tests/test-diff-suppr.cc (main): Likewise.
25246
252472016-02-10  Dodji Seketeli <dodji@redhat.com>
25248
25249	Bug 19596 - Incorrect exit status for incompatible ABI change
25250	* include/abg-comparison.h (enum diff_category): Adjust the
25251	comment for enumerator VIRTUAL_MEMBER_CHANGE_CATEGORY; changes of
25252	this category are incompatible ABI changes.
25253	(corpus_diff::diff_stats::num_func_with_virtual_offset_changes):
25254	Declare new accessors.
25255	* src/abg-comparison.cc
25256	(corpus_diff::diff_stats::priv::num_func_with_virt_offset_changes):
25257	New data member.
25258	(corpus_diff::diff_stats::priv::priv): Initialize the new data
25259	member.
25260	(corpus_diff::diff_stats::num_func_with_virtual_offset_changes):
25261	Define new accessors.
25262	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the
25263	new accessor to set the number of functions with virtual offset
25264	changes onto the stats data structure.
25265	(corpus_diff::has_incompatible_changes): Take functions with
25266	virtual offset changes into account.
25267	* tests/test-abidiff-exit.cc: New test harness to test for exit
25268	codes of abidiff.
25269	* tests/Makefile.am: Build the new test harness runtestabidiff
25270	from the test-abidiff-exit.cc source file.
25271	* tests/data/test-abidiff-exit/test1-voffset-change-report0.txt:
25272	New reference test output.
25273	* tests/data/test-abidiff-exit/test1-voffset-change-v0.cc: New
25274	test input source code.
25275	* tests/data/test-abidiff-exit/test1-voffset-change-v0.o: New test input.
25276	* tests/data/test-abidiff-exit/test1-voffset-change-v1.cc: New
25277	test input source code.
25278	* tests/data/test-abidiff-exit/test1-voffset-change-v1.o: New test input.
25279	* tests/data/Makefile.am: tests/data/Makefile.am: Add the new test
25280	inputs above to the source distribution.
25281
252822016-02-04  Dodji Seketeli <dodji@redhat.com>
25283
25284	Fix synthesizing of reference type
25285	* src/abg-ir.cc (synthesize_type_from_translation_unit): Support
25286	synthesizing reference types.
25287	* tests/data/test-abicompat/libtest9-fn-changed-v0.so: Add new
25288	test input.
25289	* tests/data/test-abicompat/libtest9-fn-changed-v1.so: Likewise.
25290	* tests/data/test-abicompat/test9-fn-changed-app: Likewise.
25291	* tests/data/test-abicompat/test9-fn-changed-app.cc: : Likewise.
25292	* tests/data/test-abicompat/test9-fn-changed-report-0.txt: Likewise.
25293	* tests/data/test-abicompat/test9-fn-changed-v0.cc: Likewise.
25294	* tests/data/test-abicompat/test9-fn-changed-v0.h: Likewise.
25295	* tests/data/test-abicompat/test9-fn-changed-v1.cc: Likewise.
25296	* tests/data/test-abicompat/test9-fn-changed-v1.h: Likewise.
25297	* tests/data/Makefile.am: Add the new material to source
25298	distribution.
25299	* tests/test-abicompat.cc (in_out_specs): Add the new test inputs
25300	to the test harness.
25301
253022016-02-03  Dodji Seketeli <dodji@redhat.com>
25303
25304	Fix synthesizing of pointer type
25305	* include/abg-ir.h: Update copyright.
25306	* src/abg-ir.cc (synthesize_type_from_translation_unit): Support
25307	synthesizing pointer types.
25308	* tests/data/test-abicompat/libtest8-fn-changed-libapp-v0.so: New
25309	test input.
25310	* tests/data/test-abicompat/libtest8-fn-changed-libapp-v1.so: Likewise.
25311	* tests/data/test-abicompat/test8-fn-changed-app: Likewise.
25312	* tests/data/test-abicompat/test8-fn-changed-app.c: Likewise.
25313	* tests/data/test-abicompat/test8-fn-changed-libapp-v0.c: Likewise.
25314	* tests/data/test-abicompat/test8-fn-changed-libapp-v0.h: Likewise.
25315	* tests/data/test-abicompat/test8-fn-changed-libapp-v1.c: Likewise.
25316	* tests/data/test-abicompat/test8-fn-changed-libapp-v1.h: Likewise.
25317	* tests/data/test-abicompat/test8-fn-changed-report-0.txt: Likewise.
25318	* tests/data/Makefile.am: Add the new test input files to source
25319	distribution.
25320	* tests/test-abicompat.cc (in_out_specs): Add the new test inputs
25321	above to the test harness.
25322
253232016-01-26  Mark Wielaard <mjw@redhat.com>
25324
25325	Remove defined but not used functions pointed out by GCC6.
25326	* src/abg-ir.cc (convert_node_to_decl(decl_base_sptr)): Remove
25327	definition.
25328	(get_node_name(decl_base_sptr)): Likewise.
25329
253302016-01-26  Mark Wielaard <mjw@redhat.com>
25331
25332	Make make more silent.
25333	* Makefile.am (AM_MAKEFLAGS): Set --no-print-directory.
25334
253352016-01-26  Mark Wielaard <mjw@redhat.com>
25336
25337	Fix GCC6 -Wmisleading-indentation warnings.
25338	* src/abg-dwarf-reader.cc (find_import_unit_point_before_die):
25339	Properly indent code after if clause.
25340	* src/abg-ini.cc (write_property_value): Properly indent return
25341	statement after else clause.
25342
253432016-01-27  Dodji Seketeli <dodji@redhat.com>
25344
25345	Fix abicompat's handling of library types not used by the application
25346	* tools/abicompat.cc (perform_compat_check_in_weak_mode): If the
25347	application doesn't use a given type defined and exported by the
25348	library, then skip it.
25349
253502016-01-27  Dodji Seketeli <dodji@redhat.com>
25351
25352	Do not crash when looking up a type from global scope
25353	* src/abg-ir.cc (lookup_type_in_scope): Gently Handle empty access
25354	path.
25355
253562016-01-25  Dodji Seketeli <dodji@redhat.com>
25357
25358	Comparing aliases of the same symbol must be done by pointer
25359	* src/abg-ir.cc (elf_symbol::operator==): Fix thinko and
25360	indentation.  What was I thinking ...
25361	(elf_symbol::add_alias)
25362	(compute_aliases_for_elf_symbol): Do not compare aliases using the
25363	equality operator, because it considers all aliases of a given
25364	symbol as equal.  Rather, use elf_symbol::is_main_symbol() to test
25365	if an alias is the main symbol alias.
25366	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
25367	Likewise.
25368	* src/abg-corpus.cc
25369	(corpus::priv::build_unreferenced_symbols_tables): Likewise.
25370	* src/abg-writer.cc (write_elf_symbol_aliases): Likewise.
25371
253722016-01-21  Dodji Seketeli <dodji@redhat.com>
25373
25374	Bug 19204 - libabigail aborts on DWARF referencing non-existing DIE
25375	* src/abg-dwarf-reader.cc (get_parent_die): If we couldn't find
25376	the parent of a given DIE, return false, do not abort.  Also,
25377	assert that if we don't find the parent of a DIE in the main debug
25378	info, we don't find it in the alternate debug info either (and
25379	vice versa).  This is because I'd like to abort on cases where we
25380	look for a DIE in the wrong debug info; those cases are likely to
25381	be hint that the DWARF reader is doing something wrong which ought
25382	to be investigated and fixed.
25383	(get_scope_for_die): If we couldn't get the parent of the DIE,
25384	then return a nil scope.
25385	* tests/data/test-types-stability/pr19204-libtcmalloc.so.4.2.6-xlc:
25386	New test binary input.
25387	* tests/data/Makefile.am: Add the new binary test input to the
25388	source distribution.
25389	* tests/test-types-stability.cc (elf_paths): Account for the new
25390	binary input.
25391
253922016-01-20  Dodji Seketeli <dodji@redhat.com>
25393
25394	Pass parm of elf_symbol::add_alias by reference
25395	* include/abg-ir.h (elf_symbol::add_alias): Pass parameter by
25396	reference.
25397	* src/abg-ir.cc (elf_symbol::add_alias): Likewise.
25398
253992016-01-20  Dodji Seketeli <dodji@redhat.com>
25400
25401	Bug 19141 - Libabigail doesn't support common ELF symbols
25402	* include/abg-ir.h (elf_symbol::elf_symbol): Take a new flag to
25403	say if the symbol is common.
25404	(elf_symbol::{is_common_symbol, has_other_common_instances,
25405	get_next_common_instance, add_common_instance}): New member functions.
25406	* src/abg-ir.cc (elf_symbol::priv::{is_common_,
25407	next_common_instance_): New data members.
25408	(elf_symbol::priv::priv): Adjust.
25409	(elf_symbol::{elf_symbol, create}): Take a new flag to say if the
25410	symbol is common.
25411	(textually_equals): Adjust to account for symbol common-ness.
25412	(elf_symbol::{is_common_symbol, has_other_common_instances,
25413	get_next_common_instance, add_common_instance}): Define new member
25414	functions.
25415	(elf_symbol::add_alias): Drive-by fix; compare symbols using
25416	pointer value.  Value comparison is not necessary.
25417	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
25418	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
25419	(read_context::lookup_elf_symbol_from_index): Adjust the creation
25420	of the symbol to account for common-ness.
25421	(read_context::load_symbol_maps): Recognize instances of a given
25422	common symbol and represent them as such.  Do not mistake this
25423	with symbol aliases.
25424	* src/abg-reader.cc (build_elf_symbol): Adjust the creation of the
25425	symbol to account for common-ness.
25426	* src/abg-writer.cc (write_elf_symbol): Adjust symbol
25427	serialization to account common-ness.
25428	* tests/data/test-types-stability/pr19141-get5d.o: Add new test
25429	binary input.
25430	* tests/data/test-types-stability/pr19142-topo.o: Likewise.
25431	* tests/data/Makefile.am: Add the new test inputs to source distribution.
25432	* tests/test-types-stability.cc (elf_paths): The the new test
25433	inputs into account.
25434
254352016-01-13  Dodji Seketeli <dodji@redhat.com>
25436
25437	Bug 19434 - invalid character in attribute value
25438	* include/abg-tools-utils.h (string_is_ascii_identifier): Declare
25439	new function.
25440	* src/abg-tools-utils.cc (string_is_ascii_identifier): Define new function.
25441	* src/abg-dwarf-reader.cc (build_function_type): Discard parameter
25442	name if it's made of non-identifier ascii characters.
25443	* tests/data/test-types-stability/pr19434-elf0: New test binary input file.
25444	* tests/data/Makefile.am: Add the new test input to source distribution.
25445	* tests/test-types-stability.cc: Test the new test input into account.
25446
254472016-01-18  Dodji Seketeli <dodji@redhat.com>
25448
25449	Sort the tests run in tests/ by running the slowest ones first
25450	* tests/Makefile.am: Sort the tests  by running the slowest ones
25451	first.
25452
254532016-01-15  Dodji Seketeli <dodji@redhat.com>
25454
25455	Use worker threads pattern to speed up some tests
25456	* include/Makefile.am: Add the new abg-workers.h to source
25457	distribution.
25458	* include/abg-workers.h: New file.
25459	* src/Makefile.am: Add the new abg-worker.cc to source
25460	distribution.
25461	* src/abg-workers.cc: New file.
25462	* tests/test-utils.cc: Update copyright.  Make get_src_dir() and
25463	get_build_dir() return a const char*, as opposed to returning a
25464	string.  Make that const char reside in thread local storage, so
25465	that two concurrent threads can safely call these functions in
25466	parallel, without any race.
25467	* tests/test-utils.h: Make get_src_dir() and get_build_dir()
25468	return a const char*, as opposed to returning a string.
25469	* tests/test-abicompat.cc: Update copyright.  Adjust for
25470	get_src_dir() and get_build_dir() change.
25471	* tests/test-abidiff.cc: Likewise.
25472	* tests/test-alt-dwarf-file.cc: Likewise.
25473	* tests/test-core-diff.cc: Likewise.
25474	* tests/test-diff-dwarf-abixml.cc: Likewise.
25475	* tests/test-diff-dwarf.cc: Likewise.
25476	* tests/test-diff-pkg.cc: Likewise.
25477	* tests/test-diff-suppr.cc: Likewise.
25478	* tests/test-lookup-syms.cc: Likewise.
25479	* tests/test-read-dwarf.cc: Likewise.
25480	* tests/test-read-write.cc: Likewise.
25481	* tests/test-types-stability.cc: Likewise.  Use the new task queue
25482	type to run these tests in parallel.
25483	* tests/test-diff-filter.cc: Likewise.
25484
254852016-01-18  Ondrej Oprala <ooprala@redhat.com>
25486
25487	Escape the value of the filepath attribute.
25488	* src/abg-writer.cc (write_location): Sanitize the filepath with
25489	xml::escape_xml_string().
25490	(write_translation_unit): Likewise.
25491	(write_corpus_to_native_xml): Likewise.
25492	* tests/data/test-types-stability/pr19433-custom0: Add a new test file.
25493	* tests/test-types-stability.cc: Add the test file to the test harness.
25494	* tests/data/Makefile.am: Add the new test file to the list.
25495
254962016-01-09  Dodji Seketeli <dodji@redhat.com>
25497
25498	Make enum values take 64 bits on all platforms
25499	* include/abg-ir.h: Include stdint.h for int64_t.
25500	(enumerator::enumerator): Take an int64_t value for the value of
25501	the enumerator.
25502	(enumerator::{s,g}et_value): Take/return an int64_t value.
25503	* src/abg-ir.cc (enum_type_decl::enumerator::priv): Store the
25504	value in an int64_t.
25505	(enumerator::priv::priv): Take a int64_t for the value.
25506	(enum_type_decl::enumerator::enumerator): Likewise.
25507	(enum_type_decl::enumerator::{s,g}et_value): Take/returnan int64_t
25508	value.
25509	* src/abg-dwarf-reader.cc (die_unsigned_constant_attribute): Take
25510	an uint64_t value.
25511	(die_signed_constant_attribute): Take an int64_t value.
25512	(die_location, die_size_in_bits, die_access_specifier)
25513	(die_virtuality, die_is_virtual, die_is_declared_inline)
25514	(build_translation_unit_and_add_to_ir, build_type_decl)
25515	(build_enum_type, build_pointer_type_def, build_array_type):
25516	Adjust.
25517	* src/abg-reader.cc (build_enum_type_decl): Adjust.
25518	* src/abg-writer.cc (write_enum_type_decl): Do not cast the result
25519	of enumerator::get_value() anymore, it's value is now a int64_t.
25520
255212016-01-08  Dodji Seketeli <dodji@redhat.com>
25522
25523	Include missing <algorithm> to abg-dwarf-reader.cc
25524	* src/abg-dwarf-reader.cc: Add missing <algorithm> include file.
25525
255262016-01-08  Dodji Seketeli <dodji@redhat.com>
25527
25528	Bug 19138 - Failure to relate variables address from DWARF and ELF
25529	* include/abg-dwarf-reader.h (elf_type::ELF_TYPE_RELOCATABLE): New
25530	enumerator.
25531	* src/abg-dwarf-reader.cc (find_section): Factorize this from ...
25532	(find_text_section, find_bss_section): ... these.
25533	(find_rodata_section, find_data_section, find_data1_section):
25534	Define new static functions.
25535	(elf_file_type): Move this static function definition up.
25536	(read_context::{get_elf_file_type, address_is_in_section,
25537	get_data_section_for_variable_address}): New member functions.
25538	(read_context::maybe_adjust_fn_sym_address): Adjust comment.
25539	Adjust to use the new
25540	read_context::get_data_section_for_variable_address().
25541	* tests/data/test-types-stability/pr19138-elf0: New test input
25542	binary.
25543	* tests/data/Makefile.am: Add the new test input binary to the
25544	test suite.
25545	* tests/test-types-stability.cc (elf_paths): Take it into account.
25546
255472016-01-08  Dodji Seketeli <dodji@redhat.com>
25548
25549	Bump version revision to 1.0.rc3
25550	* configure.ac: Change version_revision to rc3
25551
255522016-01-08  Dodji Seketeli <dodji@redhat.com>
25553
25554	Add a release announcement text pattern
25555	* release-text-template.txt: New file.
25556
255572016-01-08  Dodji Seketeli <dodji@redhat.com>
25558
25559	Upate build instructions on the website
25560	* doc/website/mainpage.txt: Add instruction about how to build
25561	tarballs.
25562
255632016-01-07  Dodji Seketeli <dodji@redhat.com>
25564
25565	Update website link for 1.0.rc2
25566	* doc/website/mainpage.txt: Update tarball link for 1.0.rc2
25567
255682016-01-07  Dodji Seketeli <dodji@redhat.com>
25569
25570	Update ChangeLog before 1.0.rc2
25571	* ChangeLog: Update with make update-changelog
25572
255732016-01-07  Dodji Seketeli <dodji@redhat.com>
25574
25575	Update NEWS for 1.0.rc2
25576	* NEWS: Update.
25577
255782016-01-07  Dodji Seketeli <dodji@redhat.com>
25579
25580	Fix tests/data/Makefile.am glitch
25581	* tests/data/Makefile.am: Fix a faulty file path.
25582
255832016-01-07  Dodji Seketeli <dodji@redhat.com>
25584
25585	Lexicographically sort added/removed base classes in change report
25586	* src/abg-comparison.cc (sort_string_base_diff_sptr_map): Define
25587	new static function.
25588	(struct base_spec_comp): Define new type.
25589	(class_diff::priv::sorted_{deleted,inserted}_bases_): New data
25590	members.
25591	(class_diff::ensure_lookup_tables_populated): Sort the deleted and
25592	inserted base classes.
25593	(class_diff::report): Use the sorted set of deleted/inserted base
25594	classes in the report.
25595	* 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.
25596
255972016-01-06  Dodji Seketeli <dodji@redhat.com>
25598
25599	Fix regression on the support for alternate debug info files
25600	* src/abg-dwarf-reader.cc
25601	(imported_unit_point::imported_unit_from_alt_di): New data member.
25602	(imported_unit_point::imported_unit_point): Adjust.
25603	(read_context::alt_tu_die_imported_unit_points_map_): New data
25604	member.
25605	(read_context::alt_tu_die_imported_unit_points_map): New accessor.
25606	(die_die_attribute): Remove the overload which doesn't say if the
25607	resulting DIE comes from alternate debug info.
25608	(build_die_parent_relations_under): Take a new flag which says if
25609	we are building the relations about DIEs in the alternate debug
25610	info section or not.  Use that flag to know if the imported unit
25611	trace we are building is for an alternate debug info file or not.
25612	(build_die_parent_maps): Build two different imported unit point
25613	trace vectors: one for the main debug info file, and another one
25614	for the alternate debug info file.
25615	(find_import_unit_point_between_dies): Take a flag that says if
25616	the beginning of the search is a DIE in the alternate debug info
25617	file or not.  Use it to know if we should use the import point
25618	trace vectors from alternate debug info or from the main debug
25619	info file.  When the import point trace vector is empty, return
25620	immediatly.
25621	(get_parent_die): If the parent DIE is a DW_TAG_partial_unit which
25622	hasn't been imported into this TU, then assume the logical parent
25623	is the DIE for the current translation unit.
25624	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
25625	Reference test output.
25626	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64.rpm: New
25627	input test rpm.
25628	* tests/data/test-diff-pkg/tbb-4.3-3.20141204.fc23.x86_64.rpm:
25629	Likewise.
25630	* tests/data/test-diff-pkg/tbb-debuginfo-4.1-9.20130314.fc22.x86_64.rpm:
25631	Likewise.
25632	* tests/data/test-diff-pkg/tbb-debuginfo-4.3-3.20141204.fc23.x86_64.rpm:
25633	Likewise.
25634	* tests/data/Makefile.am: Add the new test materials to the source
25635	distribution.
25636	* tests/test-diff-pkg.cc (int_out_specs): Add the new rpms to the
25637	list of rpms to test against.
25638
256392016-01-06  Dodji Seketeli <dodji@redhat.com>
25640
25641	Bump revision number to 1.0.rc2
25642	* configure.ac: Bump revision number to 1.0.rc2
25643
256442016-01-05  Dodji Seketeli <dodji@redhat.com>
25645
25646	Update link to the 1.0.rc1 tarball
25647	* doc/website/mainpage.txt: Update the "Getting source code"
25648	section.
25649
256502016-01-05  Dodji Seketeli <dodji@redhat.com>
25651
25652	Update ChangeLog before 1.0.rc1
25653	* ChangeLog: Update automatically with make update-changelog
25654
256552016-01-05  Dodji Seketeli <dodji@redhat.com>
25656
25657	Fix abidw -v
25658	* tools/abidw.cc (parse_command_line): Simplify logic.
25659	(main): Fix logic.
25660
256612016-01-05  Dodji Seketeli <dodji@redhat.com>
25662
25663	Add a NEWS file
25664	* NEWS: New file.
25665	* Makefile.am: Add NEWS file to source distribution.
25666
256672016-01-04  Dodji Seketeli <dodji@redhat.com>
25668
25669	Bug 19355 - Libabigail slow on r300_dri.so
25670	* src/abg-dwarf-reader.cc (struct imported_unit_point): Define new
25671	type.
25672	(operator<(const imported_unit_point&, const
25673	imported_unit_point&)): Define less-than operator for new
25674	imported_unit_point& type.
25675	(imported_unit_points_type, tu_die_imported_unit_points_map_type):
25676	New typedefs.
25677	(find_lower_bound_in_imported_unit_points): Define new static function.
25678	(read_context::tu_die_imported_unit_points_map_): New data member.
25679	(read_context::tu_die_imported_unit_points_map): New getter.
25680	(die_die_attribute): Define new overload.
25681	(build_die_parent_relations_under): Take imported_unit_points_type
25682	output parameter and populate it along the way. Remove the
25683	overload that takes a read_context as a parameter.
25684	(build_primary_die_parent_relations_under)
25685	(build_alternate_die_parent_relations_under): Remove.
25686	(build_die_parent_maps): Pass an instance of
25687	imported_unit_points_type to build_die_parent_relations_under.
25688	(find_import_unit_point_between_dies): Rename one overload of
25689	find_last_import_unit_point_before_die into this.  Adjust to make
25690	it find the import point between two offsets.
25691	(find_import_unit_point_before_die): Rename the other overload of
25692	find_last_import_unit_point_before_die into this. Adjust to use
25693	find_import_unit_point_between_dies.
25694	(get_parent_die): Adjust to use find_import_unit_point_before_die.
25695
256962016-01-04  Dodji Seketeli <dodji@redhat.com>
25697
25698	Support two different variables having the same underlying symbol
25699	* src/abg-ir.cc (var_decl::get_id()): Include the name of the
25700	variable in the ID.
25701
257022016-01-04  Dodji Seketeli <dodji@redhat.com>
25703
25704	Avoid adding the same base class twice
25705	* src/abg-dwarf-reader.cc:
25706	* src/abg-reader.cc:
25707
257082016-01-04  Dodji Seketeli <dodji@redhat.com>
25709
25710	Speed up class_decl::find_base_class
25711	* src/abg-ir.cc (class_decl::priv::bases_map_): New data member.
25712	(class_decl::add_base_specifier): Add the new base specifier to
25713	the new class_decl::priv::bases_map_ data member.
25714	(class_decl::find_base_class): Use the new
25715	class_decl::priv::bases_map_ data member to speed up finding the
25716	base class.
25717
257182016-01-04  Dodji Seketeli <dodji@redhat.com>
25719
25720	Make class_decl::base_spec class follow the pimpl pattern
25721	* include/abg-ir.h (class_decl::base_spec::priv): Declare new
25722	private data type.
25723	(class_decl::base_spec::priv_): Declare new pimpl data member.
25724	(class_decl::base_spec::{base_class_, offset_in_bits_,
25725	is_virtual_}): Remove.
25726	(class_decl::base_spec::{get_base_class, get_is_virtual,
25727	get_offset_in_bits}): Make these member functions out of line.
25728	* src/abg-ir.cc (struct class_decl::base_spec::priv): New type.
25729	(class_decl::base_spec::{get_base_class, get_is_virtual,
25730	get_offset_in_bits}): Define these functions here.
25731	(class_decl::base_spec::base_spec): Adjust because now there is
25732	only one pimpl data member to initialize.
25733
257342015-11-16  Ondrej Oprala <ooprala@redhat.com>
25735
25736	Add the option of printing the file, line and column information about a type being reported.
25737	* bash-completion/abicompat: Complete the new "--no-show-locs" option.
25738	* bash-completion/abidiff: Likewise.
25739	* bash-completion/abidw: Likewise.
25740	* bash-completion/abipkgdiff: Likewise.
25741	* doc/manuals/abicompat.rst: Mention the new "--no-show-locs" option.
25742	* doc/manuals/abidiff.rst: Likewise.
25743	* doc/manuals/abidw.rst: Likewise.
25744	* doc/manuals/abipkgdiff.rst: Likewise.
25745	* include/abg-comparison.h (show_locs): Add declarations.
25746	* src/abg-comparison.cc: (diff_context::priv): Add a new switch
25747	called "show_locs_" and set its default value to false.
25748	(report_loc_info): New function. Outputting the extra information
25749	is conditionalized based on the associated diff contexts settings.
25750	(show_locs): define a getter/setter for
25751	diff_context::priv::show_locs_.
25752	({distinct,pointer,reference,qualified_type,enum,class,scope,fn_parm,
25753	typedef,corpus}_diff::report): Call report_loc_info when
25754	appropriate.
25755	(maybe_report_diff_for_member): Likewise.
25756	(represent): Accept a const reference to a diff_context_sptr as a first
25757	argument and call report_loc_info on its second argument.
25758	* src/abg-dwarf-reader.cc:
25759	* tests/data/Makefile.am: Add the new test reference files.
25760	* tests/data/test-abicompat/test0-fn-changed-report-2.txt: New test
25761	reference output.
25762	* tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise.
25763	* tests/data/test-abicompat/test6-var-changed-report-1.txt: Likewise.
25764	* tests/data/test-abicompat/test7-fn-changed-report-2.txt: Likewise.
25765	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
25766	Likewise.
25767	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
25768	Likewise.
25769	* tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise.
25770	* tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise.
25771	* tests/test-abidiff.cc: Explicitly create a diff context and turn off
25772	location emitting.
25773	* tests/test-diff-dwarf.cc: Likewise.
25774	* tests/test-abicompat.cc: Add --no-show-locs to all existing test
25775	arguments. Run a few of the existing tests again, but without this
25776	option.
25777	* tests/test-diff-filter.cc: Likewise.
25778	* tests/test-diff-pkg.cc: Likewise.
25779	* tests/test-diff-suppr.cc: Likewise.
25780	* tools/abicompat.cc: Handle the new "--no-show-locs" option.
25781	* tools/abidiff.cc: Likewise.
25782	* tools/abidw.cc: Likewise.
25783	* tools/abipkgdiff.cc: Likewise.
25784
257852015-11-16  Ondrej Oprala <ooprala@redhat.com>
25786
25787	Fix a function doc
25788	* src/abg-ir.cc: (location_manager::expand_location): Fix a factual
25789	error in the function documentation.
25790
257912015-12-11  Dodji Seketeli <dodji@redhat.com>
25792
25793	[PERF] Speedup comparing declaration-only class_decls
25794	* src/abg-ir.cc (equals): In the overload for class_decl, avoid
25795	calling class_decl::get_is_declaration_only() several times.
25796	Avoid copying the qualified name of the class_decl.  Also, use the
25797	== operator to compare strings, rather than the != one.
25798
257992015-12-11  Dodji Seketeli <dodji@redhat.com>
25800
25801	[PERF] Access naked pointers for canonical types and function types
25802	* include/abg-ir.h (type_base::get_naked_canonical_type): Declare
25803	new accessor.
25804	(function_decl::get_naked_canonical_type): Likewise.
25805	(function_decl::set_type): Pass a reference to the shared_ptr.
25806	* src/abg-ir.cc (type_base::priv::naked_canonical_type): New data
25807	member.
25808	(type_base::priv::priv): Initialize it.
25809	(canonicalize): Set the naked canonicalize type when we set its
25810	shared pointer.
25811	(type_base::get_naked_canonical_type): Define new accessor.
25812	({pointer_type_def,reference_type_def,function_type,class_decl}::operator==):
25813	Use naked canonical pointers rather than the slower shared_ptr to
25814	canonical pointers.
25815	(function_decl::priv::naked_type_): New data member.
25816	(function_decl::priv::priv): Initialize it.
25817	(function_decl::get_naked_type): Define new accessor.
25818	(function_decl::set_type): Pass a reference to the shared_ptr .
25819	(equals): In the overload for function_decl, use the faster naked
25820	pointers to the type of the function.
25821
258222015-12-11  Dodji Seketeli <dodji@redhat.com>
25823
25824	[PERF] Turn some pimpl pointers into naked pointers
25825	* include/abg-ir.h ({decl_base, type_base, function_decl}::priv_)
25826	Make this a naked pointer to priv, rather than a shared_ptr<priv>.
25827	* src/abg-ir.cc (decl_base::~decl_base): Destroy the private data
25828	pointer, aka pimpl pointer.
25829	(type_base::~type_base): Likewise.
25830	(function_decl::~function_decl): Likewise.
25831	(class_decl::~class_decl): Likewise.
25832
258332015-12-11  Dodji Seketeli <dodji@redhat.com>
25834
25835	[PERF] Pass a bunch of perf-sensitive smart pointers by reference
25836	* include/abg-fwd.h (lookup_type_in_corpus, lookup_type_in_scope)
25837	(lookup_var_decl_in_scope): Pass the decls smart pointers by
25838	reference.
25839	* src/abg-ir.cc (lookup_type_in_corpus, lookup_type_in_scope)
25840	(lookup_var_decl_in_scope): Pass the decls smart pointers by
25841	reference, for performance reasons.
25842
258432015-12-10  Dodji Seketeli <dodji@redhat.com>
25844
25845	Bug 19126 - abidw segv on a dwz compressed version of r300_dri.so
25846	* include/abg-ir.h (class location_manager): Forward declare it
25847	before class location.
25848	(location::loc_manager_): New data member.
25849	(location::location): Take the location manager in one overload
25850	and initialize the new loc_managers_ in all the overloads.
25851	(location::get_location_manager): New getter.
25852	(location::expand): New member function.
25853	(location::*): Add API doc to all entry points.
25854	(location_manager::expand_location): Take a const location.
25855	(type_or_decl_base::set_corpus): Remove.
25856	(type_or_decl_base::{get,set}_translation): New accessors.
25857	(decl_base::{decl_base,get_location}): Take or return a reference
25858	on location.
25859	(scope_decl::scope_decl): Likewise.
25860	(type_decl::type_decl): Likewise.
25861	(namespace_decl::namespace_decl): Likewise.
25862	(qualified_type_def::qualified_type_def): Likewise.
25863	(pointer_type_def::pointer_type_def): Likewise.
25864	(reference_type_def::reference_type_def): Likewise.
25865	(array_type_def::subrange_type::{subrange_type,
25866	get_location}): Likewise.
25867	(enum_type_decl::enum_type_decl): Likewise.
25868	(typedef_decl::typedef_decl): Likewise.
25869	(var_decl::var_decl): Likewise.
25870	(function_decl::function_decl): Likewise.
25871	(function_decl::parameter::parameter): Likewise.
25872	(template_decl::template_decl): Likewise.
25873	(type_tparameter::type_tparameter): Likewise.
25874	(non_type_tparameter::non_type_tparameter): Likewise.
25875	(function_tdecl::function_tdecl): Likewise.
25876	(class_tdecl::class_tdecl): Likewise.
25877	(class_decl::class_decl): Likewise.
25878	(class_decl::method_decl::method_decl): Likewise.
25879	* src/abg-ir.cc (location::expand_location): Define new member
25880	function.
25881	(type_or_decl_base::priv::corpus_): Remove.
25882	(type_or_decl_base::priv::translation_unit_): New data member.
25883	(type_or_decl_base::priv::priv): Adjust.
25884	(type_or_decl_base::set_corpus): Remove.
25885	(type_or_decl_base::get_corpus): Adjust.
25886	(type_or_decl_base::{get,set}_translation_unit): New member
25887	functions.
25888	(decl_base::priv::priv): Take a reference to location.
25889	(decl_base::decl_base): Likewise.
25890	(decl_base::get_location): Return a reference to location.
25891	(location_manager::create_new_location): Adjust.
25892	(location_manager::expand_location): Take a reference to location.
25893	(translation_unit::get_global_scope()): Adjust.
25894	(translation_unit::bind_function_type_life_time): Likewise.
25895	(scope_decl::{add,insert}_member_decl): Adjust.
25896	(get_translation_unit): Likewise.
25897	(type_decl::type_decl): Take a reference to location.
25898	(namespace_decl::namespace_decl): Likewise.
25899	(qualified_type_def::qualified_type_def): Likewise.
25900	(pointer_type_def::pointer_type_def): Likewise.
25901	(reference_type_def::reference_type_def): Likewise.
25902	(array_type_def::subrange_type::priv::priv): Likewise.
25903	(array_type_def::subrange_type::{subrange_type,
25904	get_location}): Likewise.
25905	(enum_type_decl::enum_type_decl): Likewise.
25906	(typedef_decl::typedef_decl): Likewise.
25907	(var_decl::var_decl): Likewise.
25908	(function_decl::function_decl): Likewise.
25909	(function_decl::parameter::parameter): Likewise.
25910	(template_decl::template_decl): Likewise.
25911	(type_tparameter::type_tparameter): Likewise.
25912	(non_type_tparameter::non_type_tparameter): Likewise.
25913	(function_tdecl::function_tdecl): Likewise.
25914	(class_tdecl::class_tdecl): Likewise.
25915	(class_decl::class_decl): Likewise.
25916	(class_decl::method_decl::method_decl): Likewise.
25917	* src/abg-writer.cc (write_location): Take a reference to
25918	location and adjust.
25919	(write_array_type_def, write_function_decl, dump_decl_location):
25920	Adjust.
25921
259222015-12-08  Dodji Seketeli <dodji@redhat.com>
25923
25924	Fix some white space nits
25925	* src/abg-comparison.cc (class_diff::report): Remove a useless
25926	horizontal white space.
25927	* src/abg-ir.cc (operator==): Add a vertical space.
25928
259292015-12-08  Dodji Seketeli <dodji@redhat.com>
25930
25931	Filter out harmless diagnostics glitches due to some ODR violation
25932	* src/abg-comp-filter.cc
25933	(class_diff_has_harmless_odr_violation_change): New static
25934	function.
25935	(harmless_filter::visit): Call it.
25936
259372015-12-08  Dodji Seketeli <dodji@redhat.com>
25938
25939	Fix internal name for pointers, typedefs and arrays
25940	* include/abg-ir.h (pointer_type_def::priv_): New data structure.
25941	The type is now pimpled.
25942	(typedef_decl::priv_): Likewise.
25943	* src/abg-ir.cc (struct pointer_type_def::priv): New struct.
25944	(pointer_type_def::pointer_type_def): Adjust.
25945	(pointer_type_def::get_pointed_to_type): Likewise.
25946	(pointer_type_def::get_qualified_name): Store temporary/internal
25947	names into different caches.
25948	(array_type_def::priv::{temp_internal_qualified_name_,
25949	internal_qualified_name_}): New data members.
25950	(get_type_representation): In the overload for array_type_def,
25951	take requests for internal names into account.
25952	(array_type_def::get_qualified_name): Take requests for internal
25953	names into account.  Store temporary/internal names into different
25954	caches.
25955	(typedef_decl::priv): New struct.
25956	(typedef_decl::typedef_decl): Adjust.
25957	(typedef_decl::get_underlying_type): Likewise.
25958
259592015-12-08  Dodji Seketeli <dodji@redhat.com>
25960
25961	Avoid try/catch code paths when that is possible
25962	* src/abg-ir.cc (is_type, equals): Do not use try/catch based
25963	dynamic_cast.
25964
259652015-12-08  Dodji Seketeli <dodji@redhat.com>
25966
25967	Fix comparison in qualified_type_diff::has_changes
25968	* src/abg-comparison.cc (qualified_type_diff::has_changes): Make
25969	this stupid and simple, now that we have (fast) canonical type
25970	based comparison.
25971	* include/abg-ir.h (qualified_type_diff::operator==): Add an
25972	overload for qualified_type_diff here.
25973	(operator==): Likewise.
25974	* src/abg-ir.cc (qualified_type_diff::operator==): Define it.
25975	(operator==): Likewise.
25976
259772015-12-06  Dodji Seketeli <dodji@redhat.com>
25978
25979	Bug 19336 - Better handle redundantly qualified reference types
25980	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Do not nuke
25981	the qualified type.  Rather, just turn the redundant const
25982	qualifier into a no-op one.
25983	* src/abg-comparison.cc (compute_diff_for_types): Look through
25984	no-op qualified types.
25985	* include/abg-ir.h
25986	(decl_base::{peek,set}_temporary_qualified_name): Declare new
25987	accessors.
25988	* src/abg-ir.cc (decl_base::priv::temporary_qualified_name_): New
25989	data member.
25990	(decl_base::{peek,set}_temporary_qualified_name): Define new
25991	accessors.
25992	(qualified_type_def::priv::{temporary_internal_name_,
25993	internal_name}): New data members.
25994	(qualified_type_def::build_name): For a no-op qualified type, the
25995	internal name (which contains the 'none' qualifier) is different
25996	from the non-internal name.
25997	(qualified_type_def::get_qualified_name): Handle temporary names
25998	and non-temporary names in two different caches.  Also handle
25999	internal and non-internal names in two different caches.  This
26000	makes four different caches.
26001	(qualified_name_setter::do_update): Do not touch the non-internal,
26002	non-temporary qualified name cache if the qualified parent name is
26003	empty.
26004	* tools/abidw.cc (main): change --check-alternate-debug-info to
26005	make it *not* display the name/path to the alternate debug info,
26006	when it's found.  Rather, only
26007	--check-alternate-debug-info-base-name keeps displaying the base
26008	name of the alternate debug info.
26009	* tests/data/test-alt-dwarf-file/test1-libgromacs-debug-dir/*: New
26010	test material.
26011	* tests/data/Makefile.am: Add the new test material to the build
26012	system.
26013	* tests/test-alt-dwarf-file.cc (in_out_specs): Take the new test
26014	input into account.
26015	* tests/data/test-read-dwarf/test1.abi: Adjust.
26016	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
26017	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
26018	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
26019	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
26020	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
26021	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
26022	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
26023	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
26024	Likewise.
26025	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
26026	Likewise.
26027	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
26028	Likewise.
26029	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
26030	Likewise.
26031
260322015-12-06  Dodji Seketeli <dodji@redhat.com>
26033
26034	Do not forget to peel qualified type off when peeling types
26035	* include/abg-fwd.h (peel_qualified_type): Declare new function
26036	...
26037	* src/abg-ir.cc (peel_qualified_type): ... and define it.
26038	(peel_typedef_pointer_or_reference_type): Peel qualified types
26039	here too.
26040
260412015-12-06  Dodji Seketeli <dodji@redhat.com>
26042
26043	Find more spots where to discriminate internal and non-internal names
26044	* src/abg-ir.cc (get_type_name, get_method_type_name)
26045	({typedef_decl,var_decl,function_decl,class_decl}::get_pretty_representation):
26046	Propagate the internal-ness to the call to get_qualified_name().
26047
260482015-12-06  Dodji Seketeli <dodji@redhat.com>
26049
26050	Constify is_qualified_type()
26051	* include/abg-fwd.h (is_qualified_type): Make this take a const
26052	parameter.
26053	* src/abg-ir.cc (is_qualified_type): Likewise.
26054
260552015-11-28  Dodji Seketeli <dodji@redhat.com>
26056
26057	Add missing new line to abidiff help message
26058	* tools/abidiff.cc (display_usage): Add missing new line.
26059
260602015-11-26  Dodji Seketeli <dodji@seketeli.org>
26061
26062	Do not abort when there is no binary to compare in a package
26063	* tests/data/test-diff-pkg/empty-pkg-libvirt-0.9.11.3-1.el7.ppc64.rpm:
26064	New input test package.
26065	* tests/data/test-diff-pkg/empty-pkg-libvirt-1.2.17-13.el7_2.2.ppc64.rpm:
26066	Likewise.
26067	* tests/data/test-diff-pkg/empty-pkg-report-0.txt: New test
26068	reference output.
26069	* data/Makefile.am: Add the new test material above to the build system.
26070	* tests/test-diff-pkg.cc (int_out_specs): Add the new test inputs
26071	to the set of tests.
26072	* tools/abipkgdiff.cc (compare): Do not abort if there is no
26073	binary to compare.
26074
260752015-11-14  Ondrej Oprala <ooprala@redhat.com>
26076
26077	Abidiff: Remove doubled line in help.
26078	* tools/abidiff.cc (display_usage): Remove a doubled help message.
26079
260802015-11-14  Ondrej Oprala <ooprala@redhat.com>
26081
26082	Add bash-completion scripts for the libabigail tools
26083	* Makefile.am: include bash-completion/Makefile.am
26084	* bash-completion/Makefile.am: New makefile for the bash-completion
26085	directory.
26086	* bash-completion/abicompat: New completion script.
26087	* bash-completion/abidiff: Likewise.
26088	* bash-completion/abidw: Likewise.
26089	* bash-completion/abilint: Likewise.
26090	* bash-completion/abinilint: Likewise.
26091	* bash-completion/abipkgdiff: Likewise.
26092	* bash-completion/abisym: Likewise.
26093	* configure.ac: Check for the bash-completion package. Handle
26094	the new --enable-bash-completion[=WHEN] configure option.
26095	* manuals/libabigail-tools.rst: Mention the scripts.
26096
260972015-11-17  Dodji Seketeli <dodji@redhat.com>
26098
26099	Read enum values in the size_t and write them in ssize_t
26100	* include/abg-ir.h (enum_type_def::enumerator::get_value): Return
26101	a size_t.
26102	* src/abg-ir.cc (enum_type_decl::enumerator::get_value): Likewise.
26103	* src/abg-dwarf-reader.cc (die_signed_constant_attribute): #if-out
26104	this static function that is not used anymore.
26105	(build_enum_type): Read the value of the enumerator using a size_t
26106	value.
26107	* src/abg-reader.cc (build_enum_type_decl): Read the enum value
26108	using a long long int.
26109	* src/abg-writer.cc (write_enum_type_decl): Write using a ssize_t.
26110
261112015-11-17  Dodji Seketeli <dodji@redhat.com>
26112
26113	Bump version to release candidate 1.0.rc1
26114	* configure.ac: Bump version to release candidate 1.0.rc1
26115
261162015-11-17  Dodji Seketeli <dodji@redhat.com>
26117
26118	Do not use designated initializers in abipkgdiff.cc
26119	* tools/abipkgdiff.cc (prepare_packages): Do not use designated
26120	initializers syntax.
26121
261222015-11-16  Dodji Seketeli <dodji@redhat.com>
26123
26124	Update ChangeLog for 1.0.rc0
26125	* ChangeLog: Udpate using make update-changelog
26126
261272015-11-16  Dodji Seketeli <dodji@redhat.com>
26128
26129	Fix doxygen configuration file paths in doc/Makefile.am
26130	* doc/Makefile.am: There was an extra "/doc" in the path.
26131
261322015-11-16  Dodji Seketeli <dodji@redhat.com>
26133
26134	Update ChangeLog file in preparation of 1.0.rc0 release
26135	* ChangeLog: Update using make update-changelog.
26136
261372015-11-16  Dodji Seketeli <dodji@redhat.com>
26138
26139	Add --version option to several libabigail tools
26140	* configure.ac: Set the version revision to "rc0".
26141	* doc/manuals/abicompat.rst: Adjust manual for new --version
26142	option.
26143	* doc/manuals/abidiff.rst: Likewise.
26144	* doc/manuals/abidw.rst: Likewise.
26145	* doc/manuals/abilint.rst: Likewise.
26146	* doc/manuals/abipkgdiff.rst: Likewise.
26147	* include/abg-config.h (config::{m_format_minor, m_format_major}):
26148	Make these be strings.
26149	(config::{get,set}_format_minor_version_number): Make these return
26150	strings.
26151	(config::{get,set}_format_major_version_number): Make these return
26152	or take strings.
26153	(abigail_get_library_version): Make this take strings.
26154	* src/abg-config.cc (config::config): Adjust.
26155	(config::{get,set}_format_major_version_number): Make these return
26156	or take strings.
26157	(config::{get,set}_format_minor_version_number): Make these return
26158	strings.
26159	(abigail_get_library_version): Make this take strings.
26160	* include/abg-version.h.in: Make the version variables be strings.
26161	* src/abg-writer.cc (write_translation_unit): The version numbers
26162	are now strings so adjust.
26163	* tools/{abicompat,abidiff,abidw,abilint,abipkgdiff,abisym}.cc
26164	(options::display_version): New data member.
26165	(options::options): Initialize it.
26166	(display_usage): Add documentation for new --version option.
26167	(parse_command_line): Parse new --version option.
26168	(main): Support --version.
26169
261702015-11-12  Dodji Seketeli <dodji@redhat.com>
26171
26172	Correctly handle fn DIE with abstract_origin in alt debug info
26173	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Consider that
26174	the function decl is for a DIE in the alternate debug info file only if
26175	the DIE itself comes from the alternate debug info file, not if
26176	the specification or the origin of the function comes from the
26177	alternate debug info file.
26178	* tests/data/test-diff-pkg/qemu-img-rhev-2.3.0-20.el7.ppc64.rpm:
26179	New test input rpm.
26180	* tests/data/test-diff-pkg/qemu-img-rhev-2.3.0-7.el7.ppc64.rpm: Likewise.
26181	* tests/data/test-diff-pkg/qemu-kvm-rhev-debuginfo-2.3.0-20.el7.ppc64.rpm: Likewise.
26182	* tests/data/test-diff-pkg/qemu-kvm-rhev-debuginfo-2.3.0-7.el7.ppc64.rpm: Likewise.
26183	* 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:
26184	New test reference output.
26185	* tests/data/Makefile.am: Add the new test material to the source
26186	distribution.
26187	* tests/test-diff-pkg.cc (in_out_specs): Use the new test rpm
26188	inputs.
26189
261902015-11-09  Ondrej Oprala <ooprala@redhat.com>
26191
26192	Bug 19081 - abipkgdiff parallelization
26193	* doc/manuals/abipkgdiff.rst: Mention the new --no-parallel option.
26194	* tools/Makefile.am: Add -pthread to abipkgdiffs link options.
26195	* tools/abipkgdiff.cc (elf_file_paths_tls_key): New key for the
26196	thread-local vector of ELF filepaths.
26197	(reports_map): A map of the path of the first ELF of a compared pair
26198	and a corpus representing the difference.
26199	(env_map): A map of the corpus difference and a corresponding
26200	environment needed to be kept alive until the diff is reported.
26201	({arg,map}_lock): mutexes to control access to the comparison argument
26202	list and the {reports,env}_map respectively.
26203	(options): Add a new member "parallel" and set it to true in the ctor.
26204	(elf_file): Add a new "size" member and set it in the ctor.
26205	(package descriptor): Arguments passed to extract_package_set.
26206	(compare_args): Arguments passed to the ELF comparison function.
26207	(display_usage): Mention the new "--no-parallel" option.
26208	(pthread_routine_extract_package): A wrapper function around
26209	extract_package to be used in a multi-threaded environment.
26210	({first_second}_package_tree_walker_callback_fn): Add the new ELF file
26211	paths to a thread-specific vector.
26212	(compare): In an overload of compare, verbose output is updated to
26213	always mention the ELF files being compared for each reported stage.
26214	Reporting is no longer done in this function, the resulting difference
26215	is instead passed back to the calling function for reporting in the
26216	main thread, along with a corresponding environment.
26217	(pthread_routine_compare): Accept a pointer to a vector of comparison
26218	arguments. This function is to be called NTHREAD times and share the
26219	vector passed to it with its other invocations. Create the environment
26220	for compare() and store its output in a map if there is a difference.
26221	(create_maps_of_package_content): Allocate memory for a thread local
26222	vector of ELF paths and dispose of it before returning.
26223	(pthread_routine_extract_pkg_and_map_its_content): Renamed from
26224	extract_package_and_map_its_content. Extract the debuginfo as well as
26225	the regular package in this function. Spawn a separate thread for the
26226	extraction of the debug package.
26227	(pthread_join): A function handling thread joining throughout package
26228	extractions.
26229	(prepare_packages): Spawn a thread to extract each set of packages.
26230	(elf_size_is_greater): New comparison function used to order ELF pairs
26231	by size.
26232	(compare): In the overload of compare, pass through the ELF path
26233	vectors and identify pairs to be diffed. Put them in a vector and sort
26234	it by the summed ELF pair size. Spawn comparison threads and safely
26235	check for results in the proper order of the ELF pairs. Report any
26236	differences ASAP and collect the threads after all the reporting is
26237	done, checking their return status.
26238	(parse_command_line): Check for the "--no-parallel" option.
26239
262402015-11-10  Dodji Seketeli <dodji@redhat.com>
26241
26242	Fix typo in test-diff-dwarf-abixml.cc
26243	* tests/test-diff-dwarf-abixml.cc (main): Fix typo.
26244
262452015-10-14  Ondrej Oprala <ooprala@redhat.com>
26246
26247	Document abipkgdiff's option --no-abignore
26248	* doc/manuals/abipkgdiff.rst: Mention the new option.
26249	* tools/abipkgdiff.cc: Likewise.
26250
262512015-11-09  Dodji Seketeli <dodji@redhat.com>
26252
26253	Avoid canonicalizing function types too early
26254	* src/abg-dwarf-reader.cc (die_function_type_map_type): New
26255	typedef.
26256	*  ():
26257	(read_context::die_wip_function_types_map_): New data member.
26258	(read_context::{die_wip_function_types_map,
26259	is_wip_function_type_die_offset}): New methods.
26260	(build_function_type): Mark the function being built as "work in
26261	progress".
26262	(maybe_canonicalize_type): Do not early-canonicalize WIP function
26263	types.
26264	* src/abg-reader.cc (build_function_type): Mark the function being
26265	built as "work in progress".
26266	* tests/test-diff-dwarf-abixml.cc: New test harness.
26267	* tests/Makefile.am: Add new test harness runtestdiffdwarfabixml
26268	to the build system.
26269	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1:
26270	New test binary input.
26271	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
26272	New test input.
26273	* tests/data/Makefile.am: Add new test inputs to source
26274	distribution.
26275	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
26276
262772015-11-09  Dodji Seketeli <dodji@redhat.com>
26278
26279	Propagate environment property to base specifiers
26280	* src/abg-comparison.cc (compute_diff): In the overload for
26281	class_decl::base_spec_sptr, assert that the environment of the
26282	base classes are equal and that the environment the base class is
26283	the same as the environment of the base specifier.
26284	* src/abg-ir.cc (add_base_specifier): Propagate the environment of
26285	the class to its base specifiers.
26286	* tests/data/test-types-stability/pr19026-libvtkIOSQL-6.1.so.1:
26287	New test binary input.
26288	* tests/data/Makefile.am: Add the new test input to the build
26289	system.
26290	* tests/test-types-stability.cc (elf_paths): Add new binary to the
26291	test harness.
26292
262932015-11-09  Dodji Seketeli <dodji@redhat.com>
26294
26295	Misc style fixes
26296	* src/abg-comparison.cc (diff_context::mark_diff_as_visited): Add
26297	missing space.
26298	(corpus_diff::priv::ensure_lookup_tables_populated): Likewise.
26299	* src/abg-dwarf-reader.cc (lookup_symbol_from_elf): Likewise.
26300	(get_soname_of_elf_file, get_type_of_elf_file): Likewise.
26301	* src/abg-ir.cc (var_decl::get_pretty_representation): Likewise.
26302
263032015-11-07  Dodji Seketeli <dodji@redhat.com>
26304
26305	Support DW_AT_count DWARF attribute
26306	* src/abg-dwarf-reader.cc (get_default_array_lower_bound): Define
26307	new static function.
26308	(build_array_type): Support the DW_AT_count attribute.
26309	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang.so:
26310	New test binary input.
26311	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang2.so: Likewise.
26312	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang-report-0.txt:
26313	New test reference output.
26314	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc.so:
26315	New test binary input.
26316	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc2.so:
26317	New test binary input.
26318	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc-report-0.txt:
26319	New test reference output.
26320	* tests/data/test-diff-dwarf/test35-pr19173-libfoo-long.c: Source
26321	code for the binaries above.
26322	* tests/data/Makefile.am: Add the new test material to the build
26323	system.
26324	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs
26325	to the harness.
26326
263272015-11-07  Dodji Seketeli <dodji@redhat.com>
26328
26329	Bug 19173 - Abidiff doesn't detect symbol size change in library
26330	* include/abg-ir.h (elf_symbol::{elf_symbol, create}): Take a size
26331	parameter.
26332	(elf_symbol::{get,set}_size): New accessors.
26333	* src/abg-ir.cc (elf_symbol::priv::size_): New data member.
26334	(elf_symbol::priv::priv): Initialize it.
26335	(elf_symbol::{elf_symbol, create}) Take a size parameter.
26336	(textually_equals): Compare the size of variable symbols.
26337	(elf_symbol::{get, set}_size): New accessors.
26338	* src/abg-comparison.cc (maybe_report_diff_for_symbol): New static
26339	function.
26340	({function_decl_diff,var_diff}::report): Use it.
26341	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
26342	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
26343	(read_context::lookup_elf_symbol_from_index): Set the size of the
26344	elf symbols' internal representation.
26345	* src/abg-reader.cc (build_elf_symbol): Read the size attribute if
26346	present.
26347	* src/abg-writer.cc (write_elf_symbol): Write the size attribute
26348	for variable symbols, if it's not zero.
26349	* tests/data/test-diff-dwarf/test34-pr19173-libfoo.so: New test
26350	input binary.
26351	* tests/data/test-diff-dwarf/test34-pr19173-libfoo2.so: Likewise.
26352	* tests/data/test-diff-dwarf/test34-pr19173-libfoo-report-0.txt:
26353	New reference test output.
26354	* tests/data/Makefile.am: Add the new test input binaries to the
26355	build system.
26356	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test input
26357	above to the test harness.
26358	* tests/data/test-diff-dwarf/test9-report.txt: Adjust.
26359	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
26360	* tests/data/test-read-dwarf/test0.abi: Likewise.
26361	* tests/data/test-read-dwarf/test1.abi: Likewise.
26362	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
26363	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
26364	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
26365	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
26366	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
26367	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
26368	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
26369	Likewise.
26370	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
26371	Likewise.
26372	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
26373	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
26374	Likewise.
26375	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
26376	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
26377
263782015-11-07  Dodji Seketeli <dodji@redhat.com>
26379
26380	Add some needed vertical space
26381	* src/abg-dwarf-reader.cc (build_array_type): Add a new line after
26382	this function.
26383
263842015-11-07  Dodji Seketeli <dodji@redhat.com>
26385
26386	Pass a bunch of parameters by reference as they ought to be
26387	* include/abg-ir.h (operator==): In the overload for
26388	elf_symbol_sptr, pass the parameters by reference.
26389	* src/abg-ir.cc (operator==): Do the same at definition site.
26390	* src/abg-comparison.cc (maybe_report_diff_for_member): Pass
26391	parameters by reference.
26392
263932015-11-05  Dodji Seketeli <dodji@redhat.com>
26394
26395	Bug 19139 - DWARF reader doesn't handle garbage in function names
26396	* include/abg-tools-utils.h (string_is_ascii): Declare new
26397	function ...
26398	* src/abg-tools-utils.cc (string_is_ascii): ... and define it.
26399	* src/abg-writer.cc (write_function_type): Escape forbidden XML
26400	characters in function type names.
26401	* src/abg-dwarf-reader.cc (build_function_type):  If a parameter
26402	name is not ascii, drop it on the floor.
26403	* tests/data/test-types-stability/pr19139-DomainNeighborMapInst.o:
26404	New test input binary.
26405	* tests/data/test-types-stability/pr19202-libmpi_gpfs.so.5.0:
26406	Likewise.
26407	* tests/data/Makefile.am: Add the new binaries above to the build
26408	system.
26409	* tests/test-types-stability.cc: New test harness.
26410	* tests/Makefile.am: Add the new test harness to the build system.
26411
264122015-11-05  Dodji Seketeli <dodji@redhat.com>
26413
26414	Introduce the name abixml in some comments
26415	* src/abg-reader.cc: Mention abixml in the comment at the top of
26416	the file.
26417	* src/abg-writer.cc: Likewise.
26418
264192015-10-17  Dodji Seketeli <dodji@redhat.com>
26420
26421	Bug 19026 - Types with same name and different size considered equivalent
26422	* src/abg-ir.cc (type_base::get_canonical_type_for): Really
26423	compare the size of the type to be canonicalized against the size
26424	of the *current* potential canonical type of the same name.
26425
264262015-10-17  Dodji Seketeli <dodji@redhat.com>
26427
26428	Add a script to update the reference output of runtestreaddwarf
26429	* tests/update-test-read-dwarf-output.py: New helper python program.
26430
264312015-10-17  Dodji Seketeli <dodji@redhat.com>
26432
26433	Style fixes in the abixml writer.
26434	* src/abg-writer.cc (write_var_decl): Use the var_decl_sptr
26435	typedef.
26436	(write_class_decl): Indent.
26437
264382015-10-17  Dodji Seketeli <dodji@redhat.com>
26439
26440	Fix typo in test-read-dwarf.cc
26441	* tests/test-read-dwarf.cc (for test test21-pr19092.so.abi): Fix
26442	typo in the output path of that test.
26443
264442015-10-17  Dodji Seketeli <dodji@redhat.com>
26445
26446	Adjust regression tests reference output for the current patch set
26447	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so:
26448	New test input binary.
26449	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
26450	New test reference output.
26451	* tests/data/Makefile.am: Add the new test files above to the
26452	source distribution.
26453	* tests/test-read-dwarf.cc (in_out_specs): Add the two new test
26454	files above to the set of test input files.
26455	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
26456	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
26457	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
26458	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
26459	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
26460	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
26461	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
26462	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
26463	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
26464	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
26465	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
26466	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
26467
264682015-10-17  Dodji Seketeli <dodji@redhat.com>
26469
26470	Use abidw --abidiff in test-read-dwarf.cc
26471	* tests/test-read-dwarf.cc (handle_in_out_spec): Rather than
26472	calling abilint on the abixml and abidiff-ing the .so file against
26473	its .so.abi, call abidw --abidiff on the .so file and voila.  Ok,
26474	it does one extra save of abixml, but then that won't hurt.  And
26475	things are faster now than what they were anyway :-)
26476
264772015-10-17  Dodji Seketeli <dodji@redhat.com>
26478
26479	Fix emitting of referenced type in abixml writer
26480	* Use of canonical pointers in the hash map of referenced types
26481	The abixml writer was using canonical types pointer values to hash
26482	referenced types in a map.  It was doing so "by hand"; and it was thus
26483	messing things up for types without canonical types (like some class
26484	declarations) etc.
26485	This patch changes that by using the generic solution of
26486	abigail::ir::hash_type_or_decl(), which also uses the same canonical
26487	pointer type values.  For types with no canonical types, that
26488	functions knows has to gracefully fallback.  At worst, it will just
26489	make things slower, not wrong.
26490	* Sorting of referenced types
26491	The patch also changes the sorting function used for the hash map of
26492	referenced types.  The previous solution was sorting the pretty
26493	representation of types; but then when two types have the same pretty
26494	representation (think, typedefs, for instance) then their relative
26495	position in the sorted result was random.  This causes some stability
26496	issues, in that emitting the abixml for the same binary several times
26497	can lead to the some types being sorted differently -- they have the
26498	same name, but not necessarily the same type *IDs*, as they are
26499	different types.
26500	The new sorting code handles this better; it also uses the pretty
26501	representations of types, when they are equal, it uses the type IDs to
26502	tell the types apart.  At least this brings stability in the abixml
26503	output, for a given binary.
26504	* Avoiding duplicating declaration-only types when emitting the
26505	context of referenced member types.
26506	We don't keep track of declaration-only classes that are emitted.
26507	This is because we allow a given class declaration (that carries no
26508	definition) to appear several times in a given ABI corpus.  So when a
26509	referenced type is a class declaration, it always appears as if that
26510	referenced type has not been emitted.  So when we specifically emit
26511	the not-emitted referenced types, it can happen that declaration-only
26512	classes can appear a lot of times.  This is unnecessary duplication,
26513	aka bloat.
26514	This patch thus introduces a new hash map that tracks emitted
26515	declaration-only classes, so that we can allow duplication of class
26516	declarations when they follow what's done in the IR read from DWARF,
26517	and disallow that duplication when it's totally artificial and
26518	useless.
26519	* Better tracking of referenced types
26520	We were blatantly forgetting to mark some referenced types as such.
26521	So those were missing in some abixml output.
26522	This patch fixes the spots where we were forgetting that important
26523	information.
26524	* Better representation of the scopes of the referenced types that
26525	were specifically emitted.
26526	The previous code was failing at properly representing the class scope
26527	of some referenced types that were specifically emitted, or sometimes,
26528	for member types, representing the scope would be so screwed that the
26529	(referenced) member type itself wouldn't be emitted at all.
26530	This is because I thought that to emit a given member type, just
26531	emitting its parent scope would be enough. I thought that would
26532	automatically trigger emitting the member type itself.  First, that
26533	would emit too much information at times; the other members of the
26534	scope are not necessarily needed.  And second the "duplication
26535	detection code" would sometime refuse to emit the scope class, because
26536	it has already been emitted earlier!  But the incarnation that got
26537	emitted didn't have this member type as member, then.  Yes, in DWARF,
26538	the same class A can be declared several times with different member
26539	types in it.  The complete representation of A would be a union of all
26540	those declarations of A that are seen.
26541	This patch addresses this issue by carefully emitting just the
26542	information that is needed from the scope of the referenced type.
26543	Basically the scope is declared just to declare/define the type we are
26544	interested in; period.  The abixml reader is now properly geared to
26545	re-construct the scope by merging its different parts that are now
26546	scattered around, in the ABI corpus.  That support is part of this
26547	patch set.
26548	instance, a member typedef would be emitted with the information of
26549	its parent class badly formatted.
26550	* src/abg-writer.cc (struct type_ptr_comp_functor): Remove this.
26551	(sort_type_ptr_map): Likewise.
26552	(write_context::record_type_as_referenced): Do not add the
26553	canonical type of the type to record as referenced directly.
26554	(write_context::type_is_referenced): Adjust accordingly.
26555	(struct write_context::type_ptr_cmp): New comparison functor.
26556	(write_context::sort_types): New sorting function.
26557	(write_context::{record_decl_only_type_as_emitted,
26558	decl_only_type_is_emitted}): New member functions.
26559	(write_member_type_opening_tag): Factorize out of ...
26560	(write_member_type): ... here.
26561	(write_class_decl_opening_tag): Factorize out of ...
26562	(write_class_decl): ... here.  Now, keep track also of
26563	declaration-only classes that are emitted.
26564	(write_decl_in_scope): Use the new write_member_type_opening_tag
26565	and write_class_decl_opening_tag.  Now write class scopes
26566	ourselves; they only contain the type declarations that we are
26567	emitting.
26568	(write_translation_unit): Use the new sorting code to sort the
26569	referenced types to emit.  Do not emit referenced types that are
26570	declaration-only classes that have already been emitted.  Handle
26571	the fact that emitting the referenced types might make those
26572	emitted type *reference* other types too! So handle those new
26573	referenced types as such, and emit them too.
26574	(write_qualified_type_def, write_typedef_decl, write_var_decl): Do
26575	not forget to mark referenced types as such.
26576
265772015-10-17  Dodji Seketeli <dodji@redhat.com>
26578
26579	Support updating a class in the abixml reader
26580	* include/abg-ir.h (class_decl::{find_base_class,
26581	find_member_type, find_data_member}): Declare new member functions ..
26582	* src/abg-ir.cc (class_decl::{find_base_class,
26583	find_member_type, find_data_member}): ... and define them.
26584	* src/abg-reader.cc (build_class_decl): Add the ability to update
26585	a class to add new data members, member types and base classes to
26586	it, if necessary.
26587
265882015-10-17  Dodji Seketeli <dodji@redhat.com>
26589
26590	Don't canonicalize types not added to their context in abixml reader
26591	* src/abg-reader.cc (read_context::maybe_canonicalize_type):
26592	Assert that a class type that is scheduled for canonicalization
26593	must be in a scope.  We do this only for classes, for now.  The
26594	assert here helped to spot (and fix)  a lot of places where we
26595	were canonicalizing types without scope.
26596	(read_context::build_or_get_type_decl):  Canonicalize types here,
26597	when they are built and (hopefully) added to their scope.  There
26598	might be cases here where we try to canonicalize types that are
26599	not added to their scope.  That should bomb in the assert above,
26600	at least for class types, for now.  We'll then fix the places where
26601	the types are created, to make them properly scoped.
26602	(build_type_decl, build_qualified_type_decl)
26603	(build_pointer_type_def, build_reference_type_def)
26604	(build_array_type_def, build_enum_type_decl, build_typedef_decl):
26605	Do not try to canonicalize the types early, right when they are
26606	created.  Canonicalization should happen at the point where (or
26607	after) they are added to their scope.
26608	(build_class_decl): Likewise.  Also, schedule member types for
26609	canonicalization once they've been added to their scope.
26610	(build_class_tdecl): Schedule the pattern of the class template
26611	for canonicalization once it has been added to its scope.  I am
26612	not sure I should do this, as the pattern is not yet a real type,
26613	but I am taking my bet.
26614	(build_type_composition): Schedule the composed type for
26615	canonicalization once it's been added to its scope.
26616	(handle_type_decl, handle_qualified_type_decl)
26617	(handle_pointer_type_def, handle_reference_type_def)
26618	(handle_function_type, handle_array_type_def)
26619	(handle_enum_type_decl, handle_typedef_decl, handle_class_decl):
26620	At this point, we should know if the type is to be added to a
26621	scope or not.  If it's in a scope, then schedule for
26622	canonicalization.
26623
266242015-10-15  Dodji Seketeli <dodji@redhat.com>
26625
26626	Bug 19092 - abidw aborts on types that violate the ODR
26627	* src/abg-ir.cc (type_base::get_canonical_type_for): Look at the
26628	size of types with the same name which could be considered
26629	ODR-equal, to spot possible violations that would induce a type
26630	canonicalization error.
26631	* tests/data/test-read-dwarf/test21-pr19092.so: New test input
26632	binary.
26633	* tests/data/test-read-dwarf/test21-pr19092.so.abi: New reference
26634	abixml for the binary above.
26635	* tests/data/Makefile.am: Add the new test input above to source
26636	distribution.
26637	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
26638	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
26639	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
26640	Likewise.
26641	* tests/test-read-dwarf.cc (int_out_specs): Add the two test input
26642	above.
26643
266442015-10-15  Dodji Seketeli <dodji@redhat.com>
26645
26646	Fix activation of Debian package support
26647	* configure.ac: If we cannot activate Debian package support, then
26648	report it clearly.
26649
266502015-10-15  Dodji Seketeli <dodji@redhat.com>
26651
26652	Misc style cleanup
26653	* include/abg-fwd.h: Remove unnecessary declaration of class
26654	parameter.
26655	* src/abg-ir.cc: Remove trailing space in a comment.
26656	* src/abg-reader.cc: Fix a comment.
26657
266582015-10-15  Dodji Seketeli <dodji@redhat.com>
26659
26660	Emit statistics about resolved class declarations
26661	* src/abg-dwarf-reader.cc
26662	(read_context::resolve_declaration_only_classes): Emit statistics
26663	about resolved classes and the missed ones.
26664
266652015-10-15  Dodji Seketeli <dodji@redhat.com>
26666
26667	Add a missing xml text reader call
26668	* src/abg-reader.cc (read_corpus_from_input): Add the necessary
26669	call to xmlTextReaderNext call after the xmlTextReaderExpand call.
26670
266712015-10-15  Dodji Seketeli <dodji@redhat.com>
26672
26673	Pass some more parameters in reference
26674	* include/abg-ir.h (operator==): For the type_base_sptr and
26675	decl_base_sptr overloads, pass the parameters by reference.
26676	({var,function}_decl::{set,get}_symbol): Pass the elf_symbol_ptr
26677	by reference.
26678	* src/abg-ir.cc (operator==): For the type_base_sptr and
26679	decl_base_sptr overloads, pass the parameters by reference, now in
26680	the definition.
26681	({var,function}_decl::{set,get}_symbol): Pass the elf_symbol_ptr
26682	by reference, now in the definition.
26683
266842015-10-15  Dodji Seketeli <dodji@redhat.com>
26685
26686	Adjust tests for the patchset
26687	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
26688	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
26689	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
26690	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
26691	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
26692	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
26693	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
26694	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
26695	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
26696	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
26697	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
26698
266992015-10-15  Dodji Seketeli <dodji@redhat.com>
26700
26701	Make abidw --abidiff not show definitely harmless changes
26702	* tools/abidw.cc (set_diff_context): New function.
26703	(main): Use that new function.  Do not show any output for
26704	--abidiff if only compatible changes were detected.  Also, do not
26705	abort if no input binary was giving.
26706
267072015-10-15  Dodji Seketeli <dodji@redhat.com>
26708
26709	Allow only one definition of a given type per corpus in abixml
26710	* src/abg-writer.cc (write_translation_unit): Do not clear some
26711	important per-translation unit maps here.  There are needed to
26712	keep track of the emitted and referenced types through the entire
26713	corpus.  Avoid (wrongly) recording function types twice.
26714	(write_array_type_def, write_function_decl, write_function_type):
26715	Record referenced types.
26716	(write_class_decl): Record referenced types, and, allow only
26717	declarations to be duplicated in a corpus.
26718
267192015-10-15  Dodji Seketeli <dodji@redhat.com>
26720
26721	A series of small speed optimizations here and there
26722	* src/abg-comparison.cc (var_diff::has_changes): Just compare the
26723	two var_decl.  It's (way) faster now than using recursive hashing
26724	for that.
26725	* src/abg-ir.cc (elf_symbol::does_alias): Get out early if the two
26726	main symbols are equal.
26727	(equals): In the overload for function_decl, start by comparing
26728	types.  This can be very fast for functions with different types,
26729	as it amounts to a pointer comparison.  In the overload for
26730	class_decl, avoid a map lookup when it's not necessary.
26731
267322015-10-15  Dodji Seketeli <dodji@redhat.com>
26733
26734	Accelerate a slow path in hash_type_or_decl()
26735	* include/abg-ir.h (is_function_parameter, is_class_base_spec):
26736	Declare new functions.
26737	* src/abg-ir.cc (is_function_parameter, is_class_base_spec):
26738	Define them.
26739	(hash_type_or_decl): Handle hashing of function parameters are
26740	class base specifications with the fast path of type hashing.
26741
267422015-10-15  Dodji Seketeli <dodji@redhat.com>
26743
26744	Implement fast type lookup in a corpus
26745	* include/abg-fwd.h (components_to_type_name): Declare new
26746	function.
26747	* include/abg-ir.h (string_type_base_wptr_map_type): New typedef.
26748	(translation_unit::{get,set}_types): Declare new member functions.
26749	* src/abg-ir.cc (translation_unit::priv::types_): New data member.
26750	(translation_unit::{get,set}_types): Define these member
26751	functions.
26752	(maybe_update_types_lookup_map): Define new static function.
26753	(components_to_type_name): Define new function.
26754	(scope_decl::{add_member_decl, insert_member_decl}): Call the new
26755	maybe_update_types_lookup_map.
26756	(scope_decl::find_iterator_for_member): Fix logic.
26757	(class_decl::set_is_declaration_only): When a class declaration
26758	becomes a definition, update the name -> type map maintained in
26759	the scope of the class.
26760	(lookup_type_in_translation_unit): Use the hash map of qualified
26761	name -> types that is now maintained in the translation unit.
26762	This is way faster than the previous walking algorithm.
26763	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
26764	When fixing up global variable declarations that need to be
26765	re-added to the translation unit, use the new fast type lookup
26766	function.
26767
267682015-10-15  Dodji Seketeli <dodji@redhat.com>
26769
26770	Set the corpus of all ABI artifact reads from abixml
26771	* src/abg-reader.cc (read_translation_unit): Set the current
26772	corpus to the current translation unit being built.
26773
267742015-10-14  Dodji Seketeli <dodji@redhat.com>
26775
26776	Make canonicalization non sensitive to struct-ness of subtypes
26777	* include/abg-fwd.h (get_type_name, get_function_type_name)
26778	(get_method_type_name, get_pretty_representation): Add an
26779	"internal" flag to all overoads.
26780	* include/abg-ir.h
26781	({type_or_decl_base, decl_base, type_decl, scope_type_decl,
26782	qualified_type_def, array_type_def, enum_type_decl, typedef_decl,
26783	var_decl, function_decl, function_decl::parameter, function_type,
26784	method_type, class_decl}::get_pretty_representation): Add an
26785	'internal' flag.
26786	({decl_base, qualified_type_def, pointer_type_def,
26787	reference_type_def, array_type_def, enum_type_decl::enumerator,
26788	function_decl::parameter}::get_qualified_name): Likewise.
26789	(qualified_type_def::build_name): Likewise.
26790	* src/abg-ir.cc ({decl_base, qualified_type_def, pointer_type_def,
26791	reference_type_def, array_type_def, enum_type_decl,
26792	enum_type_decl::enumerator,
26793	function_decl::parameter}::get_qualified_name): Take an "internal"
26794	flag.
26795	(qualified_type_def::build_name): Likewise.
26796	({decl_base, type_decl, namespace_decl, array_type_def,
26797	enum_type_decl, typedef_decl, var_decl, function_type,
26798	method_type, function_decl,
26799	class_decl}::get_pretty_representation): Likewise.
26800	(get_type_name, get_function_type_name, get_method_type_name)
26801	(get_pretty_representation): Likewise.
26802	(type_base::get_canonical_type_for): Call
26803	get_pretty_representation() with the "internal" flag set to
26804	"true", to get a pretty representation that is independant from
26805	the struct-ness of the subtypes of the type being canonicalized.
26806
268072015-10-14  Dodji Seketeli <dodji@redhat.com>
26808
26809	Handle aliased function decls when comparing decls in general
26810	* include/abg-ir.h (is_function_decl): Add a const to the
26811	reference parameter, making it comply with the definition.
26812	* src/abg-ir.cc (equals): In the overload for decl_base, when the
26813	two linkage names are different, consider the case of the decls
26814	being aliased functions.
26815
268162015-10-14  Dodji Seketeli <dodji@redhat.com>
26817
26818	Fix const-ness of a function parameter
26819	* include/abg-fwd.h (is_function_decl): Add a const to the
26820	parameter to make it comply with the definition in abg-ir.cc.
26821	Woops.
26822
268232015-10-14  Dodji Seketeli <dodji@redhat.com>
26824
26825	Fix "is-anonymous" abixml property impact on some tests
26826	* tests/data/test-abidiff/test-PR18166-libtirpc.so: New file.
26827	* tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Likewise.
26828	* tests/data/test-abidiff/test-corpus0-report0.txt: Renamed into
26829	tests/data/test-abidiff/test-PR18166-libtirpc.so.report.txt.
26830	* tests/data/test-abidiff/test-corpus0-v{0,1}.so.abi: Removed.
26831	* tests/data/Makefile.am: Renamed test-corpus0-* files into
26832	test-PR18166-libtirpc.so-* files.
26833	* tests/test-abidiff.cc (specs): Adjust.
26834
268352015-10-14  Dodji Seketeli <dodji@redhat.com>
26836
26837	Do not compare access specs for member types & functions
26838	* include/abg-fwd.h (is_function_decl): Declare a new overload.
26839	* src/abg-ir.cc (is_function_decl): Define a new overload.
26840	(equals): In the overload for decl_base, do not compare access
26841	specifiers when comparing member functions and types.
26842	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
26843	* tests/data/test-diff-filter/test0-report.txt: Likewise.
26844	* tests/data/test-diff-filter/test01-report.txt: Likewise.
26845	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
26846	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
26847	* tests/data/test-diff-filter/test4-report.txt: Likewise.
26848
268492015-10-14  Dodji Seketeli <dodji@redhat.com>
26850
26851	Fix strip_typedef issues
26852	* src/abg-ir.cc (strip_typedef): Do not canonicalize
26853	the return type of the method type to typedef-strip.
26854	Acknowledge that the return type can be nil.
26855
268562015-10-14  Dodji Seketeli <dodji@redhat.com>
26857
26858	Force late canonicalizing of function types read from abixml
26859	* src/abg-reader.cc (build_function_type): Late-canonicalize
26860	function types.
26861
268622015-10-13  Ondrej Oprala <ooprala@redhat.com>
26863
26864	Bug 19082 - Recognize suppression spec files
26865	* tests/data/Makefile.am: Add new test material to the build system.
26866	* tests/data/test-diff-pkg/dirpkg-{0-dir1,{1,2}-dir2}/dir.abignore:
26867	A test suppression specification.
26868	* tests/data/test-diff-pkg/dirpkg-{2,3}-dir2/.abignore: Likewise.
26869	* tests/data/test-diff-pkg/dirpkg-3.suppr: Likewise.
26870	* tests/data/test-diff-pkg/dirpkg-{1,2,3}-dir{1,2}/libobj-v0.so: New
26871	binary test inputs.
26872	* tests/data/test-diff-pkg/dirpkg-{1,2,3}-dir{1,2}/obj-v0.cc: New test
26873	source files
26874	* tests/data/test-diff-pkg/dirpkg-{1,2,3}-report-{0,1}.txt: New
26875	reference outputs
26876	* tests/test-diff-pkg.cc: Adjust to run the new tests.
26877	* tools/abipkgdiff.cc (prog_options): New static pointer to struct
26878	opts.
26879	(file_tree_walker_callback_fn): Rename to
26880	first_package_tree_walker_callback_fn.
26881	(second_package_tree_walker_callback_fn): Check for ELF files just
26882	like the previous function but additionally check for files
26883	ending with ".abignore", unless disabled from the command line.
26884	({create_maps_of_package,extract_package_and_map_its}_content):
26885	Add a callback as a new argument.
26886	(main) handle the new "--no-abignore" option, which turns off
26887	the search for suppression files within the new package.
26888
268892015-10-08  Dodji Seketeli <dodji@redhat.com>
26890
26891	Bug 19024 - Failing to flag underlying type of enums as anonymous
26892	* src/abg-dwarf-raeder.cc (build_enum_type): Set the is-anonymous
26893	flag on the underlying type of the enum.
26894	* tests/data/test-read-dwarf/test0.abi: Adjust.
26895	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
26896	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
26897	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
26898	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
26899	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
26900	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
26901	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
26902	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
26903	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
26904	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
26905	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
26906	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
26907
269082015-10-08  Dodji Seketeli <dodji@redhat.com>
26909
26910	Bug 19025 - abixml writer forgets to emit some member types
26911	* include/abg-fwd.h (is_namespace): Fix prototype.
26912	* src/abg-writer.cc (struct type_ptr_comp_functor): New internal
26913	type.
26914	(sort_type_ptr_map): New static function.
26915	(write_context::m_referenced_types_map): Renamed
26916	m_referenced_fntypes_map data member into this.
26917	(write_context::get_referenced_types): New member function.
26918	(write_context::record_type_as_referenced): Renamed
26919	record_fntype_as_referenced member function into this.  Adjust.
26920	(write_context::type_is_referenced): Renamed fntype_is_referenced
26921	into this.
26922	(write_context::clear_referenced_types_map): Renamed
26923	clear_referenced_fntypes_map member function into this.  Adjust.
26924	(write_decl_in_scope): New static function.
26925	(write_translation_unit): Use it here to emit types that are
26926	referenced by other types in the TU, but that are not emitted.
26927	Adjust.
26928	(write_pointer_type_def, write_reference_type_def)
26929	(write_typedef_decl): Record the underlying types referenced by
26930	the emitted types as being, well, referenced.
26931	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so:
26932	New test binary input.
26933	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
26934	New reference output of the binary input above.
26935	* tests/data/Makefile.am: Add the new test material above to the
26936	source distribution.
26937	* tests/test-read-dwarf.cc (in_out_spec): Add the new test inputs.
26938	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
26939	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
26940	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
26941	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
26942	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
26943	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
26944	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
26945	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
26946	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
26947	Likewise.
26948	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
26949	Likewise.
26950
269512015-10-06  Ondrej Oprala <ooprala@redhat.com>
26952
26953	Parallelize test read-dwarf.
26954	* tests/Makefile.am: Link runtestreaddwarf with libpthread.
26955	* tests/test-read-dwarf.cc (main) Create worker threads corresponding
26956	to the number of CPUs online, add a "--no-parallel" option and move
26957	the main loop...
26958	(handleInOutSpec) ...here.
26959
269602015-10-07  Dodji Seketeli <dodji@redhat.com>
26961
26962	Bug 19023 - Type canonicalization is sensitive to struct-ness
26963	* include/abg-ir.h (class_decl::is_struct): Declare a setter for the
26964	"is-struct" property.
26965	* src/abg-ir.cc (class_decl::is_struct): And define that setter
26966	here.
26967	(type_base::get_canonical_type_for): Temporarily set the
26968	'is-struct' flag of the class type to 'false' before building its
26969	pretty representation.
26970	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so:
26971	New test input binary.
26972	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
26973	New test reference output.
26974	* tests/data/Makefile.am: Add the new test material above to the
26975	source distribution.
26976	* tests/test-read-dwarf.cc (in_out_specs): Add the two new test
26977	inputs to the list of test inputs to consider.
26978	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
26979
269802015-10-06  Dodji Seketeli <dodji@redhat.com>
26981
26982	Style adjustment in abg-corpus.cc
26983	* src/abg-corpus.cc (corpus::exported_decls_builder::id_var_map_):
26984	Renamed data member vars_map_ into this.
26985	(corpus::exported_decls_builder::id_var_map): Renamed vars_map
26986	into this.
26987	(corpus::exported_decls_builder::var_id_is_in_id_var_map): Renamed
26988	var_is_in_map into this.
26989	(corpus::exported_decls_builder::{add_var_to_map,
26990	add_var_to_exported, maybe_add_var_to_exported_vars}): Adjust.
26991
269922015-10-06  Dodji Seketeli <dodji@redhat.com>
26993
26994	Bug 19037 - Make ABI corpus support several functions with same symbol
26995	* include/abg-corpus.h
26996	(corpus::exported_decls_builder::str_{fn,var}_ptr_map_type):
26997	Remove these typedefs from here as they only used internally in
26998	abg-corpus.cc.  So we move them there instead.
26999	* src/abg-corpus.cc (str_fn_ptrs_map_type): New typedef.
27000	(str_var_ptr_map_type): Moved the typedef that was in
27001	corpus::exported_decls_builder here.
27002	(corpus::exported_decls_builder::id_fns_map_): Rename the fns_
27003	data member into this.  Make it have a str_fn_ptrs_map_type as a
27004	type.
27005	(corpus::exported_decls_builder::id_fns_map): Renamed the
27006	fns_map() accessor into this one.
27007	(corpus::exported_decls_builder::{fn_id_is_in_id_fns_map,
27008	fn_is_in_fns}): New member functions.
27009	(corpus::exported_decls_builder::fn_is_in_id_fns_map): Rename
27010	fn_is_in_map into this.
27011	(corpus::exported_decls_builder::add_fn_to_id_fns_map): Rename
27012	add_fn_to_map into this.
27013	(corpus::exported_decls_builder::add_fn_to_exported): Adjust.
27014	(corpus::exported_decls_builder::maybe_add_fn_to_exported_fns):
27015	Adjust.
27016	* src/abg-comparison.cc (function_decl_diff::report): Emit reports
27017	about function name changes (for a given function ID) only if
27018	there are sub-type changes to be reported for the function.  In
27019	that case, do not forget to emit the sub-type changes after the
27020	name changes have been reported.
27021	(corpus_diff::priv::ensure_lookup_tables_populated): Several
27022	functions of the same ID can be removed or added from/to the
27023	corpus.
27024	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so:
27025	New test input binary.
27026	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
27027	New test output reference.
27028	* tests/data/Makefile.am: Add the new test materials to the source
27029	distribution.
27030	* tests/test-read-dwarf.cc (in_out_specs): Adjust to add the new
27031	test inputs above.
27032
270332015-10-05  Ondrej Oprala <ooprala@redhat.com>
27034
27035	Do not imply private access when building a struct from ABIXML.
27036	* src/abg-reader.cc (read_context): Abort if we run into an
27037	unsupported access specifier.
27038	(build_class_decl) Default to public access for the children
27039	of a struct.
27040
270412015-10-05  Ondrej Oprala <ooprala@redhat.com>
27042
27043	Fix minor warnings when building documentation.
27044	* manuals/abilint.rst: Fix the "Literal block expected" warning.
27045	* manuals/abipkgdiff.rst: Fix the "Title underline too short" warning.
27046
270472015-10-05  Ondrej Oprala <ooprala@redhat.com>
27048
27049	Fix an "Unknown target name" error during make info.
27050	* doc/manuals/libabigail-overview.rst: Fix the reference to
27051	"ELF symbols".
27052
270532015-10-05  Ondrej Oprala <ooprala@redhat.com>
27054
27055	Fix a path in doc/Makefile.am
27056	* doc/Makefile.am: Prefix the path for DOXY_WEBSITE_SRC_CFG and
27057	DOXY_WEBSITE_BLD_{CFG,DIR} with "/doc" to protect it against make
27058	clean.
27059
270602015-10-04  Dodji Seketeli <dodji@redhat.com>
27061
27062	Misc style cleanups
27063	* src/abg-reader.cc (read_is_struct): Fix comment.
27064	(build_type_decl): Use type_decl_sptr rather than
27065	shared_ptr<type_decl>.
27066	(build_type_decl): Use typedef_decl_sptr rather than
27067	shared_ptr<typedef_decl>.
27068
270692015-10-04  Dodji Seketeli <dodji@redhat.com>
27070
27071	Use the ODR to speed up type canonicalization
27072	* include/abg-fwd.h (class corpus): Forward-declare this.
27073	(is_anonymous_type): Declare this new function.
27074	* include/abg-ir.h (corpus_sptr, corpus_wptr): Declare these
27075	typedefs here too.
27076	(translation_unit::{g,s}et_corpus): Declare new member functions.
27077	(type_or_decl_base::{g,s}et_corpus): Likewise.
27078	* src/abg-ir.cc (translation_unit::priv::corpus): New data member.
27079	(translation_unit::priv::priv): Initialize it.
27080	(translation_unit::{g,s}et_corpus): Define new accessors.
27081	(translation_unit::get_global_scope): Propagate the corpus of the
27082	translation unit to its newly created global scope.
27083	(translation_unit::bind_function_type_life_time): Propagate the
27084	corpus of the translation_unit to the added function type.
27085	(type_or_decl_base::priv::corpus_): Add new data member.
27086	(type_or_decl_base::priv::priv): Initialize it.
27087	(type_or_decl_base::{g,s}et_corpus): Define new accessors.
27088	(scope_decl::{add,insert}_member_decl): Propagate the context's
27089	corpus to the member added to the context.
27090	(decl_base::priv::is_anonymous_): Add new data member.
27091	(decl_base::priv::priv): Initialize it.
27092	(decl_base::{s,g}et_is_anonymous): Define accessors.
27093	(is_anonymous_type): Define a new test function.
27094	(decl_base::set_name): Update the "is_anonymous" property.
27095	(type_base::get_canonical_type_for): Implement the ODR-based
27096	optimization to type canonicalization.
27097	* src/abg-corpus.cc (corpus::add): When a translation unit is
27098	added to a corpus, set the corpus of the translation unit.
27099	* src/abg-dwarf-reader.cc (build_enum_type)
27100	(build_class_type_and_add_to_ir): Set the "is_anonymous" flag on
27101	anonymous enums and classes.
27102	* src/abg-reader.cc (read_is_anonymous): Define new static
27103	function.
27104	(build_type_decl, build_enum_type, build_class_decl): Call the new
27105	read_is_anonymous function and set the "is_anonymous" property on
27106	the built type declaration.
27107	* src/abg-writer.cc (write_is_anonymous): Define new static
27108	function.
27109	(write_type_decl, write_enum_type_decl, write_class_decl): Write
27110	the "is_anonymous" property.
27111	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
27112	Adjust.
27113	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
27114	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
27115	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
27116	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
27117	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
27118	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
27119	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
27120	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
27121	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
27122
271232015-10-04  Dodji Seketeli <dodji@redhat.com>
27124
27125	Late canonicalize all types that reference classes when reading DWARF
27126	* include/abg-fwd.h (peel_array_type): Declare new function.
27127	* src/abg-ir.cc (peel_array_type): Define it.
27128	(peel_typedef_pointer_or_reference_type): Peel arrays too, to get
27129	the type of its element.
27130	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): If a pointer,
27131	reference, array or typedef references a class, then do
27132	late-canonicalize this type.
27133
271342015-10-04  Dodji Seketeli <dodji@redhat.com>
27135
27136	Fix infinite loop in peel_typedef_pointer_or_reference_type
27137	* src/abg-ir.cc (peel_typedef_pointer_or_reference_type): Make
27138	sure the variable tested in the condition is the one updated by
27139	the loop.
27140
271412015-10-02  Dodji Seketeli <dodji@redhat.com>
27142
27143	Try harder to hash_type_or_decl avoid the slow path
27144	* src/abg-ir.cc (hash_type_or_decl):  When a declaration-only
27145	class has a definition, then use the canonical type of that
27146	definition as a hash value.  If the class no definition, only
27147	then, use the slow patfh of computing the recursive progressive
27148	hash value of the type.
27149
271502015-10-02  Dodji Seketeli <dodji@redhat.com>
27151
27152	Do not use recursive type hashing when writing out function types
27153	* src/abg-writer.cc (typedef fn_shared_ptr_map): Remove.
27154	(write_context::m_referenced_fntypes_map): Change the type of this
27155	into type_ptr_map.
27156	(write_context::{record_fntype_as_referenced,
27157	fntype_is_referenced}): Use the pointer value of the canonical
27158	type of the referenced type as key for the map.
27159
271602015-10-02  Dodji Seketeli <dodji@redhat.com>
27161
27162	Prevent build_function_type from not canonicalizing certain types
27163	* src/abg-dwarf-reader.cc (build_function_type): Associate the
27164	type being built with its DIE, before starting to build the
27165	sub-types.  The current type is then amended with the sub-types
27166	that are built later.
27167	(build_ir_node_from_die): In the case for DW_TAG_subroutine_type,
27168	do not associate the type to the DIE here, as it's been done in
27169	build_function_type.
27170	* src/abg-ir.cc (function_type::set_parameters): Adjust the index
27171	of the parameters being set to the function: they start at 1,
27172	unless the first parameter is artificial, in which case its index
27173	starts at zero.  This is just like what is done when the function
27174	type is constructed directly with the parameters passed as an
27175	argument to the constructor.
27176
271772015-10-02  Dodji Seketeli <dodji@redhat.com>
27178
27179	Fix detection of changes in pointer diff in the comparison engine
27180	* src/abg-comparison.cc (pointer_diff::has_changes): Just
27181	comparing the underlying type might not be enough.  Let's just
27182	compare the pointer itself.  Now that we have canonical types,
27183	comparing the pointer itself is not slower.
27184
271852015-10-02  Dodji Seketeli <dodji@redhat.com>
27186
27187	Do not overly canonicalize types during typedef stripping
27188	* src/abg-ir.cc (strip_typedef): Do not canonicalize the stripped
27189	type if the input one is not canonicalized.
27190
271912015-10-02  Dodji Seketeli <dodji@redhat.com>
27192
27193	Cleanup some IR type comparison operators
27194	* include/abg-ir.h (operator==): In the overloads for type_decl,
27195	enum and class_decl, turn the shared_ptr parameter into a const
27196	reference to the shared_ptr.
27197	* src/abg-ir.cc (operator==): Do the same in the definitions.
27198
271992015-10-02  Dodji Seketeli <dodji@redhat.com>
27200
27201	Add missing deep equality operator for pointer and reference types
27202	* include/abg-ir.h (pointer_type_def::operator==): Add an overload
27203	for pointer_type_def.
27204	(reference_type_def::operator==) Add an overload for
27205	reference_type_def.
27206	(operator==): Add an overload for pointer_type_def_sptr and
27207	reference_type_def_sptr.
27208	* src/abg-ir.cc (pointer_type_def::operator==): Make the overload
27209	for type_base& use the overload for decl_base&.  Add a new
27210	overload for pointer_type_def& and make is use the overload for
27211	decl_base& too.
27212	(operator==): Add free form overloads for pointer_type_def& and
27213	reference_type_def&.
27214	(reference_type_def::operator==): Add comments. Add an overload
27215	for reference_type_def&.
27216
272172015-10-02  Dodji Seketeli <dodji@redhat.com>
27218
27219	constify is_class_type()
27220	* include/abg-fwd.h (is_class_type): Take a pointer to const.
27221	* src/abg-ir.cc (is_class_type): Adjust.
27222
272232015-10-01  Ondrej Oprala <ooprala@redhat.com>
27224
27225	Bug 19027 - ABI asymmetry with enums over INT_MAX
27226	* src/abg-reader.cc (build_enum_type_decl): Use strtol
27227	instead of atoi to parse the values and check for overflow.
27228	* tests/data/Makefile.am: Add the new test material to the build
27229	system.
27230	* tests/data/test-read-dwarf/test17-pr19027.so: New test file.
27231	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
27232	* tests/test-read-dwarf.cc: Adjust to launch the new test.
27233
272342015-10-01  Dodji Seketeli <dodji@redhat.com>
27235
27236	Encourage people to use autoreconf -i
27237	* COMPILING: Mention autoreconf -i, rather than just autoreconf.
27238
272392015-09-23  Ondrej Oprala <ooprala@redhat.com>
27240
27241	Bug 17340 - Support pointers and references to functions
27242	* include/abg-comparison.h (compute_diff_for_distinct_kinds): Take the
27243	first two arguments of type const type_or_decl_base_sptr instead.
27244	* include/abg-ir.h (translation_unit::get_function_types): Declare new
27245	method.
27246	(function_types): Declare new typedef.
27247	* src/abg-comparison.cc (compute_diff_for_types): Take the first two
27248	arguments of type const type_or_decl_base_sptr instead of a const
27249	decl_base_sptr.
27250	(try_to_diff): Likewise.
27251	(try_to_diff<class_decl>): Likewise.
27252	(try_to_diff_distinct_kinds): Likewise.
27253	(compute_diff_for_distinct_kinds): Likewise. Also remove a variant
27254	accepting arguments of type const type_base_sptr.
27255	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Skip
27256	building a pointer if it points to the beginning of a vptr.
27257	(build_pointer_type_def): Declare utype_decl of type
27258	type_or_decl_base_sptr and adjust assignments to it accordingly.
27259	(build_function_type): New function definition.
27260	(build_function_decl): Call build_function_type instead of building
27261	an ftype manually.
27262	(build_ir_node_from_die): Amend case DW_TAG_subroutine_type with
27263	appropriate calls to build a function type.
27264	* src/abg-ir.cc (translation_unit::get_function_types): New method
27265	definition.
27266	({pointer,reference}_type_def::pointer_type_def): Expect that
27267	pointed_to might not have an accompanying declaration and set a type's
27268	name in this case as well.
27269	({pointer,reference}_type_def::get_qualified_name): Generate a
27270	qualified name even if the pointed-to type has no declaration.
27271	* src/abg-reader.cc (build_function_type): New function definition.
27272	(handle_element_node): Return a type_or_decl_base_sptr instead and
27273	try calling handle_function_type in addition to others.
27274	(handle_function_type): New function definition that calls
27275	build_function_type.
27276	(build_type): Try calling build_function_type as well.
27277	* src/abg-writer.cc (fn_shared_ptr_map): Declare new typedef.
27278	(write_context::{clear_referenced_fntypes_map,fntype_is_referenced,
27279	record_fntype_as_referenced}): New member functions.
27280	(write_translation_unit): Call the new clear_referenced_fntypes_map.
27281	* tests/data/Makefile.am: Add the new test material to the build
27282	system.
27283	(write_translation_unit): Separately write function types that have
27284	been recorded to emit by write_{pointer,reference}_type_def.
27285	(write_{pointer,reference}_type_def): Record the type pointed to as
27286	a type to be emitted if type == function type.
27287	(write_function_type): Write the details of a function type in the
27288	abixml format and unmark the type.
27289	* tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: New
27290	test reference report.
27291	* tests/data/test-diff-dwarf/test32-fnptr-changes-v{0,1}.cc: New test
27292	source files.
27293	* tests/data/test-diff-dwarf/test32-fnptr-changes-v{0,1}.o: New binary
27294	test inputs.
27295	* tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: New
27296	test reference report.
27297	* tests/data/test-diff-dwarf/test33-fnref-changes-v{0,1}.cc: New test
27298	source files.
27299	* tests/data/test-diff-dwarf/test33-fnref-changes-v{0,1}.o: New binary
27300	test inputs.
27301	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
27302	Adjust.
27303	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
27304	Likewise.
27305	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
27306	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
27307	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
27308	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
27309	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
27310	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
27311	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
27312	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
27313	* tests/data/test-read-write/test27.xml: New test source file.
27314	* tests/test-diff-dwarf.cc: Adjust to launch the new tests.
27315	* tests/test-read-write.cc: Likewise.
27316
273172015-09-09  Ondrej Oprala <ooprala@redhat.com>
27318
27319	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.
27320	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Return
27321	a type_or_decl_base_sptr instead.
27322	(get_scope_for_die): Likewise.
27323	(build_class_type_and_add_to_ir): Typecast the assignment from
27324	build_ir_node_from_die properly.
27325	(build_{qualified,reference,array,typedef}_type): Likewise.
27326	(build_pointer_type_def): Likewise.
27327	(build_{var,function}_decl): Likewise.
27328
273292015-09-29  Ondrej Oprala <ooprala@redhat.com>
27330
27331	Move a constructor declaration
27332	* include/abg-ir.h (decl_base): Change the decl_base() declaration's
27333	visibility to private.
27334
273352015-09-24  Dodji Seketeli <dodji@redhat.com>
27336
27337	Bug 18535 - abidiff reports false positive ABI difference for libstdc++
27338	*non-static* data member; a static data member only is not enough to
27339	make the class declaration become a definition.
27340	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): The
27341	presence of a data member shouldn't make a declaration-only class
27342	loose its declaration-only-ness; the presence of a enon-static*
27343	data member should.
27344	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
27345	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
27346	* tests/data/test-diff-filter/test31-pr18535-libstdc++-4.8.3.so:
27347	New binary test input.
27348	* tests/data/test-diff-filter/test31-pr18535-libstdc++-4.9.2.so:
27349	Likewise.
27350	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
27351	New test reference output.
27352	* tests/data/Makefile.am: Add the new test material to the build
27353	system.
27354	* tests/test-diff-filter.cc (in_out_specs): Add the new test
27355	inputs to the set of inputs to consider.
27356
273572015-09-21  Dodji Seketeli <dodji@redhat.com>
27358
27359	Remove duplicated runtestreaddwarf test
27360	* tests/Makefile.am: Remove one copy of the runtestreaddwarf test
27361	that is present twice.
27362
273632015-09-21  Dodji Seketeli <dodji@redhat.com>
27364
27365	Add a missing function declaration
27366	* include/abg-tools-utils.h (dir_name): Add missing function
27367	declaration.
27368
273692015-09-21  Dodji Seketeli <dodji@redhat.com>
27370
27371	Remove some dead code in abilint
27372	* tools/abilint.cc (options::bidiff): Remove.
27373	(options::options): Adjust.
27374	(display_usage): Remove usage string for --bidiff
27375	(parse_command_line): Remove parsing of un-implemented option
27376	--bidiff.
27377
273782015-09-21  Dodji Seketeli <dodji@redhat.com>
27379
27380	Add a new --abidiff option to abidw
27381	* tools/abidw.cc (options::abidiff): New data member.
27382	(options::options): Initialize it.
27383	(display_usage): Add a usage string for the new --abidiff option.
27384	(parse_command): Parse the new --abidiff options.
27385	(main): Save the abi of the input elf in a temporary abixml file;
27386	read it back and compare both.
27387
273882015-09-21  Dodji Seketeli <dodji@redhat.com>
27389
27390	Misc style fixes
27391	* src/abg-hash.cc (class_decl::hash::operator()): Use a temporary
27392	variable to ease debugging.
27393	* src/abg-reader.cc (read_context::is_wip_type): Make this
27394	function const.
27395	* src/abg-writer.cc (write_context): Move data members at the top.
27396
273972015-09-21  Dodji Seketeli <dodji@redhat.com>
27398
27399	Speed up type canonicalization by avoiding recursive hashing
27400	* include/abg-ir.h (canonical_types_map_type): Adjust this typedef
27401	to make it point to an unordered_map which the key is now a string
27402	and the value is a vector of types.
27403	(type_or_decl_base::{get_cached_hash_value, set_cached_hash_value,
27404	cached_hash}): Remove these member functions and type.
27405	(struct type_base::cached_hash): Remove.
27406	* src/abg-ir.cc (struct type_or_decl_base::priv::hash_): Remove.
27407	(type_or_decl_base::priv::priv): Adjust.
27408	(type_or_decl_base::{g,s}et_cached_hash_value): Remove.
27409	(type_base::get_canonical_type_for): For declaration-only classes,
27410	look at their definition for the canonical_type.  Do not use
27411	recursive type hashing anymore.  Rather, use the pretty
27412	representation string, and hash that.
27413	(class_decl::base_spec::get_hash): Do away with hash value caching
27414	here.
27415	(class_decl::operator==): For decl-only classes, look at their
27416	definitions for canonical types.
27417	(hash_type_or_decl): Adjust comment.  Use the canonical type
27418	pointer value for type hash.  That's the fast path.  Otherwise, if
27419	not available, fall back to a slow path which is the recursive
27420	type hash we were using before.
27421	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Schedule all
27422	classes and typedef to classes for late canonicalization.
27423	* src/abg-hash.cc (type_base::dynamic_hash::operator()): There is
27424	no hash value cashing anymore.
27425	(type_base::cached_hash::operator()): Remove.
27426	* src/abg-reader.cc (read_context::get_type): Slight style
27427	adjustment.
27428	(read_translation_unit_from_file)
27429	(read_translation_unit_from_buffer): Do not forget to canonicalize
27430	types when reading just one translation unit.
27431	(build_type_tparameter, build_template_tparameter): Canonicalize
27432	the type.
27433	* src/abg-writer.cc (struct type_hasher): New hasher type.
27434	(type_ptr_map): Use a deep pointer comparison equal operator
27435	functor, and canonical types as type hash values.
27436	(write_class_decl): Do not write size and alignment on decl-only
27437	classes.  Do not record decl-only classes as being emitted.  Their
27438	definition must be emitted before.
27439	* tests/test-read-write.cc (main): Do not do abi testing on
27440	translation units (as opposed to doing it on abi corpora) as that
27441	code is not wet yet.  We need to know how to diff namespaces.
27442	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
27443	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
27444	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
27445	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
27446	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
27447	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
27448	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
27449	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
27450
274512015-09-21  Dodji Seketeli <dodji@redhat.com>
27452
27453	Update qualified name of a decl when it's added to its context
27454	* include/abg-ir.h (decl_base::priv_): Make this be public, so
27455	that the qualified name updater function can access it.
27456	(class class_decl): Make set_member_is_static() a friend function.
27457	* src/abg-ir.cc (class ::qualified_name_setter): New tree walking
27458	type.
27459	(decl_base::get_qualified_parent_name): Do not do any computation
27460	here.  Just return the pre-computed qualified parent name string.
27461	(decl_base::get_qualified_name): Likewise, for qualified name.
27462	(scope_decl::{add,insert}_member_decl): Update the qualified name of the
27463	newly added member.  Set the scope of the member here.  It's not
27464	going to be set elsewhere, from now on.
27465	(add_decl_to_scope): Do not set the scope here anymore.  Just call
27466	scope_decl::add_member_decl and let it do the work.
27467	(insert_decl_into_scope): Likewise, just call
27468	scope_decl::insert_member_decl and let it do the work.
27469	(class_decl::{add_data_member, add_member_function}): Do not
27470	handle details of context setting at this point.  Let
27471	scope_decl::add_member_decl do it.  Adjust the properties of the
27472	context relation afterwards.  In add_data_member, when a data
27473	member changes its static-ness, move the data member into the
27474	class_decl::priv::non_static_data_members_ or out of it, as
27475	necessary.
27476	(class_decl::insert_member_decl): By default, a data member is
27477	considered static.
27478	(set_member_is_static): Move this definition after the definitions
27479	of class_decl, so that this function can see those.  Also, when a
27480	data member changes its static-ness, move the data member into the
27481	class_decl::priv::non_static_data_members_ or out of it, as
27482	necessary.
27483	(class_decl::add_member_function_template):  As we the
27484	underlying function template decl to the context, do not do any
27485	scope adding for it here.
27486	(::qualified_name_setter::{do_update, visit_begin}): Define new
27487	member functions.
27488	(update_qualified_name): Define new static function.
27489	* src/abg-reader.cc (build_class_decl): Make build_function_decl,
27490	build_var_decl, build_function_tdecl and build_class_tdecl
27491	automatically add the created decl to their context, and then
27492	update the properties of the resulting member decl later, just
27493	like what we do in the DWARF reader.
27494
274952015-09-21  Dodji Seketeli <dodji@redhat.com>
27496
27497	Add new test functions
27498	* include/abg-fwd.h (is_function_decl, is_decl, is_namespace)
27499	(is_scope_decl): Declare new function overloads.
27500	* src/abg-ir.cc (is_function_decl, is_decl, is_namespace)
27501	(is_scope_decl): Define them.
27502
275032015-09-21  Dodji Seketeli <dodji@redhat.com>
27504
27505	Constify some diff-utils functor operators
27506	* include/abg-diff-utils.h (deep_ptr_eq_functor::operator()): Make
27507	the overloads be const.
27508
275092015-09-16  Dodji Seketeli <dodji@redhat.com>
27510
27511	Support source_location_not_in and source_location_not_regexp suppressions
27512	* include/abg-ini.h (enum property_value::value_kind): Add a
27513	LIST_PROPERTY_VALUE kind.
27514	(class {list_property_value, list_property}): Declare new types.
27515	(is_list_property, is_list_property_value): Declare new functions.
27516	* src/abg-ini.cc (struct list_property_value::priv): Define new
27517	type.
27518	(list_property_value::{list_property_value, get_content,
27519	set_content, as_string}): Define new member functions.
27520	(is_list_property_value): Define new function.
27521	(struct list_property::priv): Define new type.
27522	(list_property::{list_property, get_value, set_value,
27523	handle_escape}): Define new member functions.
27524	(is_list_property): Define new function.
27525	(read_context::buf_): New data member.
27526	(read_context::{peek, get, put_back, good, eof, read_string,
27527	read_list_property_value}): New member functions.
27528	(read_context::read_next_char): Use the new read_context::{get,
27529	good, eof} member function, rather than using the input stream
27530	directly.
27531	(read_context::{skip_white_spaces, skip_comments,
27532	skip_white_spaces_or_comments, read_property_name,
27533	read_function_name, read_function_argument,
27534	read_function_call_expr, read_property_value,
27535	read_tuple_property_value, read_section_name, read_section}):
27536	Adjust to use the new member functions of read_context rather than
27537	using the input stream directly.
27538	(read_context::read_string_property_value): Likewise.  Use the new
27539	read_context::read_string() method.
27540	(read_context::{read, write}_property): Support reading list_property.
27541	* include/abg-comparison.h
27542	(type_suppression::{get_source_locations_to_keep,
27543	set_source_locations_to_keep,
27544	set_source_location_to_keep_regex_str,
27545	get_source_location_to_keep_regex_str}): Add new member functions.
27546	* src/abg-comparison.cc
27547	(type_suppression::priv::{source_location_to_keep_,
27548	source_location_to_keep_regex_str_,
27549	source_location_to_keep_regex_}): Add new data members.
27550	(type_suppression::priv::{g,s}et_source_location_to_keep_regex):
27551	Define new member functions.
27552	(type_suppression::{g,s}et_source_locations_to_keep): Define new
27553	member functions.
27554	(type_suppression::{g,s}et_source_location_to_keep_regex_str):
27555	Likewise.
27556	(type_suppression::suppresses_type): Support
27557	"source_location_not_regexp" and "source_location_not_in"
27558	properties of suppression specifications.
27559	(read_type_suppression): Likewise. Also adjust to the fact that
27560	ta tuple property value that is a list of strings is not a list
27561	property value.
27562	* doc/manuals/libabigail-concepts.rst: Add documentation for
27563	source_location_not_in and source_location_not_regexp.
27564	* tests/data/test-diff-suppr/libtest26-loc-suppr-v{0,1}.so: New
27565	binary test inputs.
27566	* tests/data/test-diff-suppr/test26-loc-suppr-{0,1,2}.suppr: New
27567	suppression specification test inputs.
27568	* tests/data/test-diff-suppr/test26-loc-suppr-report-{0,1,2,3}.txt:
27569	New test reference reports.
27570	* tests/data/test-diff-suppr/test26-loc-suppr-v{0,1}.cc: Source
27571	code of the test binary input above.
27572	* tests/data/test-diff-suppr/test26-loc-suppr.h: Likewise.
27573	* tests/data/Makefile.am: Add the new test material to source
27574	distribution.
27575	* tests/test-diff-suppr.cc (in_out_specs): Add the new test inputs above.
27576
275772015-09-16  Dodji Seketeli <dodji@redhat.com>
27578
27579	Pass simple property data by reference
27580	* include/abg-ini.h (simple_property::{simple_property,
27581	set_value}): Pass the value shared pointer by reference.
27582	* src/abg-ini.cc (simple_property::{simple_property, set_value):
27583	Pass the value shared pointer by reference.
27584
275852015-09-15  Dodji Seketeli <dodji@redhat.com>
27586
27587	Make string_ends_with() allow long suffixes
27588	* src/abg-tools-utils.cc (string_ends_with): Allow suffixes of the
27589	same size as the input string.
27590
275912015-09-13  Dodji Seketeli <dodji@redhat.com>
27592
27593	Add missing 'break' keyword in e_machine_to_string()
27594	* src/abg-dwarf-reader.cc (e_machine_to_string): Add missing
27595	'break' keywords in switch/case statement.
27596
275972015-09-09  Dodji Seketeli <dodji@redhat.com>
27598
27599	Fix compilation warnings in abipkgdiff.cc
27600	* tools/abipkgdiff.cc (package::erase_extraction_directory)
27601	(extract_rpm, extract_deb, extract_tar)
27602	(erase_created_temporary_directories_parent): Check the return
27603	value of the system() function.
27604	(extract_package): Add necessary white space.
27605
276062015-09-09  Dodji Seketeli <dodji@redhat.com>
27607
27608	Fix spurious errors in the install-man-and-info-doc target
27609	* doc/manuals/Makefile.am (install-man-and-info-doc): Don't check
27610	for abidiff.info, that thing doesn't exist.  Rather, check for
27611	abigail.info.  Use gzip -f in case the zipped file exists already.
27612
276132015-09-09  Dodji Seketeli <dodji@redhat.com>
27614
27615	Compare qualified name in decl_base comparison operator
27616	* src/abg-ir.cc (equals): In the overload for decl_base, compare
27617	qualified names, not just names.
27618	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
27619
276202015-09-08  Dodji Seketeli <dodji@redhat.com>
27621
27622	Fix a stupid typo in function sorting code
27623	* src/abg-comparison.cc (function_comp::operator()): Fix a typo
27624	preventing the proper sorting of function name when their
27625	declarator names are equal.  Oops.
27626	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust.
27627
276282015-09-08  Dodji Seketeli <dodji@redhat.com>
27629
27630	Update manual for abipkgdiff
27631	* doc/manuals/abipkgdiff.rst: Say we support tarballs and plain
27632	directories.
27633
276342015-09-07  Dodji Seketeli <dodji@redhat.com>
27635
27636	Adjust {s,g}et_show_stats() to use a reference
27637	* include/abg-dwarf-reader.h ({s,g}et_show_stats): Use a reference
27638	to the reader.
27639	* tools/abidiff.cc (main): Adjust.
27640	* tools/abidw.cc (main): Likewise.
27641
276422015-09-07  Dodji Seketeli <dodji@redhat.com>
27643
27644	Use cache type hash values only after type canonicalization is done
27645	*when* we request that hash value.  If we are computing the hash value
27646	of struct list itself, then the temporary value of "struct list" is
27647	zero.  But then once we are done computing the hash value of "struct
27648	list", that value becomes non-zero.
27649	Hence, the hash value of a type depends on when that value is
27650	computed.
27651	But then if we want to cache that hash value and re-use it later,
27652	which value should we cache?  Definitely not the zero value!
27653	So in other words, we can use (and thus cache) the hash value of a
27654	given type T only after the hash values of all types which use T have
27655	been computed.
27656	To satisfy that condition, we decide to use the (cached) hash value of
27657	each type only after we've computed all the hash values of all types
27658	of the system.
27659	So, during type canonicalization, when a type T is canonicalized, this
27660	patch stores the hash value of T.  But then it's only when all types
27661	are canonicalized that the hashing code is allowed to re-use the
27662	cached value of types.
27663	This fixes the issues of spurious type differences introduced when the
27664	same type was read either from DWARF or from abixml.  Those
27665	differences where introduced by differences in the order of hashing
27666	types which sub-types refer to themselves. The patch also updates
27667	regression tests accordingly.
27668	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Before we
27669	read debug info and build the IR, set a flag in the environment
27670	saying that type canonicalization isn't finished yet.  But then,
27671	after type canonicalization is done, flip that flag to say that
27672	type canonicalization is done.
27673	* src/abg-reader.cc (read_corpus_from_input): Likewise.
27674	* src/abg-ir.cc (type_base::get_canonical_type_for): Once a type
27675	has been canonicalized, cache its hash value.
27676	* src/abg-hash.cc (type_base::dynamic_hash::operator()): If type
27677	canonicalization has been done and if the type has a cached value,
27678	use that one.
27679	* tests/data/test-read-dwarf/test2.so.abi: Adjust.
27680	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
27681	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
27682	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
27683	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
27684	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
27685	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
27686	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
27687
276882015-09-07  Dodji Seketeli <dodji@redhat.com>
27689
27690	Introduce the concept of environment
27691	* include/abg-ir.h: Adjust note about memory management.
27692	(class environment): Declare new class.
27693	(translation_unit::translation_unit): Take an environment in
27694	parameter.
27695	(translation_unit::{g,s}et_environment): Declare new member
27696	functions.
27697	(type_or_decl_base::{g,s}et_environment): Likewise.
27698	(type_or_decl_base::{get_cached_hash_value,
27699	set_cached_hash_value}): Change the name of
27700	decl_base::peek_hash_value() and decl_base::set_hash() here into
27701	these and move them here.
27702	(type_or_decl_base::hashing_started): Move
27703	decl_base::hashing_started() here.
27704	({g,s}et_environment_for_artifact): Declare new functions.
27705	(class decl_base): Move member functions hashing_started(),
27706	peek_hash_value() and set_hash() on to the type_or_decl_base base
27707	class.
27708	(scope_decl::scope_decl): Initialize the virtual member
27709	type_or_decl_base().
27710	(type_decl::{get_void_type_decl,
27711	get_variadic_parameter_type_decl}): Remove these static member
27712	functions.  They are now non-static member functions of the new
27713	environment type.
27714	* src/abg-ir.cc (class environment_setter): New internal class.
27715	(get_canonical_types_map): Remove.  This now becomes a member
27716	function of the environment type.
27717	(class usage_watchdog): Remove.
27718	(usage_watchdog_{s,w}ptr): Remove these typedefs.
27719	(get_usage_watchdog_wptr, ref_usage_watchdog)
27720	(maybe_cleanup_type_system_data): Remove these functions.
27721	(translation_unit::priv::usage_watchdog_): Remove data member.
27722	(translation_unit::priv::env_): New data member.
27723	(translation_unit::priv::priv): Take an environment and initialize
27724	the new env_ data member.  Do not initialize the removed
27725	usage_watchdog_.
27726	(translation_unit::translation_unit): Take an environment
27727	parameter.
27728	(translation_unit::get_global_scope): Set the environment of a new
27729	global scope.
27730	(translation_unit::{g,s}et_environment): New accessors.
27731	(translation_unit::bind_function_type_life_time): Set the
27732	environment of the function type.
27733	(struct environment::priv): New class.
27734	(environment::{environment, ~environment, get_canonical_types_map,
27735	get_variadic_parameter_type_decl, canonicalization_is_done}): New
27736	member functions.
27737	(struct type_or_decl_base::priv): New class.
27738	(type_or_decl_base::{type_or_decl_base, hashing_started,
27739	get_cached_hash_value, set_cached_hash_value, set_environment,
27740	get_environment, traverse}): New member functions.
27741	({s,g}get_environment_for_artifact): New functions.
27742	(decl_base::priv::{hash_, hashing_started}): Remove.
27743	(decl_base::priv::priv): Adjust.
27744	(decl_base::decl_base): In the copy constructor, initialize the
27745	virtual base type_or_decl_base.  Do not initialize hash_ and
27746	hashing_started data member that got removed.
27747	(decl_base::{hashing_started, peek_hash_value, set_hash}): Remove
27748	member functions.
27749	(strip_typedef): Set the environment of the new type which has its
27750	typedefs stripped off.  Adjust the call to type_or_void().
27751	(scope_decl::{add, insert}_member_decl): Set the environment of
27752	the new member decl to the environment of its scope.
27753	(synthesize_type_from_translation_unit)
27754	(synthesize_function_type_from_translation_unit): Set the
27755	environment for the newly synthesized type. Adjust calls to
27756	type_or_void().
27757	(type_or_void): Take an environment in parameter.  Get the void
27758	type from the environment.
27759	(get_canonical_types_map): Remove.
27760	(type_base::get_canonical_type_for): Get the canonical types map
27761	from the environment, not from a global variable.
27762	(type_decl::{get_void_type_decl,
27763	get_variadic_parameter_type_decl}): Remove.
27764	(pointer_type_def::pointer_type_def): Adjust call to type_or_void.
27765	(reference_type_def::reference_type_def): Likewise.
27766	(function_decl::parameter::get_pretty_representation): Get the
27767	variadic parameter type decl from the environment.
27768	(class_decl::priv::classes_being_compared_): Remove static data
27769	member.
27770	(class_decl::priv::{mark_as_being_compared,
27771	unmark_as_being_compared, comparison_started): Use the "classes
27772	being compared" map from the environment.
27773	(class_decl::base_spec::get_hash): Adjust.
27774	(keep_type_alive): Get the alive types array from the environment)
27775	not from a global variable anymore.
27776	(get_next_string): Put the counter in thread-local storage.
27777	* src/abg-hash.cc (scope_decl::hash::operator())
27778	(function_decl::hash::operator()): Do not handle caching (here).
27779	* include/abg-corpus.h (corpus::{g,s}et_environment): Declare new
27780	accessors.
27781	* src/abg-corpus.cc (corpus::priv::env): New data member.
27782	(corpus::priv::priv): Initialize it.
27783	(corpus::corpus):  Take an environment in parameter.
27784	(corpus::{g,s}et_environment): Define new member functions
27785	(corpus::add): Set the environment of the newly added translation
27786	unit, if it's not set already set.  In any case, assert that the
27787	translation unit must use the same environment as the corpus.
27788	* include/abg-dwarf-reader.h (create_read_context)
27789	(read_corpus_from_elf): Take an environment parameter.
27790	({s,g}et_debug_info_root_path, {s,g}et_environment): Declare new
27791	functions.
27792	* src/abg-dwarf-reader.cc (read_context::{env_,
27793	offline_callbacks_}): New data members.
27794	(read_context::read_context): Initialize them.
27795	(read_context::clear_per_translation_unit_data): Do not touch the
27796	void type declaration, it doesn't belong to the translation unit.
27797	(read_context::{env, offline_callbacks}): New accessors.
27798	(read_context::{create_default_dwfl}): New member function.
27799	(read_context::dwfl_handle): Add a setter overload.
27800	({s,g}et_debug_info_root_path): Define new accessors.
27801	(create_default_dwfl, create_dwfl_sptr, create_default_dwfl_sptr):
27802	Remove these.
27803	(build_translation_unit_and_add_to_ir): Adjust to pass the
27804	environment to the newly created translation unit.
27805	(build_function_decl): Adjust to pass the environment to the
27806	created function and parameter types.  Get variadic parameter type
27807	node from the current environment, not from a global variable.
27808	And do not try to canonicalize function types here.
27809	(read_debug_info_into_corpus): Set the environment of the newly
27810	created corpus.
27811	(build_ir_node_for_void_type): Get the void type node from the
27812	current environment, rather than from a global variable.
27813	(create_read_context): Take the environment in parameter.
27814	Create the default dwarf front end library handle using the new
27815	member function of the read context.  Set the current environment
27816	used by the reader.
27817	(read_corpus_from_elf): Take an environment in
27818	parameter. Overhaul.  This is now simpler.
27819	(has_alt_debug_info): Adjust the call to create_read_context() to
27820	make it pass an empty environment.
27821	* include/abg-fwd.h (class environment): Forward declare.
27822	* include/abg-reader.h (read_translation_unit_from_file)
27823	(read_translation_unit_from_buffer)
27824	(read_translation_unit_from_istream)
27825	(read_corpus_from_native_xml): Take an environment in parameter.
27826	* src/abg-reader.cc (read_context::m_env): New data member.
27827	(read_context::read_context): Initialize it.
27828	(read_context::{get_environment, set_environment}): New data
27829	member.
27830	(read_translation_unit): Set environment of the new translation
27831	unit.
27832	(read_corpus_from_input): Set the environment of the new corpus.
27833	(read_translation_unit_from_file)
27834	(read_translation_unit_from_buffer)
27835	(read_translation_unit_from_istream, read_corpus_from_native_xml):
27836	Take an environment in parameter.
27837	(build_function_parameter): Get variadic parameter type from the environment.
27838	* src/abg-comparison.cc (compute_diff): Add asserts in all the
27839	overloads to ensure that the artifact being compared come from the
27840	same environment.
27841	* tests/print-diff-tree.cc (main): Create an env for the ABI
27842	artifacts to use.
27843	* tests/test-abidiff.cc (main): Likewise.
27844	* tests/test-diff-dwarf.cc (main): Likewise.
27845	* tests/test-ir-walker.cc (main): Likewise.
27846	* tests/test-read-dwarf.cc (main): Likewise.
27847	* tests/test-read-write.cc (main): Likewise.
27848	* tools/abicompat.cc (main): Likewise.
27849	* tools/abidiff.cc (main): Likewise.
27850	* tools/abidw.cc (main): Likewise.
27851	* tools/abilint.cc (main): Likewise.
27852	* tools/abipkgdiff.cc (main): Likewise.
27853
278542015-09-07  Dodji Seketeli <dodji@redhat.com>
27855
27856	Fix redundant const qualifier stripping
27857	* include/abg-ir.h (operator&, operator~): Add overloaded bitwise
27858	operators for qualified_type_def::CV.
27859	* src/abg-ir.cc (operator&, operator~): Define them.
27860	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Fix
27861	comment.  If there are multiple qualifiers, only strip the const
27862	one.
27863	(build_ir_node_from_die): Once we've built a qualified type, if
27864	the 'const' qualifier is stripped, then add the new (stripped)
27865	type to the set of new types.
27866
278672015-09-05  Dodji Seketeli <dodji@redhat.com>
27868
27869	Fix wording in README
27870	* README: Fix wording.
27871
278722015-09-02  Dodji Seketeli <dodji@redhat.com>
27873
27874	Misc style fixes
27875	* src/abg-hash.cc (class_decl::hash::operator()): Remove some dead
27876	code.
27877	* src/abg-ir.cc (equals): In the overload for class_decl,
27878	re-indent.
27879
278802015-09-02  Dodji Seketeli <dodji@redhat.com>
27881
27882	Re-arrange some regression tests order
27883	* tests/Makefile.am: Run runtestreaddwarf and
27884	runtestcanonicalizetypes at the beginning.
27885
278862015-09-02  Dodji Seketeli <dodji@redhat.com>
27887
27888	Bug 18904 - Fix support for C++ rvalue references
27889	* src/abg-comparison.cc (reference_diff::has_changes): Just
27890	compare the references, rather than assuming that the change can
27891	only be on underlying types.
27892	(reference_diff::report): Describe lvalue/rvalue changes for
27893	references.
27894	* src/abg-ir.cc (reference_type_def::reference_type_def): Properly
27895	set the name for an rvalue reference.
27896	(equals): For references, compare lvalue-ness too.
27897	(reference_type_def::get_qualified_name): Properly set rvalue
27898	reference names.
27899	* tests/data/test-diff-filter/test30-pr18904-rvalueref-liba.so:
27900	New test input.
27901	* tests/data/test-diff-filter/test30-pr18904-rvalueref-libb.so:
27902	New test input.
27903	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
27904	New test reference output.
27905	* tests/data/Makefile.am: Add the new files to source
27906	distribution.
27907	* tests/test-diff-filter.cc (in_out_specs): Run the new tests.
27908
279092015-09-02  Dodji Seketeli <dodji@redhat.com>
27910
27911	More type degradation fixes (from DWARF to abixml)
27912	* include/abg-fwd.h (get_type_scope): Declare new function.
27913	* src/abg-hash.cc (var_decl::hash::operator()): Do not cache the
27914	hash because that can alter the hash computing of a larger type
27915	which embeds a var decl as a member declaration.  This is
27916	especially true if the var decl indirectly references the larger
27917	type.  The only way to cache the value of a var decl would be to
27918	wait after all canonical types have been computed.  We'd then seal
27919	all types.  After that sealing happens, we can cache var decls
27920	starting from the top-level ones.
27921	(function_decl::hash::operator()): Likewise.
27922	* src/abg-ir.cc (get_type_scope): Define new functions.
27923	* src/abg-reader.cc (read_is_declaration_only): Declare this
27924	function earlier.
27925	(typedef const_types_map_it): Adjust this to make it point to a
27926	map of string and vector of types, as opposed to a map to string
27927	and type as it was before.
27928	(typedef types_map_it): New typedef.
27929	(read_context::map_id_and_node): Map a type id to the last
27930	xmlNodePtr that represent a *declaration*.  That gives more leeway
27931	to the declaration resolution code to choose the right definition
27932	later.  Otherwise, there are cases where the wrong definition.  By
27933	wrong definition, I mean a definition that is different from the
27934	one chosen by the DWARF reading code, for a given declaration.
27935	Basically for a given ABI corpus, a type declaration resolve to
27936	the first definition seen in the corpus.
27937	(read_context::get_all_type_decls): Define new member function.
27938	(read_context::types_equal): Use qualified names only if both
27939	types have a scope.
27940	(read_context::key_type_decl): Now a given ID is associated to
27941	*all* the declarations and definition that have that ID.
27942	(read_translation_unit_from_input): Make sure the current corpus
27943	node points to the right node.
27944	(build_class_decl): Resolve class declarations to the first
27945	definition seen in the corpus.  Key a type decl before reading its
27946	members as a reading a member can request the current decl.  No
27947	need to try and canonicalize a member type, as build_class_decl()
27948	does that already.
27949	* tests/data/test-read-dwarf/test16-pr18904.so: New test binary
27950	input.
27951	* tests/data/test-read-dwarf/test16-pr18904.so.abi: New test
27952	output reference.
27953	* tests/test-read-dwarf.cc: Run the test above.
27954	* tests/data/Makefile.am: Add the new test input to source
27955	distribution.
27956	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
27957	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
27958	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
27959	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
27960
279612015-08-30  Dodji Seketeli <dodji@redhat.com>
27962
27963	Bug 18892 - type degradation from DWARF to abixml on libtsan.so
27964	* src/abg-reader.cc (read_context::maybe_canonicalize_type): Late
27965	canonicalize enum types.
27966	(build_enum_type_decl): Read the linkage name of the enum type.
27967	* src/abg-writer.cc (write_enum_type_decl): Emit the linkage name
27968	of the enum type.
27969	* tests/data/test-read-dwarf/test15-pr18892.so: New binary test
27970	input.
27971	* tests/data/test-read-dwarf/test15-pr18892.so.abi: New test
27972	output reference.
27973	* tests/data/Makefile.am: Add the new test inputs above to source
27974	distribution.
27975	* tests/test-read-dwarf.cc (in_out_specs): Run the two tests above.
27976
279772015-08-30  Dodji Seketeli <dodji@redhat.com>
27978
27979	Bug 18893 - type degradation from dwarf to abixml on libGLU.so
27980	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
27981	consider that virtual member functions disqualify a class from
27982	being declaration-only.
27983	* src/abg-hash.cc (var_decl::hash::operator()): Do not cache the
27984	result of hashing before we are done building the type of the
27985	var_decl.
27986	(function_decl::hash::operator()): Likewise, do not cache the
27987	result of hashing before we are done building the type of the
27988	function_decl.
27989	* src/abg-reader.cc (build_class_decl): Build the link between a
27990	class declaration and its definition.  If there are several
27991	definitions of a class in the corpus, keep just one.
27992	* src/abg-writer.cc (write_class_is_declaration_only): Emit the
27993	link between a class declaration and its definition.
27994	(write_class_decl): Emit a class declaration even if it has a
27995	definition.  The definition is going to be emitted
27996	separately.
27997	* tests/data/test-read-dwarf/test14-pr18893.so: New binary test
27998	input.
27999	* tests/data/test-read-dwarf/test14-pr18893.so.abi: New test
28000	reference output.
28001	* tests/data/Makefile.am: Add the new test input files to source
28002	distribution.
28003	* tests/test-read-dwarf.cc (in_out_specs): Run the new tests.
28004	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
28005	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
28006	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
28007	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
28008	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
28009	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
28010
280112015-08-30  Dodji Seketeli <dodji@redhat.com>
28012
28013	Use common canonicalization oracle when reading class type from dwarf
28014	* src/abg-dwarf-reader.cc (build_ir_node_from_die):
28015	(maybe_canonicalize_type): Move the specific logic that was in
28016	build_ir_node_from_die (for class types) here.
28017
280182015-08-30  Dodji Seketeli <dodji@redhat.com>
28019
28020	Fix crash in file type guessing
28021	* src/abg-tools-utils.cc (string_ends_with): Handle the case where
28022	the string suffix is longer than the string itself.
28023
280242015-08-29  Dodji Seketeli <dodji@redhat.com>
28025
28026	Bug 18894 - Fix representation of enumerators in abixml format
28027	* include/abg-ir.h (enum_type_decl::enumerator::get_value()):
28028	Change the type of this from size_t to ssize_t.
28029	* src/abg-ir.cc (enum_type_decl::enumerator::get_value): Do the
28030	same on the definition side.
28031	(non_canonicalized_subtype_detector::visit_begin): If a type
28032	refers to itself, late canonicalize it to have a similar hashing
28033	result as what the abixml reader does.
28034	* src/abg-reader.cc (build_enum_type_decl): Use ssize_t to read
28035	the value of enumerators.
28036	* tests/data/test-read-dwarf/test13-pr18894.so.abi: New test input.
28037	* tests/data/Makefile.am: Add the new test inputs above to source
28038	distribution.
28039	* tests/test-read-dwarf.cc (in_out_specs): Add new test inputs.
28040	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
28041	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
28042	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
28043	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
28044
280452015-08-29  Dodji Seketeli <dodji@redhat.com>
28046
28047	Detect vtable changes from member function changes
28048	* include/abg-ir.h (class_decl::{has_virtual_base, has_vtable}):
28049	Declare new member functions.
28050	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): New overload
28051	for function_decl_diff.
28052	(has_virtual_mem_fn_change): In the overload for diff*, support
28053	virtual member function changes detection for function_decl_diff*.
28054	* src/abg-comparison.cc (function_decl_diff::report): Detect and
28055	report changes to a vtable by looking a changes that can happen to
28056	a given member function.
28057	(corpus_diff::report): Detect and report changes to vtables by
28058	looking at changes change to member functions.
28059	* tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt:
28060	New text input.
28061	* tests/data/test-diff-dwarf/test29-vtable-changes-v{0,1}.cc: Source
28062	code of new test input binaries.
28063	* tests/data/test-diff-dwarf/test29-vtable-changes-v{0,1}.o: New
28064	test input binaries.
28065	* tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt:
28066	New text input.
28067	* tests/data/test-diff-dwarf/test30-vtable-changes-v{0,1}.cc: New
28068	test input.
28069	* tests/data/test-diff-dwarf/test30-vtable-changes-v{0,1}.o: New
28070	test input binaries.
28071	* tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt:
28072	New test input.
28073	* tests/data/test-diff-dwarf/test31-vtable-changes-v{0,1}.cc:
28074	Source code of new test input binary.
28075	* tests/data/test-diff-dwarf/test31-vtable-changes-v{0,1}.o: New
28076	test input binary.
28077	* tests/data/Makefile.am: Add the new test input files above to
28078	source distribution.
28079	* tests/test-diff-dwarf.cc (in_out_specs): Consume the new test
28080	inputs above.
28081
280822015-08-29  Dodji Seketeli <dodji@redhat.com>
28083
28084	Do not hash or compare virtual member functions as par of classes
28085	* src/abg-ir.cc (equals): When comparing two classes, do not
28086	compare their virtual member functions.
28087	* src/abg-hash.cc (class_decl::hash::operator()): Do not hash
28088	virtual member functions when hashing a class.
28089	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
28090
280912015-08-29  Dodji Seketeli <dodji@redhat.com>
28092
28093	Misc style fixes
28094	* src/abg-ir.cc (qualified_type_def::get_qualified_name): Fix
28095	typos in comments.
28096	(class_decl::member_class_template::operator==): Add comments.
28097	(operator==): Add comment for the overload of
28098	class_decl::member_class_template_sptr.
28099	(function_tdecl::operator==): Add comments.
28100
281012015-08-29  Dodji Seketeli <dodji@redhat.com>
28102
28103	Adjust many reference output for the non-regression test suite
28104	* tests/data/test-abidiff/test-enum0-report.txt: Adjust.
28105	* tests/data/test-abidiff/test-enum1-report.txt: Adjust.
28106	* tests/data/test-abidiff/test-qual-type0-report.txt: Adjust.
28107	* tests/data/test-abidiff/test-struct0-report.txt: Adjust.
28108	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
28109	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
28110	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
28111	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
28112	* tests/data/test-read-write/test17.xml: Adjust.
28113
281142015-08-29  Dodji Seketeli <dodji@redhat.com>
28115
28116	Make test-read-dwarf.cc and test-read-write.cc abidiff the ABIs
28117	* tests/test-read-dwarf.cc (main): Use abidiff to compare the
28118	input elf file with the XML emitted.  That should yield the empty
28119	set.
28120	* tests/test-read-write.cc (main): Likewise, use abidiff to
28121	compare the input abixml file with the one that is emitted.
28122
281232015-08-29  Dodji Seketeli <dodji@redhat.com>
28124
28125	Add a new --noout option to abidw
28126	* tools/abidw.cc (options::noout): New data member.
28127	(options::options): Initialize it.
28128	(display_usage): Add a usage string for the new option.
28129	(parse_command_line): Parse the new option.
28130	(main): If --noout is provided, do not emit the XML form.
28131	* doc/manuals/abidw.rst: Document the new option.
28132
281332015-08-29  Dodji Seketeli <dodji@redhat.com>
28134
28135	Add a --no-architecture option to abidiff
28136	* tools/abidiff.cc (options::no_arch): New data member.
28137	(options::options): Initialize it.
28138	(display_usage): Display a help string for the new options.
28139	(parse_command_line): Parse the new options.
28140	(main): If --no-architecture is provided, set the corpus
28141	architecture to "".
28142	* doc/manuals/abidiff.rst: Document the new options.
28143
281442015-08-29  Dodji Seketeli <dodji@redhat.com>
28145
28146	Read abixml as a whole file and fix lots discrepancies with dwarf
28147	* src/abg-reader.cc (class read_context): Move data member at
28148	the top of the class like what is done elsewhere in the code
28149	base.
28150	(read_context::m_corp_node): New data member.
28151	(read_context::read_context): Initialize it.
28152	(read_context::{get,set}_corpus_node): New accessors.
28153	(read_context::map_id_and_node): Accept that a node id previously
28154	defined is defined again.  In that case we just remember the first
28155	mapping id -> xml-node.  That seems to work for now.
28156	(read_context::get_translation_unit): Fix the logic.
28157	(read_context::m_wip_types_map): Rename
28158	read_context::m_wip_classes_map into this.
28159	(read_context::clear_wip_types_map): Rename
28160	read_context::clear_wip_classes into this.
28161	(read_context::mark_type_as_wip): Rename
28162	read_context::mark_class_as_wip into this.
28163	(read_context::unmark_type_as_wip): Rename
28164	read_context::unmark_type_as_wip into this.
28165	(read_context::is_wip_type): Rename read_context::is_wip_class
28166	into this.
28167	(read_context::types_equal): New member function.
28168	(read_context::clear_per_translation_unit_data): Do not clear
28169	anything anymore as the previous data that were per-tu are now
28170	per-corpus.
28171	(read_context::clear_per_corpus_data): Clear here the previous
28172	data that were per-tu.
28173	(read_context::maybe_canonicalize_type): Add a new force_delay
28174	flag that forces the type to be late-canonicalized.  Also force
28175	late-canonicalize references, pointers, qualified-type and typedef
28176	because they must be canonicalized once they've been added to
28177	their context; but then this function might be called too early,
28178	before they are added to their context.
28179	(read_context::type_id_new_in_translation_unit): Remove this
28180	member function.
28181	(read_translation_unit_from_input): Be able to either use the
28182	xmlTextReader interface, or get the current 'abi-instr' xml
28183	element node.  If using the xmlTextReader interface, use it to
28184	move to the 'abi-instr' node, expand it and then use that.  In
28185	either case, call read_translation_unit() with the 'abi-instr' xml
28186	element node.
28187	(read_translation_unit): Take an 'abi-instr' XML element in
28188	argument now, use that to read the translation unit, as opposed to
28189	using the xmlTextReader interface we where using before to walk
28190	the sub-tree of the abi-instr xml node.
28191	(read_context::get_scope_for_node): If the scope is a new
28192	translation unit, then build the new translation unit.
28193	(read_symbol_db_from_input): Take the function and variable symbol
28194	data bases, and read the current xml element node (do not use the
28195	xmlTextReader interface anymore) to populate the function and
28196	variable symbols.
28197	(read_elf_needed_from_input): Do not use the xmlTextReader
28198	interface anymore.  Rather, use the current xml element node, look
28199	for the 'elf-needed' xml element node and use it to populate the
28200	set of elf dependencies.
28201	(read_corpus_from_input): Rework to expand the contents of the
28202	corpus node and use the result, rather than just exclusively
28203	relying on the xmlTextReader interface.
28204	(build_function_parameter): Build a proper IR node for variadic
28205	parameters.  Build function type node *after* having built all the
28206	parameters IR, so that parameter indexing is the same as what is
28207	done in the DWARF reader.  Also, if the function is not being
28208	added to its context yet, then delay the canonicalizing of its
28209	type, just like what is done by the DWARF reader.
28210	(build_qualified_type_decl, build_pointer_type_def)
28211	(build_reference_type_def, build_enum_type_decl, build_type_decl):
28212	Adjust.  Do not enforce anymore that the ID of this type be new in
28213	the current TU.  Delay canonicalizing if the type is not being
28214	added to its context.  For typedefs, use an adapted way of
28215	checking the consistency of the underlying type.
28216	(build_array_type_def): Do not enforce anymore that the ID of this
28217	type be new in the current TU.  Support the fact that the array
28218	might not have any DW_AT_byte_size attribute.  Force late
28219	canonicalizing if the array is not being added to its context.
28220	(build_class_decl): Adjust.  Reuse the
28221	read_context::maybe_canonicalize_type() function rather than
28222	trying to determine locally when to canonicalize.
28223	(build_template_tparameter): Adjust
28224
282252015-08-29  Dodji Seketeli <dodji@redhat.com>
28226
28227	Fix handling of class declaration during DWARF reading
28228	*virtual* member functions, data members, base classes or a
28229	DW_AT_byte_size as being conditions for being defined.
28230	* src/abg-dwarf-reader.cc (read_context::decl_only_classes_map_):
28231	Remove this data member.
28232	(read_context::{declaration_only_classes_to_force_defined,
28233	schedule_declaration_only_class_for_forced_resolution}): Remove
28234	these member functions.
28235	(read_context::resolve_declaration_only_classes): Do not force
28236	resolution of class declaration.
28237	(build_class_type_and_add_to_ir): Do not schedule classes for
28238	forced-resolution when they are used as base classes.  The
28239	presence of a member function is not enough to make the class be
28240	defined.  It needs to be a virtual member function.
28241
282422015-08-28  Dodji Seketeli <dodji@redhat.com>
28243
28244	Fix important hashing issues
28245	* src/abg-hash.cc (class_decl::hash::operator()): Do not force
28246	base classes to have definitions anymore.  GCC and Clang (at
28247	least) some time emits debug info in which the definition of some
28248	base classes are missing, especially when those base classes have
28249	vtables.  In that case, the definition of the class might it's in
28250	the binary where the vtable is emitted, which might not be the
28251	binary we are looking at.  So let's relax the assertion we had
28252	here for base classes.  For hashing virtual member functions,
28253	directly walk the virtual member functions by looking at
28254	class_decl::get_virtual_mem_fns() rather than walking all
28255	member functions and looking for the virtual ones.  This is a
28256	speed optimization but it also helps during debugging.
28257
282582015-08-28  Dodji Seketeli <dodji@redhat.com>
28259
28260	Fix template comparison operators
28261	* include/abg-ir.h (function_tdecl::operator==): Introduce a new
28262	virtual member operator that takes a function_tdecl&.
28263	* src/abg-ir.cc
28264	(class_decl::member_function_template::operator==): Avoid the
28265	static cast in the overload for member_base.  In the overload for
28266	member_class_template, avoid infinite recursion.
28267	(function_tdecl::operator==): In the overload for decl_base, do
28268	not do the real work here in the overload for decl_base Rather,
28269	the real work is done in the new overload for function_tdecl, and
28270	all other overloads call that one.
28271
282722015-08-28  Dodji Seketeli <dodji@redhat.com>
28273
28274	Use size/alignment of class definition when requested on declaration
28275	* include/abg-ir.h (type_base::{set_size_in_bits,
28276	set_alignment_in_bits}): Make these member functions virtual.
28277	(class_decl::{set_size_in_bits, get_size_in_bits,
28278	get_alignment_in_bits, set_alignment_in_bits}): Declare these
28279	virtual member functions.
28280	* src/abg-ir.cc (class_decl::{set_size_in_bits, get_size_in_bits,
28281	get_alignment_in_bits, set_alignment_in_bits}): Define these
28282	virtual functions.
28283
282842015-08-28  Dodji Seketeli <dodji@redhat.com>
28285
28286	Fix type lookup algorithm
28287	* src/abg-ir.cc (find_next_delim_in_cplus_type): Define new static
28288	function.
28289	(fqn_to_components): Use the new function above to break up a
28290	fully qualified name into components, rather than the too simple
28291	string::find_first_of() we were using previously.
28292	(lookup_node_in_scope): If the found type (class) is a
28293	declaration-only and if it has a definition, then return it.
28294
282952015-08-26  Dodji Seketeli <dodji@redhat.com>
28296
28297	Make decl hashing always take qualified name into account
28298	* src/abg-hash.cc (decl_base::hash::operator()(const decl_base&)):
28299	Always hash the qualified name of the decl.
28300
283012015-08-26  Dodji Seketeli <dodji@redhat.com>
28302
28303	Accept base classes which types are compatible with class type
28304	* include/abg-fwd.h (is_compatible_with_class_type): Declare a new
28305	overload.
28306	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Rather
28307	than requiring that base classes be of class type, just require
28308	that they be compatible with class types.
28309	* src/abg-ir.cc (is_compatible_with_class_type): Define a new
28310	overload.
28311
283122015-08-26  Dodji Seketeli <dodji@redhat.com>
28313
28314	Harden function_decl::get_pretty_representation()
28315	* src/abg-ir.cc (function_decl::get_pretty_representation): Make
28316	sure the function type is a member function before calling
28317	get_member_function_is_{virtual,ctor,dtor,const}.
28318
283192015-08-25  Dodji Seketeli <dodji@redhat.com>
28320
28321	Don't cache type qualified name before canonicalization
28322	* src/abg-ir.cc (decl_base::{get_qualified_parent_name,
28323	get_qualified_name}): Use the qualified name cache only if the
28324	type is fully built, i.e, when its canonical type is present.
28325	(qualified_type_def::get_qualified_name): Likewise.
28326	(pointer_type_def::get_qualified_name): Likewise.
28327	(reference_type_def::get_qualified_name): Likewise.
28328	(array_type_def::get_qualified_name): Likewise.
28329
283302015-08-22  Dodji Seketeli <dodji@redhat.com>
28331
28332	Misc style cleanups
28333	* configure.ac: Fix some spelling typos.
28334	* src/abg-tools-utils.cc (guess_file_type): Fix indentation.
28335	* tests/test-diff-pkg.cc (int_out_specs): Add some vertical spaces
28336	for better legibility.
28337	* tools/abidiff.cc (main): Add a missing space.
28338	* tools/abipkgdiff.cc (extract_deb): Fix a typo in the comment.
28339
283402015-08-22  Dodji Seketeli <dodji@redhat.com>
28341
28342	Make abipkgdiff compare tar archives containing binaries
28343	* config.h.in (WITH_TAR): New configuration preprocessor macro.
28344	* configure.ac: Add a new --enable-tar option.  It's turned on
28345	automatically if the tar program is found in the PATH.  Adjust the
28346	build configuration report to add the tar archive support.
28347	* include/abg-tools-utils.h (string_ends_with): Declare new
28348	function.
28349	(enum file_type): Add a new FILE_TYPE_TAR enumerator.
28350	* src/abg-tools-utils.cc (string_ends_with): Define new function.
28351	(operator<<(ostream&, file_type)): Serialize the new FILE_TYPE_TAR
28352	enumerator.
28353	(guess_file_type): Detect UStar format file by reading its magic
28354	number.  Detect compressed tar files based on the file path
28355	extension.
28356	* tools/abipkgdiff.cc (extract_tar): Define new function.
28357	(extract_package): Handle tar packages.
28358	(main): Handle tar archives.
28359	* tools/abidiff.cc (main): Handle the new FILE_TYPE_TAR
28360	enumerator.
28361	* tools/abilint.cc (main): Likewise.
28362	* tests/data/test-diff-pkg/tarpkg-0-dir{1,2}.ta{,r,.bz2, gz}: New
28363	test input tarballs.
28364	* tests/data/test-diff-pkg/tarpkg-0-report-0.txt: New test output
28365	reference.
28366	* tests/data/Makefile.am: Add the new test data file above to
28367	source distribution.
28368	* tests/test-diff-pkg.cc (in_out_specs): Add new tests cases.
28369
283702015-08-22  Dodji Seketeli <dodji@redhat.com>
28371
28372	Misc style fixes in abipkgdiff
28373	* include/abg-tools-utils.h (enum file_type): Fix the comment for
28374	for the FILE_TYPE_DEB enumerator.
28375	* tools/abipkgdiff.cc (main): Fix the style of the conditions.
28376	Also, fix the text emitted.
28377
283782015-08-22  Dodji Seketeli <dodji@redhat.com>
28379
28380	Make abipkgdiff compare directories containing binaries
28381	* include/abg-tools-utils.h (enum file_type): Add a new
28382	FILE_TYPE_DIR enumerator.
28383	* src/abg-tools-utils.cc (operator<<(ostream&, file_type)):
28384	Support serialization of the new FILE_TYPE_DIR enumerator.
28385	(guess_file_type): Detect that the path given is a directory.
28386	* tools/abipkgdiff.cc (package::package): If the package is a
28387	directory, then set its extracted directory path to the path of
28388	the directory.
28389	(package::erase_extraction_directory): Do not erase the extraction
28390	directory if the package is a directory provided by the user.
28391	(extract_package): If the package is a directory provided by the
28392	user, then there is nothing to extract.
28393	(main): If the first package is a directory, then the second one
28394	should be a directory as well.
28395	* tools/abidiff.cc (main): Support directories as input.
28396	* tools/abilint.cc (main): Likewise.
28397	* tests/data/test-diff-pkg/dirpkg-0-dir{1,2}/libobj-v0.so: New
28398	binary test inputs.
28399	* test/data/test-diff-pkg/dirpkg-0-report-0.txt: New input test
28400	file.
28401	* tests/data/test-diff-pkg/dirpkg-1-dir{1,2}/obj-v0.cc: Source
28402	code of the binary test inputs above.
28403	* tests/data/Makefile.am: Add the new files above to the source
28404	distribution.
28405	* tests/test-diff-pkg.cc (in_out_specs): Add the new test input
28406	files above to the set of tests this harness has to run over.
28407
284082015-08-22  Dodji Seketeli <dodji@redhat.com>
28409
28410	[dwarf reader] Support reference types without explicit DW_AT_byte_size
28411	* src/abg-dwarf-reader.cc (build_reference_type): If the type DIE
28412	has no DW_AT_byte_size, assume the type size is the translation
28413	unit's address size.
28414	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
28415	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
28416
284172015-08-21  Dodji Seketeli <dodji@redhat.com>
28418
28419	[dwarf reader] Support pointer types without explicit DW_AT_byte_size
28420	* abg-dwarf-reader.cc (build_pointer_type_def): If the type DIE
28421	has no DW_AT_byte_size, assume the type size is the translation
28422	unit's address size.
28423	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
28424	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
28425
284262015-08-21  Dodji Seketeli <dodji@redhat.com>
28427
28428	make abipkgdiff compile with GCC 4.4.7
28429	* tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
28430	The string holding the dir name is no more __thread, as this won't
28431	compile with GCC 4.4.7
28432
284332015-08-21  Dodji Seketeli <dodji@redhat.com>
28434
28435	Misc style fixes
28436	* src/abg-dwarf-reader.cc (read_context::die_type_map): Fix typo
28437	in the comment.
28438	* src/abg-ir.cc (peel_typedef_type): Fix typo in the comment.
28439	* src/abg-reader.cc
28440	(read_context::perform_late_type_canonicalizing): Fix a type in
28441	the comment.
28442
284432015-08-21  Dodji Seketeli <dodji@redhat.com>
28444
28445	Make get_pretty_representation work on method types
28446	* include/abg-fwd.h (is_method_type): Declare new overloads for
28447	naked pointers.
28448	(get_method_type_name): Declare new functions.
28449	(get_pretty_representation): Declare new overloads for
28450	method_type.
28451	* src/abg-ir.cc (get_function_type_name): If the function type is
28452	a method type, handle it as such.
28453	(get_method_type_name): Define new functions.
28454	(get_pretty_representation): If the function type is a method
28455	type, handle it as such.
28456	(get_pretty_representation): Define new overloads for method_type
28457	and pointer/reference to method_type.
28458	(is_method_type): Add overloads for naked pointers.
28459
284602015-08-21  Dodji Seketeli <dodji@redhat.com>
28461
28462	Hash a class declaration the same as its definition
28463	* src/abg-hash.cc (class_decl::hash::operator()(const class_decl&)):
28464	If the class declaration has a definition, hash its definition
28465	instead.  Otherwise, if the class declaration has no definition,
28466	just return a zero hash, like what we were doing before.
28467	* src/abg-reader.cc (read_context::maybe_canonicalize_type): Do
28468	not early canonicalize method types because most of the time, when
28469	this function is called, the method hasn't been added to its
28470	parent class yet.  So wait until late before canonicalizing.
28471	* src/abg-writer.cc (write_class_is_declaration_only): Do not emit
28472	the "is-declaration-only" property if the declaration has a
28473	definition.
28474	(write_class_decl): If the class declaration has a definition,
28475	emit the definition instead.
28476	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
28477	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
28478	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
28479	* tests/data/test-read-write/test18.xml: Likewise.
28480	* tests/data/test-read-write/test20.xml: Likewise.
28481	* tests/data/test-read-write/test21.xml: Likewise.
28482
284832015-08-20  Dodji Seketeli <dodji@redhat.com>
28484
28485	Add a --stats to abidiff and abidw
28486	* include/abg-dwarf-reader.h (get_show_stats)
28487	(set_show_stats): New accessors for a new "show_stats" property of
28488	the dwarf reader context.
28489	* src/abg-dwarf-reader.cc: Include iostream to use std::cerr.
28490	(dwarf_reader::show_stats_): New data member.
28491	(dwarf_reader::dwarf_reader): Initialize it.
28492	(dwarf_reader::show_stats)
28493	(get_show_stats)
28494	(set_show_stats): Define new accessors.
28495	(dwarf_reader::die_type_map): Add const overload to this accessor.
28496	(dwarf_reader::lookup_type_from_die_offset): Make this accessor
28497	const.
28498	(dwarf_reader::add_late_canonicalized_types_stats): New member
28499	function.
28500	(dwarf_reader::perform_late_type_canonicalizing): Emit the
28501	statistics about late-canonicalized types if the user asked for
28502	it.
28503	* tools/abidiff.cc (options::show_stats): New data member.
28504	(options::options): Initialize it.
28505	(display_usage): Document it.
28506	(parse_command_line): Parse the new --stats option.
28507	(main): Create a dwarf reader context, set the show_stats to it
28508	and then use that context to read the corpora before diffing them.
28509	* tools/abidw.cc (options::show_stats): New data member.
28510	(options::options): Initialize it.
28511	(display_usage): Document it.
28512	(parse_command_line): Parse the new --stats option.
28513	(main): Set the show_stats to the dwarf reader context before
28514	using it.
28515	* doc/manuals/abidiff.rst: Update the manual.
28516	* doc/manuals/abidw.rst: Update the manual.
28517
285182015-08-19  Dodji Seketeli <dodji@redhat.com>
28519
28520	Canonicalize all types that got scheduled for late canonicalization
28521	* src/abg-dwarf-reader.cc
28522	(read_context::canonicalize_types_scheduled): Canonicalize all
28523	types scheduled for late canonicalization.
28524	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
28525	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
28526
285272015-08-19  Dodji Seketeli <dodji@redhat.com>
28528
28529	Propagate canonical type of a class definition to its declaration
28530	* src/abg-ir.cc: (canonicalize): Propagate the canonical type of
28531	the type definition to its declaration.
28532	(class_decl::set_definition_of_declaration): Likewise.
28533
285342015-08-19  Dodji Seketeli <dodji@redhat.com>
28535
28536	Make type_has_non_canonicalized_subtype() tighter
28537	* include/abg-fwd.h (is_typedef, is_pointer_type)
28538	(is_reference_type): Declare new overloads.
28539	(peel_typedef_type): Renamed get_typedef_underlying_type into
28540	this.
28541	(peel_pointer_type, peel_reference_type)
28542	(peel_typedef_pointer_or_reference_type): Declare new functions.
28543	* src/abg-ir.cc (peel_typedef_type): Renamed
28544	get_typedef_underlying_type into this.
28545	(is_typedef, is_pointer_type, is_reference_type): Define new
28546	overloads.
28547	(peel_pointer_type, peel_reference_type)
28548	(peel_typedef_pointer_or_reference_type): Define new functions.
28549	(non_canonicalized_subtype_detector::has_non_canonical_type_):
28550	Make the type of this data member be a type_base*, not a bool.
28551	This is so that we can return the first non-canonicalized subtype
28552	of the type we are looking at.
28553	(non_canonicalized_subtype_detector::non_canonicalized_subtype_detector):
28554	Adjust the data member initialization.
28555	(non_canonicalized_subtype_detector::visit_begin): Add an overload
28556	for function_decl*, to avoid looking into non-virtual member
28557	functions.
28558	In the overload for type_base*, peel typedefs, pointers and
28559	reference of each sub-type that has no canonical type, to see if
28560	refers to the type we are actually walking.  If yes, then keep
28561	going.
28562	(type_has_non_canonicalized_subtype): Return the non-canonicalized
28563	sub-type found.
28564	* src/abg-comparison.cc (type_suppression::suppresses_diff):
28565	Adjust for the get_typedef_underlying_type -> peel_typedef_type
28566	renaming.
28567
285682015-08-19  Dodji Seketeli <dodji@redhat.com>
28569
28570	Make decl_base::get_qualified_name() work when decl context changes
28571	* include/abg-ir.h (class decl_base): Make class scope_decl a
28572	friend of decl_base.
28573	(type_base::priv_): Make this protected, rather than private.
28574	* src/abg-ir.cc (scope_decl::add_member_decl)
28575	(scope_decl::insert_member_decl): Reset the cache of the result of
28576	decl_base::get_qualified_name().
28577	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
28578
285792015-08-18  Dodji Seketeli <dodji@redhat.com>
28580
28581	Bug 18844 - assert failure in abidw at abg-dwarf-reader.cc:6537
28582	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
28583	Schedule declaration-only class resolution before the class
28584	appears as usable as to other types being built.
28585	* tests/data/test-read-dwarf/test12-pr18844.so: Add a new binary
28586	test input.
28587	* tests/data/test-read-dwarf/test12-pr18844.so.abi: The reference
28588	ABI XML output for the binary above.
28589	* tests/data/Makefile.am: Add the new test inputs above to the
28590	source distribution.
28591	* tests/test-read-dwarf.cc (in_out_specs): Add the new test inputs
28592	above to the set of input this test harness has to run over.
28593
285942015-08-18  Dodji Seketeli <dodji@redhat.com>
28595
28596	Fix a little glitch in the test suite
28597	* test-read-dwarf.cc (in_out_specs): Emit the output of the test11
28598	to output/test-read-dwarf/test11-pr18828.so.abi, not
28599	output/test-read-dwarf/test10-pr18828.so.abi.
28600
286012015-08-18  Dodji Seketeli <dodji@redhat.com>
28602
28603	Escape XML property names that were not escaped before
28604	* src/abg-writer.cc (write_namespace_decl, write_typedef_decl)
28605	(write_var_decl): Escape the XML characters that are forbidden in
28606	XML properties, and that are emitted as value of the 'name'
28607	property.
28608
286092015-08-15  Dodji Seketeli <dodji@redhat.com>
28610
28611	Bug 18828 - Handle force-resolving of multiple declarations-only of the same type
28612	* src/abg-dwarf-reader.cc
28613	(read_context::resolve_declaration_only_classes): Accept that a
28614	class that needs to be force-resolved might have been declared
28615	several times.  In that case, some instances of that
28616	declaration-only class might have already been resolved (or
28617	completed).
28618	* tests/data/test-read-dwarf/test11-pr18828.so: New binary input.
28619	It comes from bug https://sourceware.org/bugzilla/show_bug.cgi?id=18828.
28620	* tests/data/test-read-dwarf/test11-pr18828.so.abi: The reference
28621	output for the binary above.
28622	* tests/data/Makefile.am: Add the test input files above to source
28623	distribution.
28624	* tests/test-read-dwarf.cc (in_out_specs): Add the test inputs
28625	above to the set of input this test harness has to run over.
28626
286272015-08-15  Dodji Seketeli <dodji@redhat.com>
28628
28629	Avoid declaring a type several times in the same TU in the XML format
28630	* src/abg-writer.cc (write_context::{record_type_id_as_emitted,
28631	record_type_as_emitted, type_id_is_emitted, type_is_emitted,
28632	clear_emitted_types_map}): New member functions.
28633	(write_context::m_emitted_type_id_map): New data member.
28634	(write_translation_unit): Clear the per-translation unit map of
28635	emitted types.  Do not emit a type that has already been emitted
28636	in this translation unit.
28637	(write_namespace_decl): Do not emit a type that has already been
28638	emitted in this translation unit.
28639	(write_type_decl, write_qualified_type_def)
28640	(write_pointer_type_def, write_reference_type_def)
28641	(write_array_type_def, write_typedef_decl, write_class_decl)
28642	(write_type_tparameter, write_template_tparameter): Record the
28643	type we've just written as having been written out.
28644	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust as
28645	duplicated declarations got removed.
28646
286472015-08-14  Dodji Seketeli <dodji@redhat.com>
28648
28649	Misc style fixes in the XMLABI writer
28650	* src/abg-writer.cc (write_context): Align data members.
28651	(write_translation_unit): Remove useless horizontal white spaces.
28652	(write_decl, write_qualified_type_def, write_pointer_type_def)
28653	(write_reference_type_def, write_array_type_def)
28654	(write_enum_type_decl, write_typedef_decl, write_class_decl)
28655	(write_type_tparameter): Use the *_sptr typedefs rather than the
28656	longer form of shared_ptr<sometype> in function signatures.
28657	(write_enum_type_decl): In this function in particular, indent a
28658	line properly.
28659
286602015-08-14  Dodji Seketeli <dodji@redhat.com>
28661
28662	Fix typos in abipkgdiff
28663	* tools/abipkgdiff.cc (display_usage): s/pompare/compare.  Give a
28664	better help message for --help.
28665	(extract_rpm): Insert a space after the path of the package being
28666	extracted, when emitting a verbose message.
28667
286682015-08-14  Dodji Seketeli <dodji@redhat.com>
28669
28670	Install the manpage for abipkgdiff
28671	* doc/manuals/Makefile.am (section1_manpages): Add abipkgdiff.1 to
28672	the set of manpages to be install into section 1.
28673
286742015-08-12  Dodji Seketeli <dodji@redhat.com>
28675
28676	Bug 18818 - abidw aborts on a class with a non-complete base class
28677	* src/abg-dwarf-reader.cc
28678	(read_context::decl_only_classes_to_force_defined_map_): New data
28679	member.
28680	(read_context::declaration_only_classes_to_force_defined): New
28681	accessors.
28682	(read_context::schedule_declaration_only_class_for_forced_resolution):
28683	New member function.
28684	(build_class_type_and_add_to_ir): If a base class is a
28685	declaration-only class then mark it as needing to be force-defined
28686	*if* it's still not defined at the end of the abi corpus loading.
28687	(read_context::resolve_declaration_only_classes): If
28688	declaration-only classes that need to force-defined are present
28689	and not defined (when we reach the end of the ABI corpus) then
28690	force-define them as empty classes.
28691	* tests/data/test-read-dwarf/test10-pr18818-gcc.so: New test
28692	binary input file.  This comes from a user binary submitted to bug
28693	https://sourceware.org/bugzilla/show_bug.cgi?id=18818.  The
28694	original URL to the binary is
28695	https://sourceware.org/bugzilla/attachment.cgi?id=8518.
28696	* tests/data/test-read-dwarf/test9-pr18818-clang.so: New binary
28697	input file.  This comes from the same bug report as above.  The
28698	original URL to the binary is
28699	https://sourceware.org/bugzilla/attachment.cgi?id=8511.
28700	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: New
28701	reference output file.
28702	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
28703	* tests/data/Makefile.am: Add the new files above to the source
28704	distribution.
28705	* tests/test-read-dwarf.cc (in_out_specs): Add the test inputs
28706	above the set of tests input this harness has to run over.
28707
287082015-08-14  Dodji Seketeli <dodji@redhat.com>
28709
28710	Update the abipkgdiff manual to say that .deb files are now supported
28711	* doc/manuals/abipkgdiff.rst: Say that .deb fiel are now supported
28712	by abipkgdiff.
28713
287142015-08-14  Dodji Seketeli <dodji@redhat.com>
28715
28716	Update comment about the supported formats in abipkgdiff
28717	* tools/abipkgdiff.cc: Now that .deb packages are supported, say
28718	it.
28719
287202015-08-14  Dodji Seketeli <dodji@redhat.com>
28721
28722	Make the support of RPM and DEB package formats conditional
28723	* config.h.in: Define WITH_DEB and WITH_RPM pre-processor macros.
28724	* configure.ac: Add --enable-{rpm,deb} switches.  Check for
28725	rpm2cpio and cpio programs, unless --disable-rpm was provided.  If
28726	they are found and if --enable-rpm=auto was provided, then
28727	consider that --enable-rpm=yes was provided.  In that case, set
28728	the WITH_RPM macro to 1.  Otherwise, undefine that macro.
28729	Similarly, check for dpkg unless --disable-deb was provided.  If
28730	it's found and if --enable-deb=auto was provided, consider that
28731	--enable-deb=yes was provided.  In that case, set the WITH_DEB
28732	macro to 1.  Otherwise, undefine that macro.  Define the
28733	ENABLE_RPM and ENABLE_DEB conditional automake variables, if the
28734	rpm resp. deb support is enabled.  Emit a notice about the rpm and
28735	deb features being enabled or not, at the end of the configure
28736	process.
28737	* tests/test-diff-pkg.cc: Include the config.h header.
28738	(in_out_spec): Guard rpm tests by the WITH_RPM macro.  Similarly,
28739	guard deb tests by the WITH_DEB macro.
28740	* tools/abipkgdiff.cc: Include the config.h header.
28741	(extract_rpm): Guard this function definition with the WITH_RPM
28742	macro.
28743	(extract_deb): Guard this function definition with the WITH_DEB
28744	macro.
28745	(extract_package): Guard the handling of rpm packages with the
28746	WITH_RPM macro and the handling of deb package with the WITH_DEB
28747	macro.  If a package not-support package format is encountered,
28748	emit an appropriate error message and error out.
28749
287502015-08-07  Matthias Klose <doko@debian.org>
28751
28752	Add support for .deb files to abipkgdiff
28753	* include/abg-tools-utils.h (file_type): Add FILE_TYPE_DEB.
28754	* tools/abipkgdiff.cc (extract_deb): New.
28755	(extract_package, main): Handle FILE_TYPE_DEB.
28756	* src/abg-tools-utils.cc (operator<<): Handle FILE_TYPE_DEB.
28757	(guess_file_type): Detect FILE_TYPE_DEB.
28758	* tools/abidiff.cc (main): Handle FILE_TYPE_DEB.
28759	* tools/abilint.cc (main): Handle FILE_TYPE_DEB.
28760	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a-dbgsym_2.4.0-1_amd64.ddeb:
28761	Input debian debug info package; to be compared by the test
28762	harness runtestdiffpkg.
28763	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64.deb:
28764	Input debian package; to be compared by the test harness
28765	runtestdiffpkg.
28766	* tests/data/test-diff-pkg/libsigc++-2.0-0v5-dbgsym_2.4.1-1ubuntu2_amd64.ddeb:
28767	Input debug info package
28768	* tests/data/test-diff-pkg/libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64.deb:
28769	Input debian package; to be compared by the test harness
28770	runtestdiffpkg.
28771	* 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:
28772	Reference output for the comparison of the packages above.
28773	* tests/data/Makefile.am: Add the new files above to the source distribution.
28774	* tests/test-diff-pkg.cc (in_out_specs): Add the input packages
28775	above to the set of files to be compared by this test harness.
28776
287772015-08-14  Dodji Seketeli <dodji@redhat.com>
28778
28779	Add configure check for rm and mkdir used by abipkgdiff
28780	* configure.ac: Add configure checks for rm and mkdir used by
28781	abipkgdiff.
28782
287832015-08-14  Dodji Seketeli <dodji@redhat.com>
28784
28785	Fix a comment in configure.ac
28786	* configure.ac: Fix a comment.
28787
287882015-08-14  Dodji Seketeli <dodji@redhat.com>
28789
28790	Do not remove api and website source files by accident
28791	* doc/Makefile.am: Do not remove the entirety of the build dir of
28792	doxygen for the apidoc and the website as these can be also the
28793	source dirs.  Rather, remove that is under the html/ sub-directory
28794	of the build dir, as this is always generated by doxygen.
28795
287962015-08-13  Dodji Seketeli <dodji@redhat.com>
28797
28798	Add an abipkgdiff --fail-no-dbg command line option
28799	* tools/abipkgdiff.cc (options::fail_if_no_debug_info): New data
28800	member.
28801	(options::options): Initialize it.
28802	(display_usage): Document it.
28803	(compare): If the user asked for it, fail if the we couldn't file
28804	the debug info for the corpus files being compared.
28805
288062015-08-13  Dodji Seketeli <dodji@redhat.com>
28807
28808	Add -h and -d option shortcuts to abidw
28809	* tools/abidw.cc (display_usage): Added a documentation string.
28810	(parse_command_line): Parse the new -h and -d shortcuts.
28811	* doc/manuals/abidw.rst: Update the manual.
28812
288132015-08-13  Dodji Seketeli <dodji@redhat.com>
28814
28815	Add a -h option shortcut to abidiff
28816	* tools/abidiff.cc (display_usage): Add documentation for the new
28817	switch.
28818	(parse_command_line): Parse the -h option.
28819	* doc/manuals/abidiff.rst: Update the manual.
28820
288212015-08-13  Dodji Seketeli <dodji@redhat.com>
28822
28823	Add a -h shortcup to abipkgdiff --help
28824	* tools/abipkgdiff.cc (display_usage): Document the -h shortcut.
28825	(parse_command_line): Parse the -h shortcut to --help.
28826
288272015-08-09  Dodji Seketeli <dodji@redhat.com>
28828
28829	Bug 18791 - libabigail fails to read the output of abidw
28830	* src/abg-reader.cc (read_context::get_scope_for_node): Take an
28831	access_specifier output parameter to set the access specifier of
28832	the current node in its scope.  Update the function to set the
28833	access_specifier.
28834	(read_context::build_or_get_type_decl): Adjust to set the access
28835	specifier of the type we are building, in case it's a member type.
28836	* tests/data/test-abidiff/test-PR18791-v{0,1}.so.abi: New test input files.
28837	* tests/data/test-abidiff/test-PR18791-report0.txt: New test
28838	output reference.
28839	* tests/data/Makefile.am: Add the new test material to the source
28840	distribution.
28841	* tests/test-abidiff.cc (specs): Add the new test inputs to the set of
28842	input files this test harness has to run over.
28843
288442015-08-09  Dodji Seketeli <dodji@redhat.com>
28845
28846	Fix a thinko in language support de-serialization
28847	* src/abg-ir.cc (string_to_translation_unit_language): Fix
28848	thinko.  What was I thinking ...
28849
288502015-08-06  Dodji Seketeli <dodji@redhat.com>
28851
28852	Add --no-added-syms to abipkgdiff
28853	* tools/abipkgdiff.cc (options::show_added_syms): New data member.
28854	(options::options): Initialize it.
28855	(parse_command_line): Parse the new --no-added-syms option and set
28856	the options::show_added_syms flag accordingly.
28857	(display_usage): Add a help string for the new option.
28858	(set_diff_context_from_opts): Set the diff context according to
28859	the state of the new options::show_added_syms flag.
28860	* doc/manuals/abipkgdiff.rst: Add manual entry for the new
28861	--no-added-syms options.
28862	* tests/data/test-diff-pkg/test-rpm-report-5.txt: New test
28863	reference input file.
28864	* tests/data/Makefile.am: Add the new file above to source
28865	distribution.
28866	* tests/test-diff-pkg.cc (InOutSpec::prog_options): New data
28867	member.
28868	(in_out_specs): Adjust.  Add a new input to run the test again
28869	with --no-added-syms.
28870	(main): Adjust to pass the program options contained in
28871	InOutSpec::prog_options to abipkgdiff.
28872	fixup! Add --no-added-syms to abipkgdiff
28873
288742015-08-06  Dodji Seketeli <dodji@redhat.com>
28875
28876	Update diff stats when added symbols are removed from change report
28877	* include/abg-comparison.h (diff_context_wptr)
28878	(corpus_diff::diff_stats_sptr): New typedefs.
28879	(corpus_diff::diff_stats::diff_stats): Make this constructor take
28880	a diff_context_sptr.  Make the default constructor private.
28881	* src/abg-comparison.cc (corpus_diff::diff_stats::priv::ctxt_):
28882	New data member.  This is a weak pointer to a diff_context.
28883	(corpus_diff::diff_stats::priv::priv): Take a diff_context_sptr
28884	and initialize the weak pointer ctxt_ to it.
28885	(corpus_diff::diff_stats::priv::ctxt): New accessor to the
28886	diff_context hold by the diff_stats.
28887	(corpus_diff::diff_stats::{num_removed_func_filtered_out,
28888	num_added_func_filtered_out, num_removed_vars_filtered_out,
28889	num_added_vars_filtered_out, num_removed_func_syms_filtered_out,
28890	num_added_func_syms_filtered_out,
28891	num_removed_var_syms_filtered_out,
28892	num_added_var_syms_filtered_out}): If the user asked for the added
28893	[or removed] variables/functions/symbols to be ignored, the
28894	accessors for the number of filtered added/removed variables/functions/symbols
28895	return the total number of added/removed
28896	variables/functions/symbols; that is, say that *all* added/removed
28897	variables/functions/symbols got filtered out.
28898	(corpus_diff::priv::diff_stats_): Turn this data member into a
28899	[shared] pointer to diff_stats.
28900	(corpus_diff::priv::filters_and_suppr_applied_): Remove this data
28901	member.  Now that diff_stats_ is a pointer, we don't need this
28902	boolean anymore.
28903	(corpus_diff::apply_filters_and_suppressions_before_reporting):
28904	Adjust to the fact that filters_and_suppr_applied_ is gone, and
28905	that diff_stats_ is now a pointer.
28906	(corpus_diff::report): Control un-referenced added symbols
28907	reporting with
28908	diff_context::show_added_symbols_unreferenced_by_debug_info()
28909
289102015-07-31  Dodji Seketeli <dodji@redhat.com>
28911
28912	Make applying supp specs through pointer access look through typedefs
28913	* include/abg-comparison.h (type_suppression::suppresses_type):
28914	Declare new member function.
28915	(get_typedef_diff_underlying_type_diff): Declare new function.
28916	* include/abg-fwd.h (get_typedef_underlying_type): Likewise.
28917	* src/abg-comparison.cc (type_suppression::suppresses_type):
28918	Define new member function.
28919	(get_typedef_diff_underlying_type_diff): Define new function.
28920	(type_suppression::suppresses_diff): After looking through the
28921	different kind of access methods, use the new
28922	type_suppression::suppresses_type(), rather than doing lots of
28923	stuff ourselves here.  But then, if the suppression doesn't apply
28924	to the subjects of the diff, look through typedefs and try to
28925	apply the suppression again.
28926	* src/abg-ir.cc (get_typedef_underlying_type): Define new
28927	function.
28928	* tests/data/test-diff-suppr/libtest25-typedef-v{0,1}.so: New
28929	binary test input files.
28930	* tests/data/test-diff-suppr/test25-typedef-v{0,1}.c: Source code
28931	for the binary test input files above.
28932	* tests/data/test-diff-suppr/test25-typedef-report-{0, 1}.txt: New test
28933	input files.
28934	* tests/data/test-diff-suppr/test25-typedef-suppr-0.txt: New test
28935	input file.
28936	* tests/data/Makefile.am: Add the new test material to the source
28937	distribution.
28938	* tests/test-diff-suppr.cc (in_out_specs): Add the test inputs
28939	above to the set of test inputs this harness has to run over.
28940
289412015-07-24  Dodji Seketeli <dodji@redhat.com>
28942
28943	Make abipkgdiff erase the *parent* directory of temporary files
28944	* tools/abipkgdiff.cc
28945	(erase_created_temporary_directories_parent): New static function.
28946	(compare): After comparison, erase the temporary parent directory
28947	as well.
28948
289492015-07-24  Dodji Seketeli <dodji@redhat.com>
28950
28951	Make the name of the removed variable section be consistent
28952	* src/abg-comparison.cc (corpus_diff::report): Introduce the
28953	section of removed variables with the string "Removed variable",
28954	rather than with the string "Deleted variable".
28955	* tests/data/test-abicompat/test2-var-removed-report-0.txt: Adjust.
28956	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-0.txt: Likewise.
28957	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise.
28958	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-5.txt: Likewise.
28959
289602015-07-24  Dodji Seketeli <dodji@redhat.com>
28961
28962	Consider default symbol versions when computing added/removed fns/vars
28963	* include/abg-corpus.h (corpus::{lookup_function_symbol,
28964	lookup_variable_symbol}): Take a elf_symbol::version object,
28965	rather than a string representing the version.  Add an overload
28966	that takes an elf_symbol.
28967	* src/abg-corpus.cc (find_symbol_by_version): New static function.
28968	(corpus::{lookup_function_symbol, lookup_variable_symbol}): Take a
28969	elf_symbol::version object, rather than a string representing the
28970	version.  Add an overload that takes an elf_symbol.  If the looked
28971	up symbol has no version and if the corpus contains a symbol with
28972	the same name and with a default version, then return that latter
28973	symbol if the corpus doesn't contain a symbol with the same name
28974	and empty version.
28975	* src/abg-comparison.cc
28976	(class_diff::ensure_lookup_tables_populated): Adjust.
28977	(corpus_diff::priv::ensure_lookup_tables_populated): Before
28978	deciding that a symbol has been added, if the symbol has a default
28979	version, make sure no symbol with the same name and without
28980	version was present in the former corpus.  Similarly, before
28981	deciding that a symbol has been removed, if the symbol has no
28982	version, make sure the latter corpus has no symbol with the same
28983	name and with a default version.
28984	* tests/data/test-diff-dwarf/test12-report.txt: Adjust.  The
28985	function should not be considered as added, because its symbol
28986	(and version) was already present in the former DSO.
28987
289882015-07-24  Dodji Seketeli <dodji@redhat.com>
28989
28990	Fix a thinko in removed variables detection
28991	* src/abg-comparison.cc
28992	(corpus_diff::priv::ensure_lookup_tables_populated): Once we have
28993	computed a set of potentially deleted variables that turned out to
28994	contain variables that were actually *NOT* deleted, really take
28995	these into account by removing these false positives from the set
28996	of deleted *variables*.  We were trying to delete these from the
28997	set deleted *functions*; woops, I guess this was a copy & paste
28998	error.
28999
290002015-07-24  Dodji Seketeli <dodji@redhat.com>
29001
29002	Fix logic of type_has_non_canonicalized_subtype()
29003	* src/abg-ir.cc (type_has_non_canonicalized_subtype): Once the
29004	type has been traversed, just test if the visitor has accumulated
29005	the 'has_non_canonical_type' property.
29006
290072015-07-24  Dodji Seketeli <dodji@redhat.com>
29008
29009	Fix style issues
29010	* include/abg-ir.h (struct ir_node_visitor): Fix the wording of
29011	the comment of this type.
29012	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Fix the
29013	filling of the text of the comment of the code that chooses to
29014	perform early canonicalizing.
29015
290162015-07-24  Dodji Seketeli <dodji@redhat.com>
29017
29018	Adding member type doesn't reset declaration-only-ness of a class
29019	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
29020	Adding a new member type shouldn't remove the
29021	declaration-only-ness of the class.
29022
290232015-07-22  Dodji Seketeli <dodji@redhat.com>
29024
29025	Extract all packages for a given run of abipkgdiff under the same temp dir
29026	* tools/abipkgdiff.cc (package::{<all data members>}): Make the
29027	data members be private.  Make their names end with an underscore.
29028	(package::extracted_package_parent_dir_path): Remove.
29029	(package::extracted_package_dir_path): Rename into
29030	package::extracted_dir_path_.
29031	(package::extracted_packages_parent_dir): New static member
29032	function, accessor.
29033	(package::package): Adjust to the new names of the data members.
29034	Call the new package::extracted_package_parent_dir() static member
29035	function to initial the package::extracted_dir_path_ data member.
29036	(package::{path, extracted_dir_path, type, is_debug,
29037	path_elf_file_sptr_map, debug_info_package}): New accessors for
29038	the data members.
29039	(package::{erase_extraction_directory,
29040	erase_extraction_directories}): Adjust.
29041	(erase_created_temporary_directories)
29042	(create_maps_of_package_content)
29043	(extract_package_and_map_its_content, prepare_packages, compare)
29044	(main): Adjust.
29045
290462015-07-22  Dodji Seketeli <dodji@redhat.com>
29047
29048	Add a --keep-tmp-files option to abipkgidff
29049	* tools/abipkgdiff.cc (options::keep_tmp_files): New data member.
29050	(options::options): Initialize it.
29051	(display_usage): Display a usage string for the new
29052	--keep-tmp-files option.
29053	(parse_command_line): Parse the new --keep-tmp-files option.
29054	(compare): Do not erase temporary directories if the users asked so.
29055	* doc/manuals/abipkgdiff.rst: Document the new --keep-tmp-files
29056	options.
29057
290582015-07-21  Dodji Seketeli <dodji@redhat.com>
29059
29060	Show linkage names in abipkgdiff output
29061	* doc/manuals/abipkgdiff.rst: Document the new --no-linkage-name
29062	options.
29063	* tools/abipkgdiff.cc (options::show_linkage_names): New data
29064	member.
29065	(options::options): Initialize it.
29066	(display_usage): Display a usage string for --no-linkage-name.
29067	(parse_command_line): Parse the --no-linkage-name option.
29068	(set_diff_context_from_opts): Set the diff context accordingly.
29069	* tests/data/test-diff-pkg/test-rpm-report-0.txt: Adjust.
29070
290712015-07-21  Dodji Seketeli <dodji@redhat.com>
29072
29073	Add --no-added-binaries to abipkgdiff
29074	* tools/abipkgdiff.cc (options::show_added_binaries): New data
29075	member.
29076	(options::options): Initialize it.
29077	(display_usage): Add a help string for --no-added-binaries.
29078	(parse_command_line): Parse the new --no-added-binaries option.
29079	(compare): Do not show added binaries if the user doesn't want to.
29080	* doc/manuals/abipkgdiff.rst: Document the new --no-added-binaries
29081	option.
29082
290832015-07-21  Dodji Seketeli <dodji@redhat.com>
29084
29085	make abipkgdiff return a proper exit code
29086	* tools/abipkgdiff.cc (compare): Return an instance
29087	abigail::tools_utils::abidiff_status, just like what we do in
29088	abidiff.
29089	* doc/manuals/abipkgdiff.rst: Document the new exit code.
29090
290912015-07-21  Dodji Seketeli <dodji@redhat.com>
29092
29093	Fix logic of determining if changes happened in abidiff
29094	* tools/abidiff.cc (main): Simplify the logic when determining if
29095	the comparison between two corpora yields worthwhile changes.
29096
290972015-07-21  Dodji Seketeli <dodji@redhat.com>
29098
29099	Add a new corpus_diff::has_net_changes() entry point
29100	* include/abg-comparison.h (corpus_diff::has_net_changes): Declare
29101	new member function.
29102	* src/abg-comparison.cc (corpus_diff::has_net_changes): Define it.
29103
291042015-07-20  Dodji Seketeli <dodji@redhat.com>
29105
29106	Fix type synthesis to fix abicompat weak mode
29107	* include/abg-fwd.h
29108	(synthesize_type_from_translation_unit): Declare new function.
29109	(synthesize_function_type_from_translation_unit): Make the
29110	translation_unit parameter non-const because the function needs to
29111	bind the life time of the synthesized function to the life time of
29112	the translation unit.  Make this function be a friend of
29113	abigail::ir::translation_unit.
29114	(synthesize_function_type_from_translation_unit):
29115	* src/abg-ir.cc (translation_unit::priv::synthesized_types_): New
29116	data member.
29117	(synthesize_type_from_translation_unit): Define new function.
29118	(synthesize_function_type_from_translation_unit): Make the
29119	translation_unit parameter non-const.  If the return is void, then
29120	take that in account carefuly.  Rather than just looking up the
29121	type of parameters and return value, synthesize them too,
29122	especially when they are qualified types.  Bind the life time of
29123	the synthesized function type to the lifetime of the translation
29124	unit.
29125	* tests/data/test-abicompat/test7-fn-changed-report-1.txt: New
29126	test reference output.
29127	* tests/test-abicompat.cc (in_out_spec): Run the harness on the
29128	exisiting test7-fn-changed-app and libtest7-fn-changed-libapp-v1
29129	but in weak mode this time.
29130
291312015-07-20  Dodji Seketeli <dodji@redhat.com>
29132
29133	Clean up the output of abicompat weak mode
29134	* tools/abicompat.cc (perform_compat_check_in_weak_mode): Remove
29135	disgracious vertical spaces in the wording.
29136	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust.
29137	* tests/data/test-abicompat/test6-var-changed-report-0.txt: Adjust.
29138
291392015-07-20  Sinny Kumari <sinny@redhat.com>
29140
29141	Display --suppressions|--suppr option in help usage
29142	* tools/abipkgdiff.cc (display_usage): Print
29143	--suppressions|--suppr <path> option in help usage
29144
291452015-07-20  Dodji Seketeli <dodji@redhat.com>
29146
29147	Fix computing the set of exported functions and varible symbols
29148	* src/abg-ir.cc (elf_symbol::get_name_and_version_from_id): Always
29149	set the version and name of the symbol.
29150	*  src/abg-corpus.cc
29151	(corpus::exported_decls_builder::{keep_wrt_id_of_fns_to_keep,
29152	keep_wrt_id_of_vars_to_keep}): Reset the symbol name *and* version
29153	before passing it.  This is redundant with the fix in
29154	elf_symbol::get_name_and_version_from_id() that always set the
29155	symbol name and version now, but I felt it makes it easier to
29156	understand the fix overall.
29157	* tests/data/test-abicompat/libtest7-fn-changed-libapp-v{0,1}.so:
29158	New test input binaries.
29159	* tests/data/test-abicompat/test7-fn-changed-app: Likewise.
29160	* tests/data/test-abicompat/test7-fn-changed-{app, libapp-v0,
29161	libapp-v1}.c: Source code of the binary test inputs above.
29162	* * tests/data/test-abicompat/test7-fn-changed-{libapp-v0,
29163	libapp-v1}.h: Likewise.
29164	* tests/data/test-abicompat/test7-fn-changed-report-0.txt: Test
29165	input.
29166	* tests/data/Makefile.am: Add the new test material above to
29167	source distribution.
29168	* tests/test-abicompat.cc (int_out_specs): Add the test inputs
29169	above to the set of inputs this test harness has to run over.
29170
291712015-07-20  Dodji Seketeli <dodji@redhat.com>
29172
29173	Fix the wording of description of abipkgdiff.cc again
29174	* tools/abipkgdiff.cc: Fix the wording again.
29175
291762015-07-20  Dodji Seketeli <dodji@redhat.com>
29177
29178	Remove use of tmpnam from abilint
29179	* include/abg-tools-utils.h (abigail::tools_utils::temp_file):
29180	Declare new type.
29181	(abigail::tools_utils::temp_file_sptr): New typedef.
29182	* src/abg-tools-utils.cc (temp_file::priv): Define new type.
29183	(temp_file::{temp_file, is_good, get_path, get_stream, create}):
29184	Define new member functions.
29185	* tools/abilint.cc (main): Do not use tmpnam anymore.  Use the new
29186	abigail::tools_utils::temp_file type instead.
29187
291882015-07-20  Dodji Seketeli <dodji@redhat.com>
29189
29190	Try to avoid a race condition when abipkgdiff extracts packages.
29191	* include/abg-tools-utils.h (get_random_number)
29192	(get_random_number_as_string): Declare new functions.
29193	* src/abg-tools-utils.cc (get_random_number)
29194	(get_random_number_as_string): Define them.
29195	* tools/abipkgdiff.cc
29196	(package::extracted_package_parent_dir_path): New data member.
29197	(package::package): Initialize
29198	package::extracted_package_parent_dir_path to
29199	<tmpdir>/<randomname>, with randomname being a random number
29200	represented as a string.
29201	(extract_rpm): Make sure to create a hierarchy of directories, not
29202	just a directory.
29203
292042015-07-19  Dodji Seketeli <dodji@redhat.com>
29205
29206	Fix the wording of the description of the abipkgdiff.cc file
29207	* tools/abipkgdiff.cc: Fix the wording of the description.
29208
292092015-07-19  Dodji Seketeli <dodji@redhat.com>
29210
29211	Fix the --suppressions manual doc for abidiff
29212	* doc/manuals/abidiff.rst: Talk about the --suppr shortcut of the
29213	--suppressions option.
29214
292152015-07-19  Dodji Seketeli <dodji@redhat.com>
29216
29217	On changed fn, show symbol info when name is different from linkage name in C
29218	* include/abg-ir.h (translation_unit::language): New enum type.
29219	(translation_unit::{get_language, set_language}): Declare new
29220	accessors.
29221	(translation_unit_language_to_string)
29222	(string_to_translation_unit_language, is_c_language)
29223	(is_cplus_plus_language): Declare new functions.
29224	* src/abg-ir.cc (translation_unit::priv::language_): New data
29225	member.
29226	(translation_unit::priv::language_): Initialize it.
29227	(translation_unit::{set_language, get_language}): Define new
29228	member functions.
29229	(translation_unit_language_to_string)
29230	(string_to_translation_unit_language, is_c_language)
29231	(is_cplus_plus_language): Define new functions.
29232	* src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): New
29233	static function.
29234	(build_translation_unit_and_add_to_ir): Read the language of the
29235	translation unit.
29236	* src/abg-comparison.cc (corpus_diff::report): When reporting a
29237	change in a function sub-type, if we are in C language translation
29238	unit, if the function name is different from its linkage name,
29239	even if the symbol doesn't have any alias, show symbol
29240	information.
29241	* src/abg-reader.cc (read_translation_unit_from_input): Read the
29242	'language' property of the translation unit, if present.
29243	* src/abg-writer.cc (write_translation_unit): Write the 'language'
29244	property to the translation unit, if present.
29245	* tests/data/test-read-dwarf/test0.abi: Adjust for the new
29246	'language' property of the 'abi-instr' element.
29247	* tests/data/test-read-dwarf/test1.abi: Likewise.
29248	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
29249	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
29250	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
29251	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
29252	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
29253	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
29254	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
29255	Likewise.
29256
292572015-07-19  Dodji Seketeli <dodji@redhat.com>
29258
29259	Add --suppressions to abipkgdiff
29260	* tools/abipkgdiff.cc (options::suppressions): New data member.
29261	(set_diff_context_from_opts): Set the suppression specifications
29262	provided by the user to the diff context.
29263	(parse_command_line): Parse the --suppressions and --suppr command
29264	line options.
29265	* doc/manuals/abipkgdiff.rst: Document the --suppressions and
29266	--suppr options.
29267
292682015-07-18  Dodji Seketeli <dodji@redhat.com>
29269
29270	Support file_name_regexp and soname_regexp in supp-specs
29271	* include/abg-comparison.h (suppression_base::priv_): Make this
29272	pimpl member protected.
29273	(suppression_base::set_file_name_regex_str)
29274	(get_file_name_regex_str, get_soname_regex_str)
29275	(set_soname_regex_str): Declare new accessors.
29276	(function_suppression::{suppresses_function,
29277	suppresses_function_symbol}): Take a diff_context_sptr.
29278	(variable_suppression::{suppresses_variable,
29279	suppresses_variable_symbol}): Take a diff_context_sptr.
29280	* src/abg-comparison.cc
29281	(suppression_base::priv::{file_name_regex_str_, file_name_regex_,
29282	soname_regex_str_, soname_regex_}): Define new data members.
29283	(suppression_base::priv::get_file_name_regex_str)
29284	(get_soname_regex_str): Define new member functions.
29285	(suppression_base::set_file_name_regex_str)
29286	(get_file_name_regex_str, get_soname_regex_str)
29287	(set_soname_regex_str): Define new accessors.
29288	(type_suppression::suppresses_diff): Evaluate file_name_regexp and
29289	soname_regexp.
29290	(read_type_suppression): Fix the reading of the "label" property.
29291	Read the file_name_regexp and soname_regexp properties.
29292	(function_suppression::{suppresses_function,
29293	suppresses_function_symbol): Take a diff_context_sptr parameter.
29294	Evaluate file_name_regexp and soname_regexp properties.
29295	(function_suppression::suppresses_diff): Adjust for the api change
29296	of function_suppression::suppresses_function().
29297	(read_function_suppression): Read the file_name_regexp and
29298	soname_regexp properties.
29299	(variable_suppression::suppresses_variable): Take a
29300	diff_context_sptr parameter and evaluate file_name_regexp and
29301	soname_regexp properties.
29302	(variable_suppression::suppresses_variable_symbol): Likewise.
29303	(variable_suppression::suppresses_diff): Adjust for the api change
29304	of variable_suppression::suppresses_variable().
29305	(read_variable_suppression): Read the file_name_regexp and
29306	soname_regexp properties.
29307	(function_is_suppressed, variable_is_suppressed): Take a
29308	diff_context_sptr parameter.
29309	(corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars):
29310	Adjust.
29311	* doc/manuals/libabigail-concepts.rst: Document file_name_regexp
29312	and soname_regexp in the manual.
29313	* tests/data/test-diff-suppr/libtest24-soname-v{0,1}.so: New test
29314	binary input files.
29315	* tests/data/test-diff-suppr/test24-soname-report-{0,4}.txt: New
29316	test input files.
29317	* tests/data/test-diff-suppr/test24-soname-suppr-{0,4}.txt:
29318	Likewise.
29319	* tests/data/test-diff-suppr/test24-soname-v{0,1}.cc: Source code
29320	of the binary test input files above.
29321	* tests/data/Makefile.am: Add the new test material above to
29322	source distribution.
29323	* tests/test-diff-suppr.cc (in_out_spec): Add the new test inputs
29324	to the set of tests this harness has to run over.
29325
293262015-07-18  Dodji Seketeli <dodji@redhat.com>
29327
29328	Fix possible crash in suppression evaluation
29329	* src/abg-comparison.cc (type_suppression::suppresses_diff): When
29330	evaluating the reach_kind property, do not crash on diff nodes
29331	that are pointer_diff or reference_diff to something else but a
29332	type diff.
29333
293342015-07-17  Dodji Seketeli <dodji@redhat.com>
29335
29336	Fix '--' being rendered as '-' in html manuals
29337	* doc/manuals/abicompat.rst: Quote options as verbatim.
29338	* doc/manuals/abidiff.rst: Likewise.
29339	* doc/manuals/abidw.rst: Likewise.
29340	* doc/manuals/abilint.rst: Likewise.
29341	* doc/manuals/abipkgdiff.rst: Likewise.
29342
293432015-07-17  Dodji Seketeli <dodji@redhat.com>
29344
29345	Fix the --verbose option
29346	* tools/abipkgdiff.cc (compare): In the elf_file overload, do not
29347	emit an error message when a binary could not be analyzed unless
29348	--verbose was provided.
29349
293502015-07-16  Dodji Seketeli <dodji@redhat.com>
29351
29352	Cleanup the output for added/removed binaries
29353	* tools/abipkgdiff.cc (compare): In the overload for packages,
29354	indent the content of the "Removed binaries" and "Added binaries"
29355	paragraphs.
29356
293572015-07-16  Dodji Seketeli <dodji@redhat.com>
29358
29359	Avoid redundant diff report messages by default.
29360	* tools/abipkgdiff.cc (options::show_redundant_changes): New data
29361	member.
29362	(options::options): Initialize it.
29363	(display_usage): Add a help string for the --redundant command
29364	Line option.
29365	(set_diff_context_from_opts): New static function.
29366	(compare): Take the options variable.  Set the diff context from
29367	the options, especially if we should show redundant changes or
29368	not.  Use that diff context when comparing ABIs.
29369	(parse_command_line): Parse the new --redundant command line
29370	switch.
29371	* doc/manuals/abipkgdiff.rst: Document the new --redundant option.
29372
293732015-07-16  Dodji Seketeli <dodji@redhat.com>
29374
29375	Support comparing only shared libraries
29376	* tools/abipkgdiff.cc (options::compare_dso_only): New data
29377	member.
29378	(options::options): Initialize it.
29379	(display_usage): Display a little help string for it.
29380	(create_maps_of_package_content): Take the option variable.  Do
29381	not compare non-dso files if the --dso-only option was provided.
29382	(extract_package_and_map_its_content, prepare_packages, compare):
29383	Take the option variable.
29384	(parse_command_line): Parse the new --dso-only option.
29385	* doc/manuals/abipkgdiff.rst: Add documentation for the new
29386	--dso-only option.
29387
293882015-07-15  Dodji Seketeli <dodji@redhat.com>
29389
29390	Comment functions and types of abipkgdiff
29391	* src/abg-dwarf-reader.cc (get_soname_of_elf_file): Better wording
29392	of the apidoc of this function.
29393	* tools/abipkgdiff.cc (verbose, elf_file_paths): Add apidoc for
29394	these global variables.
29395	(struct options, ): Add apidoc for these types.
29396	(options::{erase_extraction_directory,
29397	erase_extraction_directories}, display_usage, extract_rpm)
29398	(erase_created_temporary_directories, extract_package)
29399	(file_tree_walker_callback_fn, compare)
29400	(create_maps_of_package_content)
29401	(extract_package_and_map_its_content, prepare_packages, compare)
29402	(parse_command_line): Add apidoc for these functions.
29403
294042015-07-16  Sinny Kumari <sinny@redhat.com>
29405
29406	Add regression tests for abipkgdiff tool
29407	* tests/Makefile.am: Build new runtestdiffpkg regression test
29408	* tests/data/Makefile.am: Add new test files to source
29409	* tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64.rpm:
29410	Test data for abipkgdiff tool
29411	* tests/data/test-diff-pkg/dbus-glib-0.80-3.fc12.x86_64.rpm: Likewise
29412	* tests/data/test-diff-pkg/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm:
29413	Likewise
29414	* tests/data/test-diff-pkg/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm:
29415	Likewise
29416	* tests/data/test-diff-pkg/test-rpm-report-0.txt: Expected test output
29417	* tests/data/test-diff-pkg/test-rpm-report-1.txt: Likewise
29418	* tests/data/test-diff-pkg/test-rpm-report-2.txt: Likewise
29419	* tests/data/test-diff-pkg/test-rpm-report-3.txt: Likewise
29420	* tests/data/test-diff-pkg/test-rpm-report-4.txt: Likewise
29421	* tests/test-diff-pkg.cc: New file
29422
294232015-07-15  Dodji Seketeli <dodji@redhat.com>
29424
29425	Add a manual for abipkgidiff
29426	* doc/manuals/abipkgdiff.rst: New manual file.
29427	* doc/manuals/libabigail-tools.rst: Refer to the manual for
29428	abipkgdiff.
29429	* doc/manuals/Makefile.am: Add the new manual file to source
29430	distribution.
29431	* doc/manuals/conf.py: Add the manual for abipkgdiff to section 1.
29432
294332015-07-15  Dodji Seketeli <dodji@redhat.com>
29434
29435	Comment functions and types of abipkgdiff
29436	* src/abg-dwarf-reader.cc (get_soname_of_elf_file): Better wording
29437	of the apidoc of this function.
29438	* tools/abipkgdiff.cc (verbose, elf_file_paths): Add apidoc for
29439	these global variables.
29440	(struct options, ): Add apidoc for these types.
29441	(options::{erase_extraction_directory,
29442	erase_extraction_directories}, display_usage, extract_rpm)
29443	(erase_created_temporary_directories, extract_package)
29444	(file_tree_walker_callback_fn, compare)
29445	(create_maps_of_package_content)
29446	(extract_package_and_map_its_content, prepare_packages, compare)
29447	(parse_command_line): Add apidoc for these functions.
29448
294492015-07-15  Dodji Seketeli <dodji@redhat.com>
29450
29451	Various style fixes
29452	* abipkgdiff.cc (get_soname_of_elf_file): Fix spacing.
29453	* tools/abipkgdiff.cc (elf_file_paths): Make this global variable
29454	static.
29455	(extract_rpm): Rename parameter pkg_path name into package_path.
29456
294572015-07-15  Dodji Seketeli <dodji@redhat.com>
29458
29459	Remove the last direct fiddling with ELF from abipkgdiff.cc
29460	* abg-dwarf-reader.h (enum elf_type): Move this declaration here
29461	from abipkgdiff.cc to here.
29462	(get_type_of_elf_file): Declare this new function.
29463	(get_soname_from_elf): Change this to take a path to the elf file
29464	rather than a Elf* handler.  So now to use this, the user doesn't
29465	have to get her hand dirty with elfutils.
29466	* src/abg-dwarf-reader.cc (get_soname_from_elf): Change this to
29467	take a path to the elf file rather than a Elf* handler.
29468	(elf_file_type): Move this static function here, from
29469	abipkgdiff.cc.
29470	(get_type_of_elf_file): New function.  This has been factorized
29471	out of create_maps_of_package_content() in abipkgdiff.cc.
29472	* tools/abipkgdiff.cc (class elf_file): Changed struct elf_file
29473	into this.  Make the default constructor private.
29474	(elf_file::elf_file): Change the constructor to just take the path
29475	to the elf_file.  The base name, soname and elf file type are now
29476	computed from the path file, in the constructor.  This makes
29477	instantiation much much easier from the point of view of the user
29478	of the type.
29479	(struct abi_diff): Renamed struct abi_changes into this.
29480	(abi_diff::has_changes): Define new member function.
29481	(abi_diffs): Remove this global variable.
29482	(package::package): Remove the elf file type from the set of
29483	parameters of this constructor.  Rather, compute that elf file
29484	type from the path to the elf file, in the constructor.  Again,
29485	this eases the use of the type.
29486	(elf_file_type): Remove this from here, as it got moved to
29487	abg-dwarf-reader.cc.
29488	(compare): In the elf_file overload, return true if the comparison
29489	yields ABI changes.
29490	(create_maps_of_package_content): Do not fiddle with elfutils
29491	stuff here.  Rather, just instantiate elf_file and the analyzing
29492	of the file magically happens.
29493	(compare): Make the package overload take an abi_diff as output
29494	parameter, rather than populating a global variable in return.
29495	(compare): Add an other overload for package that doesn't take the
29496	abi_diff as output parameter and write it in terms of the previous
29497	one.
29498	(main): Adjust as the instantiation of package is now simpler.
29499
295002015-07-08  Dodji Seketeli <dodji@redhat.com>
29501
29502	Add a --verbose option to abipkgdiff
29503	* tools/abipkgdiff.cc (verbose): Add a new global variable.
29504	(package::erase_extraction_directory, extract_rpm, compare)
29505	(create_maps_of_package_content): Emit verbose information.
29506	(parse_command_line): Parse the --verbose option.
29507
295082015-07-08  Dodji Seketeli <dodji@redhat.com>
29509
29510	Use the library to implement ABI comparison in abipkgdiff
29511	* tools/abipkgdiff.cc (compare): In the overload for elf_file, use
29512	abigail::comparison::compute_diff() to compare the ABI of two
29513	corpora.  The corpora themselves is read using
29514	abigail::dwarf_reader::read_corpus_from_elf().  This cleans up the
29515	output of the tool because nothing is emitted to standard output
29516	if the two ABI corpora compares equal.
29517
295182015-07-08  Dodji Seketeli <dodji@redhat.com>
29519
29520	Fix several string passing issues in abipkgdiff.cc
29521	* tools/abipkgdiff.cc (elf_file::elf_file): Pass the strings by
29522	reference.  Also, change the order of the parameters; all the
29523	strings are passed first, then the elf_type is passed last.
29524	(package::package): Likewise, pass the strings by reference, not
29525	by value.
29526	(create_maps_of_package_content): Adjust for the change in
29527	parameters order of elf_file::elf_file.
29528
295292015-07-08  Dodji Seketeli <dodji@redhat.com>
29530
29531	Only try to compare DSOs or executable binaries in abipkgdiff
29532	* tools/abipkgdiff.cc (compare): In the overload for packages,
29533	only compare binaries that are DSO or executable.
29534
295352015-07-08  Dodji Seketeli <dodji@redhat.com>
29536
29537	Avoid flushing the output stream in abipkgdiff.cc
29538	* tools/abipkgdiff.cc (extract_package)
29539	(create_maps_of_package_content, compare, main): Avoid flushing
29540	the output stream arbitrarily.
29541
295422015-07-08  Sinny Kumari <sinny@redhat.com>
29543
29544	Move get_soname() function to abg-dwarf-reader.h/cc
29545	* include/abg-dwarf-reader.h (get_soname_from_elf): Declare
29546	new function
29547	* src/abg-dwarf-reader.cc (get_soname_from_elf): Define new
29548	function
29549	* tools/abipkgdiff.cc (get_soname): Remove function
29550	(pkg_diff): Call get_soname_from_elf() instead of get_soname()
29551
295522015-07-07  Dodji Seketeli <dodji@redhat.com>
29553
29554	Important organizational changes in abipkgdiff.cc
29555	* Avoid using shortened names when the line is not too long.
29556	* Use shared_ptr when possible.
29557	* When a function parameter is not meant to be nil, do not pass it
29558	as a pointer; rather, pass it as a reference.
29559	* Avoid doing things that can "fail" in a destructor; e.g, spawning
29560	a process.  Also, it's not common practise to cleanup a resource in a
29561	type destructor, when that resource has not been created in one of the
29562	member functions of the type.  It eases maintenance when resource
29563	creation and cleanup is performed at the same logical level.
29564	* tools/abipkgdiff.cc (option::package{1,2}): Rename
29565	option::pkg{1,2} into this, to increase legibility.
29566	(option::debug_package{1,2}): Likewise, rename
29567	option::debug_pkg{1,2} into this.
29568	(elf_file::~elf_file): Do not "delete this" in a destructor.  This
29569	leads to double free.  It's when someone invokes the "delete"
29570	operator on a pointer to the object that the destructor of the
29571	object is executed automatically; so if in the destructor the
29572	delete operator is called again, bad things are going to happen.
29573	As the destructor is now empty, remove it altogether.
29574	(elf_file_sptr): New typedef for shared_ptr<elf_file>.
29575	(package::path): Rename package::pkg_path into this, for better
29576	legibility.
29577	(package::extracted_package_dir_path): Rename
29578	package::extracted_pkg_dir_path into this.
29579	(package::type): Rename package::pkg_type into this.
29580	(package::is_debug_info): Rename package::is_debuginfo_pkg into
29581	this.
29582	(package::path_elf_file_sptr_map): Rename
29583	package::dir_elf_files_map into this because this is a map of
29584	path -> elf_file_sptr.  Also, now the value of the map element is
29585	a elf_file_sptr, no more an elf_file*.
29586	(package::debug_info_package): Rename package::debuginfo_pkg into
29587	this.
29588	(package::package): Adjust for the changes above.
29589	(package::{erase_extraction_directory,
29590	erase_extraction_directories}): New member functions.
29591	(elf_file_paths): Renamed dir_elf_files_path into this.
29592	(erase_created_temporary_directories)
29593	(create_maps_of_package_content)
29594	(extract_package_and_map_its_content, prepare_packages): New
29595	static functions.
29596	(get_soname, elf_file_type, extract_rpm): Make this static.
29597	(extract_package): Take a const package& rather than a
29598	package_sptr to express that the function really expects a non-nil
29599	object by reference (not by copy) and that the object won't be
29600	modified.  Using a reference removes the possibility that the
29601	pointer could be nil, causing crashes in the code where
29602	parameter->something was used.  Now only parameter.something can
29603	be used, so no crash possible there.  This is more solid code.
29604	(file_tree_walker_callback_fn): Rename callback() into this.  It
29605	makes the code more legible and kind of 'self-documented'.  At
29606	least you get the hint that this is a callback function for some
29607	file tree walking (ftw) function. Adjust for the relevant names
29608	renaming above.
29609	(compare): Rename compute_abidiff into this; again, this increases
29610	legibility; at least at the point of use of this function.  Rename
29611	compare_package() into a an overload of compare() as well.
29612	compare_package() used to take a vector of packages.  It was hard
29613	to guess by reading the signature of the function, which element
29614	of the vector is expected to be the first vector of the
29615	comparison, which one is to be the second, etc.  Now, this
29616	function takes two packages, named first_package and
29617	second_package.  That is more "typed"; that is, the signature is
29618	more meaningful.  Greater legibility, hopefully.  And in the body
29619	of the function, the debug information packages are now accessed
29620	using the package::debug_info_package data member.  Again, this is
29621	less surprising, I believe.  Also, explicitly erase the temporary
29622	files that were created during this comparison.  All this
29623	simplifies the logic of this function, hopefully.
29624	(parse_command_line): Make this static.  Add new --d1 and --d2
29625	command line switches that are shortcuts of --debug-info-pkg1 and
29626	--debug-info-pkg2.  Adjust this function for the relevant name
29627	changes above.  Make lines be shorter than 80 characters.
29628	(main): Do not create any vector of parameters anymore as the
29629	compare_packages() function don't take any vector of parameter
29630	anymore.  Just instantiate first_package and second_package now.
29631	Adjust for the relevant name changes above.  This hopefully
29632	simplifies the logic of this function.
29633
296342015-07-06  Dodji Seketeli <dodji@redhat.com>
29635
29636	Wording fixes in abipkgdiff.cc
29637	* tools/abipkgdiff.cc (extract_package): Renamed extract_pkg into
29638	this because shortening 'package' into 'pkg' provides no
29639	legibility improvement.
29640	(compare_packages): Renamed pkg_diff() into this, so that the name
29641	of the function starts with a verb, and the shortened 'pkg' word
29642	is renamed back to the 'package' word.  This way, the code almost
29643	reads like normal English sentences with verbs and complement,
29644	thus enhancing legibility and easing latter maintenance.
29645	(main): Adjust for the changes above.
29646
296472015-07-06  Dodji Seketeli <dodji@redhat.com>
29648
29649	Re-indent tools/abipkgdiff.cc
29650	* tools/abipkgdiff.cc: Re-indent the file properly and fix some
29651	white spacing here and there.
29652
296532015-07-06  Dodji Seketeli <dodji@redhat.com>
29654
29655	Some slight typo and wording fixes in abipkgdiff
29656	* tools/abipkgdiff.cc (display_usage): Fixed the typo in
29657	'bi-pacakge.'  Also, refer to 'package', not to 'bi-package' that
29658	is surprising to the user at first.
29659	(compute_abidiff): Shorten the size of the introductory line.
29660
296612015-07-03  Dodji Seketeli <dodji@redhat.com>
29662
29663	Remove names of unused variables in callback()
29664	* tools/abipkgdiff.cc (callback): Remove the name of parameters st
29665	and flag.
29666
296672015-07-03  Dodji Seketeli <dodji@redhat.com>
29668
29669	Remove useless const from the declaration of extract_rpm()
29670	* tools/abipkgdiff.cc (extract_rpm): Remove useless const qualifier.
29671
296722015-07-03  Dodji Seketeli <dodji@redhat.com>
29673
29674	End all branches of get_soname() finish with a return statement
29675	* tools/abipkgdiff.cc (get_soname): Have just one return statement
29676	at the end of this function.
29677
296782015-07-03  Dodji Seketeli <dodji@redhat.com>
29679
29680	Fix abipkgdiff compilation issues
29681	* tools/abipkgdiff.cc (elf_file::elf_file): Initialize data member
29682	in the same order as they were declared.
29683	(package::package): Likewise.
29684
296852015-06-19  Sinny Kumari <sinny@redhat.com>
29686
29687	Exclude processing symlink, display removed/added binaries between two packages
29688	* tools/abipkgdiff.cc (abi_changes): Declare new struct
29689	(callback): Exclude symbloic link file for durther processing
29690	(compute_abidiff): Consider SONAME if exists as key in map instead
29691	of binary name, else binary as key. Also, print if removed/added
29692	binaries exist between packages
29693
296942015-06-09  Sinny Kumari <sinny@redhat.com>
29695
29696	Stdout ABI changes if same binary found in both package
29697	* tools/abipkgdiff.cc (compute_abidiff): New function
29698	tools/abipkgdiff.cc (pkg_diff): Iterate through list of binaries
29699	in both package directory and call compute_diff function if
29700	same binary found in both file.
29701	tools/abipkgdiff.cc (main): Also consider debug-info directories
29702	avilable in debu-info packages.
29703
297042015-06-02  Sinny Kumari <sinny@redhat.com>
29705
29706	Save ELF files, their type and SONAME if exist for extracted packages
29707	* tools/abipkgdiff.cc (elf_type): Declare new enum
29708	(elf_file): Declare new struct
29709	(package): Add member variable dir_elf_files_map
29710	(get_soname): Define new function
29711	(elf_file_type): Define new function
29712	(extract_rpm): Iterate over extracted directory files
29713	and filter ELF binary files along with their information
29714	like name, soname, elf_type and save in dir_elf_files_map
29715
297162015-05-26  Sinny Kumari <sinny@redhat.com>
29717
29718	Extract packages(RPMs) into temporary directories for further processing
29719	* tools/abipkgdiff.cc (struct package): Declare new struct
29720	(package_sptr): Declare shared_ptr for struct package
29721	(extract_rpm): Define new fuction to extract rpm package
29722	(extract_pkg): Define new function to extract pacakge
29723	(pkg_diff): Define new function to get ABI diff between
29724	two packages
29725	(main): Create new object of type pacakge for each binary
29726	and debuginfo pacakge passed in commandline options
29727
297282015-05-21  Sinny Kumari <sinny@redhat.com>
29729
29730	Guess RPM file type
29731	* include/abg-tools-utils.h (file_type): Added member
29732	FILE_TYPE_RPM and FILE_TYPE_SRPM
29733	(operator<<): New function declaration.
29734	* src/abg-tools-utils.cc (file_type): Detect RPM and
29735	SRPM file type
29736	(operator<<): New function definition
29737	* tools/abidiff.cc (main): Check for RPM and SRPM
29738	file type as well.
29739	* tools/abilint.cci (main): Check for RPM and SRPM file
29740	type as well.
29741	* tools/abipkgdiff.cc (main): Check whether input files
29742	to abipkgdiff are valid RPM files or not.
29743
297442015-05-19  Sinny Kumari <sinny@redhat.com>
29745
29746	Initial skeleton of abipkgdiff tool
29747	* tools/Makefile.am: Include abipkgdiff.cc in compilation and
29748	generate abipkgdiff binary.
29749	* tools/abipkgdiff.cc: New file
29750
297512015-07-16  Dodji Seketeli <dodji@redhat.com>
29752
29753	Support reading binaries that do not have a symbol table
29754	* src/abg-dwarf-reader.cc
29755	(read_context::find_symbol_table_section): Allow returning a nil
29756	pointer to symbol table.
29757	(read_context::lookup_elf_symbol_from_index): Return an empty elf
29758	symbol if we got a nil pointer to symbol table.
29759	(read_context::load_symbol_maps): If no symbol table is found then
29760	consider that the symbol maps loading failed.
29761
297622015-07-16  Dodji Seketeli <dodji@redhat.com>
29763
29764	Remove extra vertical spaces from diff report
29765	* src/abg-comparison.cc (class_diff::report): Do not emit new line
29766	unless the diff is to be reported.
29767	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Adjust.
29768	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Adjust.
29769	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt:
29770	: Adjust.
29771
297722015-07-09  Dodji Seketeli <dodji@redhat.com>
29773
29774	Allow null types in type comparison again
29775	* src/abg-comparison.cc (compute_diff): In the overload of
29776	type_base_sptr accept nil types.
29777
297782015-07-08  Dodji Seketeli <dodji@redhat.com>
29779
29780	Handle the life time of the map of canonical types
29781	* include/abg-ir.h (type_base::canonical_types_map_type): Move
29782	this typedef into abg-ir.cc and out of the type_base namespace.
29783	(type_base::get_canonical_types_map): Likewise.
29784	* src/abg-ir.cc (canonical_types_map_type): New typedef that got
29785	moved here from type_base::canonical_types_map_type.
29786	(get_canonical_types_map): Likewise got moved here from
29787	type_base::get_canonical_types_map.  Made static in the process.
29788	(class usage_watchdog): New type.
29789	(usage_watchdog_sptr, usage_watchdog_wptr): New typedefs.
29790	(get_usage_watchdog, get_usage_watchdog_wptr, ref_usage_watchdog)
29791	(maybe_cleanup_type_system_data): New static functions.
29792	(translation_unit::priv::usage_watchdog_): Add new data member.
29793	(translation_unit::priv::priv): Get a reference on the usage
29794	watchdog.
29795	(translation_unit::priv::~priv): If the usage watchdog says that
29796	the type system is not used, then cleanup the global data
29797	logically owned by the type system.
29798	* include/abg-dwarf-reader.h (read_corpus_from_elf): Make this
29799	return a corpus and set the status by reference using a parameter.
29800	* src/abg-dwarf-reader.cc (read_corpus_from_elf): Implement the
29801	above.
29802	* include/abg-reader.h (read_translation_unit_from_file)
29803	(read_translation_unit_from_buffer)
29804	(read_translation_unit_from_istream): Remove the overloads that do
29805	not return a translation_unit_sptr and that pass it as a
29806	parameter.  Only keep the overloads that return a
29807	translation_unit_sptr, forcing users of the API to own a proper
29808	reference on the resulting translation_unit pointer.  That is
29809	important to handle the life time of the global data of the type
29810	system that need to be cleared when the last translation unit is
29811	de-allocated.
29812	* src/abg-reader.cc (read_translation_unit_from_input): Make this
29813	return a translation_unit_sptr.
29814	(read_translation_unit_from_file)
29815	(read_translation_unit_from_buffer)
29816	(read_translation_unit_from_istream): Remove the overloads that do
29817	not return a translation_unit_sptr and that pass it as a
29818	parameter.  Only keep the overloads that return a
29819	translation_unit_sptr.
29820	(read_to_translation_unit): Make this return a
29821	translation_unit_sptr.
29822	* tests/print-diff-tree.cc (main): Adjust.
29823	* tests/test-diff-dwarf.cc (main): Likewise.
29824	* tests/test-ir-walker.cc (main): Likewise.
29825	* tests/test-read-dwarf.cc (main): Likewise.
29826	* tests/test-read-write.cc (main): Likewise.
29827	* tools/abicompat.cc (main): Likewise.
29828	* tools/abidiff.cc (main): Likewise.
29829	* tools/abidw.cc (main): Likewise.
29830	* tools/abilint.cc (main): Likewise.
29831
298322015-07-08  Dodji Seketeli <dodji@redhat.com>
29833
29834	Add --d{1,2} shortcut options for --debug-info-dir{1,2} in abidiff
29835	* tools/abidiff.cc (display_usage): Add the --d{1,2} to the help
29836	strings.
29837	(parse_command_line): Parse the new --d1 and --d2 options.
29838
298392015-07-08  Dodji Seketeli <dodji@redhat.com>
29840
29841	Factorize incompatible and subtype changes detection
29842	* include/abg-comparison.h (corpus_diff::{has_incompatible_changes,
29843	has_net_subtype_changes}): Declare new member functions.
29844	* src/abg-comparison.cc (corpus_diff::{has_incompatible_changes,
29845	has_net_subtype_changes}): Define them.
29846	* abidiff.cc (main): Use the new member functions above.
29847
298482015-07-09  Dodji Seketeli <dodji@redhat.com>
29849
29850	Adjust some tests for output changes
29851	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.
29852	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
29853	* tests/data/test-diff-dwarf/test11-report.txt: Likewise.
29854	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
29855	* tests/data/test-diff-filter/test2-report.txt: Likewise.
29856	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Likewise.
29857	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Likewise.
29858	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
29859	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise.
29860
298612015-07-06  Dodji Seketeli <dodji@redhat.com>
29862
29863	Fix missing newlines in diff report
29864	* src/abg-comparison.cc (class_diff::report): The overload of
29865	represent() for instances of var_decl does not emit new lines.  So
29866	the caller must ensure a new line is emitted.
29867
298682015-07-02  Dodji Seketeli <dodji@redhat.com>
29869
29870	Support filtering out just one alias of a function
29871	* include/abg-comparison.h (function_suppression::{get,
29872	set}_allow_other_aliases): Declare new member functions.
29873	* src/abg-comparison.cc
29874	(function_suppression::priv::allow_other_aliases_): New data
29875	member.
29876	(function_suppression::priv::priv): Initialize it to 'true'.
29877	(function_suppression::{get, set}_allow_other_aliases): Define new
29878	member functions.
29879	(read_function_suppression): Parse the new "allow_other_aliases"
29880	property.
29881	(function_suppression::suppresses_function): Update to evaluate
29882	the new 'allow_other_aliases' property when there is a property to
29883	match against some a symbol name of the function.
29884	(corpus_diff::report): Fix the printing of function aliases when
29885	printing sub-type changes to properly emit the plural of the word
29886	'symbol' when the function has several aliases.
29887	* include/abg-ir.h (elf_symbol::get_number_of_aliases): Declare
29888	new member function.
29889	* src/abg-ir.cc (elf_symbol::get_number_of_aliases): Define new
29890	member function.
29891	* doc/manuals/libabigail-concepts.rst: Update manual.
29892	* tests/data/test-diff-dwarf/test5-report.txt: Adjust.
29893	* tests/data/test-diff-suppr/libtest23-alias-filter-v0.so: New
29894	test input.
29895	* tests/data/test-diff-suppr/libtest23-alias-filter-v1.so: Likewise.
29896	* tests/data/test-diff-suppr/test23-alias-filter-0.suppr: Likewise.
29897	* tests/data/test-diff-suppr/test23-alias-filter-1.suppr: Likewise.
29898	* tests/data/test-diff-suppr/test23-alias-filter-2.suppr: Likewise.
29899	* tests/data/test-diff-suppr/test23-alias-filter-3.suppr: Likewise.
29900	* tests/data/test-diff-suppr/test23-alias-filter-4.suppr: Likewise.
29901	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
29902	* tests/data/test-diff-suppr/test23-alias-filter-report-1.txt: Likewise.
29903	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise.
29904	* tests/data/test-diff-suppr/test23-alias-filter-report-3.txt: Likewise.
29905	* tests/data/test-diff-suppr/test23-alias-filter-report-4.txt: Likewise.
29906	* tests/data/test-diff-suppr/test23-alias-filter-report-5.txt: Likewise.
29907	* tests/data/test-diff-suppr/test23-alias-filter-v0.c: Likewise.
29908	* tests/data/test-diff-suppr/test23-alias-filter-v1.c: Likewise.
29909	* tests/data/test-diff-suppr/test23-alias-filter-version-script: Likewise.
29910	* tests/data/Makefile.am: Add the new test stuff to source
29911	distribution.
29912	* tests/test-diff-suppr.cc (in_out_spec): Add the tests inputs
29913	above to the list of input to run over.
29914
299152015-07-01  Dodji Seketeli <dodji@redhat.com>
29916
29917	Complete apidoc
29918	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Finish the
29919	incomplete apidoc for this member function.
29920
299212015-07-01  Dodji Seketeli <dodji@redhat.com>
29922
29923	Show aliases of functions with changed sub-types
29924	* include/abg-ir.h (elf_symbol::get_aliases_id_string): Declare
29925	new overload.
29926	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Define new
29927	overload.
29928	* src/abg-comparison.cc (corpus_diff::report): For functions with
29929	sub-type changes report their aliases.  Do not do this if the
29930	function is a constructor or destructor because these almost
29931	always have aliases, at least with GCC and the developer most
29932	certainly has not done anything special for that; she would thus
29933	be uselessly surprised by that remote implementation detail.
29934	* tests/data/test-diff-dwarf/test5-report.txt: Adjust test.
29935
299362015-06-25  Dodji Seketeli <dodji@redhat.com>
29937
29938	Update ChangeLog file
29939	* ChangeLog: Update automatically using 'make update-changelog'.
29940
299412015-06-23  Dodji Seketeli <dodji@redhat.com>
29942
29943	Misc typo fixes
29944	* src/abg-comparison.cc
29945	(corpus_diff::priv::{deleted, added}n_variable_is_suppressed): Fix
29946	a typo.
29947	* tests/data/test-diff-dwarf/test16-syms-only-v0.cc: Fix a typo in
29948	the comments.
29949	* tests/data/test-diff-dwarf/test16-syms-only-v1.cc: Likewise.
29950
299512015-06-22  Dodji Seketeli <dodji@redhat.com>
29952
29953	Apply suppression specifications to added and removed functions and variables
29954	* include/abg-comparison.h (is_type_suppression)
29955	(is_function_suppression): Declare new functions.
29956	({function, variable}_suppression::change_kind): Declare new enum.
29957	(function_suppression::{parse_change_kind, get_change_kind,
29958	set_change_kind, suppresses_function,
29959	suppresses_function_symbol}): Declare new member functions.
29960	(variable_suppression::{parse_change_kind, get_change_kind,
29961	set_change_kind, suppresses_variable, suppresses_variable,
29962	suppresses_variable_symbol}): Declare new member functions.
29963	(operator{&,|}): Declare new operators for
29964	function_suppression::change_kind and
29965	variable_suppression::change_kind enums.
29966	(corpus_diff::diff_stats::{num_removed_func_filtered_out,
29967	net_num_func_removed, num_added_func_filtered_out,
29968	net_num_func_added, num_removed_vars_filtered_out,
29969	net_num_vars_removed, num_added_vars_filtered_out,
29970	net_num_vars_added, num_removed_func_syms_filtered_out,
29971	num_added_func_syms_filtered_out, net_num_removed_func_syms,
29972	net_num_added_func_syms, num_added_var_syms_filtered_out,
29973	num_removed_vars_filtered_out, net_num_removed_var_syms,
29974	net_num_added_var_syms}): Declare new member functions.
29975	(corpus_diff::diff_stats::num_changed_vars_filtered_out): Renamed
29976	corpus_diff::diff_stats::num_vars_filtered_out into this.
29977	(corpus_diff::diff_stats::num_changed_func_filtered_out): Renamed
29978	corpus_diff::diff_stats::num_func_filtered_out into this.
29979	* src/abg-comparison.cc (is_type_suppression)
29980	(is_function_suppression): Define new
29981	function.
29982	(function_suppression::priv::change_kind): New data member.
29983	(function_suppression::priv): Initialize it.
29984	(function_suppression::{parse_change_kind, get_change_kind,
29985	set_change_kind, suppresses_function,
29986	suppresses_function_symbol}): Define new member functions.
29987	(operator{&,|}): Define new operators for the new
29988	function_suppression::change_kind enum.
29989	(function_suppression::suppresses_diff): Re-write this in terms of
29990	the new function_suppression::suppresses_function() function.
29991	(read_function_suppression): Support reading the new "change_kind"
29992	property.
29993	(variable_suppression::priv::change_kind_): New data member.
29994	(variable_suppression::priv::priv): Initialize it.
29995	(variable_suppression::{parse_change_kind, get_change_kind,
29996	set_change_kind, suppresses_variable,
29997	suppresses_variable_symbol}): Define new member functions.
29998	(is_variable_suppression): Define new function.
29999	(operator{&,|}): Define new operators for
30000	variable_suppression::change_kind enum.
30001	(variable_suppression::suppresses_diff): Re-write in terms of the
30002	new variable_suppression::suppresses_variable function.
30003	(read_variable_suppression): Support reading the new "change_kind"
30004	property.
30005	(corpus_diff::diff_stats::priv::{num_removed_func_filtered_out,
30006	num_added_func_filtered_out, num_removed_vars_filtered_out,
30007	num_added_vars_filtered_out, num_removed_func_syms_filtered_out,
30008	num_added_func_syms_filtered_out,
30009	num_removed_var_syms_filtered_out,
30010	num_added_var_syms_filtered_out}): New data members.
30011	(corpus_diff::diff_stats::priv::num_changed_func_filtered_out):
30012	Renamed the data member num_func_filtered_out into this.
30013	(corpus_diff::diff_stats::priv::num_changed_vars_filtered_out):
30014	Renamed data member num_vars_filtered_out into this.
30015	(corpus_diff::diff_stats::priv::priv): Initialize the new data
30016	members.
30017	(corpus_diff::diff_stats::{num_removed_func_filtered_out,
30018	num_removed_func_filtered_out, net_num_func_removed,
30019	net_num_func_added, num_added_func_filtered_out,
30020	net_num_func_added, num_removed_vars_filtered_out,
30021	num_removed_vars_filtered_out, net_num_vars_removed,
30022	num_added_vars_filtered_out, net_num_vars_added,
30023	num_removed_func_syms_filtered_out,
30024	num_added_func_syms_filtered_out, net_num_removed_func_syms,
30025	net_num_added_func_syms, num_added_var_syms_filtered_out,
30026	num_removed_vars_filtered_out, net_num_removed_var_syms,
30027	net_num_added_var_syms}): Define new member functions.
30028	(corpus_diff::diff_stats::num_changed_func_filtered_out): Renamed
30029	corpus_diff::diff_stats::num_func_filtered_out into this.
30030	(corpus_diff::diff_stats::num_changed_vars_filtered_out): Renamed
30031	corpus_diff::diff_stats::num_vars_filtered_out into this.
30032	(corpus_diff::diff_stats::{net_num_func_changed,
30033	net_num_vars_changed}): Adjust.
30034	(corpus_diff::priv::{suppressed_deleted_fns_,
30035	suppressed_added_fns_, suppressed_deleted_vars_,
30036	suppressed_added_vars_, suppressed_added_unrefed_fn_syms_,
30037	suppressed_deleted_unrefed_fn_syms_,
30038	suppressed_added_unrefed_var_syms_,
30039	suppressed_deleted_unrefed_fn_syms_}): New data members.
30040	(corpus_diff::priv::{apply_suppressions_to_added_removed_fns_vars,
30041	deleted_function_is_suppressed, added_function_is_suppressed,
30042	deleted_variable_is_suppressed, added_variable_is_suppressed,
30043	added_unrefed_fn_sym_is_suppressed,
30044	deleted_unrefed_fn_sym_is_suppressed,
30045	added_unrefed_var_sym_is_suppressed,
30046	deleted_unrefed_var_sym_is_suppressed}): Define member functions.
30047	(function_is_suppressed, variable_is_suppressed): Define new
30048	functions.
30049	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Compute
30050	stats for filtered added or removed functions, variables and their
30051	symbols.
30052	(corpus_diff::priv::emit_diff_stats): Emit diff stats for filtered
30053	added or removed functions, variables and symbols.
30054	(corpus_diff::report): Support suppressed reports about added or
30055	removed functions, variables and symbols.  Fixed a typo that was
30056	in there for a while.  Note that that fix requires updating some
30057	regression tests, and the part of this patch that touches
30058	regression tests does that.
30059	(apply_suppressions):  In the overload for corpus_diff, apply the
30060	suppression to added or removed functions and variables.
30061	* doc/manuals/libabigail-concepts.rst: Update this manual to
30062	reflect the changes above.  Also, perform an extensive cleanup of
30063	the manual to introduce more section titles to make it easier to
30064	navigate the document using the table of content.
30065	* tests/data/test-abicompat/test2-var-removed-report-0.txt:
30066	Adjust.
30067	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
30068	* tests/data/test-diff-dwarf/test12-report.txt: Likewise.
30069	* tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt:
30070	Likewise.
30071	* tests/data/test-diff-dwarf/test19-soname-report-0.txt: Likewise.
30072	* tests/data/test-diff-dwarf/test7-report.txt: Likewise.
30073	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
30074	* tests/data/test-diff-dwarf/test9-report.txt: Likewise.
30075	* tests/data/test-diff-dwarf/test16-syms-only-report.txt: Likewise.
30076	* tests/data/test-diff-dwarf/test17-non-refed-syms-report-0.txt:
30077	Likewise.
30078	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
30079	Likewise.
30080	* tests/data/test-diff-filter/test0-report.txt: Likewise.
30081	* tests/data/test-diff-filter/test01-report.txt: Likewise.
30082	* tests/data/test-diff-filter/test13-report.txt: Likewise.
30083	* test-diff-suppr/test15-suppr-added-fn-v0.o: Add new test
30084	material.
30085	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
30086	* tests/data/test-diff-filter/test2-report.txt: Likewise.
30087	* tests/data/test-diff-filter/test21-compatible-vars-report-0.txt:
30088	Likewise.
30089	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
30090	Likewise.
30091	* test-diff-suppr/test15-suppr-added-fn-v1.o: Likewise.
30092	* test-diff-suppr/test15-suppr-added-fn-0.suppr: Likewise.
30093	* test-diff-suppr/test15-suppr-added-fn-1.suppr: Likewise.
30094	* test-diff-suppr/test15-suppr-added-fn-2.suppr: Likewise.
30095	* test-diff-suppr/test15-suppr-added-fn-3.suppr: Likewise.
30096	* test-diff-suppr/test15-suppr-added-fn-4.suppr: Likewise.
30097	* test-diff-suppr/test15-suppr-added-fn-report-0.txt: Likewise.
30098	* test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise.
30099	* test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise.
30100	* test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise.
30101	* test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise.
30102	* test-diff-suppr/test15-suppr-added-fn-report-5.txt: Likewise.
30103	* test-diff-suppr/test15-suppr-added-fn-v0.cc: Likewise.
30104	* test-diff-suppr/test15-suppr-added-fn-v1.cc: Likewise.
30105	* test-diff-suppr/test16-suppr-removed-fn-v0.o: Likewise.
30106	* test-diff-suppr/test16-suppr-removed-fn-v1.o: Likewise.
30107	* test-diff-suppr/test16-suppr-removed-fn-0.suppr: Likewise.
30108	* test-diff-suppr/test16-suppr-removed-fn-1.suppr: Likewise.
30109	* test-diff-suppr/test16-suppr-removed-fn-2.suppr: Likewise.
30110	* test-diff-suppr/test16-suppr-removed-fn-3.suppr: Likewise.
30111	* test-diff-suppr/test16-suppr-removed-fn-4.suppr: Likewise.
30112	* test-diff-suppr/test16-suppr-removed-fn-report-0.txt: Likewise.
30113	* test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise.
30114	* test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise.
30115	* test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise.
30116	* test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise.
30117	* test-diff-suppr/test16-suppr-removed-fn-report-5.txt: Likewise.
30118	* test-diff-suppr/test16-suppr-removed-fn-v0.cc: Likewise.
30119	* test-diff-suppr/test16-suppr-removed-fn-v1.cc: Likewise.
30120	* test-diff-suppr/test17-suppr-added-var-v0.o: Likewise.
30121	* test-diff-suppr/test17-suppr-added-var-v1.o: Likewise.
30122	* test-diff-suppr/test17-suppr-added-var-0.suppr: Likewise.
30123	* test-diff-suppr/test17-suppr-added-var-1.suppr: Likewise.
30124	* test-diff-suppr/test17-suppr-added-var-2.suppr: Likewise.
30125	* test-diff-suppr/test17-suppr-added-var-3.suppr: Likewise.
30126	* test-diff-suppr/test17-suppr-added-var-4.suppr: Likewise.
30127	* test-diff-suppr/test17-suppr-added-var-report-0.txt: Likewise.
30128	* test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise.
30129	* test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise.
30130	* test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise.
30131	* test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise.
30132	* test-diff-suppr/test17-suppr-added-var-report-5.txt: Likewise.
30133	* test-diff-suppr/test17-suppr-added-var-v0.cc: Likewise.
30134	* test-diff-suppr/test17-suppr-added-var-v1.cc: Likewise.
30135	* test-diff-suppr/test18-suppr-removed-var-v0.o: Likewise.
30136	* test-diff-suppr/test18-suppr-removed-var-v1.o: Likewise.
30137	* test-diff-suppr/test18-suppr-removed-var-0.suppr: Likewise.
30138	* test-diff-suppr/test18-suppr-removed-var-1.suppr: Likewise.
30139	* test-diff-suppr/test18-suppr-removed-var-2.suppr: Likewise.
30140	* test-diff-suppr/test18-suppr-removed-var-3.suppr: Likewise.
30141	* test-diff-suppr/test18-suppr-removed-var-4.suppr: Likewise.
30142	* test-diff-suppr/test18-suppr-removed-var-report-0.txt: Likewise.
30143	* test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise.
30144	* test-diff-suppr/test18-suppr-removed-var-report-2.txt: Likewise.
30145	* test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise.
30146	* test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise.
30147	* test-diff-suppr/test18-suppr-removed-var-report-5.txt: Likewise.
30148	* test-diff-suppr/test18-suppr-removed-var-v0.cc: Likewise.
30149	* test-diff-suppr/test18-suppr-removed-var-v1.cc: Likewise.
30150	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o: New
30151	test input.
30152	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o:
30153	Likewise.
30154	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-0.suppr:
30155	Likewise.
30156	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-1.suppr:
30157	Likewise.
30158	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-2.suppr:
30159	Likewise.
30160	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-3.suppr:
30161	Likewise.
30162	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-4.suppr:
30163	Likewise.
30164	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-0.txt:
30165	Likewise.
30166	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-1.txt:
30167	Likewise.
30168	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-2.txt:
30169	Likewise.
30170	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-3.txt:
30171	Likewise.
30172	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-4.txt:
30173	Likewise.
30174	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-5.txt:
30175	Likewise.
30176	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v0.cc:
30177	Likewise.
30178	* tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v1.cc:
30179	Likewise.
30180	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o:
30181	Likewise.
30182	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o:
30183	Likewise.
30184	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-0.suppr:
30185	Likewise.
30186	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-1.suppr:
30187	Likewise.
30188	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-2.suppr:
30189	Likewise.
30190	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-3.suppr:
30191	Likewise.
30192	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-4.suppr:
30193	Likewise.
30194	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-0.txt:
30195	Likewise.
30196	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-1.txt:
30197	Likewise.
30198	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-2.txt:
30199	Likewise.
30200	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-3.txt:
30201	Likewise.
30202	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-4.txt:
30203	Likewise.
30204	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-5.txt:
30205	Likewise.
30206	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.cc:
30207	Likewise.
30208	* tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.cc:
30209	Likewise.
30210	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-v0.o:
30211	Likewise.
30212	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-v1.o:
30213	Likewise.
30214	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-0.suppr:
30215	Likewise.
30216	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-1.suppr:
30217	Likewise.
30218	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-2.suppr:
30219	Likewise.
30220	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-3.suppr:
30221	Likewise.
30222	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-4.suppr:
30223	Likewise.
30224	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-0.txt:
30225	Likewise.
30226	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-1.txt:
30227	Likewise.
30228	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-2.txt:
30229	Likewise.
30230	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-3.txt:
30231	Likewise.
30232	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-4.txt:
30233	Likewise.
30234	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-5.txt:
30235	Likewise.
30236	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-v0.cc:
30237	Likewise.
30238	* tests/data/test-diff-suppr/test21-suppr-added-var-sym-v1.cc:
30239	Likewise.
30240	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o:
30241	Likewise.
30242	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o:
30243	Likewise.
30244	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-0.suppr:
30245	Likewise.
30246	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-1.suppr:
30247	Likewise.
30248	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-2.suppr:
30249	Likewise.
30250	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-3.suppr:
30251	Likewise.
30252	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-4.suppr:
30253	Likewise.
30254	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-0.txt:
30255	Likewise.
30256	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-1.txt:
30257	Likewise.
30258	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-2.txt:
30259	Likewise.
30260	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-3.txt:
30261	Likewise.
30262	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-4.txt:
30263	Likewise.
30264	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-5.txt:
30265	Likewise.
30266	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v0.cc:
30267	Likewise.
30268	* tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v1.cc:
30269	Likewise.
30270	* tests/data/Makefile.am: Add the new test materials above to source
30271	distribution.
30272	* tests/test-diff-suppr.cc (in_out_specs): Add the new tests
30273	material above to the list of test inputs this harness has to run
30274	over.
30275
302762015-06-22  Dodji Seketeli <dodji@redhat.com>
30277
30278	Do not compare static data members when comparing types
30279	* include/abg-ir.h (class_decl::get_non_static_data_members):
30280	Declare new data members.
30281	* src/abg-comparison.cc
30282	(class_diff::ensure_lookup_tables_populated): Only look at
30283	non-static data members.
30284	(compute_diff): In the overload for class_decl, only compare
30285	non-static data members.
30286	* src/abg-hash.cc (class_decl::hash::operator()): Do not hash
30287	static data members members hashing a class_decl.
30288	* src/abg-ir.cc (class_decl::priv::data_members_): New data
30289	member.
30290	(class_decl::priv::priv): When initializing data members, store
30291	the non-static data members on the side, in the new
30292	class_decl::priv::non_static_data_members_ data member.
30293	(class_decl::get_non_static_data_members): Define member function.
30294	(class_decl::add_data_member): Store the non-static data members
30295	on the side in class_decl::priv::non_static_data_members_.
30296	(equals): In the overload for class_decl, do not take in account
30297	static data members when running the comparison.
30298	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
30299	* tests/data/test-diff-filter/test12-report.txt: Adjust.
30300
303012015-06-23  Dodji Seketeli <dodji@redhat.com>
30302
30303	Add a --suppr short alias to the --suppressions option of abidiff
30304	* tools/abidiff.cc (display_usage): Add a help string for the new
30305	--suppr option.
30306	(parse_command_line): Support the --suppr option which is an alias
30307	for --suppressions.
30308
303092015-06-23  Dodji Seketeli <dodji@redhat.com>
30310
30311	Enable large file support
30312	* configure.ac: Call the AC_SYS_LARGEFILE autoconf macro.
30313	* config.h.in: Update.
30314
303152015-06-23  Dodji Seketeli <dodji@redhat.com>
30316
30317	Do not build zip archive support by default
30318	* configure.ac: By default, unconditionally disable the
30319	zip-archive support.
30320
303212015-06-23  Dodji Seketeli <dodji@redhat.com>
30322
30323	Put the man pages of the binaries in section 1
30324	* doc/manuals/Makefile.am(section1_manpages, section7_manpages):
30325	Two new variables to contain the man page names per section.
30326	(manpages): Set this variable to $section1_manpages and $section7_manpages.
30327	(install-man-and-info-doc): In this rule, create the destination
30328	directories for section 1 and 7 and copy the right man pages in
30329	their right directory.
30330	* doc/manuals/conf.py (man_pages): Generate the binary man pages
30331	into section 1 and the libabigail man page into section 7.
30332
303332015-06-23  Dodji Seketeli <dodji@redhat.com>
30334
30335	Sort deleted/added variables and symbols before emitting report
30336	* src/abg-comparison.cc (sort_string_var_ptr_map)
30337	(sort_string_elf_symbol_map): Define new static functions.
30338	(var_comp, elf_symbol_comp): Define new comparison functors.
30339	(corpus_diff::report): Sort the deleted variables, added
30340	variables, deleted function symbols, added function symbols,
30341	deleted variable symbols, and added variable symbols before
30342	walking them to emit reports.
30343
303442015-06-23  Dodji Seketeli <dodji@redhat.com>
30345
30346	Remove useless white space
30347	* src/abg-comparison.cc (sort_string_parm_map): Remove trailing
30348	white space from comment.
30349
303502015-06-23  Dodji Seketeli <dodji@redhat.com>
30351
30352	Bug 18580 - abidw ignores --out-file
30353	* tools/abidw.cc (main): Take the argument of --out-file into
30354	account when emitting the serialized form of the ABI.
30355
303562015-06-23  Dodji Seketeli <dodji@redhat.com>
30357
30358	Fix a thinko in the comparison code
30359	* src/abg-comparison.cc
30360	(class_diff::ensure_lookup_tables_populated): Ensure that when a
30361	member function is wrongly considered as being added, then either
30362	the new member function doesn't have a symbol name (linkage name)
30363	or it has one, and it was already present in the first version of
30364	the binary.
30365	# Veuillez saisir le message de validation pour vos
30366	modifications. Les lignes # commençant par '#' seront ignorées, et
30367	un message vide abandonne la validation.  # Sur la branche
30368	fix-master # Votre branche est à jour avec 'origin/master'.  # #
30369	Modifications qui seront validées : # modified:
30370	src/abg-comparison.cc # # Modifications qui ne seront pas validées
30371	: # modified: tools/abidw.cc # # Fichiers non suivis: # abidw.abi
30372	# build/ # depcomp # missing # patch-edited.txt # patch.txt #
30373	prtests/ # test-driver # # ------------------------ >8
30374	------------------------ # Ne touchez pas à la ligne ci-dessus #
30375	Tout se qui suit sera éliminé.
30376	diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc
30377	index 14208f5..ef7c6c9 100644
30378	--- a/src/abg-comparison.cc
30379	+++ b/src/abg-comparison.cc
30380	@@ -7419,8 +7419,8 @@ class_diff::ensure_lookup_tables_populated(void) const
30381	inserted_member_fns().begin();
30382	i != inserted_member_fns().end();
30383	++i)
30384	-	if (i->second->get_symbol()
30385	-	    && f->lookup_function_symbol(i->second->get_symbol()->get_name(),
30386	+	if (!i->second->get_symbol()
30387	+	    || f->lookup_function_symbol(i->second->get_symbol()->get_name(),
30388	i->second->get_symbol()->get_version().str()))
30389	to_delete.push_back(i->first);
30390
303912015-06-07  Dodji Seketeli <dodji@redhat.com>
30392
30393	Build libabigail tests with position-independent code
30394	* tests/Makefile.am: Add -fPIC to the compile flags.
30395
303962015-06-07  Dodji Seketeli <dodji@redhat.com>
30397
30398	Build libabigail tools as position-independent code
30399	* tools/Makefile.am: Compile the binaries here with -fPIC.  Note
30400	that the library libabigail.la is built with libtool which already
30401	takes care of this, so no need to worry about this for
30402	libabigail.la.
30403
304042015-06-07  Dodji Seketeli <dodji@redhat.com>
30405
30406	Update ChangeLog file
30407	* ChangeLog: Update this automatically by typing make
30408	update-changelog.
30409
304102015-06-07  Dodji Seketeli <dodji@redhat.com>
30411
30412	Avoid infinite loop in elf_symbol::get_alias_from_name()
30413	* src/abg-ir.cc (elf_symbol::get_alias_from_name)
30414	(elf_symbol::get_alias_which_equals): Test for the next alias
30415	pointing to the main symbol, in the loop exit condition.
30416
304172015-06-04  Dodji Seketeli <dodji@redhat.com>
30418
30419	Change the linkage name only when necessary
30420	* include/abg-ir.h (elf_symbol::get_alias_from_name): Declare new
30421	member function.
30422	* src/abg-ir.cc (elf_symbol::get_alias_from_name): Define it.
30423	* src/abg-dwarf-reader.cc (build_var_decl, build_function_decl):
30424	Once the linkage name is supposed to contain the value of the
30425	DW_AT_linkage_name attribute, set it the name of the underlying
30426	symbol only if value of DW_At_linkage_name is missing or different
30427	from the names of all the aliases of the underlying symbol.
30428	* tests/data/test-read-dwarf/test2.so.abi: Adjust.
30429
304302015-06-04  Dodji Seketeli <dodji@redhat.com>
30431
30432	Various white space cleanups
30433	* include/abg-comparison.h: Remove various useless vertical white
30434	spaces.
30435	* tests/test-diff-dwarf.cc (in_out_spec): Fix indentation of some
30436	entries.
30437
304382015-06-04  Dodji Seketeli <dodji@redhat.com>
30439
30440	Fix various comments here and there
30441	* src/abg-comparison.cc
30442	(diff_context::set_or_get_canonical_diff_for, compute_diff)
30443	(redundancy_marking_visitor::visit_begin): Fix comment in these
30444	functions.
30445	* src/abg-ir.cc (elf_symbol::is_variable): Likewise.
30446
304472015-06-04  Dodji Seketeli <dodji@redhat.com>
30448
30449	Add missing apidoc to elf_symbol type
30450	* src/abg-ir.cc (elf_symbol::{elf_symbol, get_name, set_name,
30451	get_type, set_type, get_binding, set_binding, get_version,
30452	is_defined, is_public, is_function, is_variable}): Add missing
30453	apidoc to these member functions.
30454
304552015-06-04  Dodji Seketeli <dodji@redhat.com>
30456
30457	Cleanup logic in class_diff::ensure_lookup_tables_populated()
30458	* src/abg-comparison.cc
30459	(class_diff::ensure_lookup_tables_populated): Remove the code that
30460	tries to lookup allegedly added functions from the set of deleted
30461	ones, by using the pretty printed name of the function.  Handling
30462	the case of a function decl not correctly tied to it symbol is
30463	handled my generically a bit later in this function.
30464
304652015-06-04  Dodji Seketeli <dodji@redhat.com>
30466
30467	Report possible changes in the set of aliases of a symbol.
30468	* src/abg-comparison.cc (function_decl_diff::report): Report
30469	a change in the aliases of the symbols of a function; note that
30470	everything else but have stayed equal in the function.
30471
304722015-06-04  Dodji Seketeli <dodji@redhat.com>
30473
30474	Report vtable changes in top-level function change reports
30475	* src/abg-comparison.cc (function_decl_diff::report): Report about
30476	virtual-ness and vtable offset changes.
30477	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
30478	New test input file.
30479	* tests/data/test-diff-dwarf/test28-vtable-changes-v{0,1}.o: New
30480	test input binaries.
30481	* tests/data/test-diff-dwarf/test28-vtable-changes-v{0,1}.cc:
30482	Source code of the input binaries above.
30483	* tests/data/Makefile.am: Add the new test input above to source
30484	distribution.
30485	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test input
30486	above to the list of input this test harness has to run over.
30487
304882015-06-03  Dodji Seketeli <dodji@redhat.com>
30489
30490	Support new 'accessed_through' suppression property
30491	* include/abg-comparison.h (enum type_suppression::reach_kind):
30492	Define new enum.
30493	(type_suppression::{get_consider_reach_kind,
30494	set_consider_reach_kind, get_reach_kind,
30495	mark_last_diff_visited_per_class_of_equivalence,
30496	clear_last_diffs_visited_per_class_of_equivalence,
30497	get_last_visited_diff_of_class_of_equivalence}): Declare new
30498	member functions.
30499	* src/abg-comparison.cc (diff_has_ancestor_filtered_out)
30500	(read_suppression_reach_kind): Define static function.
30501	(type_suppression::priv::{consider_reach_kind_, reach_kind_}):
30502	Define new data members.
30503	(type_suppression::priv::priv): Take a new reach_kind parameter.
30504	(type_suppression::type_suppression): Adjust to new prototype of
30505	priv constructor.
30506	(type_suppression::{get_consider_reach_kind,
30507	set_consider_reach_kind, get_reach_kind, set_reach_kind}): Define
30508	new member functions.
30509	(type_suppression::suppresses_diff): Interpret the result of
30510	type_suppression::get_reach_kind() to determine if the suppression
30511	specification suppresses a given diff node.
30512	(read_type_suppression): Support reading the content of the
30513	"accessed_through" property.
30514	(diff_context::priv::last_visited_diff_node_): New data member.
30515	(diff_context::{mark_last_diff_visited_per_class_of_equivalence,
30516	clear_last_diffs_visited_per_class_of_equivalence,
30517	get_last_visited_diff_of_class_of_equivalence}): Define new data
30518	members.
30519	(redundancy_marking_visitor::visit_begin): So if the current diff
30520	node has already been visited, but if the previously visited node
30521	has been filtered out, then do not mark this node as being
30522	redundant.  And mark the current diff node as being the last
30523	visited one in its class of equivalence.
30524	(categorize_redundancy): Clear the map of diff nodes visited per
30525	class of equivalence.
30526	* doc/manuals/libabigail-concepts.rst: Document the new
30527	'accessed_through' property.
30528	* tests/data/test-diff-suppr/test13-suppr-through-pointer-0.suppr:
30529	New test input data.
30530	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-{0,1}.txt:
30531	Likewise.
30532	* tests/data/test-diff-suppr/libtest13-suppr-through-pointer-v{0,1}.so:
30533	New test input binaries.
30534	* tests/data/test-diff-suppr/test13-suppr-through-pointer-v{0,1}.cc:
30535	Source code of the test input binaries above.
30536	* tests/data/test-diff-suppr/test14-suppr-non-redundant-0.suppr:
30537	New test input data.
30538	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt:
30539	Likewise.
30540	* tests/data/test-diff-suppr/test14-suppr-non-redundant-v{0,1}.o:
30541	New test input binaries.
30542	* tests/data/test-diff-suppr/test14-suppr-non-redundant-v{0,1}.cc:
30543	Source code of the binaries above.
30544
305452015-06-03  Dodji Seketeli <dodji@redhat.com>
30546
30547	Fix redundancy marking for change of types used directly
30548	* include/abg-comparison.h (pointer_map): Make this be a map of
30549	{size_t, size_t} pairs, rather than {size_t, bool}, so that each
30550	pointer in the map can be associated to another one.
30551	(diff_context::diff_has_been_visited): Return the pointer to the
30552	first diff node of the equivalence class that has been visited.
30553	* src/abg-comparison.cc (is_pointer_diff, is_reference_diff)
30554	(is_reference_or_pointer_diff, is_fn_parm_diff, is_base_diff)
30555	(is_child_node_of_function_parm_diff, is_child_node_of_base_diff):
30556	Define new static functions.
30557	(diff_context::diff_has_been_visited): Return the pointer to the
30558	first diff node of the equivalence class that has been visited.
30559	(diff_context::mark_diff_as_visited): Save the pointer to the
30560	first diff node of a given class of equivalence that has been
30561	visited.
30562	(redundancy_marking_visitor::visit_begin): If a diff node is a
30563	child node of a function parameter diff or base diff node and if
30564	it's not a pointer or reference diff node, then do not mark it as
30565	redundant.  Also, make sure to not mark the first diff node of a
30566	given class of equivalence that has been visited, as redundant;
30567	only the other subsequent nodes should be marked redundant; we
30568	were hitting this case because of an optimization that makes
30569	equivalent class diff nodes to share their private (pimpl) data.
30570	* tests/data/test-diff-filter/test29-finer-redundancy-marking-v{0,1}.o:
30571	New test input binaries.
30572	* tests/data/test-diff-filter/test29-finer-redundancy-marking-v{0,1}.cc:
30573	Source code of the new test input binaries above.
30574	* tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt:
30575	New test input.
30576	* tests/data/Makefile.am: Add the new test material above to the
30577	source distribution.
30578	* tests/test-diff-filter.cc (in_out_specs): Make this test harness
30579	run over the additional test input above.
30580	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
30581
305822015-06-02  Dodji Seketeli <dodji@redhat.com>
30583
30584	Fix detection of local changes in base classes
30585	* abg-ir.cc (equals): In the overload of class_decl::base_spec, if
30586	the underlying class carries changes, then do not flag these
30587	changes as local for the class_decl::base_spec.
30588	* tests/data/test-diff-dwarf/test27-local-base-diff-v{0,1}.o: New
30589	test input binaries.
30590	* tests/data/test-diff-dwarf/test27-local-base-diff-v{0,1}.cc: Source
30591	code for the test input binaries above.
30592	* tests/data/test-diff-dwarf/test27-local-base-diff-report.txt:
30593	New test input.
30594	* tests/data/Makefile.am: Add the test inputs above to source
30595	distribution.
30596
305972015-06-02  Dodji Seketeli <dodji@redhat.com>
30598
30599	Fix symbols comparison
30600	* include/abg-ir.h (elf_symbol_wptr): New typedef.
30601	(elf_symbol): Make the constructors and assignment operator
30602	private.  The type can neither be copied nor created with the new
30603	operator.
30604	(elf_symbol::create): New static member function.
30605	(elf_symbol::{get_main_symbol, get_next_alias, add_alias}):
30606	Adjust.
30607	( compute_aliases_for_elf_symbol): Likewise.
30608	(elf_symbol::operator=): Make this private.
30609	(elf_symbol::get_alias_which_equals): Declare new member function.
30610	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
30611	Adjust.
30612	* src/abg-comparison.cc
30613	(class_diff::ensure_lookup_tables_populated): Adjust.
30614	* src/abg-corpus.cc
30615	(corpus::priv::build_unreferenced_symbols_tables): Likewise.
30616	* include/abg-dwarf-reader.h (lookup_symbol_from_elf)
30617	(lookup_public_function_symbol_from_elf): Adjust.
30618	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
30619	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_elf_hash_tab)
30620	(lookup_symbol_from_symtab, lookup_symbol_from_elf)
30621	(lookup_public_function_symbol_from_elf)
30622	(lookup_public_variable_symbol_from_elf): Adjust.
30623	(read_context::lookup_elf_symbol_from_index): Likewise.
30624	(read_context::lookup_elf_fn_symbol_from_address): Likewise.
30625	(read_context::lookup_elf_var_symbol_from_address): Likewise.
30626	(read_context::lookup_public_function_symbol_from_elf): Likewise.
30627	(read_context::lookup_public_variable_symbol_from_elf): Likewise.
30628	(read_context::load_symbol_maps): Likewise.
30629	(build_var_decl, build_function_decl): Likewise.
30630	* src/abg-ir.cc (elf_symbol::priv::{main_symbol_, next_alias_}):
30631	Change the type of these from elf_symbol* to elf_symbol_wptr.
30632	(elf_symbol::priv::priv): Adjust.
30633	(elf_symbol::{create, get_alias_which_equals}): Define new functions.
30634	(textually_equals): Likewise.
30635	(elf_symbol::{get_main_symbol, is_main_symbol, get_next_alias,
30636	add_alias}): Adjust to return or take elf_symbol_sptr type, rather
30637	than a elf_symbol* one.
30638	(elf_symbol::{get_aliases_id_string, does_alias}): Adjust.
30639	(compute_alias_for_elf_symbol): Likewise.
30640	(elf_symbol::operator==): Two symbols A and B are now equal if A
30641	has at least one alias that is textually equal to B.
30642	(equals): In the overload for function_decls, in the part where we
30643	compare the decl_base part of the functions without considering
30644	their decl names, we now also omit considering their linkage
30645	names, because we compared they symbols before.
30646	* tools/abisym.cc (main): Adjust.
30647	* tests/data/test-diff-dwarf/test12-report.txt: Adjust.
30648	* tests/data/test-diff-dwarf/test12-report.txt: Adjust.
30649	* tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: Adjust.
30650	* tests/data/test-diff-dwarf/test8-report.txt: Adjust.
30651	* tests/data/test-diff-filter/test10-report.txt: Adjust.
30652	* tests/data/test-diff-filter/test13-report.txt: Adjust.
30653	* tests/data/test-diff-filter/test2-report.txt: Adjust.
30654	* tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
30655	* tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust.
30656	* tests/data/test-diff-filter/test9-report.txt: Adjust.
30657
306582015-04-22  Dodji Seketeli <dodji@redhat.com>
30659
30660	Support specifying data member insertion in suppressions
30661	* include/abg-comparison.h (type_suppression::insertion_range):
30662	Declare new type.
30663	(type_suppression::insertion_ranges): Declare new typedef.
30664	(type_suppression::{s,g}et_data_member_insertion_ranges): Declare
30665	new member functions.
30666	(is_integer_boundary, is_fn_call_expr_boundary): Declare new
30667	functions.
30668	(type_suppression::insertion_range::{boundary, integer_boundary,
30669	fn_call_expr_boundary}): Define new types.
30670	* src/abg-comparison.cc:
30671	(struct type_suppression::insertion_range::priv): New type.
30672	(type_suppression::insertion_range::{insertion_range, begin,
30673	end}): Define new member functions.
30674	(type_suppression::priv::insertion_ranges_): Add data member.
30675	(type_suppression::{s,g}et_data_member_insertion_ranges): Define
30676	new member functions.
30677	(type_suppression::insertion_range::boundary::priv): Define new
30678	type.
30679	(type_suppression::insertion_range::boundary::{boundary,
30680	~boundary}): Define new member functions.
30681	(type_suppression::insertion_range::integer_boundary::priv):
30682	Define new type.
30683	(type_suppression::insertion_range::integer_boundary::{integer_boundary,
30684	as_integer, operator int, ~integer_boundary}): Define member
30685	functions.
30686	(type_suppression::insertion_range::fn_call_expr_boundary::priv):
30687	Define new type.
30688	(type_suppression::insertion_range::fn_call_expr_boundary::{fn_call_expr_boundary,
30689	as_function_call_expr, operator ini::function_call_expr_sptr}):
30690	Define new member functions.
30691	(type_suppression::insertion_range::{create_integer_boundary,
30692	type_suppression::insertion_range::create_fn_call_expr_boundary,
30693	type_suppression::insertion_range::eval_boundary}): Define new
30694	member functions.
30695	(is_integer_boundary, is_fn_call_expr_boundary): Define new
30696	functions.
30697	(read_type_suppression, read_function_suppression)
30698	(read_variable_suppression): Support the new kinds of
30699	property-related types. Aslo, in read_type_suppression, support
30700	the new properties has_data_member_inserted_at,
30701	has_data_member_inserted_between and
30702	has_data_members_inserted_between.
30703	(type_suppression::suppresses_diff): If we are looking at a type
30704	diff node that has inserted data members, evaluate the insertion
30705	ranges of the current type_suppression and see if they match the
30706	inserted data members.
30707	* include/abg-ini.h (property, simple_property, property_value)
30708	(string_property_value, tuple_property_value, function_call_expr):
30709	Declare new types.
30710	(property_sptr, property_value_sptr, string_property_value_sptr)
30711	(tuple_property_value_sptr): Declare new typedefs.
30712	(is_string_property_value, is_tuple_property_value)
30713	(is_simple_property, is_tuple_property, read_function_call_expr):
30714	Declare new functions.
30715	* src/abg-ini.cc (char_is_white_space, char_is_comment_start)
30716	(char_is_delimiter, char_is_property_value_char)
30717	(char_is_section_name_char, char_is_property_name_char)
30718	(char_is_comment_start, char_is_white_space)
30719	(remove_trailing_white_spaces, is_string_property_value)
30720	(is_tuple_property_value, is_simple_property, is_tuple_property)
30721	(write_property_value, char_is_function_name_char)
30722	(char_is_function_argument_char): Define new functions.
30723	(property::priv, tuple_property_value::priv)
30724	(simple_property::priv, tuple_property::priv): Define new types.
30725	(property::{property, get_name, set_name, ~property}): Define new
30726	member functions.
30727	(struct property_value::priv): Define new type.
30728	(property_value::{property_value, get_kind, operator const
30729	string&(), ~property_value}): Define new member functions.
30730	(struct string_property_value::priv): Define new type.
30731	(string_property_value::{string_property_value, set_content,
30732	as_string, operator string()}, ~string_property_value): Define new
30733	member functions.
30734	(tuple_property_value::{tuple_property_value, get_value_items,
30735	~tuple_property_value, as_string}): Likewise.
30736	(simple_property::{simple_property, get_value, set_value,
30737	~simple_property}): Likewise.
30738	(tuple_property::{tuple_property, set_value, get_value}):
30739	Likewise.
30740	(config::section::find_property): Adjust return type.
30741	(read_context::{char_is_delimiter, char_is_property_value_char,
30742	char_is_section_name_char, char_is_property_name_char,
30743	char_is_comment_start, char_is_white_space}): Remove these from
30744	here as they got moved them to be non-member functions above.
30745	(read_context::read_property_value): Return a property_value_sptr
30746	and do not take any parameter anymore.
30747	(read_context::{read_string_property_value,
30748	read_tuple_property_value, read_function_name,
30749	read_function_argument, read_function_call_expr}): Define new
30750	member functions.
30751	(read_context::read_property): Adjust return type.  Also, change to read
30752	the different new kinds of properties values.
30753	(function_call_expr::priv): Define new type.
30754	(function_call_expr::{function_call_expr, get_name,
30755	get_arguments}): New member functions.
30756	(read_context::read_section): Adjust.
30757	(write_property, write_section): Adjust.
30758	* tests/data/test-diff-suppr/libtest{11,12}-add-data-member-v{0,1}.so:
30759	New test input binaries.
30760	* tests/data/test-diff-suppr/test{11,12}-add-data-member-{0,1}.suppr:
30761	New input suppression files.
30762	* tests/data/test-diff-suppr/test11-add-data-member-{2,3,4}.suppr:
30763	Add new test input files.
30764	* tests/data/test-diff-suppr/test{11,12}-add-data-member-report-{0,1}.txt:
30765	New reference output files.
30766	* tests/data/test-diff-suppr/test12-add-data-member-report-2.txt:
30767	Likewise.
30768	* tests/data/test-diff-suppr/test{11,12}-add-data-member-v{0,1}.cc:
30769	Source code for the new binaries above.
30770	* tests/test-diff-suppr.cc (in_out_specs): Add new test inputs.
30771	* tests/data/Makefile.am: Add the new test related files above to
30772	source distribution.
30773	* doc/manuals/libabigail-concepts.rst: Document the new properties
30774	has_data_member_inserted_at, has_data_member_inserted_between and
30775	has_data_members_inserted_between.
30776
307772015-05-24  Dodji Seketeli <dodji@redhat.com>
30778
30779	Make indexes of function parameters start at 1
30780	* src/abg-ir.cc (function_type::function_type): Starts the index
30781	of the parameters at 1, unless the firs parameter is an artificial
30782	one, in which case it starts at 0.
30783	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust.
30784	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
30785	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
30786	* tests/data/test-diff-dwarf/test10-report.txt: Adjust.
30787	* tests/data/test-diff-dwarf/test11-report.txt: Adjust.
30788	* tests/data/test-diff-dwarf/test13-report.txt: Adjust.
30789	* tests/data/test-diff-dwarf/test15-enum-report.txt: Adjust.
30790	* tests/data/test-diff-dwarf/test2-report.txt: Adjust.
30791	* tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: Adjust.
30792	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Adjust.
30793	* tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Adjust.
30794	* tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt: Adjust.
30795	* tests/data/test-diff-dwarf/test25-removed-fn-parms-report-0.txt: Adjust.
30796	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Adjust.
30797	* tests/data/test-diff-dwarf/test4-report.txt: Adjust.
30798	* tests/data/test-diff-dwarf/test6-report.txt: Adjust.
30799	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
30800	* tests/data/test-diff-dwarf/test8-report.txt: Adjust.
30801	* tests/data/test-diff-filter/test0-report.txt: Adjust.
30802	* tests/data/test-diff-filter/test01-report.txt: Adjust.
30803	* tests/data/test-diff-filter/test1-report.txt: Adjust.
30804	* tests/data/test-diff-filter/test10-report.txt: Adjust.
30805	* tests/data/test-diff-filter/test13-report.txt: Adjust.
30806	* tests/data/test-diff-filter/test14-0-report.txt: Adjust.
30807	* tests/data/test-diff-filter/test14-1-report.txt: Adjust.
30808	* tests/data/test-diff-filter/test16-report-2.txt: Adjust.
30809	* tests/data/test-diff-filter/test16-report.txt: Adjust.
30810	* tests/data/test-diff-filter/test17-0-report.txt: Adjust.
30811	* tests/data/test-diff-filter/test17-1-report.txt: Adjust.
30812	* tests/data/test-diff-filter/test18-report.txt: Adjust.
30813	* tests/data/test-diff-filter/test19-enum-report-1.txt: Adjust.
30814	* tests/data/test-diff-filter/test2-report.txt: Adjust.
30815	* tests/data/test-diff-filter/test22-compatible-fns-report-0.txt: Adjust.
30816	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: Adjust.
30817	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Adjust.
30818	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Adjust.
30819	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Adjust.
30820	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Adjust.
30821	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Adjust.
30822	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Adjust.
30823	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Adjust.
30824	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Adjust.
30825	* tests/data/test-diff-filter/test3-report.txt: Adjust.
30826	* tests/data/test-diff-filter/test9-report.txt: Adjust.
30827	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Adjust.
30828	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Adjust.
30829	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Adjust.
30830	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Adjust.
30831	* tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Adjust.
30832	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Adjust.
30833	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Adjust.
30834	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Adjust.
30835	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Adjust.
30836	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Adjust.
30837	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Adjust.
30838	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
30839	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Adjust.
30840	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Adjust.
30841	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Adjust.
30842	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Adjust.
30843	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Adjust.
30844	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Adjust.
30845	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Adjust.
30846	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Adjust.
30847	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Adjust.
30848	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Adjust.
30849	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Adjust.
30850	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Adjust.
30851	* tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Adjust.
30852
308532015-05-22  Dodji Seketeli <dodji@redhat.com>
30854
30855	Some wording fixes to doc/manuals/libabigail-concepts.rst
30856	* doc/manuals/libabigail-concepts.rst: Some light wording fixes.
30857
308582015-05-24  Dodji Seketeli <dodji@redhat.com>
30859
30860	Type read from DWARF don't have alignment information
30861	* src/abg-dwarf-reader.cc (build_type_decl)
30862	(build_class_type_and_add_to_ir, build_pointer_type_def)
30863	(build_reference_type, build_function_decl): Set the alignment for
30864	native types, class, reference and function type to zero,
30865	effectively meaning that they don't have alignment information.
30866	* src/abg-hash.cc (var_decl::hash::operator): Take the hash value
30867	of the data member context in account when computing the hash
30868	value of a given data member.
30869	* tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt:
30870	Adjust.
30871	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
30872	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
30873	* tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise.
30874	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Likewise.
30875	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
30876	* tests/data/test-diff-dwarf/test9-report.txt: Likewise.
30877	* tests/data/test-diff-filter/test13-report.txt: Likewise.
30878	* tests/data/test-diff-filter/test6-report.txt: Likewise.
30879	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise.
30880	* tests/data/test-read-dwarf/test0.abi: Likewise.
30881	* tests/data/test-read-dwarf/test1.abi: Likewise.
30882	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
30883	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
30884	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
30885	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
30886	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
30887	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
30888	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
30889
308902015-05-06  Dodji Seketeli <dodji@redhat.com>
30891
30892	Better name ID function parameters
30893	* src/abg-ir.cc (function_decl::parameter::get_name_id): Make this
30894	be "parameter-<index>".
30895
308962015-05-06  Dodji Seketeli <dodji@redhat.com>
30897
30898	Better detection of parameter sub-type changes
30899	* include/abg-fwd.h (type_has_sub_type_changes): Declare new
30900	function.
30901	* src/abg-ir.cc (type_has_sub_type_changes): Define it.
30902	* src/abg-comparison.cc (fn_parm_diff::report): Use the new
30903	function type_has_sub_type_changes() instead of just looking at
30904	name changes.
30905	* tests/data/test-diff-dwarf/test4-report.txt: Adjust this
30906	reference test output.
30907
309082015-05-06  Dodji Seketeli <dodji@redhat.com>
30909
30910	Fix a potential crash when comparing variadic parameters again
30911	* src/abg-comparison.cc (redundancy_marking_visitor::visit_begin):
30912	Avoid flagging diffs of variadic parameter *types* as redundant as
30913	well.
30914
309152015-05-06  Dodji Seketeli <dodji@redhat.com>
30916
30917	Add debugging function for function parameters
30918	* include/abg-ir.h
30919	(function_decl::parameter::get_pretty_representation): Declare new
30920	virtual member function.
30921	* src/abg-ir.cc
30922	(function_decl::parameter::get_pretty_representation): Define it.
30923
309242015-05-06  Dodji Seketeli <dodji@redhat.com>
30925
30926	Add comments
30927	* src/abg-dwarf-reader.cc (build_function_decl): Add comments when
30928	building the function parameters.
30929
309302015-05-06  Dodji Seketeli <dodji@redhat.com>
30931
30932	Add a debugging function for type_or_decl_base*
30933	* include/abg-fwd.h (get_pretty_representation): Declare new
30934	overload for type_or_decl_base*.
30935	* src/abg-ir.cc (get_pretty_representation): Define it and express
30936	the previous overload for type_or_decl_base_sptr in terms of this
30937	new one.
30938
309392015-05-05  Dodji Seketeli <dodji@redhat.com>
30940
30941	Return a reference to smart pointer for the void type node
30942	* src/abg-ir.h (type_decl::get_void_type_decl): Return a reference
30943	to the smart pointer initially returned.
30944	* src/abg-ir.cc (type_decl::get_void_type_decl): Likewise.
30945
309462015-05-05  Dodji Seketeli <dodji@redhat.com>
30947
30948	Bug 18342 - Segmentation fault while comparing functions with variadic parameters
30949	* include/abg-fwd.h (is_array_type): New overload for a naked
30950	pointer.
30951	* include/abg-ir.h (type_decl::get_variadic_parameter_type_decl): Declare new
30952	static function.
30953	* src/abg-ir.cc (is_array_type): Define new function overload for
30954	naked pointers
30955	(type_decl::get_variadic_parameter_type_decl): Define new static
30956	function.
30957	* src/abg-dwarf-reader.cc (build_function_decl): The type of
30958	variadic parameter is now a special type_decl.
30959	* include/abg-comparison.h (is_diff_of_variadic_parameter_type)
30960	(is_diff_of_variadic_parameter): New function declarations.
30961	* src/abg-comparison.cc (is_diff_of_variadic_parameter_type)
30962	(is_diff_of_variadic_parameter): Define new functions.
30963	(compute_diff): Refuse to return a NULL
30964	diff for types.  Assert that the parameters are non-NULL.
30965	(report_size_and_alignment_changes): We are comparing arrays only
30966	if the two parameters are arrays.
30967	(fn_parm_diff::fn_parm_diff): Refuse that type diff for this diff
30968	node is non empty.
30969	(fn_parm_diff::report): Strengthen an assert.  Cleanup a comment.
30970	(redundancy_marking_visitor::visit_begin): Do not mark function
30971	type and variadic parms diff nodes as redundant for local changes.
30972	* tests/data/test-diff-dwarf/libtest26-added-parms-before-variadic-v{0,1}.so:
30973	New test input binaries.
30974	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt:
30975	New test output reference.
30976	* tests/data/test-diff-dwarf/test26-added-parms-before-variadic-v{0,1}.c:
30977	Source code of the new test input binaries above.
30978	* tests/data/Makefile.am: Add the new test stuff to source
30979	distribution.
30980	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs
30981	above to the set of input to run this test harness over.
30982
309832015-04-24  Dodji Seketeli <dodji@redhat.com>
30984
30985	Fix archive writing support
30986	* configure.ac: Require libzip 0.10.1 at least.
30987	* src/abg-writer.cc (archive_write_ctxt::serialized_tus): Make
30988	this be a list<string>, rather than a vector<string>.
30989	(create_archive_write_context): Truncate the archive if it exists
30990	already.
30991	(write_translation_unit_to_archive): Do not use the deprecated
30992	zip_add() function anymore.  Rather, use zip_file_add().
30993	* tests/test-write-read-archive.cc (main): Double check if the
30994	translation unit we read is empty or not.
30995
309962015-04-22  Dodji Seketeli <dodji@redhat.com>
30997
30998	Use a better wording for the COPYING file
30999	* COPYING: Update to a more complete description.
31000
310012015-04-20  Dodji Seketeli <dodji@redhat.com>
31002
31003	Update licence texts
31004	* COPYING: Of course we know the licence we want to use now :-)
31005	* COPYING-GPLV3: Add the text of GPLv3.
31006	* Makefile.am: Add the file COPYING-GPLV3 above to source
31007	distribution.
31008
310092015-04-15  Dodji Seketeli <dodji@redhat.com>
31010
31011	18252 - Added parameters are not properly sorted
31012	* src/abg-comparison.cc (sort_string_parm_map): Define new static
31013	function.
31014	(struct parm_comp): Define new type.
31015	(function_type_diff::priv::{sorted_deleted_parms_,
31016	sorted_added_parms_}): New data members that hold sorted
31017	deleted/added parameters.
31018	(function_type_diff::ensure_lookup_tables_populated): Initialize
31019	the two new data members above.
31020	(function_type_diff::report): For the report of parameters that
31021	got added/removed, use the sorted set of added/removed parameters
31022	above.
31023	* tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt:
31024	New test input.
31025	* tests/data/test-diff-dwarf/libtest24-added-fn-parms-v{0,1}.so:
31026	Likewise.
31027	* tests/data/test-diff-dwarf/test25-removed-fn-parms-report-0.txt:
31028	Likewise.
31029	* tests/data/test-diff-dwarf/libtest25-removed-fn-parms-v{0,1}.so:
31030	Likewise.
31031	* tests/data/test-diff-dwarf/test24-added-fn-parms-v{0,1}.c:
31032	Likewise.
31033	* tests/data/test-diff-dwarf/test25-removed-fn-parms-v{0,1}.c:
31034	Likewise.
31035	* tests/data/Makefile.am: Add the new test material above to the
31036	source distribution.
31037
310382015-04-14  Dodji Seketeli <dodji@redhat.com>
31039
31040	Misc reporting fixes/improvements
31041	* src/abg-comparison.cc (distinct_diff::report): Remove spurious
31042	vertical space before reporting size and alignment changes here.
31043	(represent): In the variables/data member overload, report type
31044	changes first.  Then the other changes.
31045	(report_size_and_alignment_changes): Make this report array size
31046	changes too.  Also, make some small adjustments about how type
31047	size/alignment changes are introduced.
31048	(array_diff::report): Now that report_size_and_alignment_changes()
31049	supports size change reporting, just use that function rather than
31050	doing it here.
31051	(corpus_diff::report): Consistently add a space between each
31052	changed function report.  Prefix changed variables with a [C],
31053	just like for functions.
31054	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
31055	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Likewise.
31056	* tests/data/test-abicompat/test6-var-changed-report-0.txt: Likewise.
31057	* tests/data/test-abidiff/test-qual-type0-report.txt: Likewise.
31058	* tests/data/test-abidiff/test-struct0-report.txt: Likewise.
31059	* tests/data/test-abidiff/test-struct1-report.txt: Likewise.
31060	* tests/data/test-abidiff/test-var0-report.txt: Likewise.
31061	* tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: Likewise.
31062	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
31063	* tests/data/test-diff-dwarf/test1-report.txt: Likewise.
31064	* tests/data/test-diff-dwarf/test10-report.txt: Likewise.
31065	* tests/data/test-diff-dwarf/test11-report.txt: Likewise.
31066	* tests/data/test-diff-dwarf/test13-report.txt: Likewise.
31067	* tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise.
31068	* tests/data/test-diff-dwarf/test2-report.txt: Likewise.
31069	* tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: Likewise.
31070	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Likewise.
31071	* tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise.
31072	* tests/data/test-diff-dwarf/test3-report.txt: Likewise.
31073	* tests/data/test-diff-dwarf/test6-report.txt: Likewise.
31074	* tests/data/test-diff-dwarf/test7-report.txt: Likewise.
31075	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
31076	* tests/data/test-diff-dwarf/test9-report.txt: Likewise.
31077	* tests/data/test-diff-filter/test0-report.txt: Likewise.
31078	* tests/data/test-diff-filter/test01-report.txt: Likewise.
31079	* tests/data/test-diff-filter/test1-report.txt: Likewise.
31080	* tests/data/test-diff-filter/test10-report.txt: Likewise.
31081	* tests/data/test-diff-filter/test11-report.txt: Likewise.
31082	* tests/data/test-diff-filter/test13-report.txt: Likewise.
31083	* tests/data/test-diff-filter/test14-0-report.txt: Likewise.
31084	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.
31085	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
31086	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.
31087	* tests/data/test-diff-filter/test16-report-2.txt: Likewise.
31088	* tests/data/test-diff-filter/test16-report.txt: Likewise.
31089	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
31090	* tests/data/test-diff-filter/test17-1-report.txt: Likewise.
31091	* tests/data/test-diff-filter/test18-report.txt: Likewise.
31092	* tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
31093	* tests/data/test-diff-filter/test2-report.txt: Likewise.
31094	* tests/data/test-diff-filter/test20-inline-report-1.txt: Likewise.
31095	* tests/data/test-diff-filter/test21-compatible-vars-report-0.txt: Likewise.
31096	* tests/data/test-diff-filter/test22-compatible-fns-report-0.txt: Likewise.
31097	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: Likewise.
31098	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: Likewise.
31099	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Likewise.
31100	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Likewise.
31101	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Likewise.
31102	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Likewise.
31103	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
31104	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
31105	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise.
31106	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
31107	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
31108	* tests/data/test-diff-filter/test3-report.txt: Likewise.
31109	* tests/data/test-diff-filter/test6-report.txt: Likewise.
31110	* tests/data/test-diff-filter/test9-report.txt: Likewise.
31111	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise.
31112	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise.
31113	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
31114	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
31115	* tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise.
31116	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
31117	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
31118	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
31119	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
31120	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise.
31121	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise.
31122	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise.
31123	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
31124	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
31125	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
31126	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
31127	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
31128	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise.
31129	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise.
31130	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise.
31131	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise.
31132	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
31133	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
31134	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
31135	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
31136	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
31137	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
31138	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise.
31139	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise.
31140	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Likewise.
31141	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise.
31142	* tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Likewise.
31143
311442015-04-10  Dodji Seketeli <dodji@redhat.com>
31145
31146	Make abidiff and abicompat return meaningful exit codes
31147	* doc/manuals/abicompat.rst: Update documentation for abicompat
31148	exit codes.
31149	* doc/manuals/abidiff.rst: Likewise for abidiff exit codes.
31150	* include/abg-tools-utils.h (enum abidiff_status): Declare new
31151	enum.
31152	(operator{|,&,|=}): Declare new operators for the new enum
31153	abidiff_status.
31154	(abidiff_status_has_error, abidiff_status_has_abi_change)
31155	(abidiff_status_has_incompatible_abi_change): Declare new
31156	functions.
31157	* src/abg-tools-utils.cc (operator{|,&,|=}): Define these new
31158	operators.
31159	(abidiff_status_has_error, abidiff_status_has_abi_change)
31160	(abidiff_status_has_incompatible_abi_change): Define new
31161	functions.
31162	* tests/test-diff-filter.cc (main): Adjust for the new exit code
31163	of abidiff.
31164	* tests/test-diff-suppr.cc (main): Likewise.
31165	* tests/test-abicompat.cc (main): Likewise.
31166	* tools/abicompat.cc (enum abicompat_status): Remove.
31167	(operator{|,&,|=}): Remove these operators for enum
31168	abicompat_status.
31169	(perform_compat_check_in_normal_mode)
31170	(perform_compat_check_in_weak_mode): Return abidiff_status instead
31171	of abicompat_status.  Adjust therefore.
31172	(main): Adjust to return abidiff_status now, instead of a just
31173	zero for all non-error cases.
31174	* tools/abidiff.cc (main): Likewise.
31175
311762015-04-01  Dodji Seketeli <dodji@redhat.com>
31177
31178	Add support for abicompat weak mode
31179	* include/abg-fwd.h (class type_or_decl_base): Forward declare
31180	this.
31181	(is_decl, is_type, is_function_type, get_name, get_type_name)
31182	(get_function_type_name, get_pretty_representation)
31183	(lookup_function_type_in_corpus, lookup_type_in_translation_unit)
31184	(lookup_function_type_in_translation_unit)
31185	(synthesize_function_type_from_translation_unit)
31186	(hash_type_or_decl): New function declarations.
31187	* src/abg-corpus.cc (lookup_type_in_corpus)
31188	(lookup_function_type_in_corpus): Define new functions.
31189	* include/abg-ir.h
31190	(translation_unit::lookup_function_type_in_translation_unit):
31191	Declare new friend function.
31192	(class type_or_decl_base): Declare this.
31193	(operator==(const type_or_decl_base&, const type_or_decl_base&)):
31194	Declare new operator.
31195	(operator==(const type_or_decl_base_sptr&, const
31196	type_or_decl_base_sptr&)): Likewise.
31197	(class {decl_base, type_base}): Make these class inherit
31198	type_or_decl_base.
31199	(decl_base::get_member_scopes): New const overload.
31200	(bool operator==(const function_decl::parameter_sptr&,
31201	const function_decl::parameter_sptr&)): New operator.
31202	(function_type::get_parameters): Remove the non-const overload.
31203	(function_type::get_pretty_representation): Declare new member
31204	function.
31205	(method_type::get_pretty_representation): Likewise.
31206	* src/abg-ir.cc (bool operator==(const type_or_decl_base&, const
31207	type_or_decl_base&)): Define new equality operator.
31208	(bool operator==(const type_or_decl_base_sptr&, const
31209	type_or_decl_base_sptr&)): Likewise.
31210	(strip_typedef): Do not expect canonicalized types anymore.  Now
31211	the system accepts (and expects) canonicalized types in certain
31212	cases.  For instance, non-complete types and aggregated types that
31213	contain non-complete sub-types.
31214	(get_name, get_function_type_name, get_type_name)
31215	(get_pretty_representation, is_decl, is_type, is_function_type)
31216	(lookup_function_type_in_translation_unit)
31217	(synthesize_function_type_from_translation_unit)
31218	(lookup_type_in_scope, lookup_type_in_translation_unit): Define
31219	new functions or new overloads.
31220	(bool operator==(const function_decl::parameter_sptr&,
31221	const function_decl::parameter_sptr& r)): Define
31222	new operator.
31223	(function_type::get_parameters): Remove non-const overload.
31224	(function_type::get_pretty_representation): Define new function.
31225	(function_type::traverse): Adjust.
31226	(method_type::get_pretty_representation): Likewise.
31227	(function_decl::get_pretty_representation): Avoid emitting the
31228	type of cdtors.
31229	(hash_type_or_decl): Define new function.
31230	* include/abg-dwarf-reader.h (create_read_context)
31231	(read_corpus_from_elf): Take a new 'read_all_types' flag.
31232	* src/abg-dwarf-reader.cc (read_context::load_all_types_): New
31233	flag.
31234	(read_context::read_context): Initialize it.
31235	(read_context::canonical_types_scheduled): If some types still
31236	have non-canonicalized sub-types, then do not canonicalize them.
31237	(read_context::load_all_types): New member functions.
31238	(build_function_decl): Do not represent void return type like
31239	empty type anymore, rather, represent it like a void type node.
31240	(build_ir_node_from_die): When asked, load all types
31241	including those that are not reachable from an exported
31242	declaration.
31243	(create_read_context, read_corpus_from_elf): Take a new
31244	'load_all_types' flag and honour it.
31245	* src/abg-reader.cc (read_context::type_is_from_translation_unit):
31246	Support looking up function types in the current translation unit,
31247	now that we now how to lookup function types.
31248	* include/abg-comparison.h (diff_context::{has_diff_for, add_diff,
31249	set_canonical_diff_for, set_or_get_canonical_diff_for,
31250	get_canonical_diff_for}): Make these take instances of
31251	type_or_decl_base_sptr, instead of decl_base_sptr.
31252	(diff::diff): Likewise.
31253	(diff::{first_subject, second_subject}): Make these return
31254	type_or_decl_base_sptr instead of decl_base_sptr.
31255	(type_diff_base::type_diff_base): Make these take instances of
31256	type_or_decl_base_sptr instead of decl_base_sptr.
31257	(distinct_diff::distinct_diff): Likewise.
31258	(distinct_diff::{first, second}): Make these return
31259	type_or_decl_base_sptr instead of decl_base_sptr.
31260	(distinct_diff::entities_are_of_distinct_kinds): Make these take
31261	instances of type_or_decl_base_sptr instead of decl_base_sptr.
31262	(class function_type_diff): Create this new type.  It's a
31263	factorization of the function_decl_diff type.
31264	* src/abg-comparison.cc ():
31265	* src/abg-comp-filter.cc ({harmless, harmful}_filter::visit):
31266	Adjust as diff::{first,second}_subject() now returns a
31267	type_or_decl_base_sptr, no more a decl_base_sptr.
31268	(decls_type, decls_diff_map_type): Remove these typedefs and replace it with ...
31269	(types_or_decls_type, types_or_decls_diff_map_type): ... these.
31270	(struct {decls_hash, decls_equals): Remove these type sand replace them with ...
31271	(struct {types_or_decls_hash, types_or_decls_equals}): ... these.
31272	({type_suppression, variable_suppression}::suppresses_diff):
31273	Adjust.
31274	(diff_context::priv::decls_diff_map): Replace this with ...
31275	(diff_context::priv::types_or_decls_diff_map): ... this.
31276	(diff_context::{has_diff_for, add_diff, get_canonical_diff_for,
31277	set_canonical_diff_for, set_or_get_canonical_diff_for}): Take
31278	type_or_decl_base_sptr instead of decl_base_sptr.
31279	(diff::priv::{first, second}_subject): Make the type of these be
31280	type_or_decl_base_sptr, no more decl_base_sptr.
31281	(diff::priv::priv): Adjust for the subjects of the diff being of
31282	type type_or_decl_sptr now, no more decl_base_sptr.
31283	(diff_less_than_functor::operator()(const diff_sptr, const
31284	diff_sptr) const): Adjust.
31285	(diff::diff): djust for the subjects of the diff being of type
31286	type_or_decl_sptr now, no more decl_base_sptr.
31287	(diff::{first,second}_subject): Make the type of these be
31288	type_or_decl_base_sptr, no more decl_base_sptr.
31289	(report_size_and_alignment_changes): Likewise.
31290	(type_diff_base::type_diff_base): Make the type of this be
31291	type_or_decl_base_sptr instead of type_base_sptr.
31292	(distinct_diff::distinct_diff): Make this take instances of
31293	type_or_decl_base_sptr instead of decl_base_sptr.
31294	(distinct_diff::{first, second, entities_are_of_distinct_kinds}):
31295	Likewise.
31296	(distinct_diff::has_changes): Simplify logic.
31297	(distinct_diff::report): Adjust.
31298	(compute_diff_for_types): Add an additional case to support the
31299	new function_type.
31300	(report_size_and_alignment_changes): Make this take instances of
31301	type_or_decl_base_sptr instead of decl_base_sptr.
31302	(class_diff::priv::member_type_has_changed): Return an instance of
31303	type_or_decl_base_sptr rather than a decl_base_sptr.
31304	(class_diff::report): Adjust.
31305	(diff_comp::operator()(const diff&, diff&) const): Adjust.
31306	(enum function_decl_diff::priv::Flags): Remove.
31307	(function_decl_diff::priv::{first_fn_flags_, second_fn_flags_,
31308	fn_flags_changes_}): Remove.
31309	(function_decl_diff::priv::{fn_is_declared_inline_to_flag,
31310	fn_binding_to_flag}): Remove.
31311	(function_decl_diff::{deleted_parameter_at,
31312	inserted_parameter_at}): Remove.
31313	(function_decl_diff::ensure_lookup_tables_populated): Empty this.
31314	(function_decl_diff::chain_into_hierarchy): Adjust.
31315	(function_decl_diff::function_decl_diff): This now only takes the
31316	subjects.  It's body is now empty.
31317	(function_decl_diff::{return_type_diff, subtype_changed_parms,
31318	removed_parms, added_parms, type_diff}): Remove these member
31319	functions.
31320	(function_decl_diff::type_diff): Define new member function.
31321	(function_decl_diff::report): Simplify logic by using the
31322	reporting of the child type diff node.
31323	(compute_diff): Likewise, in the overload for function_decl_sptr
31324	simplify logic by using the child type diff object.
31325	(function_type_diff::priv): Define new type.
31326	(function_type_diff::{function_type_diff,
31327	ensure_lookup_tables_populated, deleted_parameter_at,
31328	inserted_parameter_at, finish_diff_type, first_function_type,
31329	second_function_type, return_type_diff, subtype_changed_parms,
31330	removed_parms, added_parms, get_pretty_representation,
31331	has_changes, has_local_changes, report, chain_into_hierarchy}):
31332	Define new functions.
31333	(compute_diff): Define new overload for function_type_sptr.
31334	* tools/abicompat.cc (options::weak_mode): New data member.
31335	(options::options): Initialize it.
31336	(enum abicompat_status): New enum
31337	(abicompat_status operator|(abicompat_status, abicompat_status))
31338	(abicompat_status& operator|=(abicompat_status &, abicompat_status))
31339	(abicompat_status operator&(abicompat_status, abicompat_status)):
31340	New operators to manipulate the abicompat_status enum.
31341	(display_usage): Add help string for the new --weak-mode option.
31342	(parse_command_line): Add the new --weak-mode command line
31343	argument.  If the tool is called with just the application and one
31344	library then assume that we are in the weak mode.
31345	(perform_compat_check_in_normal_mode): Define new function, factorized
31346	from what was in the main function.
31347	(perform_compat_check_in_weak_mode): Define new function.
31348	(struct {fn,var}_change): Define new types.
31349	(main): Use perform_compat_check_in_weak_mode() and
31350	perform_compat_check_in_normal_mode().
31351	* tools/abidiff.cc (main): Adjust.
31352	* tools/abidw.cc: (options::load_all_types): Add new data member.
31353	(options::options): Initialize it.
31354	(display_usage): New help string for --load-all-types.
31355	(parse_command_line): Support the new --load-all-types option.
31356	(main): Adjust and honour the --load-all-types option.
31357	* tools/abilint.cc (main): Adjust.
31358	* doc/manuals/abicompat.rst: Update documentation for the new weak
31359	mode.  Also provide stuff that was missing from the examples
31360	provided.
31361	* doc/manuals/abidw.rst: Update documentation for the new
31362	--load-all-types option.
31363	* tests/print-diff-tree.cc (main): Adjust.
31364	* tests/test-diff-dwarf.cc (main): Likewise.
31365	* tests/test-read-dwarf.cc (main): Likewise.
31366	* tests/data/test-abicompat/test0-fn-changed-app: Recompile this.
31367	* tests/data/test-abicompat/libtest5-fn-changed-libapp-v{0,1}.so:
31368	New new test input binaries
31369	* tests/data/test-abicompat/test5-fn-changed-app: Likewise.
31370	* tests/data/test-abicompat/test6-var-changed-app: Likewise.
31371	* tests/data/test-abicompat/libtest6-var-changed-libapp-v{0,1}.so:
31372	Likewise.
31373	* tests/data/test-abicompat/test5-fn-changed-report-0.txt:
31374	Reference output for one test above.
31375	* tests/data/test-abicompat/test6-var-changed-report-0.txt:
31376	Likewise.
31377	* tests/data/test-abicompat/test5-fn-changed-app.cc: Source file
31378	for a binary above.
31379	* tests/data/test-abicompat/test5-fn-changed-libapp-v{0,1}.{h,cc}:
31380	Likewise.
31381	* tests/data/test-abicompat/test6-var-changed-libapp-v{0,1}.{cc,h}:
31382	Likewise.
31383	* tests/data/test-abicompat/test6-var-changed-app.cc: Likewise.
31384	* tests/data/Makefile.am: Add the test related files above to the
31385	source distribution.
31386	* tests/test-abicompat.cc (in_out_spec): Add the new test input
31387	above to the list of inputs to feed to this test harness.
31388	(main): Support taking just the app and one library.
31389	* tests/data/test-read-dwarf/test{0, 1, 2.so, 3.so, 5.o,
31390	8-qualified-this-pointer.so,}.abi: Adjust for void type being
31391	really emitted now, as opposed to just being an empty type.
31392
313932015-04-01  Dodji Seketeli <dodji@redhat.com>
31394
31395	18186 - Assertion in abigail::ir::class_decl::hash::operator()
31396	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): When
31397	the size of the class is provided then the class is complete, no
31398	matter if this function called to update the class or to build it
31399	for the first time.
31400
314012015-03-31  Sinny Kumari <sinny@redhat.com>
31402
31403	Check if EM_AARCH64, EM_TILEPRO and EM_TILEGX macros are defined in elf.h
31404	* config.h.in: Generated autoheader by configure.ac
31405	for added macros
31406	* configure.ac: Defining HAVE_EM_AARCH64_MACRO,
31407	HAVE_EM_TILEPRO_MACRO and HAVE_EM_TILEGX_MACRO to check
31408	whether EM_AARCH64, EM_TILEPRO and EM_TILEGX macros are defined
31409	in elf.h or not
31410	* src/abg-dwarf-reader.cc (e_machine_to_string): Look for
31411	EM_AARCH64, EM_TILEPRO and EM_TILEGX macros only
31412	if they are defined in elf.h
31413
314142015-03-30  Dodji <dodji@ks305400.kimsufi.com>
31415
31416	PR libabigail/18180
31417	* src/abg-hash.cc (class_decl::hash::operator()(const class_decl&)
31418	const): Return zero only for class declarations that are not
31419	resolved.
31420	* tests/data/test-read-write/test20.xml: Fix the output to make a
31421	class definition to reference its declaration, when there was a
31422	forward declaration for it.
31423
314242015-03-30  Dodji Seketeli <dodji@redhat.com>
31425
31426	18179 - abidiff crashes on libcangjie
31427	* include/abg-fwd.h (lookup_class_type_in_corpus)
31428	(lookup_class_type_in_translation_unit): Declare new functions.
31429	* src/abg-ir.cc (lookup_class_type_in_translation_unit): Define
31430	new function.
31431	(get_node, convert_node_to_decl): Define new specializations for
31432	the class_decl type.
31433	* src/abg-corpus.cc (lookup_class_type_in_corpus): Define new
31434	function.
31435	* src/abg-dwarf-reader.cc
31436	(read_context::resolve_declaration_only_classes): Lookup class
31437	types specifically.
31438
314392015-03-30  Dodji Seketeli <dodji@redhat.com>
31440
31441	Forgot to initialize a data member
31442	* src/abg-reader.cc (read_context::read_context): Initialize the
31443	new m_exported_decls_builder_ data member.
31444
314452015-03-30  Dodji Seketeli <dodji@redhat.com>
31446
31447	18166 - Abidiff fails with internal on Libtirpc ABI in XML format
31448	* src/abg-reader.cc (read_context::m_exported_decls_builder_): New
31449	data member.
31450	(read_context::read_context): Initialize it.
31451	(read_context::{type_is_from_translation_unit,
31452	get_exported_decls_builder, set_exported_decls_builder,
31453	maybe_add_fn_to_exported_decls, maybe_add_fn_to_exported_decls,
31454	type_id_new_in_translation_unit}): New member functions.
31455	(read_context::clear_per_translation_unit_data): Clear id->xml
31456	node map here ...
31457	(read_context::clear_per_corpus_data): ... not here.
31458	(read_context::walk_xml_node_to_map_type_ids): Only walk the
31459	sub-tree we are asked to walk.
31460	(read_translation_unit_from_input): Cleanup.
31461	(read_corpus_from_input): Wire populating of exported declarations
31462	of the current corpus.
31463	(build_function_decl, build_var_decl): Populate exported
31464	declarations of the current corpus here.
31465	(build_type_decl, build_qualified_type_decl)
31466	(build_pointer_type_def, build_reference_type_def)
31467	(build_array_type_def, build_enum_type_decl, build_type_decl)
31468	(build_template_tparameter): Adjust assert on ID to make sure
31469	it's the first type it's being defined in the current translation
31470	unit.
31471	* tests/data/test-abidiff/test-corpus0-report0.txt: New test
31472	reference output.
31473	* tests/data/test-abidiff/test-corpus0-v{0,1}.so.abi: New test
31474	input.
31475	* tests/test-abidiff.cc (specs): Add the test inputs above to the
31476	list of inputs over which to run the test harness.
31477	(main): Support reading corpora too, as this test harness was
31478	reading just translation units before.
31479	(tests/data/Makefile.am): Add test material above to source
31480	distribution.
31481
314822015-03-19  Dodji Seketeli <dodji@redhat.com>
31483
31484	Update the CONTRIBUTING file
31485	* CONTRIBUTING: How to check out the web pages.
31486
314872015-03-19  Dodji Seketeli <dodji@redhat.com>
31488
31489	Update website documentation
31490	* doc/website/mainpage.txt: Update the web page.
31491
314922015-03-18  Dodji Seketeli <dodji@redhat.com>
31493
31494	Cleanup type canonicalizing logic
31495	* src/abg-ir.cc (type_base::get_canonical_type_for): Cleanup the
31496	logic here.  Basically since we are not trying to cache the result
31497	of type hashing anymore, this can be simpler.
31498
314992015-03-18  Dodji Seketeli <dodji@redhat.com>
31500
31501	Fix redundancy propagation on node with filtered local changes
31502	*NOT* take in account the categories inherited from its children
31503	nodes.  That way, it's possible to know if the *local changes* of a
31504	given node have been filtered out.
31505	* include/abg-comparison.h (diff::{get_local_category,
31506	add_to_local_category, add_to_local_and_inherited_categories,
31507	remove_from_local_category, set_local_category,
31508	is_filtered_out_wrt_non_inherited_categories,
31509	has_local_changes_to_be_reported}): Declare new member functions.
31510	* src/abg-comp-filter.cc ({harmless, harmful}_filter::{visit,
31511	visit_end}): Update local category too.
31512	* src/abg-comparison.cc (diff::priv::local_category_): Add new
31513	data member.
31514	(diff::priv::priv): Initialize it.
31515	(diff::priv::is_filtered_out): Add new member function.  This is
31516	factorized out of diff::is_filtered_out().
31517	(diff::is_filtered_out): Re-write in terms of
31518	diff::priv::is_filtered_out().
31519	(diff::{get_local_category, add_to_local_category,
31520	add_to_local_and_inherited_categories, remove_from_local_category,
31521	set_local_category, is_filtered_out_wrt_non_inherited_categories,
31522	has_local_changes_to_be_reported}): Define new member functions.
31523	(suppression_categorization_visitor::visit_begin): Update local
31524	categories too.
31525	(redundancy_marking_visitor::visit_end): If all of the children
31526	nodes of the a diff node N are redundant and if N has filtered-out
31527	local changes, then N is redundant too.
31528	* tests/data/test-diff-filter/libtest28-redundant-and-filtered-children-nodes-v{1,2}.so:
31529	New binary test inputs.
31530	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-v{0,1}.cc:
31531	Source code for the binary test inputs above.
31532	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-{0,1}.txt:
31533	New test output references.
31534	* tests/test-diff-filter.cc (in_out_specs): Add the test inputs
31535	above to the set of inputs this test harness has to run over.
31536	* tests/data/Makefile.am: Add the test materials above to the
31537	source distribution.
31538
315392015-03-17  Dodji Seketeli <dodji@redhat.com>
31540
31541	Various style cleanups
31542	* src/abg-hash.cc (class_decl::hash::operator()(const class_decl&
31543	t) const): Fix comment.
31544	* src/abg-ir.cc (lookup_node_in_scope): Likewise.
31545	(class_decl::add_base_specifier): Use base_spec_sptr rather than
31546	shared_ptr<base_spec>.
31547	(class non_canonicalized_subtype_detector): Fix comment.
31548
315492015-03-17  Dodji Seketeli <dodji@redhat.com>
31550
31551	Make is_global_scope() return a pointer to the global scope
31552	* include/abg-fwd.h (is_global_scope): Return a global_scope*.
31553	* src/abg-ir.cc (is_global_scope): Likewise.
31554
315552015-03-17  Dodji Seketeli <dodji@redhat.com>
31556
31557	Add a useful assert in the comparison engine
31558	* src/abg-comparison.cc (qualified_type_diff::report): Assert that
31559	if the qualified type diff node has changes to be reported and no
31560	local change, then its child node must have changes to be
31561	reported.
31562
315632015-03-17  Dodji Seketeli <dodji@redhat.com>
31564
31565	Fix diff report about non-static data members.
31566	* src/abg-comparison.cc
31567	(class_diff::priv::{get_deleted_non_static_data_members_number,
31568	get_inserted_non_static_data_members_number}): Define new member
31569	functions.
31570	(class_diff::reports): Use the new functions above.  Also, add
31571	forgotten new lines where they belong.
31572
315732015-03-17  Dodji Seketeli <dodji@redhat.com>
31574
31575	Do not cache hash values in decl_base::get_hash
31576	* src/abg-ir.cc (decl_base::get_hash): Do not cache the hash
31577	value.
31578
315792015-03-17  Dodji Seketeli <dodji@redhat.com>
31580
31581	Do not miss early non-complete type resolution when it's possible
31582	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): A type
31583	that has its size defined is not non-complete.  Same if it has a
31584	method or a member type.
31585
315862015-03-17  Dodji Seketeli <dodji@redhat.com>
31587
31588	Delay non-complete class type resolution up to end of corpus reading
31589	* include/abg-fwd.h (lookup_type_in_corpus): Declare new function.
31590	* src/abg-corpus.cc (lookup_type_in_corpus): Define new function
31591	here.
31592	* include/abg-ir.h (function_types_type): Declare new typedef.
31593	(translation_unit::get_canonical_function_type): Remove member function.
31594	(translation_unit::bind_function_type_life_time): Declare new
31595	member function.
31596	(classes_type): New typedef.
31597	* src/abg-ir.cc
31598	(translation_unit::priv::canonical_function_types_): Remove data
31599	member.
31600	(translation_unit::priv::function_types): New data member.
31601	(translation_unit::get_canonical_function_type): Remove this
31602	function definition.
31603	(translation_unit::bind_function_type_life_time): New function
31604	definition.
31605	(lookup_node_in_scope): Ensure that the type returned is
31606	complete.
31607	* src/abg-dwarf-reader.cc (string_classes_map): New typedef.
31608	(read_context::decl_only_classes_map_): New data member.
31609	(read_context::declaration_only_classes): New accessor.
31610	(read_context::{maybe_schedule_declaration_only_class_for_resolution,
31611	is_decl_only_class_scheduled_for_resolution,
31612	resolve_declaration_only_classes, current_elf_file_is_executable,
31613	current_elf_file_is_dso}): Define new member functions.
31614	(read_context::clear_per_translation_unit_data): Do not clear the
31615	data structures that associate DIEs to decls/types or that contain
31616	the types to canonicalize here.  Rather, clear them ...
31617	(read_context::clear_per_corpus_data): ... here instead.
31618	(read_context::build_translation_unit_and_add_to_ir): Do not
31619	perform late type canonicalizing here.  Rather, do it ...
31620	(read_debug_info_into_corpus): ... here instead.  And before that,
31621	call read_context::clear_per_corpus_data() and the new
31622	read_context::resolve_declaration_only_classes() here.
31623	(build_class_type_and_add_to_ir): Schedule the non-complete types
31624	for resolution to complete types.  Assert that base classes that
31625	are non-complete are scheduled to be completed.
31626	(build_function_decl): Do not try to canonicalize function types
31627	this early, systematically.  Now, all the non-complete types needs
31628	to be completed before starting canonicalizing.  So let function
31629	types go through the normal processes of deciding when to
31630	canonicalize them.  But then, bind the life time of the function
31631	type to the life time of the current translation unit.
31632	(maybe_canonicalize_type): If a class type is non-complete,
31633	schedule it for late canonicalizing.
31634	* src/abg-hash.cc (class_decl::hash::operator()(const class_decl&)
31635	const): During hashing, a base class should be complete.
31636	* src/abg-reader.cc
31637	(read_context::clear_per_translation_unit_data): Do not clear
31638	id/xml node, and type maps here.  Rather, clear it ...
31639	(read_context::clear_per_corpus_data): ... here instead.
31640	(read_translation_unit_from_input): Do not perform late
31641	canonicalizing here.  Rather, do it ...
31642	(read_corpus_from_input): ... here.  Also, call the new
31643	read_context::clear_per_corpus_data() here.
31644	(build_function_decl): Do not canonicalize function types here so
31645	early.  Rather, bind the life time of the function type to the
31646	life time of the translation unit.
31647	* src/abg-writer.cc (write_translation_unit): Do not clear the
31648	type/ID map here.
31649	* tests/data/test-read-dwarf/test2.so.abi: Adjust test input.
31650
316512015-03-17  Dodji Seketeli <dodji@redhat.com>
31652
31653	Add --no-architecture option to abidw
31654	* tools/abidw.cc (options::write_architecture): New flag.
31655	(options::options): Initialize it.
31656	(display_usage): Add usage string for the new --no-architecture
31657	option.
31658	(parse_command): Parse the new --no-architecture command line
31659	option.
31660	(main): Ignore the architecture name if required by the user.
31661
316622015-03-13  Dodji Seketeli <dodji@redhat.com>
31663
31664	We shouldn't build qualified types with empty underlying type
31665	* src/abg-ir.cc (qualified_type_def::qualified_type_def): Assert
31666	that we shouldn't build qualified types with empty underlying
31667	type.
31668
316692015-03-13  Dodji Seketeli <dodji@redhat.com>
31670
31671	Add an overload for is_type() that takes naked pointers
31672	* include/abg-fwd.h (is_type): Declare new overload that takes a
31673	naked pointer.
31674	* src/abg-ir.cc (is_type): Define new overload that takes a naked
31675	pointer.
31676
316772015-03-13  Dodji Seketeli <dodji@redhat.com>
31678
31679	Declaration-only classes shouldn't have canonical types
31680	* include/abg-fwd.h (keep_type_alive): Declare new function.
31681	* src/abg-ir.cc (strip_typedef): Simplify logic.  Support types
31682	that are not canonicalized.
31683	(type_base::get_canonical_type_for): For declaration-only classes,
31684	return an empty canonical class, forcing the class to be compared
31685	structurally.
31686	(keep_type_alive): Define new function.
31687	* src/abg-hash.cc ({decl_base, type_decl, scope_type_decl,
31688	qualified_type_def, pointer_type_def, reference_type_def,
31689	array_type_def, enum_type_decl, typedef_decl,
31690	class_decl::member_class_template, class_decl, type_tparameter,
31691	template_tparameter, }::hash::operator()): Do not cache the
31692	computed hash.
31693
316942015-03-13  Dodji Seketeli <dodji@redhat.com>
31695
31696	Fix redundancy categorization propagation
31697	* src/abg-comparison.cc (redundancy_marking_visitor::visit_end):
31698	Consider the cases of changes that are a filtered out.
31699	* tests/data/test-diff-filter/libtest27-redundant-and-filtered-children-nodes-v{0,1}.so:
31700	New test binaries to use as test input.
31701	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-{0,1,2}.txt:
31702	New test result baselines.
31703	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-v{0,1}.cc:
31704	Source code for the test input binaries above.
31705	* tests/test-diff-filter.cc (in_out_spec): Add the binaries to the
31706	test inputs used for this test harness.
31707	* tests/data/Makefile.am: Add the new test material above to the
31708	distribution.
31709
317102015-03-13  Dodji Seketeli <dodji@redhat.com>
31711
31712	Fix thinko in has_virtual_mem_fn_change().
31713	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): Fix thinko.
31714
317152015-03-13  Dodji Seketeli <dodji@redhat.com>
31716
31717	From inside the comparison engine re-use IR's equality operators
31718	* include/abg-ir.h (operator==(scope_decl_sptr, scope_decl_sptr)):
31719	Declare.
31720	(operator==(type_decl_sptr, type_decl_sptr)): Likewise.
31721	(operator==(enum_type_decl_sptr, enum_type_decl_sptr)): Likewise.
31722	* src/abg-comparison.cc (diff_length_of_decl_bases)
31723	(diff_length_of_type_bases): Remove these static functions.
31724	(class_diff::has_changes): Re-use the comparison operator for
31725	class_decl_sptr.
31726	(type_decl_diff::has_changes): Re-use the comparison operator for
31727	type_decl_sptr.
31728	* src/abg-ir.cc (operator==(scope_decl_sptr, scope_decl_sptr)):
31729	Define.
31730	(operator==(type_decl_sptr, type_decl_sptr)): Likewise.
31731	(operator==(enum_type_decl_sptr, enum_type_decl_sptr)): Likewise.
31732
317332015-03-11  Dodji Seketeli <dodji@redhat.com>
31734
31735	Remove unnecessary vertical white space from diff report
31736	* src/abg-comparison.cc (class_diff::report): When reporting
31737	virtual member functions make sure to emit the newline only if one
31738	report for member function has already been emitted.
31739
317402015-03-10  Dodji Seketeli <dodji@redhat.com>
31741
31742	Cleanup array_type_def::is_infinite
31743	* src/abg-ir.cc (array_type_def::is_infinite): Style cleanup.
31744
317452015-03-10  Dodji Seketeli <dodji@redhat.com>
31746
31747	Make a function static as it oughts to be
31748	* src/abg-ir.cc (get_type_representation): Make this static.
31749
317502015-03-10  Dodji Seketeli <dodji@redhat.com>
31751
31752	Canonicalize function types
31753	* src/abg-dwarf-reader.cc (build_function_decl): Call
31754	maybe_canonicalize_type to canonicalize the function type.
31755
317562015-03-10  Dodji Seketeli <dodji@redhat.com>
31757
31758	Use more naked pointers when comparing function types
31759	* src/abg-ir.cc (equals): In the overload for function types, use
31760	more naked pointers, less smart pointers.
31761
317622015-03-10  Dodji Seketeli <dodji@redhat.com>
31763
31764	Pass a bunch of smart pointers by reference
31765	* include/abg-fwd.h (get_member_is_static, is_member_function)
31766	(get_member_function_is_ctor, set_member_function_is_ctor)
31767	(get_member_function_is_dtor, set_member_function_is_dtor)
31768	(get_member_function_is_const, set_member_function_is_const)
31769	(get_member_function_vtable_offset)
31770	(set_member_function_vtable_offset)
31771	(get_member_function_is_virtual): Declare the smart pointer
31772	parameter of these as being passed by reference.
31773	* include/abg-ir.h (get_member_access_specifier)
31774	(get_member_is_static, get_member_access_specifier)
31775	(set_member_function_is_ctor, set_member_function_is_const)
31776	(set_member_function_vtable_offset): Likewise, for these friend
31777	declarations to the decl_base type.
31778	* src/abg-ir.cc (get_member_access_specifier)
31779	(get_member_is_static, is_member_function)
31780	(get_member_function_is_ctor, set_member_function_is_ctor)
31781	(get_member_function_is_dtor, set_member_function_is_dtor)
31782	(get_member_function_is_const, set_member_function_is_const)
31783	(get_member_function_vtable_offset)
31784	(set_member_function_vtable_offset)
31785	(get_member_function_is_virtual): In these definitions, the smart
31786	pointer parameter is passed by reference.
31787
317882015-03-10  Dodji Seketeli <dodji@redhat.com>
31789
31790	Make decl_base::get_context_rel() return a naked pointer
31791	* include/abg-fwd.h (set_member_is_static): Add an overload that
31792	takes the member as a reference to a smart pointer.
31793	(set_member_function_{is_dtor, is_ctor, is_const, vtable_offset,
31794	is_virtual}): Pass the member function as a reference.
31795	(set_member_function_is_const, set_member_function_is_virtual):
31796	Pass the member function as a non-const reference.
31797	* include/abg-ir.h (decl_base::get_context_rel): Return a naked
31798	pointer.
31799	(set_member_is_static, set_member_function_is_virtual): Adjust
31800	this friend declaration.
31801	(set_member_access_specifier): Add an overload that takes a
31802	reference to the member.  Pass a reference to smart pointer to the
31803	other overload.
31804	(set_member_function_is_{is_ctor,is_dtor,is_const,is_virtual,vtable_offset}):
31805	Take a non-const reference to function_decl.
31806	* src/abg-ir.cc (decl_base::get_context_rel): Likewise.
31807	(equals(const decl_base&, const decl_base&, change_kind*)):
31808	Adjust.
31809	(equals(const var_decl&, const var_decl&, change_kind*)):
31810	Likewise.
31811	(get_member_access_specifier, get_member_is_static)
31812	(set_data_member_offset, get_data_member_offset)
31813	(set_data_member_is_laid_out, get_data_member_is_laid_out)
31814	(get_member_function_is_ctor, set_member_function_is_ctor)
31815	(get_member_function_is_dtor, set_member_function_is_dtor)
31816	(get_member_function_is_const, set_member_function_is_const)
31817	(get_member_function_vtable_offset)
31818	(set_member_function_vtable_offset)
31819	(get_member_function_is_virtual, set_member_function_is_virtual):
31820	Likewise.
31821	(set_member_access_specifier): Add an overload that takes a
31822	reference to decl_base.
31823	(set_member_is_static, set_member_function_{is_dtor, is_ctor,
31824	is_const, vtable_offset, is_virtual}): Pass the member function as
31825	a reference.): Add an overload that takes the member as a
31826	reference, and write the older overload in terms of the new one.
31827
318282015-03-09  Dodji Seketeli <dodji@redhat.com>
31829
31830	Make overloads of decl_base::get_qualified_name() return a reference
31831	* incude/abg-ir.h (decl::get_{qualified_name,
31832	qualified_parent_name}): Return a reference to a string rather
31833	than a copy of a string.
31834	(qualified_type_def::get_qualified_name): Likewise.
31835	(reference_type_def::get_qualified_name): Likewise.
31836	(array_type_def::get_qualified_name): Likewise.
31837	(class enum_type_decl::enumerator): Make this is an out-of-line
31838	pimpled class implementation.
31839	(enum_type_decl::enumerator::{get, set}_enum_type): Declare new
31840	method.
31841	(enum_type_decl::enumerator::get_qualified_name): Change this so
31842	that it doesn't take the name of the enum type anymore.
31843	* src/abg-comparison.cc (enum_diff::report): Adjust for
31844	enum_type_decl::enumerator::get_qualified_name() not taking the
31845	name of the enum type anymore.
31846	* src/abg-ir.cc (decl_base::get_qualified_parent_name): Return a
31847	reference to string.
31848	(decl_base::get_qualified_name): Likewise.
31849	(decl_base::get_qualified_name(string&)): Use the new verson of
31850	decl_base::get_qualified_name() that returns a reference.
31851	({qualified_type_def, pointer_type_def, reference_type_def,
31852	array_type_def}::get_qualified_name()): Return a string reference.
31853	({qualified_type_def, pointer_type_def, reference_type_def,
31854	array_type_def}::get_qualified_name(string& qualified_name)
31855	const): Use the new qualified_type_def::get_qualified_name() that
31856	returns a string reference.
31857	(class enum_type_decl::priv): New type.
31858	(enum_type_decl::{get_underlying_type, get_enumerators}): Adjust.
31859	(enum_type_decl::{enumerator::enumerator, enumerator::operator==,
31860	enumerator::get_name, enumerator::get_qualified_name,
31861	enumerator::set_name, enumerator::get_value,
31862	enumerator::set_value, enumerator::get_enum_type,
31863	enumerator::set_enum_type}): Define methodes out-of-line here.
31864
318652015-02-24  Dodji Seketeli <dodji@redhat.com>
31866
31867	Harden strip_typedef
31868	* src/abg-ir.cc (strip_typedef): Consider that the underlying type
31869	can be void.
31870
318712015-02-24  Dodji Seketeli <dodji@redhat.com>
31872
31873	When reading DWARF set member type access where the type is built
31874	* include/abg-fwd.h (is_class(decl_base*)): Return a class_decl*
31875	rather than just a bool.
31876	* abg-ir.cc (is_class(decl_base*)): Return a class_decl* rather
31877	than just a bool.  Simplify the implementation.
31878	* src/abg-dwarf-reader.cc
31879	(maybe_set_member_type_access_specifier): Define new static
31880	function.
31881	(build_ir_node_from_die): Remove the is_member_type flag.  When
31882	building member types set their access specifier.  Simplify the
31883	logic of detecting that a type is a member type; basically
31884	delegate taht to the new maybe_set_member_type_access_specifier().
31885	(build_class_type_and_add_to_ir): Do not try to set the member
31886	type access specifiers anymore.
31887	(build_qualified_type, build_pointer_type, build_reference_type)
31888	(build_typedef_type, build_var_decl, build_function_decl): Adjust.
31889
318902015-02-24  Dodji Seketeli <dodji@redhat.com>
31891
31892	Fix enum_diff::has_changes()
31893	* src/abg-comparison.cc (enum_diff::has_changes): Just use the
31894	normal comparison operator to compare the two enums here.  It's
31895	fast now.
31896
318972015-02-23  Dodji Seketeli <dodji@redhat.com>
31898
31899	Build the set of exported decls directly during DWARF loading
31900	* include/abg-ir.h ({var,function}_decl::get_id): Return a
31901	reference.
31902	* src/abg-ir.cc ({var,function}_decl::get_id): Return a reference
31903	to the string rather than copying it over.
31904	* include/abg-corpus.h (class corpus::exported_decls_builder):
31905	Declare new type.
31906	(corpus::{sort_functions, sort_variables,
31907	maybe_drop_some_exported_decls, get_exported_decls_builder}):
31908	Declare new methods.
31909	* src/abg-corpus.h (corpus::exported_decls_builder::priv): Define
31910	new type.
31911	(class symtab_build_visitor_type): Remove this type that is
31912	useless now.
31913	(corpus::exported_decls_builder::{exported_decls_builder,
31914	exported_functions, exported_variables,
31915	maybe_add_fn_to_exported_fns, maybe_add_var_to_exported_vars}):
31916	Define new functions.
31917	(corpus::priv::is_public_decl_table_built): Remove this data
31918	member.  It's now useless.
31919	(corpus::priv::priv): Adjust.
31920	(corpus::priv::build_public_decl_table): Remove this member
31921	function.  It's now useless.
31922	(corpus::{priv::build_unreferenced_symbols_tables, get_functions,
31923	get_variables}): No need to build the public decls table here.
31924	It's already built by the time the corpus is read from DWARF now.
31925	(corpus::{sort_functions, sort_variables,
31926	maybe_drop_some_exported_decls, get_exported_decls_builder}):
31927	Define new member functions.
31928	* src/abg-dwarf-reader.cc (read_context::exported_decls_builder):
31929	New data member.
31930	(read_context::read_context): Initialize it.
31931	(read_context::{exported_decls_builder,
31932	maybe_add_fn_to_exported_fns, maybe_add_var_to_exported_vars}):
31933	Define new member functions.
31934	(read_debug_info_into_corpus): Get the the new
31935	'exported_decls_builder' object from the corpus and stick it into
31936	the read context so the DWARF reading code can use it to build the
31937	exported decls set.  When the DWARF reading is done, sort the set
31938	of exported functions and variables that was built.
31939	(build_ir_node_from_die): When a function or variable is built,
31940	consider putting it into the set of exported decls.
31941	* tools/abicompat.cc (main): Now that the exported decls is built
31942	*before* we had a chance to stick the list of symbol IDs to keep,
31943	call corpus::maybe_drop_some_exported_decls() to update the set of
31944	exported decls we should consider for the corpus.
31945	was applied to that list and the final
31946
319472015-02-22  Dodji Seketeli <dodji@redhat.com>
31948
31949	Fix canonicalizing of member types ... *AGAIN*
31950	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For typedefs,
31951	we don't need to test that the current scope is a class to know
31952	that we are looking at a member type.  Just looking at the
31953	is_member flag is enough.
31954	So the issue arises when for instance, we are reading a class that
31955	defines a member typedef (or enum) and uses that enum as the type of a
31956	data member.  When reading that data member (before reading the
31957	definition of the typedef), we read the type of the data member; so we
31958	hit the typedef.  But build_ir_node_from_die() cannot fully construct
31959	the scope of the typedef before handing off the typedef because we are
31960	currently building it!  So it hands out a non-complete version of the
31961	class that is being built;  'is_member' is not set to 'true' because
31962	we are getting the type of the data member; it's not *necessarily* a
31963	member type.  So we need to check !is_class_type(scope) to know if we
31964	are given a member type.  I am now thinking that the "is_member" flag
31965	is actually useless.  I think I'll remove it in a later patch.
31966	Anyway, this fixes 'abidiff libabigail.so libabigail.so' again.  I
31967	have some stashed patches that brings it's time down to ~ 45 seconds.
31968	So we are getting close to being able to include that *ultimate* test in
31969	regression test suite.  Oh well.
31970	* src/abg-dwarf-reader.cc (build_ir_node_from_die): When building
31971	typedefs, enum and memeber classes, check that the scope is a
31972	member class to detect if we are building a member type.  In which
31973	case the caller is going to handle the canonicalizing of the
31974	member type *after* it's access specification has been adjusted.
31975	Otherwise, that adjustments happens after the type has been
31976	canonicalized and bad things happen at comparison type.
31977
319782015-02-21  Dodji Seketeli <dodji@redhat.com>
31979
31980	Bug 17649 Avoid endless looping on diff graph with cycles
31981	* include/abg-comp-filter.h (harm{less,ful}_filter::visit_end):
31982	Declare new methods.
31983	* include/abg-comparison.h (diff_context::maybe_apply_filters):
31984	Remove the traverse_nodes_once flag.
31985	* src/abg-comp-filter.cc (apply_filter): Force the traversing to
31986	operate in cycle avoidance mode.
31987	(harm{less,ful}_filter::visit): Update the category of the
31988	canonical node too.
31989	(harm{less,ful}_filter::visit_end): Define new method.
31990	* src/abg-comparison.cc (diff_context::maybe_apply_filters):
31991	Remove the traverse_nodes_once flag.  Adjust.  Simplify logic.
31992	(diff::traverse): Always call diff_node_visitor::{begin,end}.  If
31993	the node has already been visited previously then do not call
31994	diff_node_visitor::visit() and do not visit the children nodes.
31995	(category_propagation_visitor::visit_end):  If the node has
31996	already been visited, then propagate the category from the
31997	canonical nodes of the children nodes.
31998	(propagate_categories):  Force the traversing to operate in cycle
31999	avoidance mode.
32000
320012015-02-20  Dodji Seketeli <dodji@redhat.com>
32002
32003	Add missing new line after reporting alignment changes
32004	* src/abg-comparison.cc (distinct_diff::report): After calling
32005	report_size_and_alignment_changes, one needs to add a new line if
32006	some stuff got emitted out the output stream.
32007
320082015-02-20  Dodji Seketeli <dodji@redhat.com>
32009
32010	Add type checking overloads that ease their calling from GDB
32011	* include/abg-fwd.h (is_class_type, is_pointer, is_reference_type)
32012	(is_qualified_type): Declare overloads that take naked (non-smart)
32013	pointers.
32014	* src/abg-ir.cc (is_class_type, is_pointer, is_reference_type)
32015	(is_qualified_type): Define overloads that take naked (non-smart)
32016	pointers.
32017
320182015-02-20  Dodji Seketeli <dodji@redhat.com>
32019
32020	Remove overly eager assert in distinct_diff::report
32021	* src/abg-comparison.cc (distinct_diff::report): Remove over-eager
32022	assert.
32023
320242015-02-20  Dodji Seketeli <dodji@redhat.com>
32025
32026	Factorize late canonicalizing code in the dwarf reader
32027	* src/abg-dwarf-reader.cc
32028	(read_context::{canonicalize_types_scheduled,
32029	perform_late_type_canonicalizing}):  Factorize these from ...
32030	(build_translation_unit_and_add_to_ir): ... here.
32031
320322015-02-20  Dodji Seketeli <dodji@redhat.com>
32033
32034	Rename schedule_type_for_canonicalization -> schedule_type_for_late_canonicalization
32035	* src/abg-dwarf-reader.cc
32036	(read_context::schedule_type_for_late_canonicalization): Renamed
32037	read_context::schedule_type_for_canonicalization into this.  Also,
32038	add some sanity checking code in there.
32039	(build_class_type_and_add_to_ir, maybe_canonicalize_type): Adjust.
32040
320412015-02-20  Dodji Seketeli <dodji@redhat.com>
32042
32043	Adjust semantics of the 'is_member' flag of build_ir_node_from_die()
32044	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Rename
32045	is_member into is_member_type.  Adjust.
32046	(get_scope_for_die, build_translation_unit_and_add_to_ir)
32047	(build_namespace_decl_and_add_to_ir): Adjust.
32048	(build_class_type_and_add_to_ir): Adjust.  Adjust set to false
32049	when calling build_ir_node_from_die() to build a function_decl.
32050
320512015-02-20  Dodji Seketeli <dodji@redhat.com>
32052
32053	Simplify canonicalizing handling for typedefs
32054	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For typedefs,
32055	we don't need to test that the current scope is a class to know
32056	that we are looking at a member type.  Just looking at the
32057	is_member flag is enough.
32058
320592015-02-20  Dodji Seketeli <dodji@redhat.com>
32060
32061	Do not miss canonicalizing opportunities on non-member class types
32062	* src/abg-dwarf-reader.cc (build_ir_node_from_die): When a class
32063	is not a member type, then it at least ought to be scheduled for
32064	late canonicalizing.
32065
320662015-02-20  Dodji Seketeli <dodji@redhat.com>
32067
32068	Fix handling of canonicalizing of member enum types
32069	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Once we've
32070	built the enum type by calling build_enum_type(), do not try to
32071	canonicalize it here if it's a member type.  The calling
32072	build_class_type_and_add_to_ir() must deal with it already.
32073
320742015-02-20  Dodji Seketeli <dodji@redhat.com>
32075
32076	Stick qualified, pointer, reference and array types into the global scope
32077	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
32078	consider qualified, pointer, reference and array types as member
32079	types.  Only typedef, class and enum types are.
32080	(build_ir_node_from_die): Stick base, pointer, reference,
32081	qualified and array types into the global scope.
32082
320832015-02-20  Dodji Seketeli <dodji@redhat.com>
32084
32085	Avoid creating multiple versions of certain composite types
32086	* src/abg-dwarf-reader.cc (build_qualified_type)
32087	(build_pointer_type_def, build_reference_type, build_array_type)
32088	(build_typedef_type): If the composite type we are about to create
32089	was already created, just return the one that exists already.
32090
320912015-02-20  Dodji Seketeli <dodji@redhat.com>
32092
32093	Do not forget to canonicalize enum underlying type and void type
32094	* src/abg-dwarf-reader.cc (build_enum_type): Canoncialize the
32095	underlying type of the enum type.
32096	(build_ir_node_for_void_type): Canonicalize the void type.
32097
320982015-02-20  Dodji Seketeli <dodji@redhat.com>
32099
32100	Do not forget to associate DIE to the types they represent
32101	* src/abg-dwarf-reader.cc (build_type_decl, build_enum_type)
32102	(build_qualified_type, build_pointer_type_def)
32103	(build_reference_type, build_typedef_type)
32104	(build_class_type_and_add_to_ir): Take a new flag that says if the
32105	DIE is from the alternate debug info section or not.  Perform the
32106	DIE->type association in these functions.  Note that in
32107	build_class_type_and_add_to_ir we are now doing the DIE->type
32108	association even for declaration-only classes.  And for member
32109	types, do not bother doing the association because it's already
32110	been done by build_ir_node_from_die().
32111	(build_ir_node_from_die): Do not do the DIE->type association here
32112	anymore.  Adjust to the new signature of the build_* functions
32113	above that actually build the types.
32114
321152015-02-20  Dodji Seketeli <dodji@redhat.com>
32116
32117	Clear per-TU data before reading debub info for a TU
32118	* src/abg-dwarf-reader.cc
32119	(read_context::die_type_map): New accessor for the two DIE->Type
32120	maps we have; the one of the main debug info section and the one
32121	of the alternate debug info section.
32122	(read_context::{associate_die_to_type,
32123	lookup_type_from_die_offset}): use the new die_type_map()
32124	accessor.
32125	(read_context::clear_per_translation_unit_data): Factorize this
32126	from build_translation_unit_and_add_to_ir().  Also, add code to
32127	clear the DIE->type map as well as the vectors of offsets of the
32128	types of the DIEs to canonicalize after the translation unit has
32129	been read.
32130
321312015-02-19  Dodji Seketeli <dodji@redhat.com>
32132
32133	Fix the new regression test for type canonicalizing
32134	* tests/runtestcanonicalizetypes.sh.in (binaries): Refer to
32135	abg-tools-utils, not abg-tools-utils.o; the extension is computed
32136	automatically, depending on the underlying platform.
32137
321382015-02-19  Dodji Seketeli <dodji@redhat.com>
32139
32140	Make strip_typedef() act on canonical types only
32141	* include/abg-fwd.h (is_compatible_with_class_type): Declare new
32142	function.
32143	(canonicalize): Move the declaration here, from ...
32144	* include/abg-ir.h (canonicalize): ... here.
32145	* src/abg-ir.cc (strip_typedef): Assert that the input type is
32146	canonicalized.  Make sure that weak references are on
32147	canonicalized types.  Make sure that the returned type is a
32148	canonical one.
32149	(canonicalize): Make this return the canonical type that it has
32150	computed.
32151	* src/abg-comp-filter.cc (type_size_changed): Use the new
32152	is_compatible_with_class_type() function, instead of
32153	is_class_type().
32154
321552015-02-18  Dodji Seketeli <dodji@redhat.com>
32156
32157	Speed up function_decl::get_id() and var_decl::get_id()
32158	* src/abg-ir.cc (var_decl::priv::id_): New data member.
32159	(var_decl::get_id): Cache the result on the first invocation and
32160	and returns it on subsequent invocations.
32161	(function_dec::priv::id_): New data member.
32162	(function_decl::get_id): Cache the result on the first invocation
32163	and and returns it on subsequent invocations.
32164
321652015-02-18  Dodji Seketeli <dodji@redhat.com>
32166
32167	Speed up symbol version reading
32168	* src/abg-dwarf-reader.cc (find_symbol_table_section)
32169	(get_symbol_versionning_sections): Forward declare these existing
32170	static functions.
32171	(read_context::{symtab_section_,
32172	symbol_versionning_sections_loaded_,
32173	symbol_versionning_sections_found_, versym_section_
32174	verdef_section, verneed_section}): New data members.
32175	(read_context::read_context): Initialize them.
32176	(read_context::{find_symbol_table_section,
32177	get_symbol_versionning_sections, get_version_for_symbol}):
32178	Implement a caching version of their exisiting non-caching
32179	counterpart.
32180	(read_context::lookup_elf_symbol_from_index): Use the new caching
32181	functions read_context::find_symbol_table_section and
32182	read_context::get_version_for_symbol.
32183	(read_context::load_symbol_maps): Likewise, use the new caching
32184	function read_context::find_symbol_table_section.
32185
321862015-02-17  Dodji Seketeli <dodji@redhat.com>
32187
32188	Stop traversing function/variable node when added to symbol table
32189	* src/abg-corpus.cc (symtab_build_visitor_type::visit_begin):
32190	Replace symtab_build_visitor_type::visit_end with this and return
32191	false.
32192
321932015-02-13  Dodji Seketeli <dodji@redhat.com>
32194
32195	Do not apply diff filters sub-tree not carrying changes
32196	* src/abg-comp-filter.cc ({harmless, harmful}_filter::visit): Do
32197	not try to do the categorizing on a diff sub-tree that does
32198	not carry any change.
32199	* src/abg-comparison.cc (diff_context::maybe_apply_filters): Do
32200	not bother trying to apply the filters on a diff sub-tree that
32201	does not carry any change.
32202
322032015-02-13  Dodji Seketeli <dodji@redhat.com>
32204
32205	Canonicalize types either early or late after TU reading
32206	* include/abg-fwd.h (is_class_type)
32207	(type_has_non_canonicalized_subtype): Declare new functions.
32208	(is_member_type): Remove the overload that takes a decl_base_sptr.
32209	It's superfluous.  We just need the one that takes a
32210	type_base_sptr.
32211	* include/abg-ir.h (translation_unit::{is_constructed,
32212	set_is_constructed}): Add new methods.
32213	(class_decl::has_virtual_member_functions): Likewise.
32214	(class decl_base): Makes it virtually inherit ir_traversable_base.
32215	(class type_base): Make this virtually inherit traversable_base
32216	too.
32217	(type_base::canonicalize): Renamed enable_canonical_equality
32218	into this.
32219	(type_base::traverse): Declare new virtual method.
32220	(canonicalize): Renamed enable_canonical_equality into this.
32221	(scope_type_decl::traverse): Declare new virtual method.
32222	(namespace_decl::get_pretty_representation): Declare new virtual
32223	method.
32224	(function_type::traverse): Likewise.
32225	(class_decl::base_spec::traverse): Likewise.
32226	(ir_node_visitor::visit): Remove the overloads and replace each of
32227	them with a pair of ...
32228	(ir_node_visitor::{visit_begin, visit_end}): ... of these.
32229	* include/abg-traverse.h (traversable_base::visiting): New
32230	method.
32231	(traversable_base::visiting_): New data member.
32232	(traversable_base::traversable_base): New constructor.
32233	* src/abg-ir.cc ({scope_decl, type_decl, namespace_decl,
32234	qualified_type_def, pointer_type_def, reference_type_def,
32235	array_type_def, enum_type_decl, typedef_decl, var_decl,
32236	function_decl, function_decl::parameter, class_decl,
32237	class_decl::member_function_template,
32238	class_decl::member_class_template, function_tdecl,
32239	class_tdecl}::traverse): Fix this to properly set the
32240	traversable_base::visiting_ flag and to reflect the new signatures
32241	of the ir_node_visitor methods.
32242	({type_base, scope_type_decl, function_type,
32243	class_decl::base_spec}::traverse): New method.
32244	(type_base::get_canonical_type_for): Handle the case of the type
32245	already having a canonical type.  Properly hash the type using the
32246	dynamic type hasher.  Look through declaration-only classes to
32247	consider the definition of the class instead.  Fix logic to have a
32248	single pointer of return, to ease debugging.
32249	(canonicalize): Renamed enable_canonical_equality into this.
32250	(namespace_decl::get_pretty_representation): Define new method.
32251	(ir_node_visitor::visit): Replace each of these overloads with a
32252	pair of visit_begin/visit_end ones.
32253	(translation_unit::priv::is_constructed_): New data member.
32254	(translation_unit::priv::priv): Initialize it.
32255	(translation_unit::{is_constructed, set_is_constructed}): Define
32256	new methods.
32257	(is_member_type(const decl_base_sptr)): Remove.
32258	(is_class_type(decl_base *d)): Define new function.
32259	(class_decl::has_virtual_member_functions): Define new method.
32260	(equals(const class_decl&, const class_decl&, change_kind*)): If
32261	the containing translation unit is not constructed yet, do not
32262	take virtual member functions in account when comparing the
32263	classes.  This is because when reading from DWARF, there can be
32264	DIEs that change the number of virtual member functions after the
32265	DIE of the class.  So one needs to start taking virtual members
32266	into account only after the translation unit has been constructed.
32267	(class non_canonicalized_subtype_detector): Define new type.
32268	(type_has_non_canonicalized_subtype): Define new function.
32269	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Renamed
32270	this into symtab_build_visitor_type::visit_end.
32271	* src/abg-dwarf-reader.cc (die_type_map_type): New typedef.
32272	(die_class_map_type): This is now a typedef on a map of
32273	Dwarf_Off/class_decl_sptr.
32274	(read_context::{die_type_map_, alternate_die_type_map_,
32275	types_to_canonicalize_, alt_types_to_canonicalize_}): New data
32276	members.
32277	(read_context::{associate_die_to_decl,
32278	associate_die_to_decl_primary}): Make these methods public.
32279	(read_context::{associate_die_to_type,
32280	lookup_type_from_die_offset, is_wip_class_die_offset,
32281	types_to_canonicalize, schedule_type_for_canonicalization}):
32282	Define new methods.
32283	(build_type_decl, build_enum_type)
32284	(build_class_type_and_add_to_ir, build_qualified_type)
32285	(build_pointer_type_def, build_reference_type, build_array_type)
32286	(build_typedef_type, build_function_decl): Do not canonicalize
32287	types here.
32288	(maybe_canonicalize_type): Define new function.
32289	(build_ir_node_from_die): Take a new flag that says if the ir node
32290	is a member type/function or not. Early-canonicalize base types.
32291	Canonicalize composite types that have only canonicalized
32292	sub-types.  Schedule the other types for late canonicalizing.  For
32293	class types, early canonicalize those that are non-member types,
32294	that are fully constructed and that have only canonicalized
32295	sub-types.  Adjust to the new signature of build_ir_node_from_die.
32296	(get_scope_for_die, build_namespace_decl_and_add_to_ir)
32297	(build_qualified_type, build_pointer_type_def)
32298	(build_reference_type, build_array_type, build_typedef_type)
32299	(build_var_decl, build_function_decl): Adjust for the new
32300	signature of build_ir_node_from_die.
32301	(build_translation_unit_and_add_to_ir): Likewise.  Perform the
32302	late canonicalizing of the types that have been scheduled for
32303	that.
32304	(build_class_type_and_add_to_ir): Return a class_decl_sptr, not a
32305	decl_base_sptr.  Adjust for the new signature of
32306	build_ir_node_from_die.  Early canonicalize member types that are
32307	created and added to a given class, or schedule them for late
32308	canonicalizing.
32309	* src/abg-reader.cc (class read_context::{m_wip_classes_map,
32310	m_types_to_canonicalize}): New data members.
32311	(read_context::{clear_types_to_canonicalize,
32312	clear_wip_classes_map, mark_class_as_wip, unmark_class_as_wip,
32313	is_wip_class, maybe_canonicalize_type,
32314	schedule_type_for_late_canonicalizing,
32315	perform_late_type_canonicalizing}): Add new method definitions.
32316	(read_context::clear_per_translation_unit_data): Call
32317	read_context::clear_types_to_canonicalize().
32318	(read_translation_unit_from_input): Call
32319	read_context::perform_late_type_canonicalizing() at the end of the
32320	function.
32321	(build_function_decl): Fix the function type canonicalizing (per
32322	translation) that was already in place.  Do the canonicalizing of
32323	these only when the type is fully built.  Oops.  This was really
32324	brokend.  Also, when the function type is constructed, consider it
32325	for type canonicalizing.
32326	(build_type_decl): Early canonicalize basic types.
32327	(build_qualified_type_decl, build_pointer_type_def)
32328	(build_pointer_type_def, build_reference_type_def)
32329	(build_array_type_def, build_enum_type_decl, build_typedef_decl):
32330	Handle the canonicalizing for these composite types: either early
32331	or late.
32332	(build_class_decl): Likewise.  Also, mark this class a 'being
32333	built' until it's fully built.  This helps the canonicalizing code
32334	to know that it should leave a class alone until it's fully built.
32335	* tests/test-ir-walker.cc (struct name_printing_visitor): Adjust
32336	to the visitor methods naming change.
32337	* configure.ac: Generate the tests/runtestcanonicalizetypes.sh
32338	testing script from tests/runtestcanonicalizetypes.sh.in.
32339	* tests/runtestcanonicalizetypes.sh.in: Add the template for the
32340	new runtestcanonicalizetypes.sh script that test for type
32341	canonicalizing.
32342	* tests/Makefile.am: Add the new runtestcanonicalizetypes.sh
32343	regression testing script to the build system.
32344
323452015-02-18  Dodji Seketeli <dodji@redhat.com>
32346
32347	Factorize per TU data clearing in the xml-abi reader
32348	* src/abg-reader.cc
32349	(read_context::clear_per_translation_unit_data): Factorize this
32350	function out of ...
32351	(read_context::read_translation_unit_from_input): ... this one.
32352
323532015-02-13  Dodji Seketeli <dodji@redhat.com>
32354
32355	Use the deep type sptr equality operator when possible
32356	* src/abg-ir.cc (equals):  On function_decl overload, use the deep
32357	sptr type equality operator when comparing types.
32358	(non_type_tparameter::operator==): Likewise.
32359
323602015-02-18  Dodji Seketeli <dodji@redhat.com>
32361
32362	Properly compare virtualness of member functions
32363	* src/abg-ir.cc (equals(const function_decl&, const
32364	function_decl&, change_kind*)): Compare virtualness of member
32365	function before comparing their vtable offsets.
32366
323672015-02-13  Dodji Seketeli <dodji@redhat.com>
32368
32369	Misc style fixes
32370	* include/abg-ir.h (reference_type_def::get_pointed_to_type): use
32371	type_base_sptr, rather than shared_ptr<type_base>
32372	(typdef_decl::get_underlying_type): Likewise.
32373	(function_decl::get_return_type): Likewise.
32374	(function_decl::set_type): Likewise.
32375	(class_decl::member_class_template::as_class_tdecl): Likewise.
32376	* src/abg-comparison.cc (compute_diff): Remove useless vertical
32377	space.
32378	(corpus_diff::traverse): Add a vertical space after this.
32379	* src/abg-dwarf-reader.cc (type_ptr_map): Remove this unused
32380	typedef.
32381	(get_version_for_symbol)
32382	(finish_member_function_reading): Fix the comments of these
32383	functions.
32384	* src/abg-reader.cc (build_function_decl): Return a
32385	function_decl_sptr rather than a shared_ptr<function_decl>.
32386	(build_qualified_type_decl)
32387	(build_pointer_type_def, build_reference_type_def)
32388	(build_array_type_def, build_typedef_decl, build_class_decl): Use
32389	the is_<someking_of_type> functions here, rather than using the
32390	dynamic cast.  This increases maintainability.
32391
323922015-02-11  Dodji Seketeli <dodji@redhat.com>
32393
32394	Optimize compressed debug info reading for speed
32395	* src/abg-dwarf-reader.cc
32396	(find_last_import_unit_point_before_die): Look for the inclusion
32397	point of the partial unit in reverse topological order.
32398
323992015-02-10  Dodji Seketeli <dodji@redhat.com>
32400
32401	Share private data of class_diff nodes
32402	* src/abg-comparison.cc (class_diff::class_diff): Do not
32403	initialize the private data of class_diff here.
32404	(compute_diff): In the overload for class_diff, initialize the
32405	private data of the new instance of class_diff to the private data
32406	of its canonical instance.
32407	(redundancy_marking_visitor::visit_begin): If a node is marked
32408	redundant, do not dare visit its children.  In cases of classes
32409	that have members that reference themselves, this prevents us from
32410	wrongly marking some of the data member changes as being
32411	redundant.
32412
324132015-02-10  Dodji Seketeli <dodji@redhat.com>
32414
32415	Do not crash when applying filters to a NULL diff
32416	* src/abg-comparison.cc (diff_context::maybe_apply_filters): Do
32417	not crash when called with a NULL diff.
32418
324192015-02-09  Dodji Seketeli <dodji@redhat.com>
32420
32421	Initial implementation of canonical type comparison in the IR
32422	* include/abg-ir.h (class type_base): Pimplify this class.
32423	(type_base::canonical_types_map_type): New typedef.
32424	(type_base::{get_canonical_types_map, get_canonical_type_for,
32425	get_canonical_type}): Declare new member functions.
32426	(enable_canonical_equality): Declare new function.
32427	(struct type_base::hash): Declare this functor here.
32428	* src/abg-ir.cc ():
32429	* src/abg-dwarf-reader.cc (build_type_decl, build_enum_type)
32430	(build_class_type_and_add_to_ir, build_qualified_type)
32431	(build_pointer_type_def, build_reference_type, build_array_type)
32432	(build_typedef_type, build_function_decl): Enable canonical
32433	equality for the resulting type returned by these functions.
32434	* src/abg-hash.cc (type_base::hash::operator()(const type_base&)):
32435	Adjust as this is now out-of-line.  Also, add two overloads for
32436	type_base* and type_base_sptr.
32437	(struct type_base::priv): Define new type for private data of
32438	type_base.
32439	(type_base::{get_canonical_types_map, get_canonical_type_for,
32440	get_canonical_type}): Define new member functions.
32441	(enable_canonical_equality): Define new function
32442	(type_base::{type_base, set_size_in_bits, get_size_in_bits,
32443	set_alignment_in_bits, get_alignment_in_bits}): Adjust.
32444	({type_decl, scope_type_decl, qualified_type_def,
32445	pointer_type_def, reference_type_def, array_type_def,
32446	enum_type_decl, typedef_decl, function_type,
32447	class_decl}::operator==): If the types being compared have
32448	canonical type then use them for comparison.
32449
324502015-02-07  Dodji Seketeli <dodji@redhat.com>
32451
32452	Don't walk the diff tree when there are no suppressions
32453	* src/abg-comparison.cc (apply_suppressions): Do not walk the diff
32454	tree to apply suppressions when there are no suppressions to
32455	apply.
32456
324572015-02-07  Dodji Seketeli <dodji@redhat.com>
32458
32459	Speedup some diff::has_changes() implementations
32460	* src/abg-comparison.cc ({distinct_diff, var_diff,
32461	class_diff}::has_changes): Use the hash value of the diff subjects
32462	to detect quickly if they differ.  If they don't, then go the slow
32463	path of comparing the types.
32464
324652015-02-05  Dodji Seketeli <dodji@redhat.com>
32466
32467	Get out as early as possible when comparing different ABI artefacts
32468	* include/abg-ir.h (equal): Turn the last parameter of type
32469	change_kind& into a change_kind*.  Do this on all the overloads'
32470	declarations.
32471	* src/abg-ir.cc (equal): Do the same for the definitions of the
32472	overloads and adapt them to report about the kind of changes makes
32473	the two ABI artifact different -- only if the change_kind pointer
32474	is non-null.  That way, callers have a way to choose if they want
32475	to go the expensive route of knowing what kind of changes there
32476	are.
32477	({decl_base, scope_decl, type_base, scope_type_decl,
32478	qualified_type_def, pointer_type_def, pointer_type_def,
32479	reference_type_def, array_type_def, enum_type_decl, typedef_decl,
32480	var_decl, function_type, function_decl, function_decl::parameter,
32481	class_decl::base_spec, class_decl}::operator==): Adjust to the new
32482	signature of equals; call it with the change_kind* parameter set
32483	to NULL.
32484	* src/abg-comparison.cc ({var_diff, pointer_diff, array_diff,
32485	reference_diff, qualified_type_diff, enum_diff, class_diff,
32486	base_diff, scope_diff, fn_parm_diff, function_decl_diff,
32487	type_decl_diff, typedef_diff}::has_local_changes): Adjust.
32488
324892015-02-05  Dodji Seketeli <dodji@redhat.com>
32490
32491	Rename diff::length() into diff::has_changes()
32492	* include/abg-comparison.h (*::has_changes): Rename the ::length()
32493	method of all the diff types that inherit the diff class into
32494	this, in the class declarations.
32495	* src/abg-comparison.cc (*::has_changes): Do the same as in the
32496	declarations, in the definitions.
32497	(diff::to_be_reported, distinct_diff::has_local_changes)
32498	(distinct_diff::report, distinct_diff::, array_diff::has_changes)
32499	(reference_diff::has_changes, qualified_type_diff::has_changes)
32500	(enum_diff::has_changes, translation_unit_diff::has_changes)
32501	(suppression_categorization_visitor::visit_end)
32502	(redundancy_marking_visitor::visit_begin): Adjust.
32503	* tests/test-diff-dwarf.cc (main): Adjust.
32504	* tools/abidiff.cc (main): Likewise.
32505
325062015-01-27  Dodji Seketeli <dodji@redhat.com>
32507
32508	Add a method to diff_context to dump a diff tree to error output
32509	* include/abg-comparison.h (diff_context::error_output_stream):
32510	Make this function const.
32511	(diff_context::{do_dump_diff_tree}): Declare new methods.
32512	* src/abg-comparison.cc (diff_context::error_output_stream): Make
32513	this function const.
32514	(diff_context::do_dump_diff_tree): Define new methods.
32515
325162015-01-27  Dodji Seketeli <dodji@redhat.com>
32517
32518	Keep children nodes of class_diff and scope_diff sorted
32519	* include/abg-comparison.h (decl_diff_base, type_diff_base):
32520	Forward declare these types.
32521	(diff_sptrs_type, decl_diff_base_sptr, decl_diff_base_sptrs_type)
32522	(type_diff_base_sptr, type_diff_base_sptrs_type)
32523	(base_diff_sptrs_type, string_type_diff_base_sptr_map)
32524	(string_decl_diff_base_sptr_map, string_diff_sptr_map): New
32525	typedefs.
32526	(changed_type_or_decl, changed_parm, changed_parms_type)
32527	(string_changed_type_or_decl_map)
32528	(unsigned_changed_type_or_decl_map, changed_type_or_decl_vector):
32529	Remove typedefs.
32530	(class_diff::changed_base): Make this return a
32531	base_diff_sptrs_type now.  No more a string_base_diff_sptr_map.
32532	(class_diff::changed_member_fns): Make this return a
32533	function_decl_diff_sptrs_type, no more a
32534	string_changed_member_function_sptr_map.
32535	(class_diff::changed_types): Make this return a diff_sptrs_type,
32536	not a string_changed_type_or_decl_map anymore.
32537	(class_diff::changed_decls): Make this return a diff_sptrs_type,
32538	not a string_changed_type_or_decl_map anymore.
32539	* src/abg-comp-filter.cc (has_virtual_mem_fn_change)
32540	(has_non_virtual_mem_fn_change): Adjust.
32541	* src/abg-comparison.cc (compute_diff): For the decl_base_sptr and
32542	type_base_sptr overloads, assert that the resulting diff is
32543	non-null.
32544	(class_diff::priv::{sorted_changed_base_,
32545	sorted_changed_member_types_, sorted_subtype_changed_dm_,
32546	sorted_changed_dm_, sorted_changed_member_functions_,
32547	sorted_changed_member_class_tmpls_}): New data members.
32548	(class_diff::priv::changed_member_types_): Changed the type of
32549	this from string_changed_type_or_decl_map to string_diff_sptr_map.
32550	(class_diff::priv::changed_member_functions_): Changed the type of
32551	this from string_changed_member_function_sptr_map to
32552	string_function_decl_diff_sptr_map.
32553	(class_diff::priv::changed_member_class_tmpls_): Changed the type
32554	of this from string_changed_type_or_decl_map to
32555	string_diff_sptr_map.
32556	(class_diff::ensure_lookup_tables_populated): Adjust.  Initialize
32557	the new sorted members class_diff::priv::{sorted_changed_bases_,
32558	sorted_subtype_changed_dm_, sorted_changed_dm_,
32559	sorted_changed_member_functions_, sorted_changed_member_types_}.
32560	(class_diff::priv::{member_type_has_changed,
32561	member_class_tmpl_has_changed, count_filtered_bases,
32562	count_filtered_subtype_changed_dm, count_filtered_changed_mem_fns,
32563	}): Adjust.
32564	(class_diff::chain_into_hierarchy): Adjust:  The children nodes of
32565	class_diff are now laid out in a sorted way.
32566	(class_diff::{changed_bases, changed_member_fns}): Adjust.
32567	(base_diff_comp, virtual_member_function_diff_comp): New types.
32568	(sort_string_base_diff_sptr_map)
32569	(sort_string_virtual_member_function_diff_sptr_map): New static
32570	functions.
32571	(data_member_diff_comp): Renamed var_diff_comp into this.
32572	(sort_unsigned_data_member_diff_sptr_map): Renamed sort_var_diffs
32573	into this and adjust.
32574	(class_diff::report): Do not sort the nodes we are about to emit
32575	here.  Just use the natural order of the nodes in their parent
32576	tree as they should now be sorted.
32577	(scope_diff::priv::{changed_types_, changed_decls_}): Change the
32578	type of these from string_changed_type_or_decl_map to
32579	string_diff_sptr_map.
32580	(scope_diff::priv::{sorted_changed_types_,
32581	sorted_changed_decls_}): New data members.
32582	(scope_diff::ensure_lookup_tables_populated): Adjust.  Initialize
32583	the new scope_diff::priv::sorted_changed_{types_, decls_}.
32584	(scope_diff::chain_into_hierarchy): Adjust.  The children of
32585	scope_diff are now sorted.
32586	(scope_diff::changed_{types, decls}): Return the sorted vectors of
32587	children nodes.
32588	(struct changed_type_or_decl_comp): Remove.
32589	(struct diff_comp): New type.
32590	(sort_changed_type_or_decl): Remove.
32591	(sort_string_diff_sptr_map): New static function.
32592	(scope_diff::report): Adjust.  Do not sort children nodes here
32593	ourselves before reporting about them.  Rather, use the natural
32594	topological order of the children as they are now sorted.
32595	(corpus_diff::priv::sorted_changed_vars_): Renamed
32596	corpus_diff::priv::changed_vars_ into this to make it more
32597	explicit that the things it holds are sorted.
32598	(corpus_diff::changed_variables_sorted): Adjust.
32599	(corpus_diff::priv::ensure_lookup_tables_populated): Likewise.
32600	(corpus_diff::priv::apply_filters_and_compute_diff_stats):
32601	Likewise.
32602	(corpus_diff::priv::categorize_redundant_changed_sub_nodes):
32603	Likewise.
32604	(corpus_diff::priv::clear_redundancy_categorization): Likewise.
32605	(corpus_diff::priv::maybe_dump_diff_tree): Likewise.
32606	(corpus_diff::report): Likewise.
32607
326082015-01-26  Dodji Seketeli <dodji@redhat.com>
32609
32610	Hand-code the string representation of GElf_Ehdr::e_machine
32611	* configure.ac: Do not check for elfutils/libebl.h and libebl.a
32612	anymore.
32613	* src/abg-dwarf-reader.cc: Do not include elfutils/libebl.h
32614	anymore.
32615	(e_machine_to_string): Define new static
32616	function.
32617	(read_context::::load_elf_architecture): Use the new
32618	e_machine_to_string() function rather than ebl_backend_name() and
32619	ebl_openbackend().
32620	* tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: Adjust.
32621
326222015-01-26  Dodji Seketeli <dodji@redhat.com>
32623
32624	Fix chaining of descendant node of qualified type diff node
32625	* include/abg-comparison.h
32626	(qualified_type_diff::leaf_underlying_type_diff): Declare new
32627	accessor.
32628	* src/abg-comparison.cc (get_leaf_type): Forward declare this
32629	static function.
32630	(qualified_type_diff::priv::leaf_underlying_type_diff): Define new
32631	data member.
32632	(qualified_type_diff::leaf_underlying_type_diff): Define this new
32633	accessor.
32634	(qualified_type_diff::chain_into_hierarchy): Call
32635	leaf_underlying_type_diff() here rather than
32636	underlying_type_diff().
32637	(qualified_type_diff::report): Use leaf_underlying_type_diff()
32638	rather than re-computing the diff between the two leaf underlying
32639	type diff nodes.
32640	* libtest26-qualified-redundant-node-v{0,1}.so: New binary test
32641	input files.
32642	* tests/data/test-diff-filter/test26-qualified-redundant-node-v{0,1}.cc:
32643	Source code for the binary test inputs above.
32644	* tests/test-diff-filter.cc (int_out_spec): Add the new test input
32645	to the vector of test input data over which to run this test
32646	harness.
32647	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-{0,1.txt:
32648	New test input file.
32649	* tests/data/Makefile.am: Add the new test input data to the
32650	source distribution.
32651
326522015-01-24  Dodji Seketeli <dodji@redhat.com>
32653
32654	Recognize cyclic diff tree nodes as being redundant
32655	* include/abg-comparison.h (enum visiting_kind): Rename
32656	enumerator DO_NOT_MARK_VISITED_NODES_AS_TRAVERSED into
32657	DO_NOT_MARK_VISITED_NODES_AS_VISITED.
32658	(diff_context::diff_has_been_visited): Rename
32659	diff_context::diff_has_been_traversed into this.
32660	(diff_context::mark_diff_as_visited): Rename
32661	diff_context::mark_diff_as_traversed into this.
32662	(diff_context::forget_visited_diffs): Rename
32663	diff_context::forget_traversed_diffs into this.
32664	(diff_context::forbid_visiting_a_node_twice): Rename
32665	diff_context::forbid_traversing_a_node_twice into this.
32666	(diff_context::visiting_a_node_twice_is_forbidden): Rename
32667	diff_context::traversing_a_node_twice_is_forbidden into this.
32668	(diff::is_traversing): Move this from protected to public.
32669	* src/abg-comparison.cc (diff_context::priv::visited_diff_nodes_):
32670	Rename diff_context::priv::traversed_diff_nodes_ into this.
32671	(diff_context::priv::forbid_visiting_a_node_twice_): Rename
32672	diff_context::priv::forbid_traversing_a_node_twice_ into this.
32673	(diff_context::priv::priv): Adjust.
32674	(diff_context::diff_has_been_visited): Rename
32675	diff_context::diff_has_been_traversed into this.  Adjust.
32676	(diff_context::mark_diff_as_visited): Rename
32677	diff_context::mark_diff_as_traversed into this.  Adjust.
32678	(diff_context::forget_visited_diffs): Rename
32679	diff_context::forget_traversed_diffs into this.  Adjust.
32680	(diff_context::forbid_visiting_a_node_twice): Rename
32681	diff_context::forbid_traversing_a_node_twice into this.
32682	(diff_context::visiting_a_node_twice_is_forbidden): Rename
32683	diff_context::traversing_a_node_twice_is_forbidden into this.
32684	(diff_context::maybe_apply_filters): Adjust.
32685	(diff::end_traversing): Remove the 'mark_as_traversed' parameter
32686	of this.  Remove the visited-marking code.
32687	(diff::traverse): This is the crux of the changes of this patch.
32688	Avoid traversing a node that is being traversed, but one can visit
32689	a node being visited.  Also, traversing a node means visiting it
32690	and visiting its children nodes.
32691	(diff::is_filtered_out):  Simplify logic for filtering redundant
32692	code.  Basically all nodes that are redundant are filtered.  All
32693	the complicated logic that was due when diff nodes were shared is
32694	not relevant anymore.
32695	(corpus_diff::priv::categorize_redundant_changed_sub_nodes)
32696	(propagate_categories, apply_suppressions)
32697	(diff_node_printer::diff_node_printer, print_diff_tree)
32698	(categorize_redundant_changed_sub_nodes)
32699	(clear_redundancy_categorization)
32700	(clear_redundancy_categorization): Adjust.
32701	(redundancy_marking_visitor::visit_begin): Adjust.  Also, if the
32702	current diff node is already being traversed (that's a clyclic
32703	node) then mark it as redundant.
32704	* src/abg-comp-filter.cc (apply_filter): Adjust.
32705	* tests/data/test-diff-filter/test16-report-2.txt: New test input data.
32706	* tests/data/test-diff-filter/libtest25-cyclic-type-v{0,1}.so: New
32707	test input binaries.
32708	* tests/data/test-diff-filter/test25-cyclic-type-v{0,1}.cc: Source
32709	code for the test input binaries.
32710	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: New
32711	test input data.
32712	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt:
32713	Likewise.
32714	* tests/test-diff-filter.cc (in_out_specs): Add the new test
32715	inputs above to the list of test input data over which to run this
32716	test harness.
32717	* tests/data/Makefile.am: Add the new test files above to source
32718	distribution.
32719	* tests/data/test-diff-filter/test16-report.txt: Adjust.
32720	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
32721
327222015-01-20  Dodji Seketeli <dodji@redhat.com>
32723
32724	Tighten the condition for creating a cloned function from DWARF
32725	* src/abg-dwarf-reader.cc (build_ir_node): Re-indent.  Also,
32726	consider that when a DIE C refers to a DIE A via the
32727	DW_abstract_origin attribute, C represents a clone of A, only if C
32728	and A have *different* linkage names.
32729
327302015-01-19  Dodji Seketeli <dodji@redhat.com>
32731
32732	Fix the output of the array diff report
32733	* src/abg-comparison.cc (array_diff::report): Refer to the pretty
32734	representation of the array when talking about changes of the
32735	array element type.
32736	* src/abg-ir.cc (equals): In the overload for array_type, use the
32737	equality operator that knows how to handle null pointers to
32738	element type.  This avoids crashes when the pointer to element
32739	type is null.
32740	* tests/data/test-diff-dwarf/test10-report.txt: Adjust.
32741	* tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
32742	Likewise.
32743
327442015-01-14  Dodji Seketeli <dodji@redhat.com>
32745
32746	Do not install the generated documentation by default
32747	* doc/manuals/Makefile.am: Do not install the generated
32748	documentation by default
32749
327502015-01-14  Dodji Seketeli <dodji@redhat.com>
32751
32752	Make sure to install html docs & gziped info on make install
32753	* doc/manuals/Makefile.am: Make sure Make sure to install html
32754	docs & gziped info on make install
32755
327562015-01-14  Dodji Seketeli <dodji@redhat.com>
32757
32758	Do not install the abinilint program
32759	* tools/Makefile.am: Add abinilint to the noinst_PROGRAMS primary.
32760
327612015-01-13  Dodji Seketeli <dodji@redhat.com>
32762
32763	Small grammar fix in a manpage title
32764	* doc/manuals/conf.py: Fix the grammar of the title of the abidiff
32765	man page.
32766
327672015-01-13  Dodji Seketeli <dodji@redhat.com>
32768
32769	Generate texinfo documentation properly
32770	* doc/manuals/Makefile.am: Generate texinfo doc, install it and
32771	uninstall it.
32772	* doc/manuals/libabigail-tools.rst: Do not use the :doc: syntax to
32773	refer to documents because it doesn't seem to work with sphinx
32774	right now.  Rather, use a table of content.
32775
327762015-01-13  Dodji Seketeli <dodji@redhat.com>
32777
32778	Fix man pages installation
32779	* doc/manuals/Makefile.am: Install the man pages only if they are
32780	generated.
32781
327822015-01-13  Dodji Seketeli <dodji@redhat.com>
32783
32784	Bump the candidate version of the library to 1.0
32785	* configure.ac: Bump version to 1.0.0
32786
327872015-01-13  Dodji Seketeli <dodji@redhat.com>
32788
32789	Do not forget to install the Manpages
32790	* doc/manuals/Makefile.am: Add the man pages to the man7_MANS
32791	automake primary.
32792
327932015-01-13  Dodji Seketeli <dodji@redhat.com>
32794
32795	Adjust archive-related code for the recent addition of tools_utils::*
32796	* tests/Makefile.am: tools/libtoolsutils.la is no more.
32797	* tests/test-write-read-archive.cc (main): Adjust.
32798	* tools/abiar.cc (extract_tus_from_archive): Likewise.
32799
328002015-01-13  Dodji Seketeli <dodji@redhat.com>
32801
32802	Generate Manpages for abidiff, abidw, abilint
32803	* doc/manuals/conf.py: Define man pages for abidiff, abidw,
32804	abilint and an introductory one for libabigail.
32805
328062015-01-09  Dodji Seketeli <dodji@redhat.com>
32807
32808	Sort functions & variables diff nodes in the diff tree
32809	* include/abg-comparison.h (function_decl_diff_sptrs_type)
32810	(var_diff_sptrs_type): New typedefs.
32811	(corpus_diff::{changed_functions, changed_variables}): Declare new
32812	methods.
32813	* src/abg-comparison.cc (sort_string_function_decl_diff_sptr_map)
32814	(sort_string_var_diff_sptr_map): Forward declare these static
32815	functions there were already defined later.
32816	(struct diff_less_than_functor): Define new comparison functor.
32817	(diff::append_child_node): Sort the children diff nodes of a given
32818	diff node.
32819	(corpus_diff::priv::changed_fns_map_): Renamed the data member
32820	corpus_diff::priv::changed_fns_ into this.
32821	(corpus_diff::priv::changed_fns_): New data member that is a
32822	sorted vector of changed functions.
32823	(corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables}):
32824	Adjust changed_fns_ -> changed_fns_map_ and changed_vars_ ->
32825	changed_vars_map_.
32826	(corpus_diff::priv::ensure_lookup_tables_populated): Likewise.
32827	Sort the changed functions and changed variables.
32828	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Adjust
32829	changed_fns_ -> changed_fns_map_ and changed_vars_ ->
32830	changed_vars_map_.  Also, walk the changed functions and variables
32831	diff nodes in their sorted order.
32832	(corpus_diff::priv::{categorize_redundant_changed_sub_nodes,
32833	clear_redundancy_categorization, maybe_dump_diff_tree}): Walk the
32834	changed functions and variables diff nodes in their sorted order.
32835	* include/abg-ir.h
32836	(function_decl::get_pretty_representation_of_declarator):
32837	Declarenew method.
32838	* src/abg-ir.cc
32839	(function_decl::get_pretty_representation_of_declarator): Define
32840	new function.  Its content got split out of ...
32841	(function_decl::get_pretty_representation): ... this one.
32842	* src/abg-comparison.cc (corpus_diff::chain_into_hierarchy):
32843	Consider the sorted the children nodes of a diff tree node.
32844	(corpus_diff::append_child_node): Keep the children nodes of a
32845	diff tree node sorted.
32846	(corpus_diff::{changed_functions, changed_variables, length,
32847	report}): Adjust.
32848	(corpus_diff::{changed_functions_sorted,
32849	changed_variables_sorted}): Define new functions.
32850	(function_comp::operator()): First compare the qualified function
32851	names along with the parameter declarations, then the rest.
32852	(sort_string_function_decl_diff_sptr_map)
32853	(sort_string_var_diff_sptr_map): Adjust.
32854	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
32855	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
32856	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt:
32857	Adjust.
32858
328592015-01-09  Dodji Seketeli <dodji@redhat.com>
32860
32861	Fix logic of function parmeters diff redundancy detection
32862	* src/abg-comparison.cc (redundancy_marking_visitor::visit_begin):
32863	For a given function parameter diff node N, we were comparing it
32864	against the other parmeter diff nodes of the function.  This
32865	change ensures that we do not compare N against itself.
32866
328672015-01-09  Dodji Seketeli <dodji@redhat.com>
32868
32869	Update copyright year for tests/test-abicompat.cc
32870	* tests/test-abicompat.cc: Update copyright year.
32871
328722015-01-09  Dodji Seketeli <dodji@redhat.com>
32873
32874	Enhance the format of the diff tree dumping report
32875	* src/abg-comparison.cc (diff_node_printer::do_indent): New
32876	method.
32877	(diff_node_printer::visit): Use diff_node_printer::do_indent().
32878	Print the addresses of the diff tree node and its canonical node.
32879	Add some vertical spaces and some indenting to make the report
32880	more readable.
32881
328822015-01-08  Dodji Seketeli <dodji@redhat.com>
32883
32884	Expose a new libabigail::tools_utils namespace
32885	* include/abg-tools-utils.h: Moved tools/abg-tools-utils.h in
32886	here.  Renamed the namespace tools into tools_utils.  Inject
32887	std::ostream, std::istream, std::ifstream, and std::string types
32888	into the tools_utils namespace.  Adjust the function declarations
32889	accordingly.  Remove the useless dirname() function declaration.
32890	* include/Makefile.am: Add abg-tools-utils.h to the list of
32891	exported headers.
32892	* src/abg-tools-utils.cc: Moved tools/abg-tools-utils.cc in here.
32893	Renamed the namespace tools into tools_utils.
32894	(get_stat): Add apidoc.
32895	(is_dir): Cleanup apidoc.
32896	(dir_name); Cleanup parameter name.
32897	(guess_file_type): Cleanup parameter type.
32898	* src/Makefile.am: Add abg-tools-utils.cc to the list of exported
32899	headers.
32900	* tools/Makefile.am: Do not build the temporary library
32901	libtoolsutils.la anymore as abg-tools-utils.{h,cc} have moved out
32902	of this directory.
32903	* tools/abicompat.cc (parse_command_line, main): Adjust for tools
32904	-> tools_utils namespace change.
32905	* tools/abidiff.cc (parse_command_line, main): Likewise.
32906	* tools/abidw.cc (parse_command_line, main): Likewise.
32907	* tools/abilint.cc (parse_command_line, main): Likewise.
32908	* tests/test-abicompat.cc (main): Adjust for tools -> tools_utils
32909	namespace change.
32910	* tests/test-abidiff.cc (main): Likewise.
32911	* tests/test-alt-dwarf-file.cc (main): Likewise.
32912	* tests/test-core-diff.cc (main): Likewise.
32913	* tests/test-diff-dwarf.cc (main): Likewise.
32914	* tests/test-diff-filter.cc (main): Likewise.
32915	* tests/test-diff-suppr.cc (main): Likewise.
32916	* tests/test-lookup-syms.cc (main): Likewise.
32917	* tests/test-read-dwarf.cc (main): Likewise.
32918	* tests/test-read-write.cc (main): Likewise.
32919	* tests/Makefile.am: Do not reference the libtoolsutils.la private
32920	library anymore.
32921
329222015-01-07  Dodji Seketeli <dodji@redhat.com>
32923
32924	Update copyright years
32925	* include/abg-comp-filter.h: Update copyright years.
32926	* include/abg-comparison.h: Likewise.
32927	* include/abg-config.h: Likewise.
32928	* include/abg-corpus.h: Likewise.
32929	* include/abg-diff-utils.h: Likewise.
32930	* include/abg-dwarf-reader.h: Likewise.
32931	* include/abg-fwd.h: Likewise.
32932	* include/abg-hash.h: Likewise.
32933	* include/abg-ini.h: Likewise.
32934	* include/abg-ir.h: Likewise.
32935	* include/abg-libxml-utils.h: Likewise.
32936	* include/abg-libzip-utils.h: Likewise.
32937	* include/abg-reader.h: Likewise.
32938	* include/abg-sptr-utils.h: Likewise.
32939	* include/abg-traverse.h: Likewise.
32940	* include/abg-viz-common.h: Likewise.
32941	* include/abg-viz-dot.h: Likewise.
32942	* include/abg-viz-svg.h: Likewise.
32943	* include/abg-writer.h: Likewise.
32944	* src/abg-comp-filter.cc: Likewise.
32945	* src/abg-comparison.cc: Likewise.
32946	* src/abg-config.cc: Likewise.
32947	* src/abg-corpus.cc: Likewise.
32948	* src/abg-diff-utils.cc: Likewise.
32949	* src/abg-dwarf-reader.cc: Likewise.
32950	* src/abg-hash.cc: Likewise.
32951	* src/abg-ini.cc: Likewise.
32952	* src/abg-ir.cc: Likewise.
32953	* src/abg-libxml-utils.cc: Likewise.
32954	* src/abg-libzip-utils.cc: Likewise.
32955	* src/abg-reader.cc: Likewise.
32956	* src/abg-traverse.cc: Likewise.
32957	* src/abg-viz-common.cc: Likewise.
32958	* src/abg-viz-dot.cc: Likewise.
32959	* src/abg-viz-svg.cc: Likewise.
32960	* src/abg-writer.cc: Likewise.
32961	* tests/print-diff-tree.cc: Likewise.
32962	* tests/test-abidiff.cc: Likewise.
32963	* tests/test-alt-dwarf-file.cc: Likewise.
32964	* tests/test-core-diff.cc: Likewise.
32965	* tests/test-diff-dwarf.cc: Likewise.
32966	* tests/test-diff-filter.cc: Likewise.
32967	* tests/test-diff-suppr.cc: Likewise.
32968	* tests/test-diff2.cc: Likewise.
32969	* tests/test-ir-walker.cc: Likewise.
32970	* tests/test-lookup-syms.cc: Likewise.
32971	* tests/test-read-dwarf.cc: Likewise.
32972	* tests/test-read-write.cc: Likewise.
32973	* tests/test-utils.cc: Likewise.
32974	* tests/test-utils.h: Likewise.
32975	* tests/test-write-read-archive.cc: Likewise.
32976	* tools/abg-tools-utils.cc: Likewise.
32977	* tools/abg-tools-utils.h: Likewise.
32978	* tools/abiar.cc: Likewise.
32979	* tools/abidiff.cc: Likewise.
32980	* tools/abidw.cc: Likewise.
32981	* tools/abilint.cc: Likewise.
32982	* tools/abisym.cc: Likewise.
32983	* tools/binilint.cc: Likewise.
32984
329852015-01-07  Dodji Seketeli <dodji@redhat.com>
32986
32987	Detect and report changes in ELF architecture
32988	* configure.ac: Detect the presence of libebl.a and add it to the
32989	list of library we depend on to build libabigail.  Report when
32990	libelf.so is not found.
32991	* include/abg-comparison.h:
32992	(diff_context::show_architecture_change): Declare new accessors.
32993	(corpus_diff::architecture_changed): Declare new method.
32994	* include/abg-corpus.h (corpus::{get,set}_architecture_name):
32995	Declare new accessors.
32996	* src/abg-comparison.cc
32997	(diff_context::priv::show_architecture_change_): New data member.
32998	(diff_context::priv::priv): Initialize it.
32999	(diff_context::show_architecture_change): Define new accessors.
33000	(function_decl_diff::report): Report when the size/alignment of
33001	the function address changes.
33002	(corpus_diff::priv::architectures_equal_): New data member.
33003	(corpus_diff::priv::priv): Initialize it.
33004	(corpus_diff::priv::emit_diff_stats): Take in account changes of
33005	architecture.
33006	(corpus_diff::architecture_changed): Define new method.
33007	(corpus_diff::length): Take in account changes of architecture.
33008	(corpus_diff::report): Report about changes of architecture.
33009	(compute_diff): In the overload for corpus_diff_sptr, detect
33010	changes fo architecture.
33011	* src/abg-corpus.cc (corpus_priv::architecture_name): Define new
33012	data member.
33013	(corpus::{get,set}_architecture_name): Define new method.
33014	* src/abg-dwarf-reader.cc: Include elfutils/libebl.h to use
33015	ebl_openbackend() and ebl_backend_name()
33016	(read_context::elf_architecture_): Define new data member.
33017	(read_context::elf_architecture): Define new accessor.
33018	(read_context::{load_elf_architecture, load_remaining_elf_data}):
33019	Define new methods.
33020	(read_corpus_from_elf): Use ctxt.load_remaining_elf_data() in lieu
33021	of ctxt.load_dt_soname_and_needed.  Stick the architecture into
33022	the corpus.
33023	* src/abg-reader.cc (read_corpus_from_input): Read the
33024	'architecture' XML property.
33025	* src/abg-writer.cc (write_corpus_to_native_xml): Write the
33026	'architecture' XML property.
33027	* tests/data/test-diff-dwarf/libtest-23-diff-arch-v0-32.so: New
33028	test input file.
33029	* tests/data/test-diff-dwarf/libtest-23-diff-arch-v0-64.so:
33030	Likewise.
33031	* tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt:
33032	Likewise.
33033	* tests/data/test-diff-dwarf/test-23-diff-arch-v0.cc: Source code
33034	for the binary test input files above.
33035	* tests/data/Makefile.am: Add the new test input files to the
33036	source distribution.
33037	* tests/test-diff-dwarf.cc (in_out_specs): Add the new test input
33038	data to the set of input data to run this test harness over.
33039	* tests/test-read-dwarf.cc (main): Do not take the architecture in
33040	account during comparisons.
33041
330422015-01-05  Sinny Kumari <skumari@redhat.com>
33043
33044	Include libabigail-website.doxy file in EXTRA_DIST
33045	* doc/Makefile.am: Include website/libabigail-website.doxy
33046	file in EXTRA_DIST
33047
330482015-01-06  Dodji Seketeli <dodji@redhat.com>
33049
33050	Delete ltsugar.m4 and pkg.m4 files from m4/
33051	* m4/ltsugar.m4: Removed.
33052	* m4/pkg.m4: Likewise.
33053
330542014-12-27  Dodji Seketeli <dodji@redhat.com>
33055
33056	Enable parallel tests
33057	* configure.ac (AM_INIT_AUTOMAKE): Enable parallel tests by
33058	switching on the parallel-tests option.
33059
330602014-12-27  Dodji Seketeli <dodji@redhat.com>
33061
33062	Add a --dump-diff-tree to abidiff for debugging purposes
33063	* include/abg-comparison.h (enum visiting_kind): Add new
33064	DO_NOT_MARK_VISITED_NODES_AS_TRAVERSED enumerator.
33065	(diff_context::{default_output_stream, error_output_stream,
33066	dump_diff_tree}): Declare new accessors.
33067	(diff::end_traversing): Take a new boolean flag.
33068	(print_diff_tree): Add new overload for diff_sptr.
33069	* src/abg-comparison.cc
33070	(diff_context::priv::{default_output_stream_,
33071	error_output_stream_, dump_diff_tree_}): New data members.
33072	(priv::priv): Initialize them.
33073	(diff_context::{default_output_stream_, error_output_stream_,
33074	dump_diff_tree, dump_diff_tree}): Define new accessors.
33075	(diff::end_traversing): Take a new flag that control whether or
33076	not to mark the current diff node as having been traversed.
33077	(diff::traverse): Take in account the visiting kind carried by the
33078	visitor to determine if the visited node should be marked as being
33079	traversed.
33080	(corpus_diff::priv::maybe_dump_diff_tree): Define new member
33081	function.
33082	(corpus_diff::report): Call it.
33083	(diff_node_printer::visit): Pretty print the diff node just once.
33084	(print_diff_tree): Define a new overload for diff_sptr.
33085	* tools/abidiff.cc (options::dump_diff_tree): New data member.
33086	(options::options): Initialize it.
33087	(display_usage): Add a help string for the new --dump-diff-tree
33088	command line switch.
33089	(parse_command_line): Parse the new --dump-diff-tree command line
33090	switch.
33091	(set_diff_context_from_opts): Set the diff context according to
33092	the --dump-diff-tree presence.
33093	* doc/manuals/abidiff.rst: Add a bullet point for the new
33094	--dump-diff-tree command line switch.
33095
330962014-12-27  Dodji Seketeli <dodji@redhat.com>
33097
33098	Fix typos in the abicompat manual
33099	* doc/manuals/abicompat.rst: Fix typos.
33100
331012014-12-27  Dodji Seketeli <dodji@redhat.com>
33102
33103	Fix a typo in the abidiff manual
33104	* doc/manuals/abidiff.rst: Fix a typo.
33105
331062014-12-27  Dodji Seketeli <dodji@redhat.com>
33107
33108	Fix redundancy in abidiff manual
33109	* doc/manuals/abidiff.rst: Remove the redundant bullet point about
33110	the --drop-fn command line switch.
33111
331122014-12-26  Dodji Seketeli <dodji@redhat.com>
33113
33114	Fix the doc string of the CanonicalDiff section of the apidoc
33115	* src/abg-comparison.cc: The summary of the CanonicalDiff should
33116	not be a @par directive, otherwise it won't show up in the summary
33117	field on the html-genereated page.
33118
331192014-12-26  Dodji Seketeli <dodji@redhat.com>
33120
33121	Update doc string for new --no-redundant option of abidiff
33122	* doc/manuals/abidiff.rst: Update the documentation string for the
33123	--no-redundant option of abidiff.
33124
331252014-12-26  Dodji Seketeli <dodji@redhat.com>
33126
33127	Make abidiff *NOT* show redundant changes by default
33128	* tools/abidiff.cc (options::options): Initialize
33129	options::show_redundant_changes to false.
33130
331312014-12-26  Dodji Seketeli <dodji@redhat.com>
33132
33133	Try harder to handle pointer/reference to void
33134	* include/abg-fwd.h (type_or_void): Declare new function.
33135	* src/abg-ir.cc (type_or_void): Define it.
33136	(pointer_type_def::pointer_type_def)
33137	(reference_type_def::reference_type_def)
33138	(reference_type_def::get_qualified_name, strip_typedef): Use it to
33139	ensure that empty pointed-to-type is considered as a void type.
33140
331412014-12-26  Dodji Seketeli <dodji@redhat.com>
33142
33143	Do not mark sibling structurally identical nodes as redundant
33144	* include/abg-comparison.h (diff::parent_node): Declare new
33145	accessor.
33146	* src/abg-comparison.cc (diff::priv::parent_): New data member.
33147	(diff::priv::priv): Initialize it.
33148	(diff::parent_node): Define new accessor.
33149	(diff::append_child_node): Set the diff::priv::parent_ data member
33150	of the added child node.
33151	(redundancy_marking_visitor::visit_begin): If two (logical)
33152	sibbling nodes are structurally equivalent, do not mark them as
33153	being redundant.
33154	* tests/data/test-diff-suppr/libtest10-changed-parm-c-v0.so: New
33155	test input binary.
33156	* tests/data/test-diff-suppr/libtest10-changed-parm-c-v1.so:
33157	Likewise.
33158	* tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt:
33159	New test input data.
33160	* tests/data/test-diff-suppr/test10-changed-parm-c-v0.c: Source
33161	code for the binary input above.
33162	* tests/data/test-diff-suppr/test10-changed-parm-c-v1.c: Likewise.
33163	* tests/data/Makefile.am: Add the new test files to source
33164	distribution.
33165	* tests/test-diff-suppr.cc (in_out_specs): Add the new test input
33166	to the vector of test inputs to run this harness over.
33167
331682014-12-26  Dodji Seketeli <dodji@redhat.com>
33169
33170	Un-share diff nodes in the comparison IR
33171	* include/abg-ir.h: Prefix the doc string with "///", rather than
33172	writing it inside a /**/ comment.
33173	* include/abg-comparison.h (function_decl_diff)
33174	(function_decl_diff_sptr, fn_parm_diff, fn_parm_diff_sptr)
33175	(var_diff_sptr, base_diff, class_diff, class_diff_sptr): Move
33176	these class & typedef decls to the top of the file.
33177	(string_changed_base_map, string_changed_parm_map)
33178	(unsigned_changed_parm_map, changed_function_ptr)
33179	(string_changed_function_ptr_map): Remove these typedefs.
33180	(string_base_diff_sptr_map, string_fn_parm_diff_sptr_map)
33181	(unsigned_fn_parm_diff_sptr_map, string_var_diff_sptr_map)
33182	(unsigned_var_diff_sptr_map, string_function_decl_diff_sptr_map)
33183	(string_var_diff_ptr_map): New typedefs.
33184	(diff_context::{has_diff_for,add_diff}): Make these member
33185	functions private.
33186	(diff_context::{set_canonical_diff_for,
33187	set_or_get_canonical_diff_for}): Declare new private member
33188	functions.
33189	(diff_context::{get_canonical_diff_for,
33190	initialize_canonical_diff}): New public member functions.
33191	(diff_context::maybe_apply_filters): Set the default value of the
33192	'traverse_nodes_once' parameter to false.
33193	(compute_diff): Make the overload for class_decl_sptr friend of
33194	the diff_context class.
33195	(class diff): Make the diff_context class a friend of this one.
33196	(diff::set_canonical_diff): Declare new private member function.
33197	(diff::get_canonical_diff): Declare new public member function.
33198	(diff::children_nodes): Make this return a vector<diff_sptr>, rather
33199	than a vector<diff*>.
33200	(diff::append_child_node): Make this take a diff_sptr rather than
33201	a diff*.
33202	(class fn_parm_diff): Declare new type.
33203	(compute_diff): Declare new overload for the new
33204	function_decl::parameter_sptr.
33205	(function_decl_diff::subtype_changed_parms): Return a
33206	string_fn_parm_diff_sptr_map rather than a string_changed_parm.
33207	(function_decl_diff::children_nodes): Return a vector<diff_sptr>.
33208	(function_decl_diff::append_child_node): Take a diff_sptr.
33209	(function_decl_diff::changed_functions): Return a
33210	string_function_decl_diff_sptr_map.
33211	(function_decl_diff::changed_variables): Return a
33212	string_var_diff_sptr.
33213	(class function_decl::parameter): Make this a pimpled class.
33214	Also, make it inherit decl_base.
33215	(equals): New overload for function_decl::parameter.
33216	(struct function_decl::parameter::hash): Declare this.
33217	(ir_node_visitor::visit): Declare new overload for
33218	function_decl::parameter.
33219	* src/abg-comparison.cc: Add doc-string about the internal
33220	representation of the comparison engine and also about the concept
33221	of canonical diff of the comparison engine.
33222	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER)
33223	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER2)
33224	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER3): Consider the
33225	canonical diff when trying to know if the current node was
33226	reported earlier.
33227	(diff_context::priv::canonical_diffs): New data member.
33228	(diff_context::{get_canonical_diff_for, set_canonical_diff_for,
33229	set_or_get_canonical_diff_for, initialize_canonical_diff}): Define
33230	new member functions.
33231	(diff_context::{diff_has_been_traversed, mark_diff_as_traversed):
33232	Consider canonical diff for these tests and actions.
33233	(diff::priv::children_): Change the type of this to
33234	vector<diff_sptr>.
33235	(diff::canonical_diff_): New data member.
33236	(diff::diff): Initialize the diff::canonical_diff_ data member.
33237	(diff::begin_traversing): Mark the canonical diff node too.
33238	(diff::is_traversing): Consider the canonical diff node in this
33239	test.
33240	(diff::end_traversing): Make the canonical diff node too.  Also
33241	mark the current node as having been traversed.
33242	(diff::children_nodes): Return a vector<diff_sptr> type.
33243	(diff::{get_canonical_diff, set_canonical_diff}): Define new
33244	member functions.
33245	(diff::append_child_node): Take a diff_sptr type parameter.
33246	(diff::{reported_once, currently_reporting}): Flag the canonical
33247	diff node too.  And consider the canonical diff node when checking
33248	the flag.
33249	(diff::traverse): No need to mark the node as being traversed
33250	because the diff::end_traversing() function does it now.  Adjust
33251	the code because diff::children_nodes() now returns
33252	vector<diff_sptr>.
33253	({distinct_diff, var_diff, pointer_diff, array_diff,
33254	reference_diff, qualified_type_diff, enum_diff, class_diff,
33255	base_diff, scope_diff, function_decl_diff, typedef_diff,
33256	corpus_diff}::chain_into_hierarchy): Adjust to the new type that
33257	diff::append_child_node() takes.  Also, take into account that the
33258	diff nodes are now un-shared.
33259	(compute_diff_for_distinct_kinds, compute_diff_for_types)
33260	(compute_diff): Do not share diff nodes anymore.  Initialize the
33261	canonical diff node for the new created node.
33262	(represent): Take a var_diff_sptr rather than two var_decl_sptr.
33263	Adjust.  Also take in account the fact that diff nodes are not
33264	shared anymore, and that they do have canonical diffs.
33265	(var_diff::type_diff): Make the computation of the type_diff of
33266	the var_diff be lazy.  This avoids infinite (recursive) creation
33267	of diff nodes when a class diff node has a sub-type of data member
33268	that is a class diff node too.
33269	(var_diff::report): Detect redundant reporting of this kind of
33270	diff node.
33271	(class_diff::priv::changed_bases_): Change the type of this to
33272	string_base_diff_sptr_map.
33273	(class_diff::priv::subtype_changed_dm_): Change the type of this
33274	to string_var_diff_sptr_map.
33275	(class_diff::priv::changed_dm_): Change the type of this to
33276	unsigned_var_diff_sptr_map.
33277	(class_diff::priv::{count_filtered_subtype_changed_dm,
33278	count_filtered_bases}): Do not take a diff_context_sptr anymore.
33279	(class_diff::ensure_lookup_tables_populated): changed_bases_
33280	subtype_changed_dm_ and changed_dm_ are now *NOT* shared diff
33281	nodes anymore.
33282	(class_diff::priv::base_has_changed): Adjust.
33283	(class_diff::priv::subtype_changed_dm): Adjust.
33284	(class_diff::priv::count_filtered_bases): Adjust as changed_bases_
33285	is now a map of un-shared diff nodes.
33286	(class_diff::priv::count_filtered_subtype_changed_dm): Adjust as
33287	subtype_changed_dm_ is now a map of un-shared diff nodes.
33288	(class_diff::priv::{count_filtered_changed_mem_fns,
33289	count_filtered_inserted_mem_fns, count_filtered_deleted_mem_fns,
33290	}): Adjust for change of the default parameter value of
33291	diff_context::maybe_apply_filters().
33292	(class_diff::~class_diff): New destructor.
33293	(class_diff::changed_bases): Return a string_base_diff_sptr_map&
33294	type.
33295	(class_diff::{inserted_data_members, deleted_data_members,
33296	changed_member_fns}): Add doc strings.
33297	(struct changed_data_member_comp): Remove.
33298	(struct var_diff_comp): New comparison functor.
33299	(sort_changed_data_members): Remove.
33300	(sort_var_diffs): Define new sorting function.
33301	(class_diff::report): Adjust.
33302	(fn_parm_diff::*): Define member types and functions of the new
33303	fn_parm_diff type.
33304	(function_decl_diff::priv::{subtype_changed_parms_,
33305	changed_parms_by_id_}): Make these take a map of fn_parm_diff_sptr
33306	nodes.
33307	(function_decl_diff::ensure_lookup_tables_populated): Adjust to
33308	the fact that priv_->subtype_changed_parms_ and
33309	priv_->priv_->changed_parms_by_id_ now are maps of un-shared
33310	fn_parm_diff_sptr nodes.
33311	(function_decl_diff::subtype_changed_parms): Adjust.
33312	(struct changed_parm_comp): Remove.
33313	(struct fn_parm_diff_comp): New comparison functor.
33314	(sort_changed_parm_map): Remove.
33315	(sort_string_fn_parm_diff_sptr_map): New sorting function.
33316	(function_decl_diff::report): Adjust.
33317	(corpus_diff::priv::children_): Change the type of this to
33318	vector<diff_sptr>.
33319	(corpus_diff::priv::changed_fns_): Changed the type of this to
33320	string_function_decl_diff_sptr_map.
33321	(corpus_diff::priv::changed_vars_): Changed the type of this to
33322	string_var_diff_sptr_map.
33323	(corpus_diff::priv::ensure_lookup_tables_populated): Adjust.
33324	(corpus_diff::priv::apply_filters_and_compute_diff_stats}):
33325	Adjust.  Do not need to clear redundancy categorization anymore
33326	because the diff nodes are not shared anymore.
33327	(corpus_diff::priv::categorize_redundant_changed_sub_nodes):
33328	Adjust.
33329	(corpus_diff::priv::clear_redundancy_categorization): Adjust.
33330	(corpus_diff::changed_variables): Adjust.
33331	(struct changed_function_ptr_comp): Remove.
33332	(struct function_decl_diff_comp): New comparison functor.
33333	(sort_string_changed_function_ptr_map): Remove.
33334	(sort_string_function_decl_diff_sptr_map): Define new sorting
33335	function.
33336	(struct changed_vars_comp): Remove.
33337	(struct var_diff_sptr_comp): New comparison functor.
33338	(sort_changed_vars): Remove.
33339	(sort_string_var_diff_sptr_map): Define new sorting function.
33340	(corpus_diff::report): Adjust.
33341	(corpus_diff::traverse): Adjust.
33342	({category_propagation_visitor,
33343	suppression_categorization_visitor}::visit_end): Adjust.
33344	(clear_redundancy_categorization): Adjust.
33345	* src/abg-hash.cc (function_decl::parameter::hash::operator):
33346	Adjust.
33347	* src/abg-ir.cc (struct function_decl::parameter::priv): Define
33348	here as part of pimpl-ifying the function_decl::parameter type.
33349	(function_decl::parameter::*): Define here the member functions as
33350	part of pimpl-ifying the function_decl::parameter type.
33351	(equals): Define the overload for function_decl::parameter here
33352	too.
33353	(ir_node_visitor::visit(function_decl::parameter*)): Define this.
33354	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
33355	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
33356	* tests/data/test-diff-dwarf/libtest21-redundant-fn-v0.so: New
33357	test input data.
33358	* tests/data/test-diff-dwarf/libtest21-redundant-fn-v1.so:
33359	Likewise.
33360	* tests/data/test-diff-dwarf/test21-redundant-fn-v0.cc: Source
33361	code for test input binary above.
33362	* tests/data/test-diff-dwarf/test21-redundant-fn-v1.cc: Likewise.
33363	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: New
33364	test input data.
33365	* tests/data/test-diff-dwarf/libtest22-changed-parm-c-v0.so: New
33366	test input data.
33367	* tests/data/test-diff-dwarf/libtest22-changed-parm-c-v1.so:
33368	Likewise.
33369	* tests/data/test-diff-dwarf/test22-changed-parm-c-v0.c: Source
33370	code for test input binary above.
33371	* tests/data/test-diff-dwarf/test22-changed-parm-c-v1.c: Likewise.
33372	* tests/test-diff-dwarf.cc (in_out_spec): Add the new test input
33373	data to the vector the test inputs to run this harness over.
33374	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: New
33375	test input data.
33376	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt:
33377	Likewise.
33378	* tests/data/test-diff-suppr/libtest8-redundant-fn-v0.so: New test
33379	input binary.
33380	* tests/data/test-diff-suppr/libtest8-redundant-fn-v1.so: Likewise.
33381	* tests/data/test-diff-suppr/test8-redundant-fn-v0.cc: Source code
33382	code for binary test input above.
33383	* tests/data/test-diff-suppr/test8-redundant-fn-v1.cc: Likewise.
33384	* tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt:
33385	New test input data.
33386	* tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt:
33387	Likewise.
33388	* tests/data/test-diff-suppr/libtest9-changed-parm-c-v0.so: New
33389	test input binary.
33390	* tests/data/test-diff-suppr/libtest9-changed-parm-c-v1.so: New
33391	test input binary.
33392	* tests/data/test-diff-suppr/test9-changed-parm-c-v0.c: Source
33393	code for binary test input above.
33394	* tests/data/test-diff-suppr/test9-changed-parm-c-v1.c: Likewise.
33395	* tests/test-diff-suppr.cc (in_out_specs): Add the new test input
33396	data to the vector the test inputs to run this harness over.
33397	* tests/data/Makefile.am: Add the new files to the source
33398	distribution.
33399
334002014-12-26  Dodji Seketeli <dodji@redhat.com>
33401
33402	Style fix
33403	* src/abg-ir.cc (reference_type_def::get_pointed_to_type): Return
33404	a type_base_sptr.
33405	* src/abg-comparison.cc (diff::is_filtered_out): Fix a comment.
33406
334072014-12-25  Dodji Seketeli <dodji@redhat.com>
33408
33409	Fix pretty printing of pointer_diff node
33410	* src/abg-comparison.cc (pointer_diff::get_pretty_representation):
33411	Add the missing opening square bracket.
33412
334132014-12-17  Sinny Kumari <skumari@redhat.com>
33414
33415	Add new methods in corpus_diff class
33416	* include/abg-comparison.h
33417	(corpus_diff::added_unrefed_function_symbols):
33418	Declare new member function
33419	(corpus_diff::added_unrefed_variable_symbols):
33420	Declare new member function
33421	* src/abg-comparison.cc
33422	(corpus_diff::added_unrefed_function_symbols):
33423	Define new member function
33424	(corpus_diff::added_unrefed_variable_symbols):
33425	Define new member function
33426
334272014-12-15  Sinny Kumari <sinny@redhat.com>
33428
33429	Add new corpus_diff::added_variables() method
33430	* include/abg-comparison.h (corpus_diff::added_variables):
33431	Declare new member function
33432	* src/abg-comparison.cc (corpus_diff::added_variables):
33433	Define new member function
33434
334352014-12-12  Dodji Seketeli <dodji@redhat.com>
33436
33437	Extend detection of compatible types to arrays
33438	* include/abg-fwd.h (is_array_type): Renamed is_array_type_def()
33439	into this for consistency.
33440	* src/abg-comparison.cc (type_suppression::suppresses_diff):
33441	Adjust.
33442	* src/abg-dwarf-reader.cc (build_array_type): Remove useless code
33443	that was trying to read a DW_AT_byte_size attribute from the DIE
33444	of the array, but then wasn't doing anything with the value.  But
33445	then if the attribute was not present, the array type wouldn't be
33446	built.
33447	* src/abg-ir.cc (strip_typedef): Strip typedefs from sub-types of
33448	array types too.
33449	(is_array_type): Rename is_array_def() to this, for consistency.
33450	(var_decl::get_pretty_representation): Adjust.
33451	* tests/data/test-diff-filter/libtest24-compatible-vars-v0.so: New
33452	test input data.
33453	* tests/data/test-diff-filter/libtest24-compatible-vars-v1.so: Likewise.
33454	* tests/data/test-diff-filter/test24-compatible-vars-report-0.txt:
33455	Likewise.
33456	* tests/data/test-diff-filter/test24-compatible-vars-v0.c: Source
33457	code for the first binary above.
33458	* tests/data/test-diff-filter/test24-compatible-vars-v1.c: Source
33459	code for the second binary above.
33460	* tests/data/Makefile.am: Add the new test input data to source
33461	distribution.
33462	* tests/test-diff-filter.cc (in_out_specs): Add the new test input
33463	data to the list of input to run this test harness over.
33464
334652014-12-12  Dodji Seketeli <dodji@redhat.com>
33466
33467	Improve the doc string for the elf_symbol::get_id_string() method
33468	* src/abg-ir.cc (elf_symbol::get_id_string): Improve doc string.
33469	Talk about the content of the id string of an elf symbol.
33470
334712014-12-11  Dodji Seketeli <dodji@redhat.com>
33472
33473	Better handle pointer-to-void in various places of the pipeline
33474	* src/abg-comparison.cc (pointer_diff::report): Handle the case of
33475	pointer to void.
33476	* src/abg-dwarf-reader.cc (build_pointer_type_def): Assert that
33477	the underlying pointer is non-null.
33478	* src/abg-ir.cc (pointer_type_def::pointer_type_def): Handle the
33479	case of pointer to void.
33480	(equals): Likewise in the overload for const pointer_type_def.
33481	(pointer_type_def::get_qualified_name): Likewise.
33482
334832014-12-11  Dodji Seketeli <dodji@redhat.com>
33484
33485	Try harder to detect a DWARF attribute pointing into alternate DWARF section
33486	* src/abg-dwarf-reader.cc
33487	(is_die_attribute_resolved_through_gnu_ref_alt): Support the case
33488	of the origin function itself having a specification function
33489	link.
33490
334912014-12-11  Dodji Seketeli <dodji@redhat.com>
33492
33493	Fix accidentally removing the scope of variables when fixing them up
33494	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
33495	During var decl fixup, remove the scope of a variable only when we
33496	are sure that we want to re-scope it.
33497
334982014-12-11  Dodji Seketeli <dodji@redhat.com>
33499
33500	Fix several aborts while diffing libdw.so
33501	* src/abg-corpus.cc
33502	(corpus::priv::build_unreferenced_symbols_tables): Fix wrong
33503	guestimation of the size of the map of unreferenced symbol table.
33504	* src/abg-dwarf-reader.cc (get_version_needed_for_versym): Honour
33505	the conditions of breaking out from walking the verneed table.
33506
335072014-12-10  Dodji Seketeli <dodji@redhat.com>
33508
33509	Temporarily disable redundant diff report elimination
33510	* src/abg-comparison.cc
33511	(diff_context::priv::priv): Show redundant changes by default.
33512	(categorize_redundancy): Do not categorize redundancy if the
33513	diff_context says that we shouldn't.
33514	* tools/abicompat.cc (options::show_redundant): New data member.
33515	(options::options): Initialize to true.
33516	(display_usage): Add new help string for new --no-redundant and
33517	--redundant options.
33518	(parse_command_line): Parse new --no-redundant and --redundant
33519	command line options.
33520	(main): Initialize the diff context with respect to the
33521	options::show_redundant property.
33522	* tools/abidiff.cc (options::options): Initialize the
33523	show_redundant_changes data member to true.
33524	(display_usage): Show new help string for the new --no-redundant
33525	command line option.
33526	(parse_command_line): Parse the new --no-redundant command line
33527	option.
33528	* tests/data/test-diff-filter/libtest23-redundant-fn-parm-change-v0.so:
33529	New test data input.
33530	* tests/data/test-diff-filter/libtest23-redundant-fn-parm-change-v1.so:
33531	Likewise.
33532	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt:
33533	Likewise.
33534	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-v0.c:
33535	Source code for the first binary above.
33536	* tests/data/test-diff-filter/test23-redundant-fn-parm-change-v1.c:
33537	Source code for the second binary above.
33538	* tests/data/Makefile.am: Add the new test data input to source
33539	distribution.
33540	* tests/test-abicompat.cc (in_out_specs): Add --no-redundant to
33541	abicompat when we don't want it to show redundant diff reports.
33542	* test-diff-filter.cc (in_out_specs): Likewise for abidiff.
33543	* test-diff-suppr.cc (in_out_specs): Likewise.
33544
335452014-12-10  Jan Engelhardt <jengelh@inai.de>
33546
33547	Fix conditional build wrt zip archives and cx11
33548	* configure.ac: remove (broken) assignment to the
33549	ENABLE_ZIP_ARCHIVE_AND_CXX11 variable
33550	* Makefile.am: replace variable assignments to
33551	ZIP_ARCHIVE_TESTS_FIRST_PART, ZIP_ARCHIVE_TESTS_SECOND_PART
33552	by ZIP_ARCHIVE_TESTS using the "+=" automake operator.
33553	Likewise for CXX11_TESTS.
33554
335552014-12-10  Dodji Seketeli <dodji@redhat.com>
33556
33557	Make determining of compatible types complete
33558	* include/abg-fwd.h (is_reference_type, is_function_type)
33559	(is_method_type): Declare new predicates.
33560	* include/abg-ir.h (class qualified_type_def): Pimpl this class.
33561	(qualified_type_def::qualified_type_def): Use the convenience
33562	type_base_sptr typedef.
33563	(qualified_type_def::{get_cv_quals, set_cv_quals}): Use the
33564	qualified_type_def::CV type rather than char.
33565	(qualified_type_def::get_underlying_type): Use the convenience
33566	type_base_sptr typedef.
33567	(pointer_type_def::pointer_type_def): Likewise.
33568	(function_decl::parameter::parameter): Add a new constructor.
33569	* src/abg-ir.cc (is_reference_type, is_function_type)
33570	(is_method_type): Define new predicates.
33571	(class qualified_type_def::priv): Define this new private type,
33572	for the purpose of Pimpl-ifying the qualified_type_def class.
33573	(qualified_type_def::{qualified_type_def, build_name,
33574	get_cv_quals_string_prefix, get_underlying_type}): Adjust for the
33575	purpose of Pimpl-ifying the qualified_type_def class.
33576	(equals): In the qualified_type_def, reference_type_def overloads,
33577	trust the fact that we have operator== overload for the
33578	type_base_sptr.  This avoids crashes for when the (possible)
33579	underlying type is null.
33580	(pointer_type_def::operator==): Likewise.
33581	(strip_typedef): Make this recursively strip
33582	typedefs from sub-types.
33583	(types_are_compatible): Handle null types.
33584	(qualified_type_def::{get_cv_quals, set_cv_quals}): Handle
33585	qualified_type_def::CV rather than char.
33586	(pointer_type_def::pointer_type_def): Use the convenience
33587	type_base_sptr typedef.
33588	* include/abg-comparison.h (distinct_diff::compatible_child_diff):
33589	Declare new member function.
33590	* src/abg-comparison.cc (distinct_diff::compatible_child_diff):
33591	Define new member function.
33592	(distinct_diff::chain_into_hierarchy):
33593	Chain the compatible child diff node that might be present.
33594	(distinct_diff::report): Now when a distinct diff carries a
33595	compatible change, mention it in the report.
33596	* src/abg-comp-filter.cc (is_compatible_change): A compatible
33597	change can now involve types that are not typedefs.  Only their
33598	sub-types need to be involved with typedef-ness.
33599	* tests/data/test-diff-dwarf/test{2,4,5}-report.txt: Adjust.
33600	* tests/data/test-diff-filter/libtest21-compatible-vars-v0.so: New
33601	test data input.
33602	* tests/data/test-diff-filter/libtest21-compatible-vars-v1.so: Likewise.
33603	* tests/data/test-diff-filter/test21-compatible-vars-report-0.txt Likewise.
33604	* tests/data/test-diff-filter/test21-compatible-vars-report-1.txt Likewise.
33605	* tests/data/test-diff-filter/test21-compatible-vars-v0.cc: Source
33606	code for the first data input binary above.
33607	* tests/data/test-diff-filter/test21-compatible-vars-v1.cc: Source
33608	code for the second data input binary above.
33609	* tests/data/test-diff-filter/libtest22-compatible-fns-v0.so: New
33610	test data input.
33611	* tests/data/test-diff-filter/libtest22-compatible-fns-v1.so Likewise.
33612	* tests/data/test-diff-filter/test22-compatible-fns-report-0.txt:
33613	New test data input.
33614	* tests/data/test-diff-filter/test22-compatible-fns-report-1.txt: Likewise.
33615	* tests/data/test-diff-filter/test22-compatible-fns-v0.c: Source
33616	code for the first test data input binary above.
33617	* tests/data/test-diff-filter/test22-compatible-fns-v1.c: Source
33618	code for the second test data input binary above.
33619	* tests/data/Makefile.am: Add the new test input data to source
33620	distribution.
33621	* tests/test-diff-filter.cc (in_out_specs): Add the new test data
33622	input above to the list of test data this harness has to be run
33623	over.
33624
336252014-12-09  Dodji Seketeli <dodji@redhat.com>
33626
33627	Fix classification of parameter addition in C
33628	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
33629	Compare the fully qualified name of the functions; not their
33630	pretty representation.
33631	* tests/data/test-diff-dwarf/libtest20-add-fn-parm-v0.so: New test
33632	data intput.
33633	* tests/data/test-diff-dwarf/libtest20-add-fn-parm-v1.so:
33634	Likewise.
33635	* tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt:
33636	Likewise.
33637	* tests/data/test-diff-dwarf/test20-add-fn-parm-v0.c: Source code
33638	for the first shared library above.
33639	* tests/data/test-diff-dwarf/test20-add-fn-parm-v1.c: Source code
33640	for the second shared library above.
33641	* tests/test-diff-dwarf.cc (in_out_specs): Add the test input data
33642	above to the list of test input the harness must run over.
33643	* Makefile.am: Add the new files above to source distribution.
33644
336452014-12-08  Dodji Seketeli <dodji@redhat.com>
33646
33647	Wire the soname check into abicompat
33648	* include/abg-comparison.h (corpus_diff::soname_changed): Declare
33649	new member function.
33650	* src/abg-comparison.cc (corpus_diff::soname_changed): Define new
33651	member function.
33652	(corpus_diff::length): Use the new corpus_diff::soname_changed()
33653	method.
33654	* tests/data/test-abicompat/libtest4-soname-changed-v0.so: New
33655	test input data.
33656	* tests/data/test-abicompat/libtest4-soname-changed-v1.so:
33657	Likewise.
33658	* tests/data/test-abicompat/test4-soname-changed-app: Likewise.
33659	* tests/data/test-abicompat/test4-soname-changed-report-0.txt:
33660	Likewise.
33661	* tests/data/test-abicompat/test4-soname-changed-app.cc: Source
33662	code for one of the binaries above.
33663	* tests/data/test-abicompat/test4-soname-changed-v0.cc: Likewise.
33664	* tests/data/test-abicompat/test4-soname-changed-v1.cc: Likewise.
33665	* tests/test-abicompat.cc (in_out_specs): Add the new test input
33666	data to the list of input data to run this harness over.
33667	(main): Take the soname change in account to determine if the
33668	change is ABI incompatible.
33669	* tests/data/Makefile.am: Add the new test input data above to source
33670	distribution.
33671
336722014-12-07  Dodji Seketeli <dodji@redhat.com>
33673
33674	Fixup messed up old runtestdiffdwarf input tests
33675	* tests/data/test-diff-dwarf/test17-non-refed-syms-report-0.txt:
33676	Add this missing reference test output.
33677	* tests/data/Makefile.am: Add the new reference test output to
33678	source distribution.
33679	* tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: Fix
33680	this output to avoid emitting symbol alias information in it.
33681	* tests/test-diff-dwarf.cc (in_out_specs): Add two missing test
33682	input data to the list of input data this harness is supposed to
33683	run over.
33684
336852014-12-07  Dodji Seketeli <dodji@redhat.com>
33686
33687	Support reading and comparing soname from ELF files
33688	* include/abg-corpus.h (corpus::{get_needed, set_needed,
33689	get_soname, set_soname}): Declare new accessors.
33690	* src/abg-corpus.cc (corpus::priv::{needed, soname}): New data
33691	members.
33692	(corpus::{get_needed, set_needed, get_soname, set_soname}): Define
33693	new accessors.
33694	(corpus::is_empty): Take dt_needed and dt_soname in account in
33695	computing empty-ness.
33696	* src/abg-dwarf-reader.cc (read_context::{dt_needed_,
33697	dt_soname_}): New data members.
33698	(read_context::{dt_needed, dt_soname}): New accessors.
33699	(read_context::load_dt_soname_and_needed): New member function.
33700	(read_corpus_from_elf): Call the new
33701	read_context::load_dt_soname_and_needed() to read the dt_soname
33702	and dt_needed tags.  Set them to the corpus.
33703	* include/abg-comparison.h (diff_context::show_soname_change):
33704	Declare new accessors.
33705	* src/abg-comparison.cc (diff_context::priv::show_soname_change_):
33706	New data member.
33707	(diff_context::priv::priv): Initialize the new data member
33708	diff_context::priv::show_soname_change_.
33709	(diff_context::show_soname_change): Define new accessors.
33710	(corpus_diff::priv::sonames_equal_): New data member.
33711	(corpus_diff::priv::priv): Initialize the new data member
33712	corpus_diff::priv::sonames_equal_.
33713	(corpus_diff::length): Take the new priv_->sonames_equals_ data
33714	member in account.
33715	(corpus_diff::{report, priv::emit_diff_stats}): If the sonames
33716	changed and we are allowed to report it, then report it.
33717	(compute_diff): In the variant for corpus_diff, do not forget to
33718	compare the sonames.
33719	* src/abg-reader.cc (build_needed, read_elf_needed_from_input):
33720	Define new static functions.
33721	(read_corpus_from_input): Read the 'soname' attribute from the
33722	'abi-corpus' xml element node.
33723	* src/abg-writer.cc (write_elf_needed): Define new static
33724	function.
33725	(write_corpus_to_native_xml): Write a new 'elf-needed' xml element
33726	node that contains one xml 'dependency' element node per
33727	dependency to emit.  This uses the new write_elf_needed() function
33728	above.
33729	* tests/data/test-diff-dwarf/libtest19-soname-v0.so: New test
33730	input data.
33731	* tests/data/test-diff-dwarf/libtest19-soname-v1.so: Likewise.
33732	* tests/data/test-diff-dwarf/test19-soname-report-0.txt: Likewise.
33733	* tests/data/test-diff-dwarf/test19-soname-v0.c: Source code of
33734	the first binary above.
33735	* tests/data/test-diff-dwarf/test19-soname-v1.c: Source code of
33736	the second binary above.
33737	* tests/test-diff-dwarf.cc (in_out_specs): Add the test input
33738	above to the list of test input to run this harness on.
33739	* tests/data/Makefile.am: Add the new test input data above.
33740	* tests/data/test-read-dwarf/test{0,1}.abi: Adjust.
33741	* tests/data/test-read-dwarf/test{2,3,4,6,}.so.abi: Adjust.
33742
337432014-12-07  Dodji Seketeli <dodji@redhat.com>
33744
33745	Fix some style nits in the native reader and writer
33746	* src/abg-reader.cc (read_symbol_db_from_input): Align parameter
33747	names.  Fix indentation of the first line of the function.
33748	* src/abg-writer.cc (write_elf_symbols_table): Align parameter names.
33749
337502014-12-07  Dodji Seketeli <dodji@redhat.com>
33751
33752	Fix a crash while writing symbol information
33753	* src/abg-corpus.cc (corpus::{get_fun_symbol_map_sptr,
33754	get_var_symbol_map_sptr}): Make sure the symbol map is always
33755	constructed, even if it's empty.
33756	* tests/data/test-read-write/test26.xml: New test input data.
33757	* tests/test-read-write.cc (in_out_spec): Add this new test input
33758	data to the list of input data to run the harness on.
33759	(main): Support reading and writing corpus files alongside
33760	translation unit files that we were handling already.
33761	* tests/data/Makefile.am: Add the new test input data to source
33762	distribution.
33763
337642014-12-05  Dodji Seketeli <dodji@redhat.com>
33765
33766	Avoid showing ugly version info in the libabigail online manual
33767	* doc/manuals/conf.py: Update copyright mention.  Do not show ugly
33768	version information.
33769
337702014-11-30  Dodji Seketeli <dodji@redhat.com>
33771
33772	Initial implementation of the abicompat tool
33773	* include/abg-comparison.h
33774	(diff_context::show_added_symbols_unreferenced_by_debug_info):
33775	Declare new accessors.
33776	(corpus_diff::{deleted_variables,
33777	deleted_unrefed_function_symbols,
33778	deleted_unrefed_variable_symbols,
33779	apply_filters_and_suppressions_before_reporting}): Declare new
33780	methods.
33781	(corpus_diff::diff_stats): Declare this new type.  Actually this
33782	was previously corpus_diff::priv::diff_stats, which was a hidden
33783	internal type..  We are moving it here, in the external API so
33784	that client code can have more information about changes
33785	statistics.  Change all the previously publicly accessible data
33786	members into accessor functions.
33787	* src/abg-comparison.cc (class corpus_diff::diff_stats::priv): New
33788	type.
33789	(diff_context::priv::show_added_syms_unreferenced_by_di_): New
33790	data member.
33791	(diff_context::priv::priv): Adjust.
33792	(diff_context::show_added_symbols_unreferenced_by_debug_info):
33793	Define this new method.
33794	(corpus_diff::priv::emit_diff_stats):  Do not show the diff stat
33795	if the only changes is added function or variables symbols and if
33796	we were instructed to not show added symbols.
33797	(corpus_diff::priv::{diff_stats_, filters_and_suppr_applied_}):
33798	New data members.
33799	(corpus_diff::priv::priv): Initialize the
33800	filters_and_suppr_applied_ data member.
33801	(corpus_diff::priv::diff_stats): Move this type to
33802	corpus_diff::diff_stats.
33803	(corpus_diff::priv::{apply_filters_and_compute_diff_stats,
33804	emit_diff_stats}): Adjust.
33805	(corpus_diff::apply_filters_and_suppressions_before_reporting):
33806	Define new member function.
33807	(corpus_diff::report): Use the new
33808	apply_filters_and_suppressions_before_reporting() function, rather
33809	than applying the filters and suppressions by ourselves.  Also
33810	adjust to the use the accessors of the new corpus_diff::diff_stats
33811	type.
33812	(corpus_diff::{deleted_variables,
33813	deleted_unrefed_function_symbols,
33814	deleted_unrefed_variable_symbols}): Define new accessors.
33815	(corpus_diff::diff_stats::{diff_stats, num_func_removed,
33816	num_func_added, num_func_changed, num_func_filtered_out,
33817	net_num_func_changed, num_vars_removed, num_vars_added,
33818	num_vars_changed, num_vars_filtered_out, net_num_vars_changed,
33819	num_func_sym_removed, num_func_syms_added, num_var_syms_removed,
33820	num_var_syms_added}): Define new member functions.
33821	* include/abg-corpus.h (corpus::{get_sym_ids_of_fns_to_keep,
33822	get_sym_ids_of_vars_to_keep}): Declare new methods.
33823	* src/abg-corpus.cc (corpus::priv::{sym_id_fns_to_keep,
33824	sym_id_vars_to_keep}): Added data members.
33825	(symtab_build_visitor_type::{unrefed_fun_symbols,
33826	unrefed_var_symbols, sym_id_fns_to_keep, sym_id_vars_to_keep}):
33827	Added new data members.
33828	(symtab_build_visitor_type::symtab_build_visitor_type): Take two
33829	additional parameters for the function and variable symbol ids to
33830	keep.
33831	(symtab_build_visitor_type::add_fn_to_wip_fns): Take the function
33832	symbols to keep in account when building the exported symbol
33833	table.
33834	(symtab_build_visitor_type::add_var_to_wip_vars): Likewise, take
33835	the variable symbols to keep in account when building the exported
33836	symbol table.
33837	(corpus::priv::build_public_decl_table): Adjust the initialization
33838	of the visitor that walks the ABI artifacts to build the exported
33839	symbol table to know take a list of function/variable symbols to
33840	keep.
33841	(corpus::priv::build_unreferenced_symbols_tables): Ensure that the
33842	public table of functions/variables is built before doing the work
33843	of this function.  Also, if a list of variable/function symbols to
33844	keep is given, drop all symbols that are not in that list on the
33845	floor.
33846	(corpus::{get_sym_ids_of_fns_to_keep,
33847	get_sym_ids_of_vars_to_keep}): Define new accessors.
33848	* tools/abicompat.cc: New abicompat tool.
33849	* doc/manuals/abicompat.rst: New documentation source for
33850	abicompat.
33851	* doc/manuals/libabigail-tools.rst: Add an entry for the abicompat
33852	doc.
33853	* tests/test-abicompat.cc: New test harness for the 'abicompat'
33854	tool.
33855	* tests/Makefile.am: Build the runtestabicompat test harness and
33856	add it to the list of tests harnesses that are run by make check.
33857	* tests/data/test-abicompat/libtest0-fn-changed-libapp-v0.so: New
33858	test input.
33859	* tests/data/test-abicompat/libtest0-fn-changed-libapp-v1.so: Likewise.
33860	* tests/data/test-abicompat/test0-fn-changed-app: Likewise.
33861	* tests/data/test-abicompat/test0-fn-changed-0.suppr: Likewise
33862	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Likewise.
33863	* tests/data/test-abicompat/test0-fn-changed-report-1.txt: Likewise.
33864	* tests/data/test-abicompat/test0-fn-changed-app.cc: Likewise.
33865	* tests/data/test-abicompat/test0-fn-changed-libapp.h: Likewise.
33866	* tests/data/test-abicompat/test0-fn-changed-libapp-v0.cc: Likewise.
33867	* tests/data/test-abicompat/test0-fn-changed-libapp-v1.cc: Likewise.
33868	* tests/data/test-abicompat/libtest1-fn-removed-v0.so: Likewise.
33869	* tests/data/test-abicompat/libtest1-fn-removed-v1.so: Likewise.
33870	* tests/data/test-abicompat/test1-fn-removed-app: Likewise.
33871	* tests/data/test-abicompat/test1-fn-removed-app.cc: Likewise.
33872	* tests/data/test-abicompat/test1-fn-removed-report-0.txt: Likewise.
33873	* tests/data/test-abicompat/test1-fn-removed-v0.cc: Likewise.
33874	* tests/data/test-abicompat/test1-fn-removed-v1.cc: Likewise.
33875	* tests/data/test-abicompat/libtest2-var-removed-v0.so: Likewise.
33876	* tests/data/test-abicompat/libtest2-var-removed-v1.so: Likewise.
33877	* tests/data/test-abicompat/test2-var-removed-app: Likewise.
33878	* tests/data/test-abicompat/test2-var-removed-app.cc: Likewise.
33879	* tests/data/test-abicompat/test2-var-removed-report-0.txt: Likewise.
33880	* tests/data/test-abicompat/test2-var-removed-v0.cc: Likewise.
33881	* tests/data/test-abicompat/test2-var-removed-v1.cc: Likewise.
33882	* tests/data/test-abicompat/libtest3-fn-removed-v0.so: Likewise.
33883	* tests/data/test-abicompat/libtest3-fn-removed-v1.so: Likewise.
33884	* tests/data/test-abicompat/test3-fn-removed-app: Likewise.
33885	* tests/data/test-abicompat/test3-fn-removed-app.cc: Likewise.
33886	* tests/data/test-abicompat/test3-fn-removed-report-0.txt: Likewise.
33887	* tests/data/test-abicompat/test3-fn-removed-v0.cc: Likewise.
33888	* tests/data/test-abicompat/test3-fn-removed-v1.cc: Likewise.
33889	* tests/data/test-abicompat/test3-fn-removed-version-script-0 Likewise.:
33890	* tests/data/test-abicompat/test3-fn-removed-version-script-1: Likewise.
33891	* tests/data/Makefile.am: Add the new test inputs above to the
33892	source distribution.
33893
338942014-11-30  Dodji Seketeli <dodji@redhat.com>
33895
33896	Support reading undefined symbols from an ELF file
33897	* include/abg-corpus.h (corpus::{set_undefined_fun_symbol_map,
33898	set_undefined_var_symbol_map, get_undefined_fun_symbol_map_sptr,
33899	get_undefined_fun_symbol_map, get_sorted_undefined_fun_symbols,
33900	get_undefined_var_symbol_map_sptr, get_undefined_var_symbol_map,
33901	get_sorted_undefined_var_symbols}): Declare new methods ...
33902	* src/abg-corpus.cc (corpus::{set_undefined_fun_symbol_map,
33903	set_undefined_var_symbol_map, get_undefined_fun_symbol_map_sptr,
33904	get_undefined_fun_symbol_map, get_sorted_undefined_fun_symbols,
33905	get_undefined_var_symbol_map_sptr, get_undefined_var_symbol_map,
33906	get_sorted_undefined_var_symbols}): ... and define them.
33907	(struct corpus::priv::{undefined_var_symbol_map,
33908	sorted_undefined_var_symbols, undefined_fun_symbol_map,
33909	sorted_undefined_fun_symbols}): New data members.
33910	* src/abg-dwarf-reader.cc (get_symbol_versionning_sections): Also
33911	return the SHT_GNU_verneed section.
33912	(get_version_needed_for_versym): New static function.
33913	(get_version_definition_for_versym): Factorize this function out
33914	of ..
33915	(get_version_for_symbol): ... this one.  Take a flag that says if
33916	we want the definition version or the needed version of a symbol.
33917	Extend the implementation using the two new function
33918	get_version_needed_for_versym() and
33919	get_version_definition_for_versym() above.  This function now
33920	returns the version either for a defined & exported symbol, or for
33921	an undefined symbol.
33922	(lookup_symbol_from_sysv_hash_tab)
33923	(lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab):
33924	Adjust for the change of signature of get_version_for_symbol().
33925	(read_context::{undefined_fun_syms_, undefined_var_syms_}): New
33926	data members.
33927	(read_context::lookup_elf_symbol_from_index): Adjust for
33928	invocation of the new signature of get_version_for_symbol().
33929	(read_context::{undefined_fun_syms_sptr, undefined_fun_syms,
33930	undefined_var_syms_sptr, undefined_var_syms}): Define new methods.
33931	(read_context::load_symbol_maps): Add support for loading
33932	undefined symbols and their versions.
33933	(read_context::maybe_load_symbol_maps):  Take in account the need
33934	to load undefined symbols as well.
33935	(read_corpus_from_elf): Once the undefined symbols have been read
33936	from the ELF file, stuff them into the resulting ABI corpus that
33937	has been built.
33938
339392014-11-30  Dodji Seketeli <dodji@redhat.com>
33940
33941	Show the pretty representation of deleted variables in the diff output
33942	* src/abg-comparison.cc (corpus_diff::report): Show the pretty
33943	representation of deleted variables in all cases.
33944
339452014-11-30  Dodji Seketeli <dodji@redhat.com>
33946
33947	Fix status checking in abidw
33948	* tools/abidw.cc (main): Fix successful status checking.
33949
339502014-11-30  Dodji Seketeli <dodji@redhat.com>
33951
33952	Rename elf_symbol::get_is_defined() to elf_symbol::is_defined()
33953	* include/abg-ir.h (elf_symbol::get_is_defined): Rename into
33954	elf_symbol::is_defined.
33955	(elf_symbol::set_is_defined): Rename into elf_symbol::is_defined.
33956	* src/abg-ir.cc (elf_symbol::get_is_defined): Likewise, rename
33957	this into elf_symbol::is_defined.
33958	(elf_symbol::set_is_defined): Likewise, rename this into
33959	elf_symbol::is_defined.
33960	(elf_symbol::{elf_symbol, is_public}): Adjust.
33961	* src/abg-writer.cc (write_elf_symbol): Adjust.
33962
339632014-11-30  Dodji Seketeli <dodji@redhat.com>
33964
33965	Update the copyright years of include/abg-corpus.h
33966	* include/abg-corpus.h: Update the copyright years of this file.
33967
339682014-11-20  Dodji Seketeli <dodji@redhat.com>
33969
33970	Make tests/data directory have its own Makefile
33971	* configure.ac(AC_CONFIG_FILE): Generate a new tests/data/Makefile
33972	file.
33973	* tests/Makefile.am: Link the data/ sub-directory from here.  Move
33974	the EXTRA_DIST definition to ...
33975	* tests/data/Makefile.am: ... this new file here.
33976
339772014-11-20  Dodji Seketeli <dodji@redhat.com>
33978
33979	Hmh, finally EXTRA_DIST was just fine
33980	* tests/Makefile.am: Put EXTRA_DIST back.
33981
339822014-11-19  Dodji Seketeli <dodji@redhat.com>
33983
33984	Make sure we don't try to build test data
33985	* tests/Makefile.am: Replace EXTRA_DIST with noinst_DATA.
33986
339872014-11-19  Dodji Seketeli <dodji@redhat.com>
33988
33989	Fix manual documentation generation
33990	* doc/manuals/Makefile.am: Trigger the manual generation from the
33991	html-doc target.  Add the source files to the distribution.  Fix
33992	the clean target.
33993
339942014-11-19  Dodji Seketeli <dodji@redhat.com>
33995
33996	Fix apidoc building
33997	* doc/Makefile.am: Trigger the building frm the html-doc target.
33998
339992014-11-19  Dodji Seketeli <dodji@redhat.com>
34000
34001	Cleanup of configure.ac
34002	* configure.ac: Remove useless variables and fix a typo.
34003
340042014-11-19  Dodji Seketeli <dodji@redhat.com>
34005
34006	Add loads of forgotten test data files to source distribution
34007	* tests/Makefile.am: Add lots of test data file that were
34008	forgotten and then revealed by running make distcheck.  Also fix
34009	some wrong paths to test data files.
34010
340112014-11-19  Dodji Seketeli <dodji@redhat.com>
34012
34013	Use DESTDIR in doc/manuals/Makefile.am when creating the manuals
34014	* doc/manuals/Makefile.am: Use the DESTDIR variable when
34015	addressing the destination directory of the created manuals.
34016
340172014-11-19  Dodji Seketeli <dodji@redhat.com>
34018
34019	Fix a thinko in doc/Makefile.am
34020	* apidoc-install-html-doxygen: Make sure that the directory
34021	$(DESTDIR)$(docdir) does not exist, before trying to create it.
34022
340232014-11-19  Dodji Seketeli <dodji@redhat.com>
34024
34025	Add doc/api/libabigail.doxy to source distribution
34026	* doc/Makefile.am: Add the file api/libabigail.doxy to source
34027	distribution.
34028
340292014-11-19  Dodji Seketeli <dodji@redhat.com>
34030
34031	Make the install-html target of apidoc/manual be conditional
34032	* configure.ac: add --enable-apidoc and --enable-manual.  Add the
34033	two ENABLE_APIDOC and ENABLE_MANUAL automake conditional
34034	variables.  Add the activation of the apidoc and manual into the
34035	final package configuration report.
34036	* doc/Makefile.am: Make the install-html, install-data-local and
34037	uninstall-local targets conditional on the ENABLE_APIDOC
34038	conditional variable.
34039	* doc/manuals/Makefile.am: Likewise, make the install-html,
34040	install-data-local and uninstall-data-local conditional on the
34041	ENABLE_MANUAL conditional variable.
34042
340432014-11-19  Dodji Seketeli <dodji@redhat.com>
34044
34045	Make the alt dwarf debug file *not* be a symlink
34046	* tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
34047	Make this be a real file, no more a symlink to
34048	../../../test0-common-dwz.debug.
34049	* tests/data/test-alt-dwarf-file/test0-report.txt: Now that the
34050	file above is no more a symlink the message emitted by the test
34051	changes.  It now says that the file found is the base name of the
34052	real file.  So change the reference report accordingly.
34053
340542014-11-19  Dodji Seketeli <dodji@redhat.com>
34055
34056	Use the POSIX 1003.1-1988 tar format for dist tar
34057	* configure.ac: For the tar invocation made by make dist, make
34058	sure to use the POSIX 1003.1-1988 tar format that can support file
34059	names of more than 99 characters.  This is useful for the
34060	test-alt-dwarf-file test that has data made of a file which patch
34061	has more than 99 characters.
34062
340632014-11-19  Dodji Seketeli <dodji@redhat.com>
34064
34065	Nested automake conditionals don't work
34066	* configure.ac (ENABLE_ZIP_ARCHIVE_AND_CXX11): Define this
34067	automake condition variable that is true if both the zip archive
34068	and c++11 features are enabled.  This is important to know if the
34069	test runtestdot is going to be compiled.  That test needs both
34070	c++11 and the zip archive features.
34071	* tests/Makefile.am: Do not nest automake conditional statements.
34072	It does not work.  Rather, use the new
34073	ENABLE_ZIP_ARCHIVE_AND_CXX11 condition variable.
34074
340752014-11-19  Dodji Seketeli <dodji@redhat.com>
34076
34077	INSTALL file is not yet in the distribution
34078	* Makefile.am: Do not say that INSTALL file is in the distribution
34079	while it is not.
34080
340812014-11-19  Dodji Seketeli <dodji@redhat.com>
34082
34083	If c++11 is disable do not execute the runtestdot test
34084	* tests/Makefile.am: runtestdot should not be executed if c++11 is
34085	disabled.
34086
340872014-11-18  Dodji Seketeli <dodji@redhat.com>
34088
34089	make html now generates the apidoc, manual and web site
34090	* doc/Makefile.am (html-local): Make the html file generation be
34091	triggered by the html-local target, not the html target.  The html
34092	target is a recursive target that calls the the html-local targets
34093	under each directory.
34094	(apidoc-html-doxygen): Rename the doc-html-doxygen target into
34095	(apidoc-install-html-doxygen): Rename doc-install-html-doxygen
34096	into this.  this.
34097	(DO_HTML, DO_INSTALL_HTML): Adjust.
34098	(install-data-local): New target.
34099	* doc/manuals/Makefile.am (install-html, install-data-local): New
34100	targets.
34101
341022014-11-18  Dodji Seketeli <dodji@redhat.com>
34103
34104	Generate the manual html documentation in the proper build directory
34105	* doc/manuals/Makefile.am: Renamed doc/manuals/Makefile into this.
34106	(BUILDDIR): Make this variable point to $(builddir)/_build as
34107	opposed to just _build previously.
34108	(SOURCEDIR): New variable that points to the source dir as known
34109	by the autotools magic.
34110	(ALLSPHINXOPTS): Make the source dir refer to the new
34111	$(SOURCEDIR), rather than just '.' as previously.
34112	* configure.ac (doc/manuals/Makefile): Generate this now.
34113	* doc/Makefile.am: Link the sub-directory doc/manuals.
34114
341152014-11-18  Dodji Seketeli <dodji@redhat.com>
34116
34117	Update Makefile.am after the additions related to gen-changelog.py
34118	* Makefile.am: Add ChangeLog and COPYING-LGPLV2 to the source
34119	distribution.
34120	(update-changelog, tag-release-only tag-release): New Makefile
34121	targets.
34122
341232014-11-18  Dodji Seketeli <dodji@redhat.com>
34124
34125	Added a ChangeLog that is auto-generated by gen-changelog.py
34126	* ChangeLog: Add this auto-generated file.
34127
341282014-11-18  Dodji Seketeli <dodji@redhat.com>
34129
34130	[gen-changelog] Make subject line always come first
34131	* gen-changelog.py (process_commit): In changelog entries with an
34132	empty body, make sure the subject line comes first.
34133
341342014-11-18  Dodji Seketeli <dodji@redhat.com>
34135
34136	Try harder to remove timezone info from the date
34137	* gen-changelog.py (process_commit): The timezone shit can start
34138	either with a '+' or a '-'.
34139
341402014-11-18  Dodji Seketeli <dodji@redhat.com>
34141
34142	Not all ChangeLog file lines end up with a ':'
34143	* gen-changelog.py (process_commit): When trying to recognize the
34144	beginning of a ChangeLog entry body, do not expect a line that
34145	starts with a '*' to end with a ':' because there can be long file
34146	names that end on the next line.
34147
341482014-11-18  Dodji Seketeli <dodji@redhat.com>
34149
34150	Allow introductory text in commit log and ignore it when generating ChangeLog
34151	* gen-changelog.py (process_commit): Everything that comes between
34152	the subject line of the commit and the first \t* sequence is
34153	considered to be introductory text.  Ignore it when generating the
34154	ChangeLog entry.
34155	* COMMIT-LOG-GUIDELINES: Update the commit log guidelines to
34156	reflect the fact that we can now have introductory text in the
34157	commit log.
34158
341592014-11-18  Dodji Seketeli <dodji@redhat.com>
34160
34161	Initial import of gen-changelog.py
34162	* gen-changelog.py: Copy from
34163	https://github.com/GNOME/gnet/blob/master/gen-changelog.py.
34164	License it under LGPLV v2+ after asking Edward Hervey's kind
34165	permission.  Ain't Free Software really great?
34166
341672014-11-18  Dodji Seketeli <dodji@redhat.com>
34168
34169	Fix the reference to the IRC channel on the web page
34170	* doc/website/mainpage.txt: The IRC server address is
34171	irc.oftc.net, not just oftc.net.
34172	* include/abg-fwd.h: Likewise.
34173
341742014-11-10  Dodji Seketeli <dodji@redhat.com>
34175
34176	Consider enclosing template when comparing template parameters
34177	* src/abg-ir.cc (template_parameter::priv::comparison_started_):
34178	New data member.
34179	(template_parameter::priv::priv): Initialize it.
34180	(template_parameter::operator==): Compare the enclosing template
34181	too.  And avoid infinite recursion.
34182
341832014-11-10  Dodji Seketeli <dodji@redhat.com>
34184
34185	Remove mention of libzip from the web page
34186	* doc/website/mainpage.txt: Remove mention of libzip from the list
34187	of dependencies.
34188
341892014-11-10  Dodji Seketeli <dodji@redhat.com>
34190
34191	Cleanup of the web page
34192	* doc/website/libabigail-website.doxy: Remove the redundant
34193	information that was appearing on the web page.
34194	* doc/website/mainpage.txt: Clean-up the text of the web page, add
34195	information for the new IRC channel #libabigail on oftc.net,
34196	re-organize the content by putting sections where we had
34197	paragraphs.  Add a table of content.  Also add a web form to
34198	subscribe/unsubscribe to the mailing list.
34199
342002014-11-08  Dodji Seketeli <dodji@redhat.com>
34201
34202	Sort functions by the their qualified name
34203	* src/abg-comparison.cc (function_comp::operator()): Sort the
34204	functions by only looking at their qualified name, as opposed to
34205	their return type name.
34206
342072014-11-08  Dodji Seketeli <dodji@redhat.com>
34208
34209	Remove too tight assert from de-mangling code
34210	* src/abg-ir.cc (demangle_cplus_mangled_name):  The return length
34211	can be zero.  That means, no de-mangling was done.
34212
342132014-11-08  Dodji Seketeli <dodji@redhat.com>
34214
34215	Sort reported changed declarations & types in a given scope
34216	* src/abg-comparison.cc (struct changed_type_or_decl_comp, struct
34217	changed_vars_comp): New comparison functors.
34218	(sort_changed_type_or_decl, sort_changed_vars): New static
34219	functions.
34220	(scope_diff::report): Use the above to sort changed declarations,
34221	and types in a given scope.
34222	(corpus_diff::report): Likewise for the changed variables.
34223	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.
34224	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt:
34225	Likewise.
34226	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt:
34227	Likewise.
34228
342292014-11-08  Dodji Seketeli <dodji@redhat.com>
34230
34231	Sort elf symbols before serializing them
34232	* include/abg-corpus.h (corpus::{get_sorted_fun_symbols,
34233	get_sorted_var_symbols}): Declare new member functions.
34234	* src/abg-corpus.cc (corpus_priv::{sorted_var_symbols,
34235	sorted_fun_symbols}): New data members.
34236	(struct elf_symbol_comp_functor): Define new comparison functor.
34237	(corpus::{get_sorted_fun_symbols, get_sorted_var_symbols}): Define
34238	new member functions.
34239	* src/abg-writer.cc (write_elf_symbols_table): Take a sorted
34240	vector of symbols in parameters, rather than an unsorted map.
34241	(write_corpus_to_native_xml): Write a sorted vector of symbols,
34242	rather than an unsorted map of symbols.
34243	* tests/data/test-read-dwarf/test0.abi: Adjust.
34244	* tests/data/test-read-dwarf/test1.abi: Likewise.
34245	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
34246	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
34247	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
34248
342492014-11-07  Dodji Seketeli <dodji@redhat.com>
34250
34251	Fix template parameter hashing: make it know about enclosing template
34252	* include/abg-ir.h (template_parameter_sptr, template_decl_sptr)
34253	(template_decl_wptr): Declare new typedefs.
34254	(class template_decl): Make this virtually inherit decl_base and
34255	pimpl-ify it.
34256	(class template_parameter): Pimpl-ify this.  Make the constructor
34257	take the enclosing template parameter.
34258	(struct template_decl::hash): Declare this here, rather than in
34259	src/abg-hash.cc
34260	(class type_tparameter, non_type_tparameter, template_tparameter)
34261	(class type_composition, function_tdecl, class_tdecl): Pimpl-ify
34262	this.
34263	* src/abg-hash.cc (template_parameter::hash::operator()): Hash the
34264	enclosing template parameter.  Avoid infinite recursion due to the
34265	loop hash parameter -> hash template -> hash parameter.
34266	(template_decl::hash::operator()) Define this here, now that it's
34267	declared in abg-ir.h.  Also, avoid infinite recursion here; this
34268	is complementary to what is done in the hashing for
34269	template_parameter.
34270	({type_tparameter, template_tparameter, }::hash::operator()):
34271	Cache the calculated hash just as what is done for other types
34272	hashed.
34273	(template_decl::priv): Define this new type.
34274	(template_decl::{add_template_parameter, get_template_parameters,
34275	~template_decl}): Define these here to pimpl-ify template_decl.
34276	(template_parameter::priv): Define this new type.
34277	(template_parameter::template_parameter): Define this here to
34278	pimpl-ify template_parameter.  Note also that this now takes the
34279	enclosing template decl.
34280	(template_parameter::{get_index, get_enclosing_template_decl,
34281	get_hashing_has_started, set_hashing_has_started, operator::==}):
34282	Define these here to pimpl-ify template_parameter.
34283	(type_tparameter::priv): Define this new type.
34284	(type_tparameter::type_tparameter): Define this here to pimpl-ify
34285	type_tparameter.   Also, not that this constructor now takes the
34286	enclosing template decl.
34287	(class non_type_tparameter::priv): Define new type.
34288	(non_type_tparameter::{non_type_tparameter, get_type}): Define
34289	these here to pimpl-ify non_type_tparameter.  The constructor now
34290	takes the enclosing template.
34291	(template_tparameter::priv): Define new type.
34292	(template_tparameter::template_tparameter): Define this here to
34293	pimpl-ify template_tparameter.  This constructor now takes the
34294	enclosing template.
34295	(class type_composition::priv): New type.
34296	(type_composition::{type_composition, get_composed_type,
34297	set_composed_type}): Define these here to pimpl-ify
34298	type_composition.  The constructor now takes the enclosing
34299	template decl.
34300	(class function_tdecl::priv): Define new type.
34301	(function_tdecl::{function_tdecl, set_pattern, get_pattern,
34302	get_binding}): Define this here to pimpl-ify function_tdecl.
34303	(class class_tdecl::priv): Define this new type.
34304	(class_tdecl::class_tdecl): Define this here to pimpl-ify
34305	class_tdecl.
34306	(class_tdecl::set_pattern): Adjust to pimpl-ify.
34307	(class_tdecl::get_pattern): Define new pimpl-ified getter.
34308	* src/abg-reader.cc (build_function_tdecl, build_class_tdecl):
34309	Cleanup.  Pass the enclosing template to the template parameters
34310	that are built.
34311	(build_type_tparameter, build_type_composition)
34312	(build_non_type_tparameter, build_template_tparameter)
34313	(build_template_parameter): Take the enclosing template
34314	declaration and pass it to the template parameter being created.
34315	* tests/data/test-read-write/test12.xml: Fix and Adjust.
34316	* tests/data/test-read-write/test13.xml: Likewise.
34317
343182014-11-06  Dodji Seketeli <dodji@redhat.com>
34319
34320	Style fix
34321	* include/abg-ir.h (class location): Remove useless white space.
34322	* src/abg-writer.cc (type_has_existing_id): Use type_base_sptr
34323	rather than shared_ptr<type_base>.
34324	(write_template_tparameter): Use template_tparameter_sptr rather
34325	than shared_ptr<template_tparameter>.
34326
343272014-11-05  Dodji Seketeli <dodji@redhat.com>
34328
34329	Pass -std=gnu++11 to the compiler when --enable-cxx11 for tests
34330	* tests/Makefile.am: Pass -std=gnu++11 to the compiler when
34331	--enable-cxx11 has been used.
34332
343332014-11-05  Dodji Seketeli <dodji@redhat.com>
34334
34335	Make the use of a C++-11 compiler optional
34336	* configure.ac: Define a new --enable-cxx11 switch to control the
34337	use of the C++-11 compiler.  Define a WITH_CXX11 C macro and an
34338	automake ENABLE_CXX11 variable.
34339	* config.h.in: Initialize the new WITH_CXX11 C macro.
34340	* src/Makefile.am: Include the files coded in C++-11 only if the
34341	ENABLE_CXX11 automake variable is defined.
34342	* tests/Makefile.am: Likewise, build the runtestsvg test program
34343	only if C++-11 usage is enabled.
34344	* include/abg-diff-utils.h (class d_path_vec): Remove useless
34345	usage of the 'typename' keyword.
34346	* include/abg-fwd.h (is_enum_type): Renamed is_enum into this,
34347	because of a name clash with a tr1 function when not using C++-11.
34348	(is_pointer_type): Likewise, renamed is_pointer into this because
34349	of a name clash with a tr1 function when not using C++-11.
34350	* src/abg-comp-filter.cc (has_harmless_name_change): Adjust for
34351	the is_enum -> is_enum_type change.
34352	* src/abg-comparison.cc (type_suppression::suppresses_diff):
34353	Likewise.
34354	(class function_suppression::priv): Add a missing "class" keyword
34355	in friend declaration.
34356	(diff_context::diff_has_been_traversed)
34357	(diff_context::mark_diff_as_traversed): Do not use the C++-11
34358	specific type uintptr_t.
34359	* src/abg-dwarf-reader.cc (create_default_dwfl): Do not use
34360	designated initializers.  Sigh.  This is handy though.
34361	(expr_result::abs): Cast the argument of std::abs to avoid
34362	ambiguous call.
34363	(finish_member_function_reading): Adjust for the is_pointer ->
34364	is_pointer_type renaming.
34365	* src/abg-hash.cc (scope_decl::hash::operator)
34366	(class_decl::base_spec::hash::operator)
34367	(type_composition::hash::operator): Use std::tr1::hash string,
34368	rather than the C++-11 specific std::hash function.
34369	* src/abg-ini.cc (read_sections, write_sections): Make
34370	std::ifstream constructor take a const char* rather than a string.
34371	* src/abg-ir.cc (is_enum_type, is_pointer_type): Renamed is_enum
34372	into is_enum_type and is_pointer into is_pointer_type.
34373	* src/abg-writer.cc (write_translation_unit): Remove useless
34374	typename keyword.  Make ofstream take a const char* rather than a
34375	string.
34376	(write_namespace_decl): Remove useless typename keyword.
34377	(write_corpus_to_native_xml_file): Make ofstream take a const
34378	char* rather than a string.
34379	* tests/test-abidiff.cc (main): Make ofstream take a const char*
34380	rather than a string.
34381	* tests/test-diff-dwarf.cc (main): Likewise.
34382
343832014-11-05  Dodji Seketeli <dodji@seketeli.org>
34384
34385	Remove some m4 auto-generated files from version control
34386	* m4/ltoptions.m4: Remove from version control.
34387	* m4/ltversion.m4: Remove from version control.
34388	* m4/lt~obsolete.m4: Remove from version control.
34389
343902014-11-03  Dodji Seketeli <dodji@redhat.com>
34391
34392	Add usage examples to the abidiff manual
34393	* doc/manuals/abidiff.rst: Add a usage example section along with
34394	some small and clean examples.
34395
343962014-11-01  Dodji Seketeli <dodji@redhat.com>
34397
34398	Fix the API doc string of the abigail::xml_writer namespace
34399	* src/abg-writer.cc: Fix the API doc of the xml_writer namespace.
34400
344012014-11-01  Dodji Seketeli <dodji@redhat.com>
34402
34403	Fix an apidoc typo
34404	* include/abg-comparison.h (class variable_suppression): Fix a
34405	typo in the doc string.
34406
344072014-11-01  Dodji Seketeli <dodji@redhat.com>
34408
34409	Update the manual for variable suppression concepts
34410	* doc/manuals/libabigail-concepts.rst: Add a section for variable
34411	suppression specification in the concepts part of the manual.
34412
344132014-11-01  Dodji Seketeli <dodji@redhat.com>
34414
34415	Fix some restructured text doc glitches in the fn suppression manual
34416	* doc/manuals/libabigail-concepts.rst: Fix quoting of the syntax
34417	of parameter specification string, for the function suppression
34418	concepts.
34419
344202014-11-01  Dodji Seketeli <dodji@redhat.com>
34421
34422	Cleanup the mainpage of the API doc
34423	* include/abg-fwd.h: Cleanup text of the API doc mainpage.
34424
344252014-11-01  Dodji Seketeli <dodji@redhat.com>
34426
34427	Make get_binary_load_address static
34428	* src/abg-dwarf-reader.cc (get_binary_load_address): Make this
34429	function static.
34430
344312014-11-01  Dodji Seketeli <dodji@redhat.com>
34432
34433	Initial support for variable suppressions
34434	* include/abg-comparison.h (variable_suppression_sptr)
34435	(variable_suppressions_type): New convenience typedefs.
34436	(class variable_suppression): Declare new type.
34437	* src/abg-comparison.cc (is_var_diff): New predicate.
34438	(read_variable_suppression): Define new static function.
34439	(class variable_suppression::priv): Define type for the private
34440	data of the variable_suppression type.
34441	(variable_suppression::{variable_suppression,
34442	~variable_suppression, get_name, set_name, get_name_regex_str,
34443	set_name_regex_str, get_symbol_name, set_symbol_name,
34444	get_symbol_name_regex_str, set_symbol_name_regex_str,
34445	get_symbol_version, set_symbol_version,
34446	get_symbol_version_regex_str, set_symbol_version_regex_str,
34447	get_type_name, set_type_name, get_type_name_regex_str,
34448	set_type_name_regex_str, suppresses_diff}): Define new member
34449	functions for the variable_suppression type.
34450	* tests/data/test-diff-suppr/libtest7-var-suppr-v0.so: Add new
34451	test input.
34452	* tests/data/test-diff-suppr/libtest7-var-suppr-v1.so: Likewise.
34453	* tests/data/test-diff-suppr/test7-var-suppr-1.suppr: Likewise.
34454	* tests/data/test-diff-suppr/test7-var-suppr-2.suppr: Likewise.
34455	* tests/data/test-diff-suppr/test7-var-suppr-3.suppr: Likewise.
34456	* tests/data/test-diff-suppr/test7-var-suppr-4.suppr: Likewise.
34457	* tests/data/test-diff-suppr/test7-var-suppr-5.suppr: Likewise.
34458	* tests/data/test-diff-suppr/test7-var-suppr-6.suppr: Likewise.
34459	* tests/data/test-diff-suppr/test7-var-suppr-7.suppr: Likewise.
34460	* tests/data/test-diff-suppr/test7-var-suppr-8.suppr: Likewise.
34461	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
34462	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
34463	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
34464	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
34465	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
34466	* tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise.
34467	* tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise.
34468	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
34469	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt:
34470	Likewise.
34471	* tests/data/test-diff-suppr/test7-var-suppr-version-script: Likewise.
34472	* tests/data/test-diff-suppr/test7-var-suppr-v0.cc: Source code
34473	for the librairie above.
34474	* tests/data/test-diff-suppr/test7-var-suppr-v1.cc: Source code
34475	for the librairie above.
34476	* tests/Makefile.am: Add the new test input data to the source
34477	distribution.
34478	* tests/test-diff-suppr.cc: Update to make this harness to run
34479	over the new test input above.
34480
344812014-11-01  Dodji Seketeli <dodji@redhat.com>
34482
34483	Update the suppr-doc.txt file for variable suppressions
34484	* doc/suppr-doc.txt: Add the suppress_variable section example.
34485
344862014-11-01  Dodji Seketeli <dodji@redhat.com>
34487
34488	Make var_diff and function_decl_diff extend decl_diff_base
34489	* include/abg-comparison.h (class var_diff, class
34490	function_decl_diff): Make these types inherit the decl_diff_base
34491	class.  This is like the fact that all kinds of diff inherit the
34492	type_diff_base class.
34493	* src/abg-comparison.cc (var_diff::var_diff)
34494	(function_decl_diff::function_decl_diff): Adjust to initialize the
34495	sub-object of decl_diff_base;
34496	(is_decl_diff): New predicate to know if a diff is about decls.
34497	(is_function_decl): New predicate to know if a diff is about
34498	function decls.
34499	(function_suppression::suppresses_diff): Adjust to use the new
34500	is_function_decl.
34501
345022014-11-01  Dodji Seketeli <dodji@redhat.com>
34503
34504	Fix logic of type suppression evaluation
34505	* include/abg-comparison.cc (type_suppression::suppresses_diff):
34506	Try to evaluate the "type_name_regexp" property only if the
34507	"type_name" is empty.
34508
345092014-11-01  Dodji Seketeli <dodji@redhat.com>
34510
34511	Remove useless functions from the comparison engine
34512	* include/abg-comparison.h (read_type_suppression): Remove this
34513	function declaration.
34514	* src/abg-comparison.cc (read_type_suppressions): Remove this
34515	static function definition.
34516	(read_function_suppressions): Remove this static function
34517	declaration.
34518
345192014-11-01  Dodji Seketeli <dodji@redhat.com>
34520
34521	Spit and polish variables presentation in diff report
34522	* src/abg-comparison.cc (corpus_diff::report): Show the full
34523	representation of the variable, rather than just its name.  Also,
34524	show the new representation of the variable only if it has
34525	changed.
34526	* tests/data/test-diff-dwarf/test9-report.txt: Adjust test.
34527	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
34528	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.
34529
345302014-11-01  Dodji Seketeli <dodji@redhat.com>
34531
34532	Fix various apidoc typos
34533	* include/abg-comparison.h (class function_suppression): Fix typo
34534	in the doc string.
34535	* src/abg-comparison.cc (is_type_diff, read_suppressions)
34536	(diff::reported_once, typedef_diff::report): Fix the doc string.
34537
345382014-11-01  Dodji Seketeli <dodji@redhat.com>
34539
34540	Fix regexp escaping section of manual
34541	* doc/manuals/libabigail-concepts.rst: Re-indent and fix some
34542	typos in the regexp escaping section of the manual.
34543
345442014-11-01  Dodji Seketeli <dodji@redhat.com>
34545
34546	Doxygen shouldn't extract doc for static functions or private types
34547	* doc/api/libabigail.doxy: Do not extract doc for static
34548	functions, local classes.
34549
345502014-11-01  Dodji Seketeli <dodji@redhat.com>
34551
34552	Update .gitignore
34553	* .gitignore: Ignore *~ emacs files.
34554
345552014-10-29  Dodji Seketeli <dodji@redhat.com>
34556
34557	Separate alias targets with a comma
34558	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Separate
34559	alias targets by a comma.
34560	* tests/data/test-diff-dwarf/test18-alias-sym-v1.cc: Update test
34561	to add more than one alias to a given symbol.
34562
345632014-10-28  Dodji Seketeli <dodji@redhat.com>
34564
34565	Fix a typo in the manual about function suppressions
34566	* doc/manuals/libabigail-concepts.rst: Fix a typo.
34567
345682014-10-28  Dodji Seketeli <dodji@redhat.com>
34569
34570	Initial support for function suppressions
34571	* include/abg-comparison.h (enum visiting_kind): Change the
34572	meaning of this.  It was to determine if traversal was to be done
34573	in a pre or post manner.  But with the recent addition of
34574	diff_node_visitor::visit_{begin,end}() notifiers, the pre/post
34575	handling is taken care of in a different way.  So now the meaning
34576	of this enum is changed to handle whether diff node children
34577	should be visited or not.  So the enumerators are now
34578	DEFAULT_VISITING_KIND, and SKIP_CHILDREN_VISITING_KIND.  And it's
34579	a bit-field.
34580	(operator{&,~}): Declare more bit manipulation operators for the
34581	enum visiting_kind.
34582	(function_suppression_sptr, function_suppressions_type): New
34583	typedefs.
34584	(function_suppression, function_suppression::parameter_spec):
34585	Declare new types.
34586	(read_function_suppressions): Declare new function.
34587	(diff_node_visitor::diff_node_visitor): Adjust for the enum
34588	visiting_kind change.  Value-initialize the visiting_kind_ data
34589	member.
34590	* src/abg-comparison.cc (operator{&,~}): Define these operators
34591	for enum visiting_kind.
34592	(read_type_suppressions): Forward declare this static function.
34593	(read_function_suppression, read_parameter_spec_from_string):
34594	Define new static functions.
34595	(read_suppressions): Update to read function suppressions too,
34596	using the new read_function_suppression function above.
34597	(class function_suppression::parameter_spec::priv): Define new
34598	type.
34599	(function_suppression::parameter_spec::*): Define the member
34600	functions of the new function_suppression::parameter_spec type.
34601	(class function_suppression::priv): Define new type.
34602	(function_suppression::*): Define the member functions of the new
34603	function_suppression type.
34604	(diff::traverse): There is no more {PRE,POST}_VISITING_KIND
34605	enumerator.  So nuke the code that was dealing with it.
34606	(redundancy_marking_visitor::skip_children_nodes_): New data
34607	member flag.
34608	(redundancy_marking_visitor::visit_begin): If the current diff
34609	node is not be reported (is filtered out), do not bother visit its
34610	children nodes for the purpose of marking redundant nodes.  So use
34611	the new skip_children_nodes_ flag above to know we are in that case.
34612	(redundancy_marking_visitor::visit_end): Unset the new
34613	skip_children_nodes_ flag above when appropriate.
34614	* include/abg-fwd.h (is_function_decl): Declare new function.
34615	* include/abg-ir.h
34616	(function_type::get_parm_at_index_from_first_non_implicit_parm):
34617	Declare new member function.
34618	* src/abg-ir.cc (is_function_decl): Define new function.
34619	(function_type::get_parm_at_index_from_first_non_implicit_parm):
34620	Define new member function.
34621	* src/abg-comp-filter.cc (apply_filter): Adjust for the enum
34622	visiting_kind change.  No need to set it for filters anymore
34623	* doc/suppr-doc.txt: Update examples of function suppression.
34624	* doc/manuals/libabigail-concepts.rst: Update the manual for the
34625	function suppression addition.
34626	* tests/data/test-diff-suppr/libtest5-fn-suppr-v0.so: New test input.
34627	* tests/data/test-diff-suppr/libtest5-fn-suppr-v1.so: New test input.
34628	* tests/data/test-diff-suppr/libtest6-fn-suppr-v0.so: New test input.
34629	* tests/data/test-diff-suppr/libtest6-fn-suppr-v1.so: New test input.
34630	* tests/data/test-diff-suppr/test5-fn-suppr-0.suppr: New test input.
34631	* tests/data/test-diff-suppr/test5-fn-suppr-1.suppr: New test input.
34632	* tests/data/test-diff-suppr/test5-fn-suppr-2.suppr: New test input.
34633	* tests/data/test-diff-suppr/test5-fn-suppr-3.suppr: New test input.
34634	* tests/data/test-diff-suppr/test5-fn-suppr-4.suppr: New test input.
34635	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: New test input.
34636	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: New test input.
34637	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: New test input.
34638	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: New test input.
34639	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: New test input.
34640	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: New test input.
34641	* tests/data/test-diff-suppr/test5-fn-suppr-v0.cc: Source code for
34642	new test input.
34643	* tests/data/test-diff-suppr/test5-fn-suppr-v1.cc: Source code for
34644	new test input.
34645	* tests/data/test-diff-suppr/test6-fn-suppr-0.suppr: New test input.
34646	* tests/data/test-diff-suppr/test6-fn-suppr-1.suppr: New test input.
34647	* tests/data/test-diff-suppr/test6-fn-suppr-2.suppr: New test input.
34648	* tests/data/test-diff-suppr/test6-fn-suppr-3.suppr: New test input.
34649	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: New test input.
34650	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: New test input.
34651	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: New test input.
34652	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: New test input.
34653	* tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt: New test input.
34654	* tests/data/test-diff-suppr/test6-fn-suppr-v0.cc: Source code for
34655	new test input.
34656	* tests/data/test-diff-suppr/test6-fn-suppr-v1.cc: Source code for
34657	new test input.
34658	* tests/data/test-diff-suppr/test6-fn-suppr-version-script: New
34659	test input.
34660	* tests/Makefile.am: Add the new files above to source
34661	the distribution.
34662	* tests/test-diff-suppr.cc (in_out_specs): Add the test inputs
34663	above to the list of tests to be run by this harness.
34664
346652014-10-28  Dodji Seketeli <dodji@redhat.com>
34666
34667	Add missing virtual destructor in comparison engine code
34668	* include/abg-comparison.h (type_suppression::~type_suppression):
34669	Declare missing virtual destructor.
34670	* src/abg-comparison.cc (type_suppression::~type_suppression):
34671	Define missing virtual destructor.
34672
346732014-10-27  Dodji Seketeli <dodji@redhat.com>
34674
34675	Pimplify abigail::ir::function_type
34676	* include/abg-ir.h (function_type::priv_): Declare new data
34677	member.
34678	(function_type::<all the methods>): Move the inline methods out of
34679	line in src/abg-ir.cc.
34680	(function_type::{return_type_, parms_}): Move these ...
34681	* src/abg-ir.cc (function_type::priv::{return_type_, parms_}):
34682	... Here.
34683	(struct function_type::priv): New type for the private data of
34684	function_type.
34685	(function_type::<all the methods>): Move the previously inline
34686	methods of function_type here.  Adjust them to tap into priv_->*
34687	to get the private data members.
34688
346892014-10-27  Dodji Seketeli <dodji@redhat.com>
34690
34691	Light style fix
34692	* include/abg-ir.h (function_decl::get_type): Change the return
34693	type from shared_ptr<function_type> to function_type_sptr.
34694
346952014-10-27  Dodji Seketeli <dodji@redhat.com>
34696
34697	Allow white spaces in ini file property values
34698	* src/abg-ini.cc (read_context::char_is_property_value_char): New
34699	member function.
34700	(read_context::read_next_char): Fix typos.  Allow escaping of '['
34701	and ']'.
34702	(read_context::read_property_value): Use the new
34703	read_context::char_is_property_value_char above.
34704
347052014-10-27  Dodji Seketeli <dodji@redhat.com>
34706
34707	Fix typo in suppression specification manual
34708	* doc/manuals/libabigail-concepts.rst: Fix name -> name_regexp.
34709
347102014-10-22  Dodji Seketeli <dodji@redhat.com>
34711
34712	Support comparing symbols not referenced by debug info
34713	* doc/manuals/abidiff.rst: Adjust intro to mention that w/o debug
34714	info, abidiff now works but just report about added/removed
34715	symbols.  Add documentation about the new
34716	--no-unreferenced-symbols option.
34717	* include/abg-comparison.h (string_elf_symbol_map): New typedef.
34718	(diff_context::show_symbols_unreferenced_by_debug_info): Declare
34719	new accessors.
34720	* src/abg-comparison.cc
34721	(diff_context::priv::show_syms_unreferenced_by_di_): New data
34722	member.
34723	(diff_context::priv::priv): Adjust.
34724	(diff_context::show_symbols_unreferenced_by_debug_info): Implement
34725	these accessors.
34726	(corpus_diff::priv::{unrefed_fn_syms_edit_script_,
34727	unrefed_var_syms_edit_script_, added_unrefed_fn_syms_,
34728	deleted_unrefed_fn_syms_, added_unrefed_var_syms_,
34729	deleted_unrefed_var_syms_}): New data members.
34730	(corpus_diff::priv::diff_stats::{num_func_syms_removed,
34731	num_func_syms_added, num_var_syms_removed, num_var_syms_added}):
34732	New data members.
34733	(corpus_diff::priv::diff_stats::diff_stats): Adjust.
34734	(corpus_diff::ensure_lookup_tables_populated): Populate lookup
34735	tables for added/removed symbols that are not referenced by any
34736	debug info.
34737	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Compute
34738	stats for the added/removed symbols not referenced by any debug
34739	info.
34740	(corpus_diff::priv::emit_diff_stats): Emit stats about
34741	added/removed symbols that are not referenced by any debug info.
34742	(corpus_diff::length): Adjust to take in account added/removed
34743	symbols not referenced by any debug info.
34744	(show_linkage_name_and_aliases): New static function.
34745	(corpus_diff::report): When emitting a symbol name, emit its
34746	version too, and tell if it aliases other symbols.  Avoid emitted
34747	extra new lines.  Report added/removed symbols not referenced by
34748	any debug info.
34749	(compute_diff): In the overload for corpus_sptr, compute the diffs
34750	for symbols not referenced by debug info.
34751	* include/abg-corpus.h
34752	(corpus::get_unreferenced_{function,variable}_symbols): Declare
34753	new member functions.
34754	* src/abg-corpus.cc (corpus_priv::{unrefed_fun_symbols,
34755	unrefed_var_symbols}): New data members.
34756	(corpus_priv::build_unreferenced_symbols_tables): Define new
34757	member function.
34758	(struct comp_elf_symbols_functor): New functor.
34759	(corpus::is_empty): Adjust to take in account added/removed
34760	symbols not referenced by debug info.
34761	(corpus::{get_unreferenced_function_symbols,
34762	corpus::get_unreferenced_variable_symbols}): Define these
34763	accessors.
34764	* include/abg-dwarf-reader.h (enum status): Transform this into
34765	bitfields.  Add a STATUS_UNKNOWN value that has the value 0.
34766	(operator|(status, status), operator&(status, status))
34767	(operator|=(status&, status), operator&=(status, status)): New
34768	bit-wise operators to manipulate instances of the status bit-field.
34769	* src/abg-dwarf-reader.cc (get_version_for_symbol): Fix this to
34770	avoid returning garbage version sometimes.
34771	(read_debug_info_into_corpus): Fix this to return a non-null but
34772	empty corpus_sptr when there is no debug info available.
34773	(operator|(status, status), operator&(status, status))
34774	(operator|=(status&, status), operator&=(status, status)): Define
34775	these new bitwise operators to manipulate instances of the status
34776	bit-field.
34777	(read_corpus_from_elf): Now that the abigail::dwarf_reader::status
34778	is a bit-field, set it to reflect if debug info and/or symbol
34779	tables have been found.  Do not bail out if debug info hasn't been
34780	found.  Rather, keep going, and go look for symbols-only; this is
34781	a kind of operating in degraded mode.
34782	* include/abg-ir.h (elf_symbol::get_aliases_id_string): Add a flag
34783	that says if the current instance of elf_symbol should be included
34784	in the list of aliases or not.
34785	* src/abg-ir.cc (elf_symbol::get_aliases_id_string): Define it.
34786	* tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.o: New test
34787	input.
34788	* tools/abidiff.cc
34789	(options::show_symbols_not_referenced_by_debug_info): New data
34790	member.
34791	(options:options): Adjust.
34792	(display_usage): Add an info string for the new
34793	--no-unreferenced-symbols command line option.
34794	(parse_command_line): Parse the new --no-unreferenced-symbols
34795	command line.
34796	(set_diff_context_from_opts): Set the diff_context according to
34797	the presence of --no-unreferenced-symbols.
34798	(main): Adjust for the fact that abigail::dwarf_reader::status is
34799	now a bit-field.
34800	* tools/abilint.cc (main): Adjust for the fact that
34801	abigail::dwarf_reader::status is now a bit-field..
34802	():
34803	* tests/data/test-diff-dwarf/test16-syms-only-report.txt: New test
34804	reference output.
34805	* tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.cc: Source code
34806	for new test input.
34807	* tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.o: New
34808	test input.
34809	* tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.cc: New
34810	source code for test input.
34811	* tests/data/test-diff-dwarf/libtest18-alias-sym-v{0,1}.so: New
34812	test input.
34813	* tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt:
34814	Reference output for new test input.
34815	* tests/data/test-diff-dwarf/test18-alias-sym-v{0,1}.cc: Source
34816	code for new test input.
34817	* tests/data/test-diff-dwarf/test18-alias-sym-version-script:
34818	Source code for new test input.
34819	* tests/Makefile.am: Add the new test materials to the source
34820	distribution.
34821	* tests/test-diff-dwarf.cc(in_out_specs): Add the new input tests
34822	above to the array of tests to run by this harness.
34823	(main): Emit empty reports for empty resulting diffs.
34824	* tests/data/test-diff-dwarf/test{0,8,9,12,14-inline-report,}-report.txt:
34825	Adjust.
34826	* tests/data/test-diff-filter/test{0,01,2,4,5,7,8,9,10,12,13,15-0,15-1}-report.txt:
34827	Likewise.
34828	* tests/data/test-diff-filter/test{19-enum,20-inline,}-report-0.txt:
34829	Likewise.
34830	* tests/data/test-diff-suppr/test0-type-suppr-report-{1,2}.txt:
34831	Likewise.
34832	* tests/data/test-diff-suppr/test{1,2}-typedef-suppr-report-1.txt:
34833	Likewise.
34834
348352014-10-22  Dodji Seketeli <dodji@redhat.com>
34836
34837	Allow comparison of shared_ptr of things
34838	* include/abg-diff-utils.h: Adjust copyright years.
34839	(deep_ptr_eq_functor::operator()(const shared_ptr<T>, const
34840	shared_ptr<T>)): New comparison operator.
34841
348422014-10-17  Dodji Seketeli <dodji@redhat.com>
34843
34844	Use the "standard" equality operator when comparing variables
34845	* src/abg-comparison.cc (compute_diff): In the overload for
34846	corpus_sptr, use the diff_utils::deep_ptr_eq_functor that is used
34847	to compare functions too, rather than the ad-hoc early struct
34848	var_eq_type we were using until now.
34849
348502014-10-16  Dodji Seketeli <dodji@redhat.com>
34851
34852	Yet another fix to the DWARF method "static-ness" detection heuristic
34853	* include/abg-fwd.h (is_pointer, is_qualified_type): Declare new
34854	functions.
34855	* src/abg-ir.cc (is_pointer, is_qualified_type): Implement these
34856	new functions.
34857	* src/abg-dwarf-reader.cc (finish_member_function_reading):
34858	Sometimes, the this pointer of a non-static method can point to a
34859	*qualified* version of its containing type.  I am seeing that when
34860	comparing libstdc++.so from RHEL 6.5 and RHEL 7.  Take that in
34861	account when trying to detect that the first parameter of a member
34862	function is the this pointer, and thus detect that the function is
34863	a non static member function.
34864	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
34865	New test input.
34866	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so: New
34867	test input.
34868	* tests/data/test-read-dwarf/test8-qualified-this-pointer.cc:
34869	Source code of new test input.
34870	* tests/test-read-dwarf.cc: Update copyright year.
34871	(in_out_spec): Add the new test inputs to this array, so that this
34872	test harness runs on them.
34873	* tests/Makefile.am: Add the new test inputs to the source
34874	distribution.
34875
348762014-10-16  Dodji Seketeli <dodji@redhat.com>
34877
34878	Avoid infinite loops in the comparison code for classes
34879	* src/abg-ir.cc (equals): In the overload for classes, make sure
34880	to store the name of the lhs of the class and the rhs into the
34881	lhs.  Also, when we bail out because we detect that there is a
34882	comparison underway, do *not* unmark the current class as not being
34883	involved in the comparison.  Also, break at the first lhs virtual
34884	member function that is different from the rhs counter part.
34885
348862014-10-15  Dodji Seketeli <dodji@redhat.com>
34887
34888	Update the manual for the suppression specification initial work
34889	* doc/manuals/abidiff.rst: Add documentation for the new
34890	--suppressions command line switch.
34891	(--harmless, --harmful): Refer to the new "concepts" section
34892	below, where harmful/harmless concepts are now explained.
34893	(Notes): Move the content of the notes section where
34894	harmful/harmless concepts were explained, to the newly created
34895	'Concepts' section.
34896	* doc/manuals/index.rst: Limit the depth of the table of content
34897	to 2.  Add the new libabigail-concepts.rst stuff in here.  Adjust
34898	for the renaming of tools.rst to libabigail-tools.rst.
34899	* doc/manuals/libabigail-concepts.rst: New file.
34900
349012014-10-13  Dodji Seketeli <dodji@redhat.com>
34902
34903	Properly propagate {REDUNDANT, SUPPRESSED}_CATEGORY wrt local changes
34904	* src/abg-comparison.cc
34905	(suppression_categorization_visitor::visit_end): If a diff node
34906	carries local changes, then, even if all of its children node have
34907	been suppressed, this diff node shall not be categorized as
34908	suppressed by way of propagation.
34909	(redundancy_marking_visitor::visit_end): If a diff node carries
34910	local changes, then, even if all of its children nodes are
34911	redundant, this diff node shall not be categorized as being
34912	redundant by way of propagation.
34913	* tests/data/test-diff-suppr/libtest4-local-suppr-v{0,1}.so: New test
34914	inputs.
34915	* tests/data/test-diff-suppr/test4-local-suppr-0.suppr: Likewise.
34916	* tests/data/test-diff-suppr/test4-local-suppr-report-{0,1}.txt:
34917	Likewise.
34918	* tests/data/test-diff-suppr/test4-local-suppr-v{0,1}.{c,h}:
34919	Source code of the new tests inputs.
34920	* tests/Makefile.am: Add the new test material to the source
34921	distribution.
34922	* tests/test-diff-suppr.cc (in_out_spec): Run this test harness
34923	over the new test input above.
34924
349252014-10-13  Dodji Seketeli <dodji@redhat.com>
34926
34927	Gain ability know if a diff node has local changes
34928	* include/abg-comparison.h (diff::has_local_changes): Add new pure
34929	interface.
34930	({decl_diff_base, type_diff_base, distinct_type_diff, var_diff,
34931	pointer_diff, reference_diff, array_diff, qualified_type_diff,
34932	enum_diff, class_diff, base_diff, scope_diff, function_decl_diff,
34933	type_decl_diff, typedef_diff,
34934	translation_unit_diff}::has_local_changes): Declare the
34935	implementation of the pure interface above.
34936	* src/abg-comparison.cc ({decl_diff_base, type_diff_base,
34937	distinct_type_diff, var_diff, pointer_diff, reference_diff,
34938	array_diff, qualified_type_diff, enum_diff, class_diff, base_diff,
34939	scope_diff, function_decl_diff, type_decl_diff, typedef_diff,
34940	translation_unit_diff}::has_local_changes): Define the
34941	implementation of the pure interface above.
34942
349432014-10-13  Dodji Seketeli <dodji@redhat.com>
34944
34945	Write comparison functions that hint at the kind of changes they see
34946	* include/abg-ir.h (enum change_kind): Declare new enum.
34947	(operator|(change_kind, change_kind), operator&(change_kind,
34948	change_kind), operator|=(change_kind&, change_kind)): Declare new bit-wise
34949	operators for the new enum change_kind.
34950	(equals): Declare this new comparison function for decl_base,
34951	scope_decl, type_base, type_decl, scope_type_decl,
34952	qualified_type_def, pointer_type_def, reference_type_def,
34953	array_type_def, enum_type_decl, typedef_decl, var_decl,
34954	function_decl, function_type, class_decl, and
34955	class_decl::base_spec.
34956	(class_decl::base_spec::operator(const decl_base&)): Declare new
34957	equality operator.
34958	* src/abg-ir.cc (operator|(change_kind l, change_kind r))
34959	(operator&(change_kind l, change_kind r), operator|=(change_kind&
34960	l, change_kind r), operator&=(change_kind& l, change_kind r)):
34961	Define these new operators.
34962	(equals): Define this new comparison function for decl_base,
34963	scope_decl, type_base, type_decl, scope_type_decl,
34964	qualified_type_def, pointer_type_def, reference_type_def,
34965	array_type_def, enum_type_decl, typedef_decl, var_decl,
34966	function_decl, function_type, class_decl, and
34967	class_decl::base_spec.
34968	({decl_base, scope_decl, type_base, type_decl, scope_type_decl,
34969	qualified_type_def, pointer_type_def, reference_type_def,
34970	array_type_def, enum_type_decl, typedef_decl, var_decl,
34971	function_decl, function_type, class_decl,
34972	class_decl::base_spec}::operator==): Re-write these comparison
34973	operators in terms of their relevant equal() functions.
34974
349752014-09-22  Dodji Seketeli <dodji@redhat.com>
34976
34977	Fix struct type kind suppression support
34978	* src/abg-comparison.cc (type_suppression::suppresses_diff): Do
34979	not crash on diff nodes that are not about struct/classes, when
34980	"type_kind = struct" has been specified.
34981	* tests/data/test-diff-suppr/test2-struct-suppr-{0,1}.suppr: New test input.
34982	* tests/data/test-diff-suppr/test2-struct-suppr-report-{0,1}.txt:
34983	Likewise.
34984	* tests/data/test-diff-suppr/test2-struct-suppr-v{0,1}.o: Likewise
34985	* tests/data/test-diff-suppr/test2-struct-suppr-v{1,0}.cc: Source code
34986	for binary test input.
34987	* tests/test-diff-suppr.cc (in_out_spec): Run this harness on the
34988	new test input above.
34989	* tests/Makefile.am: Add the new test input files to source
34990	distribution.
34991
349922014-09-22  Dodji Seketeli <dodji@redhat.com>
34993
34994	Replace is_typedef by type_kind property in type suppressions
34995	* doc/suppr-doc.txt: Add type_kind property "documentation" in the
34996	type suppression.
34997	* include/abg-comparison.h (type_suppression::type_kind): New
34998	enum.
34999	(type_suppression::{get_consider_typedefness,
35000	set_consider_typedefness, get_is_typedef, set_is_typedef}):
35001	Remove.
35002	(type_suppression::{get_consider_type_kind,
35003	set_consider_type_kind, get_type_kind, set_type_kind}): Declare
35004	new methods.
35005	* Include/abg-fwd.h (is_type_decl): Declare new function.
35006	(is_enum): Declare new overload that takes a type_base_sptr.
35007	* src/abg-comparison.cc
35008	(type_suppression::priv::{consider_typedefness_, is_typedef_}):
35009	Remove these data members.
35010	(type_suppression::priv::{consider_type_kind_, type_kind_}): New
35011	data members.
35012	(type_suppression::priv::priv): Adjust.
35013	(type_suppression::{get_consider_typedefness,
35014	set_consider_typedefness, get_is_typedef, set_is_typedef}): Remove
35015	these member functions.
35016	(type_suppression::{get_consider_type_kind,
35017	set_consider_type_kind, get_type_kind, set_type_kind}): Define
35018	these new member functions.
35019	(type_suppression::suppresses_diff): Adjust to consider the kind
35020	of types more generally than just considering typedef-ness.
35021	(read_type_kind_string): New static function.
35022	(read_type_suppression): Use the above to parse the value of the
35023	new type_kind property.  Adjust the creation of the resulting
35024	type_suppression object.
35025	* src/abg-ir.cc (is_type_decl): Define new function.
35026	* tests/data/test-diff-suppr/test1-typedef-suppr-0.suppr: Adjust.
35027	* tests/data/test-diff-suppr/test1-typedef-suppr-1.suppr: Adjust.
35028
350292014-09-19  Dodji Seketeli <dodji@redhat.com>
35030
35031	Initial support for type suppressions
35032	* include/abg-comparison.h (diff_category::SUPPRESSED_CATEGORY):
35033	New enumerator.
35034	(diff_category::{SIZE_OR_OFFSET_CHANGE_CATEGORY,
35035	VIRTUAL_MEMBER_CHANGE_CATEGORY): Update the enumerator values for
35036	these.
35037	(diff::EVERYTHING_CATEGORY): Adjust.
35038	(suppression_base, type_suppression): Declare new types.
35039	(suppression_ptr, suppressions_type, type_suppression_sptr)
35040	(type_suppressions_type): New typedefs.
35041	(read_type_suppressions, read_suppressions): Declare new
35042	functions.
35043	(diff_context::{suppressions, add_suppression, add_suppressions}):
35044	Declare new methods.
35045	(diff::is_suppressed): Declare new member function.
35046	(apply_suppressions): Declare new function & overloads.
35047	* src/abg-comparison.cc (is_type_diff): Define new static
35048	function.
35049	({suppression_base, type_suppression}::priv): Define new types.
35050	({suppression_base, type_suppression}::*): Define the methods of the new
35051	suppression_base, type_suppressions types.
35052	(read_type_suppression, read_type_suppressions, read_suppressions)
35053	(read_type_suppressions): Define new static functions.
35054	(diff_context::priv::supprssions_): New data member.
35055	(diff_context::{suppressions, add_suppression, add_suppressions}):
35056	New methods.
35057	(diff::is_filtered_out): Consider that a diff node that is in the
35058	SUPPRESSED_CATEGORY is filtered out.
35059	(diff::is_suppressed): Define new member function.
35060	(operator<<(ostream& o, diff_category c)): Support the
35061	SUPPRESSED_CATEGORY category.
35062	(corpus_diff::report): Apply suppressions before reporting
35063	anything.
35064	(category_propagation_visitor::visit_end): Do not propagate
35065	SUPPRESSED_CATEGORY.  This is just like what we do for
35066	REDUNDANT_CATEGORY.
35067	(struct suppression_categorization_visitor): New visitor.
35068	(apply_suppressions): Define function & overloads.
35069	* include/abg-ini.h (config::section::find_property): New method.
35070	(config::section): Fix end of class comment.
35071	* src/abg-ini.cc (config::section::find_property): Define new
35072	method.
35073	* tests/data/test-diff-suppr/test0-type-suppr-{0,1,2}.suppr: New
35074	test input files.
35075	* tests/data/test-diff-suppr/test0-type-suppr-report-{0,1,2,3}.txt:
35076	Likewise.
35077	* tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.o: Likewise.
35078	* tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.cc: Source code
35079	for new test input.
35080	* tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.o: New test
35081	input files.
35082	* tests/data/test-diff-suppr/test1-typedef-suppr.h: Source code
35083	for new test input files.
35084	* tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.c: Likewise
35085	* tests/data/test-diff-suppr/test1-typedef-suppr-{0,1}.suppr: New
35086	test input files.
35087	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
35088	* tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise.
35089	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
35090	* tests/test-diff-suppr.cc: New test harness to run type suppression tests
35091	using the input files above.
35092	* tests/data/test-diff-suppr/test3-struct-suppr-0.suppr: New test input.
35093	* tests/data/test-diff-suppr/test3-struct-suppr-1.suppr: Likewise.
35094	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
35095	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
35096	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
35097	* tests/data/test-diff-suppr/test3-struct-suppr-v0.cc: Likewise.
35098	* tests/data/test-diff-suppr/test3-struct-suppr-v0.o: Likewise.
35099	* tests/data/test-diff-suppr/test3-struct-suppr-v1.cc: Likewise.
35100	* tests/data/test-diff-suppr/test3-struct-suppr-v1.o: Likewise.
35101	* tests/Makefile.am: Build the new runtestdiffsuppr test harness
35102	from the test-diff-filter.cc file.  Add the new test files to the
35103	build system and source distribution.
35104	* tools/bidiff.cc (options::suppressions): New data member.
35105	(display_usage): Add a help string for the new
35106	--suppressions command line switch.
35107	(parse_command_line): Parse the --suppressions command line
35108	switch.
35109	(set_diff_context_from_opts): Read the suppressions provided by
35110	the --suppression command line switch and stuff them into the diff
35111	context.
35112
351132014-09-19  Dodji Seketeli <dodji@redhat.com>
35114
35115	Make all type diff types extend new type_diff_base type
35116	* include/abg-comparison.h (type_diff_base, decl_diff_base): New
35117	types.
35118	(type_diff_base_sptr): New typedef.
35119	(pointer_diff, reference_diff, array_diff, qualified_type_diff)
35120	(enum_diff, class_diff, type_decl_diff, typedef_diff): Make this
35121	extend the new type_diff_base.
35122	* src/abg-comparison.cc (type_diff_base::priv, type_diff_base):
35123	Define these new types and their methods.
35124	(pointer_diff::pointer_diff, array_diff::array_diff)
35125	(reference_diff::reference_diff)
35126	(qualified_type_diff::qualified_type_diff, enum_diff::enum_diff)
35127	(class_diff::class_diff, type_decl_diff::type_decl_diff)
35128	(typedef_diff::typedef_diff): Adjust.
35129
351302014-09-18  Dodji Seketeli <dodji@redhat.com>
35131
35132	Rename abigail::ini::config::section_vector to sections_type
35133	* include/abg-ini.h (abigail::ini::config::sections_type): Renamed
35134	section_vector into this.
35135	(config::{get_sections, set_sections, read_sections,
35136	write_sections}): Adjust.
35137	* src/abg-ini.cc (config::priv::sections_): Adjust.
35138	(config::priv::priv): Likewise.
35139	(config::{config, get_sections}): Likewise.
35140	(read_sections, read_config, write_sections): Likewise.
35141
351422014-09-08  Dodji Seketeli <dodji@redhat.com>
35143
35144	Implement the abigail::ini::config abstraction
35145	* include/abg-ini.h (config::config): Add an overload that take a
35146	path and sections.
35147	(config::{get,set}_sections): New accessors.
35148	(read_sections): Rename the previous read_config() functions into
35149	these.
35150	(read_config): Add these function declarations to really act on
35151	instances of abigail::ini::config.
35152	(write_section): Rename the previous write_config functions into
35153	these.
35154	(write_config): Add these function declarations to really act on
35155	instances of abigail::ini::config.
35156	* src/abg-ini.cc (class config::priv): Implement this.
35157	(config::{config, ~config, get_path, set_path, get_sections,
35158	set_sections}): Define these new methods.
35159	(read_sections): Rename the former read_config into this.
35160	(read_config): Add this function definitions to really act on
35161	instances of abigail::ini::config.
35162	(write_sections): Rename the former write_config into this.
35163	(write_config):: Add this function definitions to really act on
35164	instances of abigail::ini::config.
35165	* tools/binilint.cc (main): Adjust.
35166
351672014-09-05  Dodji Seketeli <dodji@redhat.com>
35168
35169	Initial support of ini-style file parsing
35170	* include/abg-ini.h: New file.
35171	* include/Makefile.am: Add include/abg-ini.h to the source
35172	distribution.
35173	* src/abg-ini.cc: New file.
35174	* src/Makefile.am: Add src/abg-ini.cc to the source distribution.
35175	* tools/binilint.cc: New testing tool.
35176	* tools/Makefile.am: Add tools/binilint.cc to the source distribution.
35177
351782014-09-03  Dodji Seketeli <dodji@redhat.com>
35179
35180	Initial examples of suppression list specifications
35181	* doc/suppr-doc.txt: New file.
35182
351832014-10-11  Dodji Seketeli <dodji@redhat.com>
35184
35185	Put IR artifacts in the abigail::ir namespace
35186	* include/abg-fwd.h: Wrap IR artifacts into abigail::ir namespace.
35187	Inject that new abigail::ir namespace into the abigail namespace.
35188	* include/abg-ir.h: Wrap IR artifacts into abigail::ir namespace.
35189	(function_decl::parameter::get_type_name): Adjust the call to
35190	abigail::get_type_name.  It's now a call to
35191	abigail::ir::get_type_name.
35192	* src/abg-ir.cc: Wrap IR artifacts into abigail::ir namespace.
35193	* include/abg-traverse.h: Wrap the ir traversing artifact into the
35194	abigail::ir namespace too.
35195	* src/abg-traverse.cc: Adjust.
35196	* include/abg-corpus.h: Wrap corpus type stuff into abigail::ir.
35197	* include/abg-dwarf-reader.h: Inject namespace abigail::ir stuff
35198	into the abigail::dwarf_reader namespace.
35199	* include/abg-reader.h: Inject namespace abigail::ir stuff into
35200	the abigail::xml_reader namespace.
35201	* src/abg-reader.cc: Adjust.
35202	* include/abg-writer.h: Inject namespace abigail::ir stuff into
35203	the abigail::xml_writer namespace.
35204	* src/abg-writer.cc: Inject namespace abigail::ir stuff into
35205	abigail namespace here too.
35206	* src/abg-hash.cc: Inject the abigail::ir namespace into the
35207	abigail namespace.
35208	* tools/abg-tools-utils.cc: Adjust for the injection of
35209	abigail::function_decl. It's now abigail::ir::function_decl.
35210
352112014-10-13  Dodji Seketeli <dodji@redhat.com>
35212
35213	Misc style cleanups
35214	* src/abg-comparison.cc: ({pointer_diff, reference_diff}::length):
35215	Add some vertical spaces here.
35216
352172014-10-13  Dodji Seketeli <dodji@redhat.com>
35218
35219	constify dm_context_rel::operator==
35220	* include/abg-ir.h (dm_context_rel::operator==): Make this const.
35221
352222014-10-13  Dodji Seketeli <dodji@redhat.com>
35223
35224	A distinct_diff node has no children node
35225	* src/abg-comparison.cc (distinct_diff::chain_into_hierarchy): Do
35226	not append any children node here.
35227
352282014-10-13  Dodji Seketeli <dodji@redhat.com>
35229
35230	Remove useless redundant_filter
35231	* include/abg-comp-filter.h (class redundant_filter): Remove this
35232	now useless type declaration
35233	* src/abg-comparison.cc (filtering::redundant_filter::visit):
35234	Remove this useless member function definition.
35235
352362014-10-10  Dodji Seketeli <dodji@redhat.com>
35237
35238	Sort diff reports about function parameters by their indexes
35239	* include/abg-comparison.h (changed_parms_type): New convenience
35240	typedef.
35241	* src/abg-comparison.cc (struct changed_parm_comp): New comparison
35242	functor.
35243	(sort_changed_parm_map): New sorting function.
35244	(function_decl_diff::report): Use the new sort_changed_parm_map to
35245	sort the diffs for function parameters by their indexes.
35246
352472014-10-10  Dodji Seketeli <dodji@redhat.com>
35248
35249	Don't be too eager to use distinct_diff
35250	* src/abg-comparison.cc (try_to_diff):  For this to actually
35251	select a diff kind, the two diff subject must be of type
35252	'DiffType'.
35253	(compute_diff_for_types, compute_diff_for_decls): Use
35254	distinct_diff in last resort.
35255
352562014-10-10  Dodji Seketeli <dodji@redhat.com>
35257
35258	Implement generic diff tree walking and port categorization over it
35259	* include/abg-comp-filter.h (apply_filter): Declare new overload
35260	that takes a corpus_diff_sptr ...
35261	* src/abg-comp-filter.cc (apply_filter): ... and define it.  On
35262	the existing overload for diff_sptr, make sure to traverse all
35263	diff nodes, even those that have already been traversed.
35264	* include/abg-comparison.h (enum diff_category): Remove
35265	NOT_REDUNDANT_CATEGORY, add REDUNDANT_CATEGORY.
35266	(operator&=, +operator<<): Declare new operators for enum diff_category.
35267	(diff_context::{forbid_traversing_a_node_twice,
35268	traversing_a_node_twice_is_forbidden):
35269	(diff_context::categorizing_redundancy): Remove this declaration.
35270	(diff_context::maybe_apply_filters): Declare a new overload that
35271	takes a corpus_diff_sptr.  And a take a new flag that says if it
35272	should visit all nodes including those that have already been
35273	visited.
35274	(diff::priv_): Make this data member protected.
35275	(diff::{begin_traversing, is_traversing, end_traversing,
35276	finish_diff_type, children_nodes, append_child_node,
35277	get_pretty_representation, chain_into_hierarchy, traverse}):
35278	Declare new member functions.
35279	(distinct_diff::{finish_diff_type, get_pretty_representation,
35280	chain_into_hierarchy}): Likewise.
35281	(distinct_diff::traverse): Remove.
35282	(pointer_diff::pointer_diff): Take the underlying type diff in
35283	parameter.
35284	(pointer_diff::{finish_diff_type, get_pretty_representation,
35285	chain_into_hierarchy}): Declare new member functions.
35286	(pointer_diff::traverse): Remove.
35287	(reference_type_def::reference_type_def): Take the underlying type
35288	diff in parameter.
35289	({array_type_def, reference_type_def}::{finish_diff_type,
35290	get_pretty_representation, chain_into_hierarchy}): Declare new
35291	member functions.
35292	({array_type_diff, reference_type_def}::traverse): Remove.
35293	(qualified_type_diff::qualified_type_diff): Take the underlying
35294	type diff in parameter.
35295	({enum_diff, qualified_type_diff, class_diff}::{finish_diff_type,
35296	get_pretty_representation, chain_into_hierarchy}): Declare new
35297	member functions.
35298	({enum_diff, qualified_type_diff, class_diff}::traverse): Remove.
35299	(is_class_diff): Declare new function.
35300	(base_diff::base_diff): Take the underlying type diff in
35301	parameter.
35302	({scope_diff, base_diff}::{finish_diff_type, get_pretty_representation,
35303	chain_into_hierarchy}): Declare new member functions.
35304	({scope_diff, base_diff}::traverse): Remove.
35305	(function_decl_diff::function_decl_diff): Take the return type
35306	diff as parameter.
35307	({function_decl_diff, type_decl_diff}::{finish_diff_type,
35308	get_pretty_representation, chain_into_hierarchy}): Declare new
35309	member functions.
35310	({function_decl_diff, type_decl_diff}::traverse): Remove.
35311	(typedef_diff::typedef_diff): Take the underlying type diff as
35312	parameter.
35313	(typedef::{finish_diff_type, get_pretty_representation,
35314	chain_into_hierarchy}): Declare new member functions.
35315	({typedef, translation_unit_diff}::traverse): Remove member
35316	function.
35317	(corpus_diff::{finish_diff_type, children_nodes,
35318	append_child_node, changed_variables, get_pretty_representation,
35319	chain_into_hierarchy}): Declare new member functions.
35320	(class diff_node_visitor::{visit_begin, visit_end}): Declare new
35321	member functions.
35322	(propagate_categories, print_diff_tree, categorizing_redundancy)
35323	(clear_redundancy_categorization, apply_filters): New functions
35324	and function overloads.
35325	* src/abg-comparison.cc (TRY_PRE_VISIT, TRY_PRE_VISIT_CLASS_DIFF)
35326	(TRY_POST_VISIT, TRY_POST_VISIT_CLASS_DIFF)
35327	(CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE)
35328	(UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE)
35329	(TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
35330	(TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY)
35331	(TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY)
35332	(ENSURE_DIFF_NODE_TRAVERSED_ONCE)
35333	(ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Remove these macros.
35334	Hurrah.
35335	(diff_context::priv::categorizing_redundancy_): Remove.
35336	(diff_context::priv::forbid_traversing_a_node_twice_): Add new
35337	data member.
35338	(diff_context::priv::priv): Adjust.
35339	(diff_context::{forbid_traversing_a_node_twice,
35340	traversing_a_node_twice_is_forbidden}): Define new member
35341	functions.
35342	(diff_context::maybe_apply_filters): Once filters are applied (and
35343	categories are set to the relevant diff tree nodes, run a pass
35344	over the diff tree to propagate the categories to the relevant
35345	diff tree parent nodes.  Add an overload for corpus_diff_sptr.
35346	(diff_context::categorizing_redundancy): Remove member function.
35347	(diff_context::maybe_apply_filters): Define a new overload for
35348	corpus_diff_sptr
35349	(struct diff::priv::{finished_, traversing_, children_,
35350	pretty_representation_}):  New data members.
35351	(diff::priv::priv): Adjust.
35352	(diff::{begin_traversing, is_traversing, end_traversing,
35353	finish_diff_type, children_nodes, append_child_node, traverse,
35354	set_category, get_pretty_representation, chain_into_hierarchy}):
35355	Define new member functions.
35356	(diff::is_filtered_out): Do not refer to NOT_REDUNDANT_CATEGORY
35357	anymore.  Rather, use the new REDUNDANT_CATEGORY.
35358	({distinct_diff, var_diff, pointer_diff, array_diff,
35359	reference_diff, qualified_type_diff, enum_diff, class_diff,
35360	base_diff, scope_diff, function_decl_diff, type_decl_diff,
35361	typedef_diff}::{get_pretty_representation, chain_into_hierarchy,
35362	finish_diff_type}): Define new member functions.
35363	({distinct_diff, var_diff, pointer_diff, array_diff,
35364	reference_diff, qualified_type_diff, enum_diff, class_diff,
35365	base_diff, scope_diff, function_decl_diff, type_decl_diff,
35366	typedef_diff, translation_unit_diff}::traverse): Remove member
35367	functions.
35368	(operator&=, operator<<): Define new operators for diff_category.
35369	({function_decl_diff, typedef_diff}::priv::priv): Add a new
35370	constructor.
35371	(pointer_diff::{priv::priv, pointer_diff})
35372	(reference_diff::{priv::priv, reference_diff})
35373	(qualified_type_diff::{priv::priv, qualified_type_diff})
35374	(enum_diff::{priv::priv, enum_diff}, base_diff::{priv::priv,
35375	base_diff}, function_decl_diff::function_decl_diff): Take the
35376	underlying type diff in parameter.
35377	(compute_diff): Adjust the pointer_diff, reference_diff,
35378	qualified_type_diff, base_diff, function_decl_diff overloads.
35379	(class_diff::priv::{count_filtered_bases,
35380	count_filtered_subtype_changed_dm, count_filtered_changed_dm,
35381	count_filtered_changed_mem_fns, count_filtered_inserted_mem_fns,
35382	count_filtered_deleted_mem_fns}): Adjust for the call to
35383	diff_context::maybe_apply_filters.
35384	(corpus_diff::priv::{finished_, pretty_representation_}): New data
35385	member.
35386	(corpus_diff::priv::priv): New constructor.
35387	(corpus_diff::priv::clear_redundancy_categorization): Define new
35388	member function.
35389	(corpus_diff::priv::apply_filters_and_compute_diff_stats):
35390	Adjust for call to diff_context::maybe_apply_filters.  Also, call
35391	clear_redundancy_categorization at the end.
35392	(corpus_diff::priv::categorize_redundant_changed_sub_nodes):
35393	Revisit logic.
35394	(corpus_diff::{chain_into_hierarchy, finish_diff_type,
35395	children_nodes, append_child_node, changed_variables,
35396	get_pretty_representation}): Define new member functions.
35397	(corpus_diff::report): Categorize redundancy for every top level
35398	function/variable diff.
35399	(corpus_diff::traverse): Adjust to the new traversing interface.
35400	(diff_node_visitor::{visit_begin, visit_end}): Define new member
35401	functions.
35402	(struct category_propagation_visitor, struct diff_node_printer)
35403	(struct redundancy_marking_visitor, struct
35404	redundancy_clearing_visitor): New diff tree node visitors.
35405	(propagate_categories, print_diff_tree, categorize_redundancy)
35406	(clear_redundancy_categorization, apply_filters): Define new
35407	functions.
35408	* tests/Makefile.am: Add the new tests/print-diff-tree.cc to the
35409	source distribution.  Build it into a tests/printdifftree binary.
35410	* tools/abidiff.cc (print_diff_tree): Add debugging functions to
35411	call from within the debugger.  By default, this function and its
35412	overloads are not compiled.
35413
354142014-10-10  Dodji Seketeli <dodji@redhat.com>
35415
35416	Update copyright notice for tests/test-diff2.cc
35417	* tests/test-diff2.cc: Update copyright year.
35418
354192014-10-09  Dodji Seketeli <dodji@redhat.com>
35420
35421	Do not crash on function_decl_diff for fns that have no symbol
35422	* src/abg-comparison.cc (function_decl_diff::report): If a
35423	function decl has no associated elf symbol, do not crash while
35424	trying to report about its elf symbol aliases.
35425
354262014-10-09  Dodji Seketeli <dodji@redhat.com>
35427
35428	Avoid broken output for virtual member fns w/o symbols
35429	* src/abg-comparison.cc (represent): When a virtual member
35430	function has no associated elf symbol, do not emit garbage in lieu
35431	of the linkage name.  Just emit no linkage name;
35432	* tests/data/test-abidiff/test-struct1-report.txt: Adjust.
35433
354342014-10-02  Dodji Seketeli <dodji@redhat.com>
35435
35436	Sort added/removed/changed functions reported by the comparison engine
35437	* src/abg-comparison.cc (struct function_comp, struct
35438	changed_function_ptr_comp): New comparison functors.
35439	(sort_string_function_ptr_map)
35440	(sort_string_changed_function_ptr_map): Define new static
35441	functions.
35442	(corpus_diff::report): Sort the added/removed/changed functions
35443	that are reported.
35444	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
35445	* tests/data/test-diff-filter/test01-report.txt: Adjust.
35446	* tests/data/test-diff-filter/test2-report.txt: Adjust.
35447	* tests/data/test-diff-filter/test9-report.txt: Adjust.
35448
354492014-10-02  Dodji Seketeli <dodji@redhat.com>
35450
35451	Mention virtual-ness of member function in their pretty representation
35452	* include/abg-fwd.h (get_member_function_is_virtual): Declare new
35453	overload for pointers.
35454	* src/abg-ir.cc (get_member_function_is_virtual): Define it.
35455	(function_decl::get_pretty_representation): Print virtual-ness of
35456	the function_decl being pretty printed.
35457
354582014-10-02  Dodji Seketeli <dodji@redhat.com>
35459
35460	Do not crash when reporting diffs about virtual member fns that have no symbol
35461	* src/abg-comparison.cc (represent): If a virtual member function
35462	has no symbol do not crash.
35463
354642014-10-02  Dodji Seketeli <dodji@redhat.com>
35465
35466	Fixup member functions which virtual-ness has just been set
35467	* include/abg-ir.h (fixup_virtual_member_function): Declare new
35468	function.
35469	(class_decl): Declare fixup_virtual_member_function() as a member.
35470	* src/abg-ir.cc (set_member_function_is_virtual): Ensure that the
35471	member function that has seen its virtualness set is also put
35472	correctly put in the vector of virtual member functions of its
35473	class.
35474
354752014-10-02  Dodji Seketeli <dodji@redhat.com>
35476
35477	Assert that only decls with elf symbols are part of comparison
35478	* src/abg-corpus.cc (corpus::priv::build_public_decl_table): Assert
35479	that when read from DWARF, only decls with elf symbols are part of
35480	the public decls table.
35481
354822014-10-02  Dodji Seketeli <dodji@redhat.com>
35483
35484	Emit all virtual member functions in group
35485	* src/abg-writer.cc (write_class_decl): Emit virtual member
35486	functions contiguously.
35487
354882014-10-02  Dodji Seketeli <dodji@redhat.com>
35489
35490	Always emit vtable offset for virtual member function
35491	* src/abg-writer.cc (write_voffset): Emit the vtable offset of
35492	virtual function even when the offset is zero.
35493
354942014-10-02  Dodji Seketeli <dodji@redhat.com>
35495
35496	Do not forget priv_->in_pub_sym_tab_ when copying decl_base
35497	* src/abg-ir.cc (decl_base::decl_base(const decl_base& d)): Do
35498	not forget to copy priv_->in_pub_sym_tab_.
35499
355002014-10-01  Dodji Seketeli <dodji@redhat.com>
35501
35502	Fix reading several clones of the same member function from DWARF
35503	* include/abg-fwd.h (set_member_function_is_ctor)
35504	(set_member_function_is_dtor, set_member_function_is_const)
35505	(set_member_function_vtable_offset): Declare new functions.
35506	* include/abg-ir.h (class_decl::sort_virtual_mem_fns): Declare new
35507	member function.
35508	(mem_fn_context_rel::{vtable_offset, is_constructor is_destructor,
35509	is_const}): Add these setters.
35510	(set_member_function_is_ctor, set_member_function_is_dtor)
35511	(set_member_function_is_static, set_member_function_is_const)
35512	(set_member_function_vtable_offset)
35513	(set_member_function_is_virtual): Declare these new friend
35514	function to class class_decl::method_decl.
35515	* src/abg-dwarf-reader.cc (finish_member_function_reading): Split
35516	this out from build_class_type_and_add_to_ir.  Use the new setters
35517	for member functions properties introduced above.
35518	(build_class_type_and_add_to_ir): Factorize the creation of member
35519	function by using build_ir_node_from_die.  Once that function has
35520	created the member function in a rather generic way, use the new
35521	finish_member_function_reading to set the remaining specific
35522	properties for member functions.
35523	(build_function_decl): When called to read additional properties
35524	of a function_decl, allow this to read and update the elf symbol
35525	properties too.  This is useful for building a clone of a function
35526	that already has an elf symbol.
35527	(build_ir_node_from_die):  When building a function decl, consider
35528	the case of a DIE that has both DW_AT_specification and
35529	DW_AT_abstract_origin set.  That is, DW_AT_abstract_origin is set,
35530	and the origin has DW_AT_specification set.  This is basically a
35531	clone of a function that implements an interface (this happens for
35532	destructors, for instance).  In this case, really do the cloning
35533	of the interface implementation.  If the cloned function happens
35534	to be member function, use finish_member_function_reading to read
35535	the properties relevant to its method-ness.
35536	* src/abg-ir.cc (set_member_function_is_ctor)
35537	(set_member_function_is_dtor, set_member_function_is_const)
35538	(set_member_function_vtable_offset)
35539	(class_decl::sort_virtual_mem_fns): Define new functions.
35540	(sort_virtual_member_functions): Define new static function.
35541	(struct virtual_member_function_less_than): New functor.
35542	(class_decl::add_member_function): Keep virtual member functions
35543	vector sorted.
35544	* data/test-read-dwarf/test1.abi: Adjust.  Now, both the
35545	cdtor specification and all the clones that implements the
35546	different are emitted.
35547	* data/test-read-dwarf/test2.so.abi: Likewise.
35548
355492014-10-01  Dodji Seketeli <dodji@redhat.com>
35550
35551	Do not crash when comparing functions that have no symbol
35552	* src/abg-comparison.cc
35553	(class_diff::ensure_lookup_tables_populated): Just skip functions
35554	that have no ELF symbol.
35555
355562014-09-30  Dodji Seketeli <dodji@redhat.com>
35557
35558	Rename member_function_is_virtual to get_member_function_is_virtual
35559	* include/abg-fwd.h (get_member_function_is_virtual): Renamed the
35560	declaration of member_function_is_virtual into this.
35561	* src/abg-ir.cc (get_member_function_is_virtual): Likewise for its
35562	definition.
35563	* include/abg-ir.h (class decl_base): Adjust the friend function
35564	member_function_is_virtual references.
35565	* src/abg-comp-filter.cc (has_virtual_mem_fn_change)
35566	(has_non_virtual_mem_fn_change): Adjust.
35567	* src/abg-comparison.cc (represent)
35568	(SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED, class_diff::report):
35569	Likewise.
35570	* src/abg-hash.cc (class_decl::hash::operator()): Likewise.
35571	(function_decl::clone, class_decl::add_member_function): Adjust.
35572
355732014-09-30  Dodji Seketeli <dodji@redhat.com>
35574
35575	Factorize a no-op deleter for shared pointer
35576	* include/abg-sptr-utils.h (struct noop_deleter): Move this here
35577	from ...
35578	* src/abg-comparison.cc (struct noop_deleter): ... here.
35579
355802014-09-30  Dodji Seketeli <dodji@redhat.com>
35581
35582	Link manuals from the main web page
35583	* doc/website/mainpage.txt: Add a link to the manuals.
35584
355852014-09-26  Dodji Seketeli <dodji@redhat.com>
35586
35587	Initial documentation for libabigail
35588	* doc/manuals/Makefile: New file, generated by sphinx-quickstart.
35589	* doc/manuals/abidiff.rst: New manual for abidiff.
35590	* doc/manuals/abidw.rst: New manual for abidw.
35591	* doc/manuals/abilint.rst: New manual for abilint.
35592	* doc/manuals/conf.py: New configuration file generated by sphinx-quickstart.
35593	* doc/manuals/index.rst: The root of the this documentation.
35594	* doc/manuals/libabigail-overview.rst: The overview of libabigail.
35595	* doc/manuals/tools.rst: The root of the tools manuals.
35596
355972014-09-26  Dodji Seketeli <dodji@redhat.com>
35598
35599	Do not install the abisym program
35600	* tools/Makefile.am: Do not install abisym.  It's really there
35601	just for testing purposes and is of almost no use for generic
35602	users.
35603
356042014-09-26  Dodji Seketeli <dodji@redhat.com>
35605
35606	Rename bi* tools to abi* tools
35607	* tests/data/test-bidiff: Rename this directory to
35608	tests/data/test-abidiff.
35609	* tests/test-bidiff.cc: Renamed this to tests/test-abidiff.cc.
35610	* tools/biar.cc: Renamed to tools/abiar.cc
35611	* tools/bidiff.cc: Renamed to tools/abidiff.cc
35612	* tools/bidw.cc: Renamed to tools/abidw.cc
35613	* tools/bilint.cc: Renamed to tools/abilint.cc
35614	* tools/bisym.cc: Renamed to tools/abisym.cc
35615	* tests/test-alt-dwarf-file.cc: Renamed references to bidw* to abidw*.
35616	* tests/test-diff-filter.cc: Renamed references to bidiff to abidiff.
35617	* tests/test-lookup-syms.cc: Renamed references to bisym to abisym.
35618	* tools/Makefile.am: Adjust.
35619	* tests/Makefile.am: Likewise.
35620
356212014-09-19  Dodji Seketeli <dodji@redhat.com>
35622
35623	Light cleanup in abg-corpus.cc
35624	* src/abg-corpus.cc
35625	(symtab_build_visitor_type::regex_fns_suppress): use
35626	sptr_utils::build_sptr, rather than building the shared_ptr of
35627	regex_t by hand.
35628
356292014-09-18  Dodji Seketeli <dodji@redhat.com>
35630
35631	Pimplify abigail::comparison::diff type
35632	* include/abg-comparison.h (diff::{priv, sptr}): New types.
35633	(diff::priv_): New member.
35634	(diff::*): Remove all the other previous data members and
35635	transform the inline member function definition into declarations
35636	only.
35637	* src/abg-comparison.cc (class diff::priv): New private data type.
35638	(diff::*): Define the previous inline member functions as
35639	out-of-line here.
35640
356412014-09-18  Dodji Seketeli <dodji@redhat.com>
35642
35643	Rename shared_ptr<regex_t> into regex_t_sptr
35644	* include/abg-sptr-utils.h (build_sptr()): Rename the return type
35645	from shared_ptr<regex_t> to regex_t_sptr.
35646
356472014-09-19  Dodji Seketeli <dodji@redhat.com>
35648
35649	Fix a comment in abg-comparison.h
35650	* include/abg-comparison.h (class base_diff): Fix comment.
35651
356522014-09-05  Dodji Seketeli <dodji@redhat.com>
35653
35654	Light style cleanup in tools/bidiff.cc
35655	* tools/bidiff.cc (display_usage): Remove useless space before '&'.
35656
356572014-09-05  Dodji Seketeli <dodji@redhat.com>
35658
35659	src/Makefile.am cleanup
35660	* src/Makefile.am: Remove the unused 'headers' variable.
35661
356622014-09-16  Dodji Seketeli <dodji@redhat.com>
35663
35664	Emit reports about not-yet categorized diff nodes
35665	* include/abg-comparison.h (NO_CHANGE_CATEGORY): Better comment
35666	this enumerator.
35667	* src/abg-comparison.cc (diff::is_filtered_out): Not-yet
35668	categorized changes are not filtered out anymore.
35669	(distinct_diff::report): Avoid extraneous new line here.
35670
356712014-09-16  Dodji Seketeli <dodji@redhat.com>
35672
35673	Better support for inline related diffs
35674	* include/abg-comparison.h
35675	(diff_category::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY): New
35676	enumerator.
35677	(diff_category::EVERYTHING_CATEGORY): Adjust.
35678	* include/abg-ir.h (elf_symbol::get_aliases_id_string)
35679	(elf_symbol::does_alias, elf_symbols_alias)
35680	(compute_aliases_for_elf_symbol): Declare new functions ...
35681	* src/abg-ir.cc (elf_symbol::get_aliases_id_string)
35682	(elf_symbol::does_alias, elf_symbols_alias)
35683	(compute_aliases_for_elf_symbol): ... and define them.
35684	(function_decl::operator==): Take in account elf symbol aliases.
35685	* src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
35686	Define new static functions.
35687	(harmless_filter::visit): Categorize function name changes that
35688	n	doesn't impact underlying elf symbols (or the fact that two
35689	symbols were aliases and are not anymore) as harmless.
35690	* src/abg-comparison.cc (function_decl_diff::report): Properly
35691	report function name changes, or symbol aliases changes for that
35692	matter.  Also report inline-ness declaration changes.
35693	* src/abg-dwarf-reader.cc (die_is_declared_inline): New static
35694	function.
35695	(build_function_decl): Use the above.
35696	* tools/bidiff.cc (set_diff_context_from_opts): Add
35697	abigail::comparison::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY into the
35698	harmless change camp.
35699	* tests/data/test-diff-dwarf/test14-inline-report.txt: New test
35700	input.
35701	* tests/data/test-diff-dwarf/test14-inline-v0.o: Likewise.
35702	* tests/data/test-diff-dwarf/test14-inline-v1.o: Likewise.
35703	* tests/data/test-diff-dwarf/test14-inline-v0.cc: Source code for
35704	test input.
35705	* tests/data/test-diff-dwarf/test14-inline-v1.cc: Source code for
35706	test input.
35707	* tests/test-diff-dwarf.cc: Run this test harness over the new
35708	input above.
35709	* tests/data/test-diff-filter/test20-inline-report-0.txt: Likewise.
35710	* tests/data/test-diff-filter/test20-inline-report-1.txt:
35711	Likewise.
35712	* tests/data/test-diff-filter/test20-inline-v0.o: New test input.
35713	* tests/data/test-diff-filter/test20-inline-v1.o: New test input.
35714	* tests/data/test-diff-filter/test20-inline-v0.cc: Source code for
35715	test input.
35716	* tests/data/test-diff-filter/test20-inline-v1.cc: Likewise.
35717	* tests/test-diff-filter.cc: Run this test harness over the new
35718	input above.
35719
357202014-09-16  Dodji Seketeli <dodji@redhat.com>
35721
35722	Better support for enum diffs
35723	* include/abg-comparison.h (changed_enumerator_type): New typedef.
35724	(diff_category::{HARMLESS_ENUM_CHANGE_CATEGORY}): New enumerator.
35725	* src/abg-comp-filter.cc (has_type_size_change)
35726	(has_enumerator_insertion, has_enumerator_removal_or_change)
35727	(has_harmful_enum_change): New functions.
35728	(harmless_filter::visit): Categorize enumerator insertions that
35729	don't change the size of the type into HARMLESS_ENUM_CHANGE_CATEGORY.
35730	(harmful_filter::visit): Categorize enumerator removal or any enum
35731	change that changes the size of the type into
35732	SIZE_OR_OFFSET_CHANGE_CATEGORY.
35733	* src/abg-comparison.cc (enumerator_value_comp)
35734	(changed_enumerator_comp): New types.
35735	(sort_enumerators, sort_changed_enumerators): New static
35736	functions.
35737	(enum_diff::report): Sort enum related reports by the value of the
35738	enumerators.
35739	* src/abg-dwarf-reader.cc (build_enum_type): Name anonymous enums
35740	as __anonymous_enum__.
35741	* tools/bidiff.cc (set_diff_context_from_opts): Add
35742	abigail::comparison::HARMLESS_ENUM_CHANGE_CATEGORY into the harmless
35743	stuff camp.
35744	* tests/data/test-diff-dwarf/test15-enum-report.txt: New test
35745	input.
35746	* tests/data/test-diff-dwarf/test15-enum-v1.o: Likewise.
35747	* tests/data/test-diff-dwarf/test15-enum-v0.o: Likewise.
35748	* tests/data/test-diff-dwarf/test15-enum-v0.cc: Source code for
35749	test input.
35750	* tests/data/test-diff-dwarf/test15-enum-v1.cc: Likewise.
35751	* tests/data/test-diff-filter/test19-enum-report-0.txt: New test input.
35752	* tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
35753	* tests/data/test-diff-filter/test19-enum-v0.o: Likewise.
35754	* tests/data/test-diff-filter/test19-enum-v1.o: Likewise.
35755	* tests/data/test-diff-filter/test19-enum-v0.cc: Source code for
35756	test input.
35757	* tests/data/test-diff-filter/test19-enum-v1.cc: Likewise.
35758	* tests/test-diff-dwarf.cc: Run this test harness on the new test
35759	inputs above.
35760	* tests/test-diff-filter.cc: Likewise.
35761	* tests/Makefile.am: Add the new files above to the source distribution.
35762
357632014-09-16  Dodji Seketeli <dodji@redhat.com>
35764
35765	Add constness to elf_symbol::operator==
35766	* include/abg-ir.h (elf_symbol::operator==): Add a const to the
35767	declaration ...
35768	* src/abg-ir.cc (elf_symbol::operator==): ... and to the definition.
35769
357702014-09-15  Dodji Seketeli <dodji@redhat.com>
35771
35772	Misc style cleanups
35773	* src/abg-comparison.cc (ChangedDataMemberComp): Rename this to
35774	changed_data_member_comp
35775	(sort_changed_data_members): Adjust.
35776	(DataMemberComp): Rename this to data_member_comp.
35777	(sort_data_members): Adjust.
35778
357792014-09-15  Dodji Seketeli <dodji@redhat.com>
35780
35781	Constify some function parameters in abg-comp-filter.cc
35782	* src/abg-comp-filter.cc (type_size_changed): Now take const
35783	parameters.
35784
357852014-09-09  Jan Engelhardt <jengelh@inai.de>
35786
35787	Add .gitignore files.
35788	* .gitignore: Add new file.
35789	* m4/.gitignore: Likewise.
35790	* tools/.gitignore: Likewise.
35791
357922014-09-09  Jan Engelhardt <jengelh@inai.de>
35793
35794	Place -L/-l flags into *_LIBADD/*_LDADD
35795	* src/Makefile.am: -L and -l ought to be in LIBADD/LDADD because
35796	that is the only place guaranteed to be in the right spot.  So add
35797	Them to libabigail_la_LIBADD.
35798	* tools/Makefile.am: Likewise.
35799
358002014-09-09  Jan Engelhardt <jengelh@inai.de>
35801
35802	Add libelf to libabigail.la's linker line
35803	* configure.ac: Check for the existence of libelf at configure
35804	time by looking at the presence of the elf_end symbol.  Add the
35805	libelf to the link command line.
35806
358072014-09-09  Jan Engelhardt <jengelh@inai.de>
35808
35809	Drop hardcoded substitutions
35810	* doc/Makefile.am: Do not use @docdir@.  It's indeed replaced at
35811	configure time. But there is no need for this limitation with
35812	automake, as $(docdir) is available and replaceable anytime.
35813	* src/Makefile.am: Likewise for @DEPS_LIBS@ and @DEPS_CFLAGS@.
35814
358152014-09-09  Jan Engelhardt <jengelh@inai.de>
35816
35817	Replace indirect variable assignments
35818	* configure.ac(DEVEL_CFLAGS, DEVEL_CXXFLAGS):  Remove these
35819	useless variables.
35820	(CFLAGS, CXXFLAGS): Set these variables directly.
35821	* include/Makefile.am (pkginclude_HEADERS): Use this predefined
35822	variable.
35823	(publicheaders_DATA, publicheadersdir): Remove these.
35824
358252014-09-09  Jan Engelhardt <jengelh@inai.de>
35826
35827	Remove empty and autogenerated files from git repository
35828	* ChangeLog: Remove this empty file for now.  It'll be added back
35829	right before the first release by automatic generation from the
35830	commit logs.
35831	* INSTALL: Remove this empty file for now.
35832	* NEWS: Remove this empty file for now.  It'll be added back right
35833	before the first release.
35834	* configure.ac (AM_INIT_AUTOMAKE): As the mandatory but empty
35835	files above are being removed for now, let's put in the 'foreign'
35836	mode of automake for the moment.  We'll likely remove it at
35837	release time.
35838
358392014-09-09  Jan Engelhardt <jengelh@inai.de>
35840
35841	Set automake options globally
35842	* configure.ac(AM_INIT_AUTOMAKE): Set the subdir-object option
35843	here ..
35844	* src/Makefile.am: ... not here.
35845	* tests/Makefile.am: Likewise.
35846	* tools/Makefile.am: Likewise.
35847
358482014-09-09  Jan Engelhardt <jengelh@inai.de>
35849
35850	Stash some autogenerated tools in build-aux/
35851	* configure.ac: Reduce the pollution in the top-level directory a
35852	bit.
35853
358542014-09-10  Dodji Seketeli <dodji@redhat.com>
35855
35856	Fix memory leaks due to cycles in types ownership
35857	* include/abg-fwd.h (std::tr1::weak_ptr): Inject this type in the
35858	abigail namespace.
35859	* include/abg-ir.h: Write a memory management guideline for the IR
35860	artifacts.
35861	(Type_base_wptr, function_type_wptr)
35862	(class_decl_wptr): New typedefs.
35863	(translation_unit::get_canonical_function_type): Declare new
35864	member function.
35865	(qualified_type_def::underlying_type_)
35866	(reference_type_def::pointed_to_type_)
35867	(typedef_decl::underlying_type_, function_decl::parameter::type_)
35868	(function_type::return_type_, method_type::class_type_)
35869	(non_type_tparameter::type_, type_composition::type_): Make this a
35870	weak pointer.
35871	(qualified_type_def::get_pointed_to_type)
35872	(reference_type_def::get_pointed_to_type)
35873	(array_type::get_element_type, typedef_decl::get_underlying_type)
35874	(var_decl::get_type, function_decl::parameter::get_type)
35875	(function_type::get_return_type, method_type::get_class_type)
35876	(non_type_tparameter::get_type)
35877	(type_composition::get_composed_type): Adjust to make this return
35878	a shared pointer initialized with the content of the weak pointer.
35879	(function_decl::function_decl, method_decl::method_decl): Remove
35880	the overload that doesn't take a type.  This is because now,
35881	function types need to be registered to their containing
35882	translation unit.
35883	(struct function_type::hash): Declare here.
35884	* src/abg-hash.cc (struct function_type::hash): Declare this in
35885	abg-ir.h and just define the methods here.
35886	* src/abg-ir.cc (fn_type_ptr_map): New typedef.
35887	(translation_unit::priv::canonical_types_): Remove this unused
35888	member.
35889	(translation_unit::priv::canonical_function_types_): New member.
35890	(translation_unit::get_canonical_function_type): Define this
35891	function.
35892	(array_type_def::priv::element_type_, var_decl::priv::type_)
35893	(function_decl::priv::type_): Make this a weak pointer.
35894	(qualified_type_def::get_underlying_type)
35895	(pointer_type_def::get_pointed_to_type)
35896	(reference_type_def::get_pointed_to_type)
35897	(array_type_def::get_element_type)
35898	(typedef_decl::get_underlying_type, var_decl::get_type)
35899	(function_decl::get_type): Adjust to make this return a shared
35900	pointer initialized with the content of the weak pointer.
35901	(qualified_type_def::build_name)
35902	(pointer_type_def::get_qualified_name)
35903	(reference_type_def::get_qualified_name): Adjust.
35904	(method_type::set_class_type): Cleanup the logic.
35905	(function_decl::priv::priv): Remove the overload that takes a bare
35906	pointer to a type.  This should not be used now that we need the
35907	function type to registered with the translation unit.
35908	(function_decl::function_decl): Remove the overload that doesn't
35909	take a type.  This is because now, function types need to be
35910	registered to their containing translation unit.
35911	* src/abg-dwarf-reader.cc (build_function_decl): Register the
35912	function type within its translation type and use its canonical
35913	version.  This complies with the new memory management rules.
35914	* src/abg-reader.cc (build_function_decl): Likewise.
35915
359162014-09-10  Dodji Seketeli <dodji@redhat.com>
35917
35918	Compare class names when comparing methods
35919	* src/abg-ir.cc:
35920
359212014-09-10  Dodji Seketeli <dodji@redhat.com>
35922
35923	Slight white space fix
35924	* src/abg-hash.cc (method_type::hash::operator()(const
35925	method_type&)): White space fix.
35926
359272014-09-10  Dodji Seketeli <dodji@redhat.com>
35928
35929	Update copyright notice
35930	* include/abg-ir.h: Update year of copyright notice.
35931
359322014-07-05  Ondrej Oprala <ooprala@redhat.com>
35933
35934	Unite help output for tools
35935	* tools/biar.cc (std::ostream): Add a using directive.
35936	(display_usage): Make it take a string reference and an ostream
35937	as parameters. Use the ostream argument as an output stream
35938	instead of a hard-coded cout.
35939	Prettify output.
35940	(main): Call display_usage with new parameters.
35941	* tools/bidiff.cc (display_usage): Declare it static.
35942	Prettify output.
35943	* tools/bidw.cc (display_usage): Prettify output.
35944	* tools/bilint.cc (display_usage): Declare it static.
35945	Prettify output.
35946	* tools/bisym.cc (std::cerr): Add a using directive.
35947	(prog_name): Rename progname into this.
35948	(display_usage): Rename show_help into this.
35949	Add an ostream as a parameter. Use the ostream argument
35950	as output stream insted of a hard-coded cout.
35951
359522014-09-03  Dodji Seketeli <dodji@redhat.com>
35953
35954	Adjust copyright year
35955	* tests/test-diff-dwarf.cc: Adjust year in copyright notice.
35956
359572014-09-03  Dodji Seketeli <dodji@redhat.com>
35958
35959	Sort reported changed data members by increasing offset
35960	* include/abg-comparison.h (changed_type_or_decl_vector): New
35961	typedef.
35962	* include/abg-fwd.h (is_data_member): Change the overload that
35963	takes a decl_base_sptr to make it return the real var_decl_sptr
35964	rather than just a bool.
35965	* src/abg-comparison.cc (ChangedDataMemberComp, DataMemberComp):
35966	New comparison functors.
35967	(sort_changed_data_members, sort_data_members): Sorting functions
35968	for changed data members and data members.
35969	(class_diff::report): Sort reports for deleted, inserted and
35970	change data members by the increasing value of the offsets of said
35971	data members.
35972	* src/abg-ir.cc (is_data_member): Change the overload that takes a
35973	decl_base_sptr to make it return the real var_decl_sptr rather
35974	than just a bool.
35975	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
35976	* tests/data/test-diff-dwarf/test13-report.txt: New test input.
35977	* tests/data/test-diff-dwarf/test13-v0.cc: Source code for new
35978	test input.
35979	* tests/data/test-diff-dwarf/test13-v0.o: New test input.
35980	* tests/data/test-diff-dwarf/test13-v1.cc: Source code for new
35981	test input.
35982	* tests/data/test-diff-dwarf/test13-v1.o: New test input.
35983	* tests/Makefile.am: Add the new test inputs above to the source
35984	distribution.
35985	* tests/test-diff-dwarf.cc: Run this test harness on the new test
35986	input.
35987
359882014-09-03  Dodji Seketeli <dodji@redhat.com>
35989
35990	Do not filter out diff nodes that are only in NOT_REDUNDANT_CATEGORY
35991	* src/abg-comparison.cc (diff::is_filtered_out): If a diff not is
35992	only in the NOT_REDUNDANT_CATEGORY category consider it as not
35993	being filtered.
35994	* tests/data/test-diff-filter/test18-report.txt: New test input.
35995	* tests/data/test-diff-filter/test18-v0.cc: Source code for new
35996	test input.
35997	* tests/data/test-diff-filter/test18-v0.o: New test input.
35998	* tests/data/test-diff-filter/test18-v1.cc: Source code for new
35999	test input.
36000	* tests/data/test-diff-filter/test18-v1.o: New test input.
36001	* tests/Makefile.am: Add the new test inputs to the source distribution.
36002	* tests/test-diff-filter.cc: Run this test harness on the new test
36003	input above.
36004
360052014-09-03  Dodji Seketeli <dodji@redhat.com>
36006
36007	White space cleanup
36008	* src/abg-ir.cc (get_data_member_offset): Remove useless
36009	horizontal white space.
36010
360112014-09-03  Dodji Seketeli <dodji@redhat.com>
36012
36013	Add some comments in the comparison engine
36014	* src/abg-comparison.cc: Add a comment for the file.
36015	(struct class_diff::priv::{subtype_changed_dm_,changed_dm_}): Add
36016	comment for these data members.
36017
360182014-09-02  Dodji Seketeli <dodji@redhat.com>
36019
36020	Remove useless new line from comparison engine's report
36021	* src/abg-comparison.cc (class_diff::report):  Do not emit new
36022	lines after reporting about inserted data members.
36023	* tests/data/test-bidiff/test-qual-type0-report.txt: Adjust.
36024	* tests/data/test-bidiff/test-struct0-report.txt: Adjust.
36025	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
36026	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
36027	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
36028	* tests/data/test-diff-dwarf/test3-report.txt: Adjust.
36029	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
36030	* tests/data/test-diff-filter/test0-report.txt: Adjust.
36031	* tests/data/test-diff-filter/test01-report.txt: Adjust.
36032	* tests/data/test-diff-filter/test1-report.txt: Adjust.
36033	* tests/data/test-diff-filter/test11-report.txt: Adjust.
36034	* tests/data/test-diff-filter/test14-0-report.txt: Adjust.
36035	* tests/data/test-diff-filter/test14-1-report.txt: Adjust.
36036	* tests/data/test-diff-filter/test15-0-report.txt: Adjust.
36037	* tests/data/test-diff-filter/test15-1-report.txt: Adjust.
36038	* tests/data/test-diff-filter/test16-report.txt: Adjust.
36039	* tests/data/test-diff-filter/test17-0-report.txt: Adjust.
36040	* tests/data/test-diff-filter/test17-1-report.txt: Adjust.
36041	* tests/data/test-diff-filter/test2-report.txt: Adjust.
36042	* tests/data/test-diff-filter/test3-report.txt: Adjust.
36043	* tests/data/test-diff-filter/test9-report.txt: Adjust.
36044
360452014-09-01  Dodji Seketeli <dodji@redhat.com>
36046
36047	Adjust copyright years
36048	* src/abg-corpus.cc: Adjust copyright years.
36049	* src/abg-libzip-utils.cc: Likewise.
36050	* src/abg-writer.cc: Likewise.
36051
360522014-09-01  Dodji Seketeli <dodji@redhat.com>
36053
36054	Factorize basic redundancy detection in diff report
36055	* src/abg-comparison.cc
36056	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER)
36057	(RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER{2,3}): New
36058	macros.
36059	({pointer_diff, array_diff, reference_diff, qualified_type_diff,
36060	class_diff, typedef_diff}::report): Use the new macros above.
36061	* tests/data/test-bidiff/test-qual-type0-report.txt: Adjust
36062	because type pretty representation are now always quoted.
36063	* tests/data/test-bidiff/test-struct1-report.txt: Adjust likewise.
36064
360652014-08-31  Dodji Seketeli <dodji@redhat.com>
36066
36067	Display package configuration at the end of configure
36068	* configure.ac: Display the configure of the package at the end of
36069	the configure script.
36070
360712014-08-31  Dodji Seketeli <dodji@redhat.com>
36072
36073	Make zip archive support optional
36074	* configure.ac: Support a new --enable-zip-archive option.  By
36075	default its value is set to the 'auto', meaning that if libzip is
36076	installed, that turns the option on -- just like if
36077	--enable-zip-archive was called with the value 'yes'; if libzip is
36078	not installed, that turns the option off -- just like if
36079	--enable-zip-archive was called with the value 'no'.  If libzip is
36080	detected, the pre-processor macro HAVE_LIBZIP is set to 1.  If
36081	--enable-zip-archive is turned on, the pre-processor macro
36082	WITH_ZIP_ARCHIVE is set to 1.
36083	* config.h.in (HAVE_LIBZIP, WITH_ZIP): New define.
36084	* src/abg-corpus.cc: Include config.h.  Guard the inclusion of
36085	abg-libzip-utils.h with the WITH_ZIP_ARCHIVE macro.  Likewise for
36086	the use of declarations coming from abg-libzip-utils.h.
36087	* src/abg-libzip-utils.cc: Include config.h.  Guard the file's
36088	content with the WITH_ZIP_ARCHIVE macro.
36089	* src/abg-reader.cc: Include config.h.  Guard the inclusion of
36090	abg-libzip-utils.h with the WITH_ZIP_ARCHIVE.  Likewise for the
36091	use of declarations coming from abg-libzip-utils.h.
36092	* src/abg-writer.cc: Likewise.
36093	* tests/Makefile.am: Build runtestwritereadarchive and runtestdot
36094	only if zip archives are supported.
36095	* tools/Makefile.am: The biar program is built only if
36096	zip archives are supported.
36097	* tools/bidiff.cc: Handle zip archives only if the
36098	WITH_ZIP_ARCHIVE macros is defined.
36099	* tools/bilint.cc: Likewise.
36100
361012014-08-28  Dodji Seketeli <dodji@redhat.com>
36102
36103	Tell bidiff --help, wrong options and missing argument apart
36104	* tools/bidiff.cc (options::{display_usage,missing_operand}): New
36105	data members.
36106	(options::options): Initialize them.
36107	(parse_command_line):  Flag missing operands.  Return false only
36108	when an option could not be parsed.  Flag when the user wants us
36109	to display help.
36110	(main): Tell --help, wrong options and missing argument apart and
36111	give an appropriate message on stderr.  The help string goes to
36112	stdout though.  Just like what GNU diff does.
36113
361142014-08-28  Dodji Seketeli <dodji@redhat.com>
36115
36116	In bidiff, don't emit a report when the binaries have the same ABI
36117	* tools/bidiff.cc (main): For differences of zero length, do not
36118	emit any report.
36119
361202014-08-29  Dodji Seketeli <dodji@redhat.com>
36121
36122	Take variables in account in corpus changes detection
36123	* src/abg-comparison.cc (corpus_diff::length): Take changes about
36124	variables into account.
36125
361262014-08-28  Dodji Seketeli <dodji@redhat.com>
36127
36128	During redundancy marking start with the current node as non redundant
36129	* src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE):  If the
36130	diff node is being traversed for the first time, mark it as being
36131	in the NOT_REDUNDANT_CATEGORY.  I don't know why I was doing this
36132	only for classes and basic types.  Update comments.
36133	* tests/data/test-diff-filter/test16-report.txt: New test input.
36134	* tests/data/test-diff-filter/test16-v0.cc: Source code of new
36135	test input.
36136	* tests/data/test-diff-filter/test16-v0.o: New test input.
36137	* tests/data/test-diff-filter/test16-v1.cc: Source code of new
36138	test input.
36139	* tests/data/test-diff-filter/test16-v1.o: New test input.
36140	* tests/data/test-diff-filter/test17-0-report.txt: Likewise.
36141	* tests/data/test-diff-filter/test17-1-report.txt: Likewise.
36142	* tests/data/test-diff-filter/test17-v0.cc: Source code of new
36143	test input.
36144	* tests/data/test-diff-filter/test17-v0.o: Likewise.
36145	* tests/data/test-diff-filter/test17-v1.cc: Source code of new
36146	test input.
36147	* tests/data/test-diff-filter/test17-v1.o: Likewise.
36148	* tests/Makefile.am: Add the new files to the source distribution.
36149	* tests/test-diff-filter.cc (in_out_spec): Run this test harness
36150	over the new test inputs.
36151
361522014-08-28  Dodji Seketeli <dodji@redhat.com>
36153
36154	Give anonymous struct the name "__anonymous_struct__"
36155	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Set
36156	the name of anonymous structs to '__anonymous_struct_'.
36157
361582014-08-28  Dodji Seketeli <dodji@redhat.com>
36159
36160	Style fix in the comparison engine
36161	* src/abg-comparison.cc (represent): Remove useless white space.
36162
361632014-08-27  Dodji Seketeli <dodji@redhat.com>
36164
36165	In bidiff, change --no-linkage-names to --no-linkage-name
36166	* tools/bidiff.cc (display_usage): Change--no-linkage-names -o
36167	--no-linkage-name in the help string.
36168	(parse_command_line): Adjust the command line parsing accordingly.
36169	* tests/test-diff-filter.cc (in_out_specs): Adjust.
36170
361712014-08-27  Dodji Seketeli <dodji@redhat.com>
36172
36173	In diff reports, show symbol version info in linkage names
36174	* src/abg-comparison.cc (represent, corpus_diff::report): show
36175	symbol version info in linkage name info.
36176
361772014-08-27  Dodji Seketeli <dodji@redhat.com>
36178
36179	In diff reports, fns & members add/remove at the top, changes later.
36180	* src/abg-comparison.cc (class_diff::report): Put virtual member
36181	function adding/removal/change first, then data members
36182	add/removal, then the rest (including data members changes).
36183	(corpus_diff::report): Put function adding/removal first, then
36184	function changes.  Likewise for variables.
36185	* tests/data/test-bidiff/test-struct0-report.txt: Adjust.
36186	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
36187	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
36188	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
36189	* tests/data/test-diff-dwarf/test12-report.txt: Adjust.
36190	* tests/data/test-diff-dwarf/test8-report.txt: Adjust.
36191	* tests/data/test-diff-dwarf/test9-report.txt: Adjust.
36192	* tests/data/test-diff-filter/test0-report.txt: Adjust.
36193	* tests/data/test-diff-filter/test01-report.txt: Adjust.
36194	* tests/data/test-diff-filter/test1-report.txt: Adjust.
36195	* tests/data/test-diff-filter/test13-report.txt: Adjust.
36196	* tests/data/test-diff-filter/test2-report.txt: Adjust.
36197	* tests/data/test-diff-filter/test3-report.txt: Adjust.
36198	* tests/data/test-diff-filter/test9-report.txt: Adjust.
36199
362002014-08-27  Dodji Seketeli <dodji@redhat.com>
36201
36202	Consider symbol versions' public-ness during comparison
36203	* src/abg-ir.cc (elf_symbol::operator==): Rather than comparing
36204	bindings, compare public-ness here.  That is, if two symbol
36205	versions' differ because one is GLOBAL and the other one is WEAK,
36206	they should still be considered equal, from an ABI standpoint.
36207
362082014-08-27  Dodji Seketeli <dodji@redhat.com>
36209
36210	Lookup proper names of symbol during determination of deleted/added decls
36211	* src/abg-comparison.cc
36212	({class,corpus}_diff::ensure_lookup_tables_populated):  Now that in the
36213	intermediate maps we store symbol *ids* rather than symbol names,
36214	make sure to really refer to symbol names for symbol lookups,
36215	rather than (wrongly) referring to symbol ids.
36216
362172014-08-26  Dodji Seketeli <dodji@redhat.com>
36218
36219	Cleanup bidiff help string some more
36220	* tools/bidiff.cc (display_usage): Add help strings for --harmless
36221	and --no-harmful.
36222	(main): Emit the help string to stdout, not stderr.
36223
362242014-08-26  Dodji Seketeli <dodji@redhat.com>
36225
36226	bidiff --no-harmless is no more
36227	* tools/bidiff.cc (display_usage): Remove the help string for the
36228	--no-harmless option that doesn't exist anymore, as it's on by
36229	default.
36230
362312014-08-26  Dodji Seketeli <dodji@redhat.com>
36232
36233	During comparison use symbol name + version as decl ID
36234	* include/abg-ir.h ({var,function}_decl::get_id): New member
36235	function declarations.
36236	* src/abg-ir.cc ({var,function}_decl::get_id): New member function
36237	definitions.
36238	* src/abg-comparison.cc
36239	(corpus_diff::priv::ensure_lookup_tables_populated): Use the
36240	::get_id() function to get an identifier for the function or
36241	variable.
36242	* src/abg-corpus.cc (symtab_build_visitor_type::build_id): Use the
36243	get_id of the function/variable.
36244
362452014-08-26  Dodji Seketeli <dodji@redhat.com>
36246
36247	Fix access to alternate die -> decl map
36248	* src/abg-dwarf-reader.cc (read_context::alternate_die_decl_map):
36249	Return the real alternate die decl map, rather than what we was
36250	doing previously b/c of a stupid copy/paste.  Oh well.
36251
362522014-08-25  Dodji Seketeli <dodji@redhat.com>
36253
36254	Take symbol versions in account when computing added/removed decls
36255	* include/abg-corpus.h
36256	(corpus::lookup_{function,variable}_symbol): Add an overload
36257	declaration that takes the version of the symbol to lookup.
36258	* src/abg-comparison.cc
36259	(corpus_diff::priv::ensure_lookup_tables_populated): So when looking
36260	up the corpora for symbols, take their versions in account.
36261	* src/abg-corpus.cc (corpus::lookup_{function,variable}_symbol):
36262	Add an overload definition that takes the version of the symbol to
36263	lookup.
36264	(symtab_build_visitor_type::build_id): New
36265	member functions.
36266	(corpus::priv::build_public_decl_table): Use the new member
36267	functions above.
36268	* src/abg-ir.cc (elf_symbol::version::operator==): Do not take the
36269	is_default flag in account when comparing two symbol versions.
36270	* libtest12-v{0,1}.so: New test input files.
36271	* libtest12-v{0,1}.c: Source code for the test input files.
36272	* test12-version-script: Version script to build the files above.
36273	* test12-report.txt: Test input file.
36274	* tests/Makefile.am: Add the new test input files above to the
36275	source distribution.
36276	* tests/test-diff-dwarf.cc (in_out_specs[]): Add an entry to this
36277	table for the new test input files.
36278
362792014-08-25  Dodji Seketeli <dodji@redhat.com>
36280
36281	Misc style cleanups
36282	* include/abg-corpus.h (corpus::lookup_function_symbol)
36283	(corpus::lookup_variable_symbol): Add the name of the function
36284	parameter in the declaration.
36285	* include/abg-ir.h (elf_symbol::version::version): Properly indent
36286	this constructor declaration.
36287	* src/abg-corpus.cc
36288	(symtab_build_visitor_type::symtab_build_visitor_type): Properly
36289	indent constructor parameters.
36290	* src/abg-ir.cc (function_decl::operator==): Fix typo in
36291	comments.
36292
362932014-08-25  Dodji Seketeli <dodji@redhat.com>
36294
36295	bidiff --harmful is not supported anymore
36296	* tools/bidiff.cc (display_usage): remove the '--harmful' line
36297	from the help string as this option is now activated by default.
36298	It's --harmless that exists now.
36299
363002014-08-22  Dodji Seketeli <dodji@redhat.com>
36301
36302	A builtin type name change is not harmless - fix that
36303	* include/abg-comp-filter.h (has_harmless_name_change): New
36304	function declaration.
36305	* include/abg-comparison.h
36306	(diff_category::DECL_NAME_CHANGE_CATEGORY): Renamed this into
36307	HARMLESS_DECL_NAME_CHANGE_CATEGORY.
36308	(diff_category::EVERYTHING_CATEGORY): Update.
36309	* include/abg-fwd.h (is_enum): New function declaration.
36310	(is_var_decl): Return the shared_ptr<var_decl> rather than a bool.
36311	(is_data_member): New overload that takes a shared_ptr<decl_base>.
36312	* src/abg-comp-filter.cc (decl_name_changed): Consider the
36313	qualified name here.
36314	(has_harmless_name_change): Define new function declaration.
36315	(harmless_filter::visit): Use the new has_harmless_name_change
36316	function.
36317	* src/abg-comparison.cc (represent)
36318	(report_name_size_and_alignment_changes, enum_diff::report)
36319	(typedef_diff::report, is_data_member): Use the new
36320	filtering::has_harmless_name_change function to simplify logic of
36321	emitting the name change related diff
36322	* tools/bidiff.cc (set_diff_context_from_opts): Adjust
36323	DECL_NAME_CHANGE_CATEGORY -> HARMLESS_DECL_NAME_CHANGE_CATEGORY.
36324	* src/abg-ir.cc (is_data_member, is_enum): New function definitions.
36325	(is_var_decl): Return the var_decl_sptr rather than just a bool.
36326	* tests/data/test-diff-filter/test13-report.txt: Adjust.
36327	* tests/data/test-diff-filter/test6-report.txt: Adjust.
36328
363292014-08-18  Ondrej Oprala <ooprala@redhat.com>
36330
36331	Support C and C++ array type.
36332	* include/abg-comparison.h (array_diff): Declare new class.
36333	(array_diff_sptr): Shared pointer to type array_diff.
36334	(compute_diff): Overload the function to take type
36335	array_diff_sptr as the first two arguments.
36336	* include/abg-fwd.h (array_type_def): Declare new class.
36337	(subrange_type): Likewise.
36338	(is_array_def): Declare new function.
36339	* include/abg-ir.h (array_type_def_sptr): Shared pointer
36340	to type array_type_def.
36341	(array_type_def): Declare new class.
36342	(ir_node_visitor::visit): Declare a new virtual function
36343	taking a pointer to type array_type_def as an argument.
36344	* src/abg-comparison.cc (compute_diff_for_types): Add
36345	try_to_diff for two instances of type array_type_def.
36346	(array_diff::priv): declare struct for holding private members
36347	of type array_diff.
36348	(array_diff::array_diff): Define constructor.
36349	(array_diff::{first,second}_array):Define new
36350	member functions.
36351	(array_diff::element_type_diff): Likewise.
36352	(array_diff::{length,report,traverse}): Likewise.
36353	(compute_diff): Define function overloaded in
36354	include/abg-comparison.h.
36355	* src/abg-dwarf-reader.cc (build_array_type): Define new
36356	function. Handle DW_TAG_array_type and DW_TAG_subrange type.
36357	(build_ir_node_from_die): Amend case DW_TAG_array_type with
36358	a call to build_array_type.
36359	* src/abg-hash.cc (array_type_def::hash): Declare new struct.
36360	(type_base::dynamic_hash::operator()): Attempt to dynamic_cast
36361	the argument to type array_type_def as well.
36362	(array_type_def::hash): Declare new struct.
36363	* src/abg-ir.cc (array_type_def::array_type_def): Define
36364	constructors.
36365	(array_type_def::priv): declare struct for holding private members
36366	of type array_type_def.
36367	(array_type_def::operator==(const decl_base&):
36368	Define new operator.
36369	(array_type_def::operator==(const type_base&):
36370	Likewise.
36371	(array_type_def::append_subrange{,s}): Define
36372	new functions.
36373	(array_type_def::{set,get}_size_in_bits): Likewise.
36374	(array_type_def::get_dimension_count): Likewise.
36375	(array_type_def::get_qualified_name): Likewise.
36376	(array_type_def::get_pretty_representation): Likewise.
36377	(array_type_def::get_subrange_representation): Likewise.
36378	(array_type_def::traverse): Likewise.
36379	(array_type_def::get_{element_type,location,subranges}): Likewise.
36380	(array_type_def::is_infinite): Likewise.
36381	(array_type_def::~array_type_def): Define destructor.
36382	(ir_node_visitor::visit): Define function, taking
36383	pointer to array_type_def as an argument.
36384	* src/abg-reader.cc (map_id_and_node): Check if node
36385	is an array.
36386	(is_array_def): Check if object is an array.
36387	(handle_element_node): Handle array_type_def as well.
36388	(build_subrange_type): Define new function.
36389	(build_array_type_def): Likewise.
36390	(build_type): Build type array_type_def as well.
36391	(build_type_composition): Likewise.
36392	(handle_array_type_def): Define new function.
36393	* src/abg-writer.cc: (write_decl): Output arrays
36394	as well.
36395	(write_member_type): Likewise.
36396	(write_type_composition): Likewise.
36397	(write_array_type_def): Define new function.
36398	* tests/data/test-diff-dwarf/test{10,11}-v{0,1}.{cc,o}: New test source
36399	files
36400	* tests/data/test-diff-dwarf/test{10,11}-report.txt: Likewise.
36401	* tests/data/test-diff-dwarf/test10-report.txt: New test input.
36402	* tests/data/test-read-dwarf/test7.cc: New test source
36403	file.
36404	* tests/data/test-read-dwarf/test7.so: New input binary
36405	to read.
36406	* tests/data/test-read-dwarf/test7.so.abi: New reference
36407	test to compare against.
36408	* tests/data/test-read-write/test25.xml: New test source
36409	file.
36410	* tests/test-diff-dwarf.cc: Adjust to launch the new test.
36411	* tests/test-read-dwarf.cc: Likewise.
36412	* tests/test-read-write.cc: Likewise.
36413	* test/Makefile.am: Add the new test inputs to the source
36414	distribution.
36415
364162014-08-19  Dodji Seketeli <dodji@redhat.com>
36417
36418	Ignore variables which type couldn't be read from DWARF
36419	* src/abg-dwarf-reader.cc (build_var_decl): Drop the var on the
36420	floor if its type couldn't be built.
36421
364222014-08-19  Dodji Seketeli <dodji@redhat.com>
36423
36424	Support TLS variables
36425	* src/abg-ir.cc (elf_symbol::is_variable): Accept TLS objects as
36426	variables too.
36427	* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr)
36428	(die_location_address): Add an output parameter to say if the
36429	resulting constant value is a tls address or not.
36430	(lookup_public_variable_symbol_from_elf): Use the proper
36431	elf_symbol::is_variable() method, rather than trying to figure out
36432	the low levels of what a variable is here.  Also, cleanup the
36433	condition.
36434	(read_context::load_symbol_maps): Consider symbols of type
36435	STT_TLS, when loading symbols for variables.  Also, to avoir
36436	symbols that are for versions, filter out symbols of type
36437	STT_OBJECT and with a SHN_ABS section index.
36438	(read_context::get_variable_address): If the address is for a tls
36439	variable, do no try to adjust the address to arrange for things
36440	like prelink.  As that doesn't seem to affect TLS variables.
36441	(dwarf_expr_eval_context::set_tls_addr): New data member.
36442	(dwarf_expr_eval_context::dwarf_expr_eval_context): Initialize it.
36443	(dwarf_expr_eval_context::set_tls_address): New accessors.
36444	(dwarf_expr_eval_context::op_manipulates_stack): Handle
36445	DW_OP_GNU_push_tls_address, a bit like DW_OP_form_tls_address, but
36446	then, its result is a constant.  Set the
36447	dwarf_expr_eval_context::set_tls_addr flag when these two OPs are
36448	run.
36449	(die_member_offset): Adjust to the new signature of
36450	eval_last_constant_dwarf_sub_expr.
36451	* tests/data/test-diff-dwarf/libtest9-v0.so: New test input.
36452	* tests/data/test-diff-dwarf/libtest9-v1.so: Likewise.
36453	* tests/data/test-diff-dwarf/test9-report.txt: Likewise
36454	* tests/data/test-diff-dwarf/test9-v0.cc: Source code for the
36455	first input.
36456	* tests/data/test-diff-dwarf/test9-v1.cc: Source code for the
36457	second input.
36458	* tests/test-diff-dwarf.cc: Run this harness on the two new inputs
36459	above.
36460	* tests/Makefile.am: Add the new inputs to the source distribution.
36461
364622014-08-18  Dodji Seketeli <dodji@redhat.com>
36463
36464	Update copyright for abg-dwarf-reader.cc
36465	* src/abg-dwarf-reader.cc: Update copyright year.
36466
364672014-08-18  Dodji Seketeli <dodji@redhat.com>
36468
36469	Make the link to the alt debug info file relative
36470	* tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
36471	Make this link be relative.
36472
364732014-08-15  Dodji Seketeli <dodji@redhat.com>
36474
36475	White space fix
36476	* tests/test-lookup-syms.cc: Remove useless white space.
36477
364782014-08-15  Dodji Seketeli <dodji@redhat.com>
36479
36480	Update copyright notice
36481	* tests/test-lookup-syms.cc: Update year in copyright notice.
36482	* tools/bidw.cc: Likewise.
36483
364842014-08-15  Dodji Seketeli <dodji@redhat.com>
36485
36486	Support alternate debug info sections
36487	* include/abg-dwarf-reader.h (class read_context)
36488	(typedef read_context_sptr, create_read_context)
36489	(has_alt_debug_info): Declare these.
36490	(read_corpus_from_elf): Declare new overload.
36491	* src/abg-dwarf-reader.cc (find_alt_debug_info)
36492	(is_die_attribute_resolved_through_gnu_ref_alt)
36493	(build_primary_die_parent_relations_under)
36494	(build_alternate_die_parent_relations_under):
36495	Define new static functions.
36496	(read_context::{alt_dwarf_,
36497	alt_debug_info_path_, alternate_die_decl_map_,
36498	alternate_die_parent_map_}): New data members.
36499	(read_context::{alt_dwarf, alt_debug_info_path,
36500	alternate_die_decl_map, associate_die_to_decl_primary,
36501	associate_die_to_decl_alternate, associate_die_to_decl,
36502	lookup_decl_from_die_offset_primary,
36503	lookup_decl_from_die_offset_alternate,
36504	lookup_decl_from_die_offset, alternate_die_parent_map}): New
36505	member functions.
36506	(read_context::load_debug_info): Painfully Get a handle on the
36507	alternate debug info section too.  We shouldn't have to do all
36508	this work; we could use the new dwarf_getalt() function from
36509	libdw, but we cannot as we want to support supports that predate
36510	that api.  When a version of elfutils gets released with that api
36511	though, we should conditionally use that instead.
36512	(build_ir_node_from_die, get_parent_die, get_scope_for_die)
36513	(build_namespace_decl_and_add_to_ir)
36514	(build_class_type_and_add_to_ir, build_qualified_type)
36515	(build_pointer_type_def, build_reference_type, build_typedef_type)
36516	(build_var_decl, build_function_decl): Take a new parameter that
36517	tells if the input DIE is from alternate debug info.  Adjust their
36518	code accordingly.
36519	(die_die_attribute): Take a new output parameter that tells if the
36520	resolved DIE is from alternate debug info.  Also take a new
36521	parameter that tells if the input DIE is from alternate debug info
36522	sections.
36523	(build_die_parent_relations_under): Take the DIE -> parent map to
36524	act upon.  Also, add a new overload that takes a flag saying if
36525	the DIE is from alternate debug info or not, and act upon that.
36526	(build_die_parent_maps): Renamed build_die_parent_map into this
36527	and make it build DIE -> parent DIE relationship for the alternate
36528	debug info file as well.
36529	(find_last_import_unit_point_before_die, ): Adjust to use the
36530	information about if the relevant DIEs are in alternate debug info
36531	or not.
36532	(build_translation_unit_and_add_to_ir): Clear the alternate DIE ->
36533	decl map, that is per TU just as the primary DIE -> decl map.
36534	Adjust to use the information about if the relevant DIEs are in
36535	alternate debug info or not.
36536	(read_debug_info_into_corpus): Build the two DIE -> DIE parent
36537	maps (one for the primary debug info and one for the alternate
36538	debug info).
36539	(create_read_context, has_alt_debug_info): Define new public entry
36540	points.
36541	(read_corpus_from_elf): New entry point overload that takes a
36542	read_context.
36543	* tools/bidw.cc (options::{check_alt_debug_info_path,
36544	show_base_name_alt_debug_info_path}): New data members.
36545	(display_usage): Update for the two new options
36546	--check-alternate-debug-info and
36547	check-alternate-debug-info-base-name.
36548	(parse_command_line): Parse the two options above.
36549	(main) Handle the two new options above.
36550	* tests/Makefile.am: Build the new runtestaltdwarf test.  Add the
36551	new data/test-alt-dwarf-file/* files to the build system.
36552	* tests/test-alt-dwarf-file.cc: New test driver.
36553	* tests/data/test-alt-dwarf-file/test0-common.cc: New test input
36554	files.
36555	* tests/data/test-alt-dwarf-file/libtest0-common.so: Likewise.
36556	* tests/data/test-alt-dwarf-file/test0.cc: Likewise.
36557	* tests/data/test-alt-dwarf-file/libtest0.so: Likewise.
36558	* tests/data/test-alt-dwarf-file/test0.h: Likewise.
36559	* tests/data/test-alt-dwarf-file/test0-common-dwz.debug: Likewise.
36560	* tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
36561	Likewise.
36562	* tests/data/test-alt-dwarf-file/test0-debug-dir/test0-common-dwz.debug:
36563	Likewise.
36564	* tests/data/test-read-dwarf/test1.abi: Adjust. bidw doesn't emit
36565	an abstract constructor/destructor anymore. It emits just the
36566	functions matching the cdtor symbols found in the binary.
36567	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
36568
365692014-07-26  Dodji Seketeli <dodji@redhat.com>
36570
36571	Better handle corner cases of void* DWARF parsing
36572	* src/abg-dwarf-reader.cc (build_pointer_type_def):  Better
36573	support cases where the underlying type of the pointer is not
36574	know.  In that case, the pointer should not be created.
36575
365762014-07-20  Dodji Seketeli <dodji@redhat.com>
36577
36578	Support finding symbols with bias wrt DWARF references
36579	* src/abg-dwarf-reader.cc (get_binary_load_address): New function
36580	definition.
36581	(read_context::elf_handle): Add comment.
36582	(read_context::{dwarf_elf_handle, dwarf_is_splitted,
36583	maybe_adjust_address_for_exec_or_dyn}): New method definitions.
36584	(maybe_adjust_fn_sym_address)
36585	(maybe_adjust_var_sym_address): Move these so they become members
36586	of read_context.  Also, For shared libraries and executable (that
36587	could have been e.g prelinked), consider their loading address
36588	when trying to find which symbol resides at a given place in
36589	memory.
36590	(read_context::{get_function_address, get_variable_address):
36591	Adjust.
36592	(build_translation_unit_and_add_to_ir): Fix comment.
36593
365942014-07-20  Dodji Seketeli <dodji@redhat.com>
36595
36596	Reset the scope of void_type_decl for each new translation unit
36597	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
36598	Clear the void_type_decl on new translation units.
36599
366002014-07-18  Dodji Seketeli <dodji@redhat.com>
36601
36602	Update INSTALL file
36603	* INSTALL: Adjust the copyright year information because autotools
36604	2.69 did.
36605
366062014-07-18  Dodji Seketeli <dodji@redhat.com>
36607
36608	Correctly write the name of a const reference type
36609	* src/abg-dwarf-reader.cc (maybe_strip_qualification): Define new
36610	function.
36611	(build_ir_node_from_die): Use the maybe_strip_qualification when
36612	building a qualified type.
36613	* src/abg-ir.cc (qualified_type_def::build_name): Fix the
36614	representation of the name of a reference that is const.
36615	* tests/data/test-read-dwarf/test1.abi: Adjust.
36616	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
36617	* tests/data/test-diff-dwarf/test1-report.txt: Likewise.
36618	* tests/data/test-diff-dwarf/test6-report.txt: Likewise.
36619	* tests/data/test-diff-dwarf/test7-report.txt: Likewise.
36620	* tests/data/test-diff-dwarf/test8-report.txt: Likewise.
36621	* tests/data/test-diff-filter/test0-report.txt: Likewise.
36622	* tests/data/test-diff-filter/test01-report.txt: Likewise.
36623	* tests/data/test-diff-filter/test2-report.txt: Likewise.
36624	* tests/data/test-diff-filter/test3-report.txt: Likewise.
36625	* tests/data/test-diff-filter/test9-report.txt: Likewise.
36626	* tests/data/test-diff-filter/test10-report.txt: Likewise.
36627	* tests/data/test-diff-filter/test13-report.txt: Likewise.
36628	* tests/data/test-diff-filter/test14-0-report.txt: Likewise.
36629	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.
36630
366312014-07-01  Sinny Kumari <skumari@redhat.com>
36632
36633	Consider symbols with STB_GNU_UNIQUE binding as public
36634	* src/abg-ir.cc (is_public): Change in function to consider
36635	symbols with STB_GNU_UNIQUE binding as public
36636	* tests/data/test-read-dwarf/test6.cc: Test file to generate
36637	STB_GNU_UNIQUE binding symbols
36638	* tests/data/test-read-dwarf/test6.so: Test shared library having
36639	STB_GNU_UNIQUE binding symbols
36640	* tests/data/test-read-dwarf/test6.so.abi: XML file containing
36641	dwarf information from test6.so
36642	* tests/test-read-dwarf.cc (in_out_specs): Add the new test above
36643	* tests/Makefile.am: Add tests/data/test-read-dwarf/test6.cc,
36644	tests/data/test-read-dwarf/test6.so and
36645	tests/data/test-read-dwarf/test6.so.abi to the distribution
36646
366472014-07-01  Dodji Seketeli <dodji@redhat.com>
36648
36649	Add comment to test-read-write.cc
36650	* tests/test-read-write.cc: Update copyright notice and add a
36651	meaningful comment for the file.
36652
366532014-06-23  Dodji Seketeli <dodji@redhat.com>
36654
36655	Support reading void* type from DWARF
36656	* include/abg-ir.h (type_decl::get_void_type_decl): Declare new
36657	static method.
36658	* src/abg-ir.cc (type_decl::get_void_type_decl): Define it.
36659	* src/abg-dwarf-reader.cc (build_ir_node_for_void_type): Define
36660	new static function.
36661	(build_pointer_type_def): Support void* type nodes here.
36662	* tests/data/test-read-dwarf/test5.cc: Source code for new test
36663	input.
36664	* tests/data/test-read-dwarf/test5.o: New test input.
36665	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
36666	* tests/Makefile.am: Add the above to the source distribution.
36667
366682014-06-23  Dodji Seketeli <dodji@redhat.com>
36669
36670	Update a comment in abg-dwarf-reader.cc
36671	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Update a
36672	comment here.
36673
366742014-06-23  Mark Wielaard <mjw@redhat.com>
36675
36676	Handle C99 restrict qualifier and DWARFv3 DW_TAG_restrict_type.
36677	* src/abg-dwarf-reader.cc (build_qualified_type): Handle
36678	DW_TAG_restrict_type by adding CV_RESTRICT.
36679	(build_ir_node_from_die): Call build_qualified_type for
36680	DW_TAG_restrict_type.
36681	* src/abg-reader.cc (build_qualified_type_decl): Handle
36682	"restrict" attribute by adding CV_RESTRICT.
36683	* src/abg-writer.cc (write_qualified_type_def): Output
36684	"restrict" attribute for CV_RESTRICT.
36685	* tests/data/test-read-dwarf/test4.c: New test file.
36686	* tests/data/test-read-dwarf/test4.so: Likewise.
36687	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
36688	* tests/data/test-read-write/test24.xml: Likewise.
36689	* tests/test-read-dwarf.cc (in_out_specs): Add test4.
36690	* tests/test-read-write.cc (in_out_specs): Add test24.xml.
36691
366922014-06-23  Dodji Seketeli <dodji@seketeli.org>
36693
36694	Add subdir-objects automake option where it is needed
36695	* src/Makefile.am: Add the subdir-object automake option here.
36696	Do not specify absolute paths for the input files as Automake now
36697	takes care of that just fine.
36698	* tests/Makefile.am: Likewise.
36699	* tools/Makefile.am: Likewise.
36700
367012014-06-23  Dodji Seketeli <dodji@seketeli.org>
36702
36703	Remove autotools artifacts from the repository
36704	* config.guess: Remove from revision control system.
36705	* config.sub: Likewise.
36706	* depcomp: Likewise.
36707	* m4/libtool.m4: Likewise.
36708	* missing: Likewise.
36709
367102014-06-23  Dodji Seketeli <dodji@redhat.com>
36711
36712	Avoid reporting diff nodes that have already been reported
36713	* include/abg-comp-filter.h (class harmful_filter): Update
36714	comment.
36715	(class redundant_filter): Declare new filter.
36716	* include/abg-comparison.h (enum
36717	diff_category::NOT_REDUNDANT_CATEGORY): New category.  Update the
36718	values of the other enumerators.
36719	(diff_context::{add_diff, diff_has_been_traversed}): New overloads.
36720	(diff_context::{categorizing_redundancy, show_redundant_changes}):
36721	Declare new methods.
36722	(diff_context::remove_from_category): Define new inline method.
36723	* src/abg-comparison.cc (noop_deleter::operator()): Constify the
36724	parameter.
36725	(CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE)
36726	(UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE): New macros.
36727	(TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
36728	(TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY)
36729	(TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): Use the new
36730	CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE and
36731	UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE macros above.
36732	(ENSURE_DIFF_NODE_TRAVERSED_ONCE)
36733	(ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): If the (type_decl or class)
36734	node hasn't been yet traversed, mark it as non-redundant.
36735	(diff_context::priv::categorizing_redundancy): New member.
36736	(diff_context::priv::priv): Initialize it.
36737	(diff_context::{add_diff, diff_has_been_traversed): Define new
36738	overloads.
36739	(diff_context::mark_diff_as_traversed): Intern a diff node that is
36740	marked as being traversed.
36741	(diff_context::{categorizing_redundancy, show_redundant_changes}):
36742	Define new methods.
36743	(diff::is_filtered_out): A redundant function or top-level
36744	variable is considered filtered-out.  Otherwise, the new
36745	NOT_REDUNDANT_CATEGORY doesn't play any role when comparing
36746	allowed categories with the set of categories a diff node belongs
36747	to.
36748	(corpus::priv::categorize_redundant_changed_sub_nodes): Define
36749	new member function.
36750	(corpus_diff::priv::apply_filters_and_compute_diff_stats): Change
36751	this to first walk the changed functions and variables to apply
36752	filters, then categorize redundant changed functions, and then
36753	walk the changed functions and variables again to count
36754	filtered-out diff nodes.
36755	(filtering::redundant_filter::visit): Define new member function.
36756	* tools/bidiff.cc (options::show_redundant_changes): New data
36757	member.
36758	(options::options): Initialize it.
36759	(display_usage): Add help string for the --redundant command line
36760	option.
36761	(parse_command_line): Add support for the --redundant command line
36762	option.
36763	(set_diff_context_from_opts): Take the --redundant command line
36764	option in account.
36765	* tests/test-diff-filter.cc: Update this to add new test inputs.
36766	* tests/data/test-diff-filter/test14-0-report.txt: New test input.
36767	* tests/data/test-diff-filter/test14-1-report.txt: Likewise.
36768	* tests/data/test-diff-filter/test14-v0.cc: Likewise.
36769	* tests/data/test-diff-filter/test14-v0.o: Likewise.
36770	* tests/data/test-diff-filter/test14-v1.cc: Likewise.
36771	* tests/data/test-diff-filter/test14-v1.o: Likewise.
36772	* tests/data/test-diff-filter/test15-0-report.txt: Likewise.
36773	* tests/data/test-diff-filter/test15-1-report.txt: Likewise.
36774	* tests/data/test-diff-filter/test15-v0.cc: Likewise.
36775	* tests/data/test-diff-filter/test15-v0.o: Likewise.
36776	* tests/data/test-diff-filter/test15-v1.cc: Likewise.
36777	* tests/data/test-diff-filter/test15-v1.o: Likewise.
36778	* tests/Makefile.am: Add the above to the build system.
36779
367802014-06-23  Dodji Seketeli <dodji@redhat.com>
36781
36782	A name that couldn't be demangled remains the same
36783	* src/abg-ir.cc (demangle_cplus_mangled_name): When the demangler
36784	fails to demangle a name, just return the input name as-is.
36785
367862014-06-23  Dodji Seketeli <dodji@redhat.com>
36787
36788	Update copyright notice for a bunch of files
36789	* include/abg-comp-filter.h: Update copyright notice.
36790	* include/abg-comparison.h: Likewise.
36791	* src/abg-comparison.cc: Likewise.
36792	* src/abg-ir.cc: Likewise.
36793	* tools/bidiff.cc: Likewise.
36794	* tests/test-diff-filter.cc: Likewise.
36795
367962014-06-19  Sinny Kumari <skumari@redhat.com>
36797
36798	Keep symbol's multiple aliases within single attribute separated by comma
36799	* src/abg-writer.cc (write_elf_symbol_aliases): Changing function
36800	to keep multiple symbol aliases within one alias attribute
36801	* src/abg-reader.cc (build_elf_symbol_db): Changing function to read
36802	symbol's alias attribute and split if multiple alias exist with comma(,)
36803	asi a delimiter and add all aliases to main symbol
36804	* tests/data/test-read-dwarf/test3.c: Test file to generate multiple aliases
36805	* tests/data/test-read-dwarf/test3.so: Test shared library having multiple
36806	aliases of a symbol
36807	* tests/data/test-read-dwarf/test3.so.abi: XML file containing dwarf
36808	information from test3.so
36809	* tests/test-read-dwarf.cc (in_out_specs): Add the new test above
36810	* tests/Makefile.am: Add tests/data/test-read-dwarf/test3.c,
36811	tests/data/test-read-dwarf/test3.so and tests/data/test-read-dwarf/test3.so.abi
36812	to the distribution
36813
368142014-06-18  Mark Wielaard <mjw@redhat.com>
36815
36816	DW_TAG_mutable_type doesn't exist.
36817	* src/abg-dwarf-reader.cc (is_type_tag): Remove DW_TAG_mutable_type.
36818	(build_ir_node_from_die): Likewise.
36819
368202014-06-05  Dodji Seketeli <dodji@redhat.com>
36821
36822	Look at first parm type and artificial-ness to detect static-ness
36823	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): To
36824	tell if a member function is static, look if the first parm is a
36825	pointer to the type of the enclosing class, and if it's
36826	artificial.  Don't bother trying to be smart by looking at the
36827	non-presence of DW_AT_object_pointer b/c that attribute wasn't
36828	emitted by GCC 4_4.
36829
368302014-06-04  Dodji Seketeli <dodji@redhat.com>
36831
36832	Harden debug info path management & better error reporting
36833	* include/abg-dwarf-reader.h (enum status): New enum.
36834	(read_corpus_from_elf): Return an instance of status above, and
36835	return the corpus by parameter.
36836	* src/abg-dwarf-reader.cc (create_default_dwfl): Add a comment
36837	about elfutils wanting the Dwfl_Callbacks::debuginfo_path to be an
36838	absolute path.
36839	(read_corpus_from_elf): Return an instance of status above, and
36840	return the corpus by parameter.
36841	* tools/abg-tools-utils.h (make_path_absolute): Declare new function.
36842	* tools/abg-tools-utils.cc (make_path_absolute): New
36843	implementation.
36844	* tools/bidiff.cc (options::di_root_path[12]): Make these be
36845	shared pointers.
36846	(parse_command_line): ensure the debug info root paths are
36847	absolute.
36848	(main): Adjust.  Give meaningful errors when the debug info or
36849	symbol files couldn't be read.
36850	* tools/bidw.cc (options::di_root_path): Make this be a shared
36851	pointer.
36852	(parse_command_line): Ensure the debug info root path is absolute.
36853	(main): Adjust.  Give meaningful errors when the debug info or
36854	symbol files couldn't be read.
36855	* tools/bilint.cc (options::di_root_path): Make this be a shared
36856	pointer.
36857	(parse_command_line): Ensure the debug info root path is absolute.
36858	(main): Adjust.  Give meaningful errors when the debug info or
36859	symbol file couldn't be read.
36860	* tests/test-diff-dwarf.cc (main): Adjust.
36861	* tests/test-read-dwarf.cc (main): Likewise.
36862
368632014-06-02  Dodji Seketeli <dodji@redhat.com>
36864
36865	Do not choke on AR archives
36866	* tools/abg-tools-utils.h (file_type::FILE_TYPE_AR): New enumerator.
36867	* tools/abg-tools-utils.cc (guess_file_type): Recognize AR archive
36868	files.
36869	* tools/bidiff.cc (main): Support AR archives.
36870	* tools/bidw.cc (main): Likewise.
36871	* tools/bilint.cc (main): Likewise.
36872
368732014-05-30  Dodji Seketeli <dodji@redhat.com>
36874
36875	Honor linkage name showing when displaying added/removed member functions
36876	* src/abg-comparison.cc (represent): Take a diff_context.  If
36877	instructed to show linkage names, show the linkage name of the
36878	member function.
36879	(class_diff::report): Adjust for the new signature of represent().
36880
368812014-05-30  Dodji Seketeli <dodji@redhat.com>
36882
36883	Make bidiff filter output and display symbol names by default
36884	* tools/bidiff.cc (options::options): Initialize
36885	options::show_linkage_names to true and
36886	options::show_harmful_changes to false.
36887	(parse_command_line): Change --linkage-names into
36888	--no-linkage-names as the linkage names are now displayed by
36889	default.  Change --no-harmless into --harmless as harmless changes
36890	are now filtered by default.
36891	(display_usage): Update help string for the --linkage-names ->
36892	--no-linkage-names and --no-harmful -> --harmful change.
36893	* tests/test-diff-filter.cc: Adjust.
36894
368952014-05-29  Dodji Seketeli <dodji@redhat.com>
36896
36897	Ensure added/removed member functions have their symbols added/removed
36898	* include/abg-comparison.h (diff_context::{set_corpora,
36899	get_first_corpus, get_second_corpus}): Declare new member
36900	functions.
36901	* src/abg-comparison.cc (diff_context::{set_corpora,
36902	get_first_corpus, get_second_corpus}): Define them.
36903	(compute_diff): In the overload for corpus_sptr stick the corpora
36904	being compared, into the diff context.
36905	(class_diff::ensure_lookup_tables_populated): If a member function
36906	is allegedly removed, check that its underlying symbol is removed
36907	from the corpus as well.  Otherwise, consider that the member
36908	function hasn't been removed.  Likewise, if a member function is
36909	allegedly added, check that its underlying symbol has been added
36910	to the corpus as well.  Otherwise, consider that the member
36911	function hasn't been added.  The symbols can now be accessed
36912	through the two corpora that are now present in the diff context.
36913
369142014-05-29  Dodji Seketeli <dodji@redhat.com>
36915
36916	Fix scope for DIEs with specification or abstract_origin attributes
36917	* src/abg-dwarf-reader.cc (get_scope_for_die): If the DIE has a
36918	DW_AT_specification or DW_AT_abstract_origin attribute, get the
36919	scope of the referred-to DIE.
36920	(build_ir_node_from_die): For a variable DIE that has a
36921	DW_AT_{specification,abstract_origin} attribute, do not add the
36922	built variable IR node to its scope because it is already in a
36923	scope.  It's in a scope because that built variable is for the DIE
36924	that is referred-to by the DW_AT_{specification,abstract_origin}
36925	attribute.  Likewise for member functions.  Also, now,
36926	get_scope_for_die can return a class for a function DIE because
36927	get_scope_for_die now returns the *logical* scope of the DIE; that
36928	is, it follows DW_AT_{specification,abstract_origin} attributes.
36929	* tests/data/test-read-dwarf/test1.abi: Adjust.
36930
369312014-05-28  Dodji Seketeli <dodji@redhat.com>
36932
36933	Add a symbol database to the ABI Corpus & support symbol aliases
36934	* include/abg-corpus.h (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}):
36935	Declare new accessors.
36936	(corpus::lookup_{variable,function}_symbol): Declare new member
36937	functions.
36938	* src/abg-corpus.cc (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}):
36939	Define new accessors.
36940	(corpus::lookup_{variable,function}_symbol): Define new member
36941	functions.
36942	* include/abg-ir.h (string_elf_symbol_sptr_map_type)
36943	(string_elf_symbol_sptr_map_sptr, elf_symbols)
36944	(string_elf_symbols_map_type, string_elf_symbols_map_sptr): New
36945	convenience typedefs.
36946	(elf_symbol::{get_main_symbol, is_main_symbol, get_next_alias,
36947	has_aliases, add_alias, get_id_string,
36948	get_name_and_version_from_id, operator=}): Declare new member
36949	functions.
36950	* src/abg-ir.cc (elf_symbol::{get_main_symbol, is_main_symbol,
36951	get_next_alias, has_aliases, add_alias, get_id_string,
36952	get_name_and_version_from_id, operator=}): Define new member
36953	functions.
36954	* include/abg-reader.h (read_corpus_from_file): Take a shared
36955	pointer to corpus.
36956	* src/abg-reader.cc (read_context::{g,s}et_corpus): Define these.
36957	(build_elf_symbol_db, build_elf_symbol_from_reference)
36958	(read_symbol_db_from_input): Define new functions.
36959	(read_corpus_from_input): Adjust.  Make it read symbol databases.
36960	(build_elf_symbol): Harden this.
36961	(build_{var,function}_decl): Read the symbol reference.  Do not
36962	read the local symbol serialization anymore.
36963	(read_corpus_from_archive): Adjust.
36964	(read_corpus_from_file): Take a reference to a shared pointer to
36965	corpus, rather than a reference to the corpus.
36966	(read_corpus_from_native_xml): Only keep the overload that returns
36967	a corpus.  Set the current context with the corpus.
36968	* src/abg-dwarf-reader.cc (addr_elf_symbol_sptr_map_type)
36969	(addr_elf_symbol_sptr_map_sptr): New convenience typedefs.
36970	(read_context::{fun_sym_addr_sym_index_map_,
36971	var_sym_addr_sym_index_map_): Remove.
36972	(read_context::{fun,var}_addr_sym_map_): New.  Replace the above
36973	that got removed.
36974	(read_context::{var,fun}_syms_): New.
36975	(read_context::lookup_elf_{fn,var}_symbol_from_address): Adjust.
36976	(read_context::{fun,var}_addr_sym_map{_sptr}): New.
36977	(read_context::{fun,var}_syms{_sptr}): New.
36978	(read_context::load_symbol_maps): Replace
36979	read_context::load_symbol_addr_to_index_maps.  Adjust to load all
36980	the new maps.
36981	(read_context::maybe_load_symbol_maps): New.
36982	(read_debug_info_into_corpus): Renamed build_corpus into this.
36983	Update to load symbol maps and set it to the corpus.
36984	* src/abg-writer.cc (write_context::get_fun_symbol_map): New
36985	accessor.
36986	(write_elf_symbol_aliases, write_elf_symbol_reference)
36987	(write_elf_symbols_table): Define new static functions.
36988	(write_var_decl): Write the reference to the underlying symbol of
36989	the variable.  Do not write the full symbol here anymore.
36990	(write_function_decl):  Likewise, write the reference to the
36991	underlying symbol of the function.  Do not write the full symbol
36992	here anymore.
36993	(write_corpus_to_native_xml): Write the symbol databases at the
36994	beginning of the corpus document.
36995	* src/abg-comparison.cc
36996	(corpus_diff::priv::ensure_lookup_tables_populated): Now that the
36997	corpus has symbols, check if a the symbol of an allegedly deleted
36998	function (resp. variable) is deleted; if not, then do not report
36999	the function (resp. variable) as deleted.  Similarly, check if the
37000	symbol of an allegedly added function (resp. variable) is added.
37001	if not, the do not report the function (resp. variable) as added.
37002	* tests/test-write-read-archive.cc (main): Adjust.
37003	* tools/biar.cc (extract_tus_from_archive): Likewise.
37004	* tests/data/test-diff-filter/test9-report.txt: Adjust.
37005	* tests/data/test-read-dwarf/test0.abi: Likewise.
37006	* tests/data/test-read-dwarf/test1.abi: Likewise.
37007	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
37008
370092014-05-21  Dodji Seketeli <dodji@redhat.com>
37010
37011	Rename 'symbol' in fn names to 'public decl' in abg-corpus.{cc,h}
37012	* src/abg-corpus.cc (lots of places): Rename references to
37013	'symbol' in function & variable names to 'public_decl'.
37014
370152014-05-22  Dodji Seketeli <dodji@redhat.com>
37016
37017	Support debug info files being outside the expected system directories
37018	* include/abg-dwarf-reader.h (read_corpus_from_elf): Take a
37019	debug_info_root_path parameter.
37020	src/abg-dwarf-reader.cc (create_default_dwfl): Take a
37021	debug_info_root_path.  Use that to initialize the Dwfl_Callbacks
37022	structure used by dwfl_begin.
37023	(create_default_dwfl_sptr, read_corpus_from_elf): Likewise, Take a
37024	debug_info_root_path parameter.
37025	* tests/test-diff-dwarf.cc (main): Adjust.
37026	* tests/test-read-dwarf.cc (main): Likewise.
37027	* tools/bidiff.cc (options::dir_root_path[12]): New member.
37028	(options::options): Initialize it.
37029	(display_usage): Add help string for the --debug-info-dir[12]
37030	options.
37031	(parse_command_line): Handle the new --debug-info-dir[12] options.
37032	(main): Pass the debug info directories to read_corpus_from_elf.
37033	* bidw.cc (options::::di_root_path): New member.
37034	(options::options): Initialize it.
37035	(display_usage): Add help string for the new --debug-info-dir
37036	option.
37037	(parse_command_line): Handle the new --debug-info-dir.
37038	(main): Pass the debug info root path to read_corpus_from_elf.
37039	* tools/bilint.cc (options::di_root_path): New member.
37040	(options::options): Initialize it.
37041	(display_usage): Add help string for the new --debug-info-dir.
37042	(parse_command_line): Handle --debug-info-dir command line option.
37043	(main): Pass the debug info root path to read_corpus_from_elf.
37044
370452014-05-21  Dodji Seketeli <dodji@redhat.com>
37046
37047	Fix detection of destructors
37048	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Simply
37049	detect that the destructor starts with a '~'.
37050
370512014-05-21  Dodji Seketeli <dodji@redhat.com>
37052
37053	Add clone in the scope of the cloned decl they logically belong to
37054	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Do not try to
37055	add the cloned function/variable to the current scope because
37056	cloning should have added the decl into the scope of the cloned
37057	target.
37058	* src/abg-ir.cc ({var,function}_decl::clone): Insert the clone
37059	decl into the scope of the cloned decl.  My understanding is that
37060	it's where they belong.
37061	* tests/data/test-read-dwarf/test1.abi: Update this to incorporate
37062	all the abstract constructors/destructors *and* their clones into
37063	the classes where they belong.
37064	* tests/data/test-read-dwarf/test1.abi: Adjust for the abstract
37065	cdtor being added to the class, as well as their cloned concrete
37066	instances.
37067	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
37068
370692014-05-20  Dodji Seketeli <dodji@redhat.com>
37070
37071	Support decl cloning when seeing DW_AT_abstract_origin
37072	* include/abg-ir.h ({var,function}_decl::clone): New method.
37073	* src/abg-dwarf-reader.cc (die_die_attribute): Add a flag to avoid
37074	looking through DW_AT_abstract_origin attribute here.
37075	(build_function_decl): Set the linkage name from
37076	DW_AT_linkage_name if it's not set yet.
37077	(build_ir_node_from_die): For DW_TAG_{variable,subprogram}, when
37078	we see DW_AT_abstract_origin, clone the decl they refer to.
37079	Also, avoid dropping the DIE on the floor just because it doesn't
37080	have die_is_artificial here.
37081	* src/abg-ir.cc ({var,function}_decl::clone): Implement this.
37082
370832014-05-19  Dodji Seketeli <dodji@redhat.com>
37084
37085	Don't share types across TUs when DW_TAG_partial_unit are involved
37086	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
37087	Clear the part of the context that needs to be per TU.
37088	(build_ir_node_from_die): Assert that this should not be called
37089	for partial and imported unit because for now our practical
37090	assumption is that DIEs under partial unit are lazily read only
37091	when referenced by DIEs that are under DW_TAG_compile_unit.
37092	* tests/Makefile.am: Add the new test files to the build system.
37093	* tests/data/test-read-dwarf/test2.so.abi: Fix the reference
37094	output here to avoid sharing types across TUs, making the output
37095	valid for bilint.
37096
370972014-05-19  Dodji Seketeli <dodji@redhat.com>
37098
37099	Initial support for DW_TAG_partial_unit
37100	* src/abg-dwarf-reader.cc (read_context::cur_tu_die_): New member.
37101	(read_context::read_context): Initialize the new member.
37102	(read_context::cur_tu_die): New accessors.
37103	(find_last_import_unit_point_before_die): New static function.
37104	(get_parent_die): Take a logical current die offset parameter.  If
37105	the die we want the parent for is a partial unit, then find the
37106	last DW_TAG_imported_unit that imports that partial unit before
37107	the logical current die and return the parent of that
37108	DW_TAG_imported_unit die.
37109	(get_scope_for_die): Take a logical current die offset parameter.
37110	Adjust.
37111	(build_translation_unit_and_add_to_ir): Set/unset the current
37112	translation unit DIE in the context.  Adjust.
37113	(build_namespace_decl_and_add_to_ir)
37114	(build_class_type_and_add_to_ir, build_qualified_type)
37115	(build_pointer_type_def, build_reference_type, build_typedef_type)
37116	(build_var_decl, build_function_decl, build_ir_node_from_die):
37117	Take a logical current die offset parameter.  Adjust.
37118	(build_corpus): Accept that we can have DIE that are not
37119	DW_TAG_compile_unit at the top level, because, well, we can now
37120	have DW_TAG_partial_unit too.
37121	* tests/data/test-read-dwarf/test2-{0,1}.cc: New test source
37122	files.
37123	* tests/data/test-read-dwarf/test2.h: Likewise.
37124	* tests/data/test-read-dwarf/test2.so: New input binary to read.
37125	* tests/data/test-read-dwarf/test2.so.abi: New reference test to
37126	compare against.
37127	* tests/test-read-dwarf.cc: Adjust to launch the new test.
37128
371292014-05-14  Dodji Seketeli <dodji@redhat.com>
37130
37131	Re-build a test input file with debug info
37132	* tests/data/test-lookup-syms/test1.so: Rebuild this with debug
37133	info.
37134
371352014-05-14  Dodji Seketeli <dodji@redhat.com>
37136
37137	Serialize and de-serialize elf symbols for var & function decls
37138	* abg-ir.h (string_to_elf_symbol_type, string_to_elf_symbol_binding):
37139	Declare new entry points.
37140	* src/abg-ir.cc (string_to_elf_symbol_type)
37141	(string_to_elf_symbol_binding): Define new entry points.
37142	* include/abg-libxml-utils.h (xml_char_sptr_to_string): Declare
37143	new entry points.
37144	* src/abg-libxml-utils.cc (xml_char_sptr_to_string): Define new
37145	entry points.
37146	* src/abg-reader.cc (read_elf_symbol_type)
37147	(read_elf_symbol_binding, build_elf_symbol): Define new static
37148	functions.
37149	(build_function_decl, build_var_decl): Use the new
37150	build_elf_symbol and set the symbol to the function.  Flag the
37151	function as having a public symbol in the symbol table if the
37152	symbol is public.
37153	* src/abg-writer.cc (write_elf_symbol_type)
37154	(write_elf_symbol_binding, write_elf_symbol): Define new static
37155	functions.
37156	(write_var_decl, write_function_decl): Use the new
37157	write_elf_symbol to serialize the symbol for the decl.
37158	* tests/data/test-read-dwarf/test[01].abi: Adjust.
37159
371602014-05-14  Dodji Seketeli <dodji@redhat.com>
37161
37162	Don't crash when de-serializing an empty function parm xml node
37163	* src/abg-reader.cc (build_function_parameter): Do not crash if
37164	the xml node is NULL.
37165
371662014-05-14  Dodji Seketeli <dodji@redhat.com>
37167
37168	Fix a typo in serializing a decl_base::binding
37169	* src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)):
37170	Fix a typo here.
37171
371722014-05-14  Dodji Seketeli <dodji@redhat.com>
37173
37174	Add a help string for the --no-absolute-path option of bisym
37175	* tools/bisym.cc (show_help): Add a missing help string.
37176
371772014-05-13  Dodji Seketeli <dodji@redhat.com>
37178
37179	Do not try to use ELF hash tables in demangling lookup mode
37180	* src/abg-dwarf-reader.cc (lookup_symbol_from_elf): If in
37181	demangling mode, do not use ELF hash tables.
37182
371832014-05-13  Dodji Seketeli <dodji@redhat.com>
37184
37185	Use the proper symbol table for  and set linkage_name to symbol name
37186	* src/abg-dwarf-reader.cc (find_symbol_table_section): Return the
37187	.symtab if we are looking at an executable or relocatable file and
37188	.dynsym if we are looking at a DSO.
37189	(find_symbol_table_section_index): Likewise.  Implement this in
37190	terms of find_symbol_table_section.
37191	(build_{function,var}_decl): Set the linkage_name to the symbol
37192	name, if the symbol name is not empty.
37193	* tests/data/test-diff-filter/test9-report.txt: Adjust.
37194
371952014-05-13  Dodji Seketeli <dodji@redhat.com>
37196
37197	Remove redundant "'" around linkage names in diff reports
37198	* src/abg-comparison.cc (corpus_diff::report): Remove the
37199	redundant "'" from the linkage names in the diff.
37200
372012014-05-08  Dodji Seketeli <dodji@redhat.com>
37202
37203	Initial support for elf symbol (versionning) during decl comparison
37204	* include/abg-fwd.h (get_linkage_name): Remove.
37205	* include/abg-dwarf-reader.h (enum symbol_type)
37206	(enum symbol_binding): Move these into abg-ir.h.
37207	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
37208	Adjust.
37209	* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
37210	Declare this before using it.
37211	(die_address_attribute, die_location_address)
37212	(stt_to_elf_symbol_type, stb_to_elf_symbol_binding)
37213	(find_hash_table_section_index, find_symbol_table_section)
37214	(find_symbol_table_section_index, find_text_section)
37215	(find_bss_section, compare_symbol_name)
37216	(get_symbol_versionning_sections get_version_for_symbol)
37217	(lookup_symbol_from_sysv_hash_tab)
37218	(lookup_symbol_from_gnu_hash_tab, get_elf_class_size_in_bytes)
37219	(bloom_word_at, setup_gnu_ht, lookup_symbol_from_elf_hash_tab)
37220	(lookup_symbol_from_symtab, maybe_adjust_fn_sym_address)
37221	(maybe_adjust_var_sym_address): New static functions.
37222	(enum hash_table_kind): New enum.
37223	(struct gnu_ht): New struct.
37224	(read_context::var_decls_to_add_): Renamed var_decls_to_add into
37225	this.
37226	(read_context::{fun, var}_sym_addr_sym_index_map_): New member.
37227	(read_context::{lookup_symbol_from_elf,
37228	lookup_elf_symbol_from_index, lookup_elf_fn_symbol_from_address,
37229	lookup_elf_var_symbol_from_address, fun_sym_addr_sym_index_map,
37230	var_sym_addr_sym_index_map, load_symbol_addr_to_index_maps,
37231	get_function_address, get_variable_address}): New member
37232	functions.
37233	(read_context::lookup_public_{variable,
37234	function}_symbol_from_elf): Adjust.
37235	(op_pushes_constant_value): Fix a bug here.
37236	(lookup_symbol_from_elf): Adjust.  Support cases where there is no
37237	elf hash table, e.g, for relocatable files.
37238	(lookup_public_function_symbol_from_elf)
37239	(lookup_public_variable_symbol_from_elf): Adjust.
37240	(build_var_decl): Allow updating the var_decl to associate it with
37241	its underlying symbol.  In that case, if the linkage name is not
37242	set, set it to the symbol name.
37243	(build_function_decl): Likewise for function_decl.
37244	(operator<<(std::ostream&, symbol_type)):
37245	(operator<<(std::ostream&, symbol_binding)): Move these do
37246	abg-ir.cc.
37247	* include/abg-ir.h (class elf_symbol): Declare new class.  Move
37248	enum symbol_binding and enum symbol_type (from abg-dwarf-reader.h) to
37249	elf_symbol::binding and elf_symbol::type here.
37250	(operator<<(std::ostream&, elf_symbol::type))
37251	(operator<<(std::ostream&, elf_symbol::binding))
37252	(operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New
37253	operators.
37254	(class elf_symbol::version): Declare new class.
37255	(class var_decl): Make this pimpl, and add ...
37256	(var_decl::{g,s}et_symbol): ... new member functions.
37257	(class function_decl): Likewise, make this pimpl and add ...
37258	(function_decl::{g,s}et_symbol): ... new member functions.
37259	* src/abg-ir.cc (struct elf_symbol, elf_symbol::priv): New
37260	types.
37261	(elf_symbol::*): Lots of new members and member functions.
37262	(operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New.
37263	(operator<<(std::ostream&, elf_symbol::type)): New.
37264	(operator<<(std::ostream&, elf_symbol::binding)): New.
37265	(elf_symbol::version::priv): New type.
37266	(elf_symbol::version::*): Lots of member functions.
37267	(get_linkage_name): Removed.
37268	(var_decl::priv): New type.  Pimplify the thing.
37269	(var_decl::{s,g}et_symbol): New.
37270	(var_decl::operator==): Take symbols in account in the comparison.
37271	(function_decl::priv): New type.
37272	(function_decl::*): Pimplify.
37273	(function_decl::{s,g}et_symbol): New.
37274	(function_decl::operator==): Take symbols in account in the
37275	comparison.
37276	* include/abg-comparison.h (diff_context::show_linkage_name): New
37277	member function.
37278	* src/abg-comparison.cc (diff_context::priv::show_linkage_name_):
37279	New member.
37280	(diff_context::priv::priv): Initialize it.
37281	(diff_context::show_linkage_names): New member function.
37282	(corpus_diff::report): If the user used --show-linkage-names,
37283	display the linkage name after the name of the functions.  Add
37284	missing "'" in the some spots.
37285	* tools/bidiff.cc (options.show_linkage_names): New member.
37286	(display_usage, parse_command_line): Support --linkage-names.
37287	* tools/bisym.cc (show_help): Add '\n' at the end of help string
37288	for --demangle.  Add --no-absolute-path option.
37289	(parse_command_line): Support --no-absolute-path.
37290	(main): Adjust for symbol (versionning) support.  Consider that
37291	the program successfully completed even when the symbol wasn't
37292	found.  Support --no-absolute-path.
37293	* tests/data/test-lookup-syms/test0-report.txt: New.
37294	* tests/data/test-lookup-syms/test01-report.txt: New.
37295	* tests/data/test-lookup-syms/test02-report.txt: New.
37296	* tests/data/test-read-dwarf/test0.abi: Adjust.
37297	* tests/data/test-read-dwarf/test1.abi: Adjust.
37298	* tests/data/test-diff-dwarf/test7-report.txt: Adjust.
37299	* tests/data/test-diff-filter/test10-report.txt: Adjust.
37300	* tests/data/test-diff-filter/test12-report.txt: Adjust.
37301	* tests/data/test-lookup-syms/test1-[123]-report.txt: New.
37302	* tests/data/test-lookup-syms/test1.c: New.
37303	* tests/data/test-lookup-syms/test1.version-script: New.
37304	* tests/test-lookup-syms.cc: Adjust for new tests.
37305	* test/Makefile.am: Adjust makefile.
37306
373072014-05-07  Dodji Seketeli <dodji@redhat.com>
37308
37309	Rename decl_base::get_mangled_name into decl_base::get_linkage_name
37310	* include/abg-ir.h (decl_base::get_linkage_name): Renamed
37311	decl_base::get_mangled_name into this.
37312	* src/abg-comparison.cc
37313	(class_diff::ensure_lookup_tables_populated)
37314	(function_decl_diff::report, type_decl_diff::report)
37315	(corpus_diff::priv::ensure_lookup_tables_populated)
37316	(corpus_diff::report, compute_diff): Adjust.
37317	* src/abg-corpus.cc ({var_comp, func_comp}::operator()): Likewise.
37318	(corpus::priv::build_symbol_table): Likewise.
37319	* src/abg-dwarf-reader.cc (die_linkage_name): Renamed
37320	die_mangled_name into this.
37321	(die_loc_and_name, build_translation_unit_and_add_to_ir)
37322	(build_namespace_decl_and_add_to_ir, build_type_decl)
37323	(build_enum_type, build_class_type_and_add_to_ir)
37324	(build_typedef_type, build_var_decl, build_function_decl, ): Adjust.
37325	* src/abg-hash.cc (decl_base::hash::operator()): Likewise.
37326	* src/abg-ir.cc (decl_base::priv::linkage_name_): Renamed
37327	decl_base::priv::mangled_name_ into this.
37328	(decl_base::priv::priv, decl_base::{decl_base, operator==})
37329	(get_linkage_name, typedef_decl::typedef_decl, var_decl::var_decl)
37330	(function_decl::function_decl, class_decl::base_spec::base_spec)
37331	(class_decl::method_decl::method_decl): Adjust.
37332	(decl_base::{g,s}et_linkage_name): Renamed
37333	decl_base::{g,s}et_mangled_name into this.
37334	* src/abg-writer.cc (write_decl, write_typedef_decl)
37335	(write_var_decl, write_function_decl, dump): Adjust.
37336
373372014-04-21  Dodji Seketeli <dodji@redhat.com>
37338
37339	Drop symbols not global in a symtab from corpus symtab
37340	* src/abg-corpus.cc (corpus_priv::build_symbol_table): If a
37341	function or variable symbol is not public (global or weak) and
37342	present in an elf symbol table, drop it from the corpus symbol
37343	table.  As a result functions are variables (not present in the
37344	elf symbol tables) that we were previously taking in account are
37345	not dropped on the floor, leading to much less noise.
37346	* tests/data/test-diff-dwarf/test0-v0.cc: Update to avoid
37347	generating inline functions.
37348	* tests/data/test-diff-dwarf/test0-v0.o: Likewise.
37349	* tests/data/test-diff-dwarf/test0-v1.cc: Likewise.
37350	* tests/data/test-diff-dwarf/test0-v1.o: Likewise.
37351	* tests/data/test-diff-dwarf/test7-v0.o: Likewise.
37352	* tests/data/test-diff-dwarf/test7-v1.cc: Likewise.
37353	* tests/data/test-diff-dwarf/test7-v1.o: Likewise.
37354	* tests/data/test-diff-dwarf/test8-v0.cc: Likewise.
37355	* tests/data/test-diff-dwarf/test8-v0.o: Likewise.
37356	* tests/data/test-diff-dwarf/test8-v1.cc: Likewise.
37357	* tests/data/test-diff-dwarf/test8-v1.o: Likewise.
37358	* tests/data/test-diff-filter/test0-v0.cc: Likewise.
37359	* tests/data/test-diff-filter/test0-v0.o: Likewise.
37360	* tests/data/test-diff-filter/test0-v1.cc: Likewise.
37361	* tests/data/test-diff-filter/test0-v1.o: Likewise.
37362	* tests/data/test-diff-filter/test10-v0.cc: Likewise.
37363	* tests/data/test-diff-filter/test10-v0.o: Likewise.
37364	* tests/data/test-diff-filter/test10-report.txt: Likewise.
37365	* tests/data/test-diff-filter/test10-v1.o: Likewise.
37366	* tests/data/test-diff-filter/test13-v0.cc: Likewise.
37367	* tests/data/test-diff-filter/test13-v0.o: Likewise.
37368	* tests/data/test-diff-filter/test13-v1.cc: Likewise.
37369	* tests/data/test-diff-filter/test13-v1.o: Likewise.
37370	* tests/data/test-diff-filter/test2-v0.cc: Likewise.
37371	* tests/data/test-diff-filter/test2-v0.o: Likewise.
37372	* tests/data/test-diff-filter/test2-v1.cc: Likewise.
37373	* tests/data/test-diff-filter/test2-v1.o: Likewise.
37374	* tests/data/test-diff-filter/test4-v0.cc: Likewise.
37375	* tests/data/test-diff-filter/test4-v0.o: Likewise.
37376	* tests/data/test-diff-filter/test4-v1.cc: Likewise.
37377	* tests/data/test-diff-filter/test4-v1.o: Likewise.
37378	* tests/data/test-diff-filter/test9-v0.o: Likewise.
37379	* tests/data/test-diff-filter/test9-v1.cc: Likewise.
37380	* tests/data/test-diff-filter/test9-v1.o: Likewise.
37381
373822014-04-21  Dodji Seketeli <dodji@redhat.com>
37383
37384	Fix mangled name setting for static data members from DWARF
37385	* src/abg-dwarf-reader.cc (build_var_decl): Support adding
37386	properties to an existing var_decl.  For now just add mangled
37387	name.
37388	(build_ir_node_from_die): Accept DW_TAG_member too.  This helps
37389	for when this function is used to add additional properties to an
37390	existing DW_TAG_member representing a static data member.  Then,
37391	use build_var_decl to really add the value of the additional
37392	mangled name property.
37393
373942014-04-21  Dodji Seketeli <dodji@redhat.com>
37395
37396	Always show pretty representation of variables in report
37397	* src/abg-comparison.cc (corpus_diff::report): Display the pretty
37398	representation of the variable, no matter what.
37399
374002014-04-21  Dodji Seketeli <dodji@redhat.com>
37401
37402	Set "is_in_public_symbol_table" property for vars & fns
37403	* src/abg-dwarf-reader.cc (build_var_decl, build_function_decl):
37404	Set the "is_in_public_symbol_table" property for the variable or
37405	function decl.
37406
374072014-04-21  Dodji Seketeli <dodji@redhat.com>
37408
37409	Support symbol lookups from ELF
37410	* include/abg-dwarf-reader.h (symbol_type, symbol_binding): New
37411	enums.
37412	(operator<<): Declare new overloads for the new enums above.
37413	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf):
37414	Declare new entry points.
37415	* src/abg-dwarf-reader.cc (lookup_symbol_from_elf)
37416	(lookup_public_function_symbol_from_elf)
37417	(lookup_public_variable_symbol_from_elf): Define new static
37418	functions.
37419	(read_context::elf_{module_, handle}_): New data members.
37420	(read_context::{elf_module, elf_handle}): New accessors.
37421	(read_context::load_debug_info): Store the elf module into
37422	read_context::_elf_module_.  Adjust.
37423	(read_context::{lookup_symbol_from_elf,
37424	lookup_public_function_symbol_from_elf,
37425	lookup_public_variable_symbol_from_elf}): New member functions.
37426	(lookup_symbol_from_elf, lookup_public_function_symbol_from_elf)
37427	(operator<<): Define public entry points.
37428	* tools/bisym.cc: New tool to lookup a symbol in an elf file.
37429	* tools/Makefile.am: Add the bisym.cc source file to the
37430	distribution and arrange to compile it into a 'bisym' executable.
37431	* tests/test-lookup-syms.cc: New test harness.
37432	* tests/data/test-lookup-syms/test0-report.txt: New test input
37433	for the harness above.
37434	* tests/data/test-lookup-syms/test0.cc: Likewise.
37435	* tests/data/test-lookup-syms/test0.o: Likewise
37436	* tests/data/test-lookup-syms/test01-report.txt: Likewise.
37437	* tests/data/test-lookup-syms/test02-report.txt: Likewise.
37438	* tests/Makefile.am: Build the new runtestlookupsyms test and add
37439	the new files to the distribution.
37440
374412014-04-21  Dodji Seketeli <dodji@redhat.com>
37442
37443	Add corpus::{s,g}et_origin accessors
37444	* include/abg-corpus.h (enum corpus::origin): New enum.
37445	(corpus::{g,s}et_origin): New accessors.
37446	* src/abg-corpus.cc (corpus::priv::origin): New data member.
37447	(corpus::priv::is_symbol_table_built): Move this up.
37448	(corpus::priv::priv): Adjust.
37449	(corpus::{g,s}et_origin): Define accessors.
37450	* src/abg-dwarf-reader.cc (read_corpus_from_elf): Set the corpus
37451	origin.  Also set the path.  Oops.
37452	* src/abg-reader.cc (read_corpus_from_input)
37453	(read_corpus_from_archive): Set the corpus origin.
37454
374552014-04-21  Dodji Seketeli <dodji@redhat.com>
37456
37457	Add a get_linkage_name function.
37458	* include/abg-fwd.h (is_at_global_scope): Declare a new overload.
37459	(get_linkage_name): Declare ...
37460	* src/abg-ir.cc (get_linkage_name): ... these new entry points.
37461	(is_at_global_scope): Define these new overloads useful for the
37462	new get_linkage_name.
37463
374642014-04-21  Dodji Seketeli <dodji@redhat.com>
37465
37466	Pimplify decl_base and add decl_base::{s,g}et_is_in_public_symbol_table
37467	* include/abg-ir.h (struct decl_base::priv): New pimpl type.
37468	(decl_base::priv_): New pimpl.
37469	(decl_base::{hashing_started, peek_hash_value,
37470	peek_qualified_name, set_qualified_name}): Declare new protected
37471	methods.
37472	(decl_base::{get_context_rel, set_qualified_name, get_location,
37473	set_location, set_name, set_mangled_name, get_visibility,
37474	set_visibility}): Move these out-of-line.
37475	(decl_base::{g,s}et_is_public_symbol_table):
37476	(class_decl::hashing_started): Remove this as we now have
37477	decl_base::hashing_started.
37478	(decl_base::{hash_, hashing_started, location_, context_, name_,
37479	qualified_parent_name_, qualified_name_, mangled_name_,
37480	visibility_}): Move all these members into the new ...
37481	* src/abg-ir.cc (struct decl_base::priv): ... pimpl type.
37482	(decl_base::decl_base): Move these out-of-line here.  Adjust the
37483	other overloads.
37484	(decl_base::{hashing_started, peek_hash_value,
37485	peek_qualified_name, set_qualified_name}): Define these new
37486	protected methods.
37487	(decl_base::{get_context_rel, set_context_rel, get_location,
37488	set_location, set_name, get_mangled_name, set_mangled_name,
37489	get_visibility, set_visibility}): Define these out-of-line here.
37490	(decl_base::{get_hash, set_hash, get_scope,
37491	get_qualified_parent_name, get_qualified_name, operator==,
37492	set_scope}): Adjust.
37493	(qualified_type_def::get_qualified_name): Likewise.
37494	(pointer_type_def::get_qualified_name): Likewise.
37495	(reference_type_def::get_qualified_name): Likewise.
37496	(var_decl::set_scope): Likewise.
37497	(class_decl::base_spec): Likewise.
37498	(class_decl::method_decl::set_scope): Likewise.
37499	(decl_base::{g,s}et_is_in_public_symbol_table): Define new accessors.
37500	* src/abg-hash.cc ({decl_base, type_decl, scope_decl,
37501	scope_type_decl, qualified_type_def, pointer_type_def,
37502	reference_type_def, enum_type_decl, typedef_decl, var_decl,
37503	class_decl}::hash::operator): Adjust.
37504
375052014-04-17  Dodji Seketeli <dodji@redhat.com>
37506
37507	Categorize base class changes as SIZE_OR_OFFSET_CHANGE_CATEGORY
37508	* include/abg-comparison.h (class_diff::{deleted, inserted,
37509	changed}_bases): Declare new member functions ...
37510	* src/abg-comparison.cc ((class_diff::{deleted, inserted,
37511	changed}_bases)): ... and define them.
37512	* src/abg-comp-filter.cc (base_classes_added_or_removed): Define
37513	new static functions.
37514	(harmless_filter): Categorize base classes added or removed.
37515	* tests/data/test-diff-dwarf/test8-report.txt: New test input.
37516	* tests/data/test-diff-dwarf/test8-v0.cc: Likewise.
37517	* tests/data/test-diff-dwarf/test8-v0.o: Likewise.
37518	* tests/data/test-diff-dwarf/test8-v1.cc: Likewise.
37519	* tests/data/test-diff-dwarf/test8-v1.o: Likewise.
37520	* tests/data/test-diff-filter/test13-report.txt: New test input.
37521	* tests/data/test-diff-filter/test13-v0.cc: Likewise.
37522	* tests/data/test-diff-filter/test13-v0.o: Likewise.
37523	* tests/data/test-diff-filter/test13-v1.cc: Likewise.
37524	* tests/data/test-diff-filter/test13-v1.o: Likewise.
37525	* tests/Makefile.am: Add the new files above to the source distribution.
37526	* tests/test-diff-dwarf.cc: Use the new relevant input above to
37527	run more tests.
37528	* tests/test-diff-filter.cc: Likewise.
37529
375302014-04-17  Dodji Seketeli <dodji@redhat.com>
37531
37532	Fix class diff reporting issues for base classes
37533	* src/abg-comparison.cc (class_diff::report): For base classes,
37534	report their pretty representation.  Do not try to report a the
37535	diff of a changed base class that got filtered out.  Avoid
37536	emitting too many vertical white spaces.
37537
375382014-04-17  Dodji Seketeli <dodji@redhat.com>
37539
37540	Simplify SIZE_OR_OFFSET_CHANGE_CATEGORY categorizing
37541	* src/abg-comp-filter.cc (harmful_filter::visit): Now that
37542	type_size_changed is correctly geared to not be fulled by
37543	decl-only classes, there is no need for its caller to handle that
37544	case.  And data_member_offset_changed ain't affected by decl-only
37545	classes anyway.  So the code is now much simpler.
37546
375472014-04-17  Dodji Seketeli <dodji@redhat.com>
37548
37549	Fix API doc for static_data_member_type_size_changed
37550	* src/abg-comp-filter.cc (static_data_member_type_size_changed):
37551	Fix API doc comment.
37552
375532014-04-17  Dodji Seketeli <dodji@redhat.com>
37554
37555	Don't blindly drop DIEs defined in the scope of a function
37556	* src/abg-dwarf-reader.cc (get_scope_for_die): Do not drop a DIE
37557	on the floor just because it is in the scope of a function.  We
37558	were dropping a function parameter because its type is a typedef
37559	defined right before the parameter, in the scope of the function.
37560	Urgh.  So with this change, that function parameter is not dropped
37561	anymore.  I have seen that happening in a DWARF generated by GCC
37562	4.7.1 on libstdc++.so.  Hard to come up with a regression test
37563	case for this one.
37564
375652014-04-17  Dodji Seketeli <dodji@redhat.com>
37566
37567	Useless code killing
37568	* src/abg-comparison.cc (decls_equal::operator()(const decls_type,
37569	const decls_type)): Kill dead code.  Note that there is a proper
37570	equality operator for decl_base_sptr already.
37571
375722014-04-17  Dodji Seketeli <dodji@redhat.com>
37573
37574	File static data member changes in STATIC_DATA_MEMBER_CHANGE_CATEGORY
37575	* include/abg-comparison.h
37576	(diff_category::STATIC_DATA_MEMBER_CHANGE_CATEGORY): New category.
37577	(diff_category::EVERYTHING_CATEGORY): Update
37578	* src/abg-comp-filter.cc (static_data_member_type_size_changed)
37579	(static_data_member_added_or_removed): Define new static
37580	functions.
37581	(harmless_filter::visit): Categorize changes to static data
37582	members as STATIC_DATA_MEMBER_CHANGE_CATEGORY.
37583	* tools/bidiff.cc (set_diff_context_from_opts):
37584	STATIC_DATA_MEMBER_CHANGE_CATEGORY is falls into the harmless
37585	group.
37586	* tests/data/test-diff-filter/test12-report.txt: New test input.
37587	* tests/data/test-diff-filter/test12-v0.cc: Likewise.
37588	* tests/data/test-diff-filter/test12-v0.o: Likewise.
37589	* tests/data/test-diff-filter/test12-v1.cc: Likewise.
37590	* tests/data/test-diff-filter/test12-v1.o: Likewise.
37591	* tools/bidiff.cc: Run this test with the additional input data
37592	above.
37593	* tests/Makefile.am: Adjust.
37594
375952014-04-17  Dodji Seketeli <dodji@redhat.com>
37596
37597	Fix typo in comments
37598	* include/abg-comparison.h
37599	(diff_category::NON_VIRT_MEM_FUN_CHANGE_CATEGORY): Fix typo in
37600	comments.
37601
376022014-04-17  Dodji Seketeli <dodji@redhat.com>
37603
37604	Only non-static data member changes are SIZE_OR_OFFSET_CHANGE_CATEGORY
37605	* src/abg-comp-filter.cc
37606	(non_static_data_member_type_size_changed): Renamed
37607	data_member_offset_changed into this.  Make sure the test detects
37608	changes on *non-static* data members only.
37609	(non_static_data_member_added_or_removed): Likewise for
37610	data_member_offset_changed that got renamed into this.
37611	(harmful_filter::visit): Adjust.
37612
376132014-04-17  Dodji Seketeli <dodji@redhat.com>
37614
37615	Fix comments in categorization code
37616	* src/abg-comp-filter.cc (data_member_added_or_removed): Fix
37617	comments.
37618
376192014-04-16  Dodji Seketeli <dodji@redhat.com>
37620
37621	Really detect static-ness of data members.  Oops.
37622	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Let's
37623	consider that a data member being not laid out (i.e, not having a
37624	data_member_location) is is a static data member.  Otherwise, we
37625	were not detecting static data members at all.  Well we were only
37626	inferring their presence from seeing the static variable
37627	definition later on.  That means we were missing most of the
37628	static variables.  Woops.
37629	* src/abg-comparison.cc
37630	(corpus_diff::priv::ensure_lookup_tables_populated): Now that we
37631	are really seeing static data members, let's be prepare to the
37632	fact that we can the same static data member being declared
37633	several times in a corpus.
37634	* tests/data/test-diff-dwarf/test7-report.txt: New test input file.
37635	* tests/data/test-diff-dwarf/test7-v0.cc: Likewise.
37636	* tests/data/test-diff-dwarf/test7-v0.o: Likewise.
37637	* tests/data/test-diff-dwarf/test7-v1.cc: Likewise.
37638	* tests/data/test-diff-dwarf/test7-v1.o: Likewise.
37639	* tests/test-diff-dwarf.cc: Update this to consume the new test
37640	input files.
37641	* tests/Makefile.am: Update this to add the missing test files to
37642	the source distribution.
37643
376442014-04-16  Dodji Seketeli <dodji@redhat.com>
37645
37646	Add dumping routines for declaration location
37647	* include/abg-fwd.h (get_global_scope()): New overload for const
37648	decl_base&.  Move the other overloads up in the file.
37649	(get_translation_unit): Add an overload for decl_base&.  Constify
37650	the others.
37651	(dump_decl_location): Declare new functions.
37652	* src/abg-ir.cc (get_global_scope): Define the overload for const
37653	decl_base&.  Write the other overloads in terms of this one.
37654	(get_translation_unit): Likewise, define the overload for const
37655	decl_base&.  Write the other overloads in terms of this one.
37656	(dump_decl_location): Define these new overloads.
37657
376582014-04-16  Dodji Seketeli <dodji@redhat.com>
37659
37660	Fix dumping function to make them use generic ostream
37661	* src/abg-writer.cc (dump(const decl_base_sptr, std::ostream&)):
37662	Do not dump the content to cerr here.  Rather dump to the output
37663	stream given in parameter.  Oops.
37664	(dump(const translation_unit&, std::ostream&)): Likewise.
37665
376662014-04-16  Dodji Seketeli <dodji@redhat.com>
37667
37668	Misc style fixes
37669	* src/abg-ir.cc (get_translation_unit): Remove useless vertical
37670	white space.
37671	(is_global_scope): Add missing API doc.
37672
376732014-04-16  Dodji Seketeli <dodji@redhat.com>
37674
37675	A virt mem fn deleted and added to the same offset is not harmful
37676	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): A virtual
37677	member that gets deleted and added back again to the same vtable
37678	offset is not considered as being a virtual member function change
37679	suitable for VIRTUAL_MEMBER_CHANGE_CATEGORY.  Likewise for a
37680	function sub-type change not involving a change in the vtable
37681	offset.
37682
376832014-04-16  Dodji Seketeli <dodji@redhat.com>
37684
37685	Do not categorize size/offset changes when a decl-only class is involved
37686	* src/abg-comp-filter.cc (there_is_a_decl_only_class)
37687	(diff_involves_decl_only_class): New static functions.
37688	(type_size_changed, data_member_added_or_removed)
37689	(has_virtual_mem_fn_change, has_non_virtual_mem_fn_change): Bail
37690	out if one of the types involved is a decl-only class.
37691
376922014-04-16  Dodji Seketeli <dodji@redhat.com>
37693
37694	Work around "mangled name vanishing from one version of mem fn decl" bug
37695	* src/abg-comparison.cc
37696	(class_diff::ensure_lookup_tables_populated): If the first version
37697	of the member function decl doesn't have a mangled name while the
37698	second has it, try the lookups using the pretty representation of
37699	the function.
37700
377012014-04-16  Dodji Seketeli <dodji@redhat.com>
37702
37703	Do not try to represent the offset for a static data member
37704	* src/abg-comparison.cc (represent_data_member(var_decl_sptr,
37705	ostream&)): If the data member is static, do not try to represent
37706	its offset.
37707
377082014-04-16  Dodji Seketeli <dodji@redhat.com>
37709
37710	A static data member shouldn't be checked for having been laid out
37711	* src/abg-comparison.cc (represent_data_member(var_decl_sptr,
37712	ostream&)): If the data member is static do not check for it
37713	having been laid out.
37714
377152014-04-16  Dodji Seketeli <dodji@redhat.com>
37716
37717	Prefix pretty representation of static data members with 'static'
37718	* src/abg-ir.cc (var_decl::get_pretty_representation): Prefix
37719	pretty representation of static data members with 'static'.
37720
377212014-04-16  Dodji Seketeli <dodji@redhat.com>
37722
37723	Provide a robust way of getting the size of a qualified type
37724	* include/abg-ir.h (qualified_type_def::get_size_in_bits): Declare
37725	new member function ...
37726	* src/abg-ir.cc (qualified_type_def::get_size_in_bits): ... and
37727	define it.  Keep in mind that some times the size of the
37728	underlying type can change between the moment the qualified type
37729	is created and the end of its life time.  That is because a
37730	subsequent DIE (from DWARF) can alter the size of the underlying
37731	type.  This overload allows the user to always query the size of
37732	the underlying type and keep the size of the qualified type in
37733	sync with it.
37734
377352014-04-16  Dodji Seketeli <dodji@redhat.com>
37736
37737	Add an assert to the pointer diff reporting code
37738	* src/abg-comparison.cc (pointer_diff::report): If the pointer
37739	diff node is deemed to be reported then the underlying diff node
37740	should be reported as well.
37741
377422014-04-16  Dodji Seketeli <dodji@redhat.com>
37743
37744	Little style adjustment in diff node categorization code
37745	* src/abg-comp-filter.cc (harmful_filter::visit): Factorize the
37746	categorization into SIZE_OR_OFFSET_CHANGE_CATEGORY for data member
37747	adding or removal and for data member type size change.
37748
377492014-04-15  Dodji Seketeli <dodji@redhat.com>
37750
37751	If a diff node is in NO_CHANGE_CATEGORY do not report it anymore
37752	* src/abg-comparison.cc (diff::is_filtered_out): Now that we seem
37753	to be flagging every changes to a class into a category, we do not
37754	need to dive into reporting a diff not that is categorized as
37755	NO_CHANGE_CATEGORY anymore.  So let's have the implementation that
37756	one would expect for this function.
37757
377582014-04-15  Dodji Seketeli <dodji@redhat.com>
37759
37760	Categorize changes to virt mem fncts as VIRTUAL_MEMBER_CHANGE_CATEGORY
37761	* src/abg-comp-filter.cc (has_virtual_mem_fn_change): New static
37762	function.
37763	(harmful_filter): Categorize changes to virtual member functions
37764	into VIRTUAL_MEMBER_CHANGE_CATEGORY.
37765	* src/abg-comparison.cc
37766	(class_diff::priv::count_filtered_changed_dm): Move this up, right
37767	after class_diff::priv::count_filtered_subtype_changed_dm.
37768	(SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED): New macro.
37769	(class_diff::priv::count_filtered_{changed, inserted,
37770	deleted}_mem_fns): Modify these to properly take member function
37771	virtual-ness in account.
37772
377732014-04-15  Dodji Seketeli <dodji@redhat.com>
37774
37775	Do not hash non-virtual member functions when hashing a class
37776	* src/abg-hash.cc (class_decl::hash::operator): Do not hash
37777	non-virtual member functions.
37778
377792014-04-15  Dodji Seketeli <dodji@redhat.com>
37780
37781	Fix a missing new line in the reports
37782	* src/abg-comparison.cc (represent(class_decl::method_decl_sptr,
37783	ostream&)): Add a missing new line.
37784	* tests/data/test-bidiff/test-struct1-report.txt: Adjust.
37785
377862014-04-14  Dodji Seketeli <dodji@redhat.com>
37787
37788	Add more pretty printing facilities
37789	* include/abg-comparison.h (get_pretty_representation(diff*)):
37790	Declare new function.
37791	* include/abg-fwd.h (get_pretty_representation): Declare functions
37792	for decl_base*, type_base*, decl_base_sptr and type_base_sptr.
37793	* src/abg-comparison.cc (get_pretty_representation): Implement
37794	this for diff*.
37795	* src/abg-ir.cc (get_pretty_representation): Define
37796	implementations for decl_base*, type_base*, decl_base_sptr and
37797	type_base_sptr.
37798
377992014-04-14  Dodji Seketeli <dodji@redhat.com>
37800
37801	Don't compare non-virtual member functions in class comparison
37802	* src/abg-comparison.cc
37803	(class_diff::ensure_lookup_tables_populated): Use the virtual
37804	member functions here, not the member functions in general.
37805	(compute_diff): Consider virtual member functions only, not
37806	non-virtual ones.
37807	* src/abg-ir.cc (class_decl::operator==): Do not compare
37808	non-virtual member functions.  Only compare virtual member
37809	functions.
37810	* tests/data/test-bidiff/test-struct1-report.txt: New test input.
37811	* tests/data/test-diff-dwarf/test0-report.txt: New test input.
37812	* tests/data/test-diff-filter/test0-report.txt: New test input.
37813	* tests/data/test-diff-filter/test01-report.txt: New test input.
37814	* tests/data/test-diff-filter/test10-report.txt: New test input.
37815	* tests/data/test-diff-filter/test11-report.txt: New test input.
37816	* tests/data/test-diff-filter/test2-report.txt: New test input.
37817	* tests/data/test-diff-filter/test9-report.txt: New test input.
37818
378192014-04-14  Dodji Seketeli <dodji@redhat.com>
37820
37821	Recognize virtual member functions better and store them appart
37822	* include/abg-fwd.h (set_member_function_is_virtual): Declare new
37823	function.
37824	* include/abg-ir.h (class class_decl): Declare
37825	set_member_function_is_virtual and member_function_is_virtual as
37826	friends of class_decl.
37827	(class_decl::add_member_function): Take an is_virtual flag.
37828	(class_decl::get_num_virtual_functions): Remove.
37829	(class_decl::get_virtual_mem_fns): New member function.
37830	(mem_fn_context_rel::is_virtual_): New member.
37831	(mem_fn_context_rel::mem_fn_context_rel): Adjust to initialize the
37832	new is_virtual_ member.
37833	(mem_fn_context_rel::is_virtual): New member functions.
37834	* src/abg-comparison.cc (represent): Adjust.
37835	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Adjust.
37836	* src/abg-ir.cc (member_function_is_virtual): Change this to use
37837	mem_fn_context_rel::is_virtual.
37838	(set_member_function_is_virtual): Define this new function.
37839	(class_decl::priv::virtual_mem_fns_): New member to hold virtual
37840	member functions.
37841	(class_decl::get_virtual_mem_fns): Implement this member function.
37842	(class_decl::get_num_virtual_functions): Remove.
37843	(class_decl::add_member_function): Take a new is_virtual flag.
37844	Add virtual member functions to
37845	class_decl::priv::virtual_mem_fns_.
37846	* src/abg-reader.cc (build_class_decl): Adjust.
37847
378482014-04-13  Dodji Seketeli <dodji@redhat.com>
37849
37850	Filter non-virtual member fns insertions/deletions from class changes
37851	* include/abg-fwd.h (member_function_is_virtual): Declare new
37852	function.
37853	* include/abg-comparison.h
37854	(diff_category::{NON_VIRT_MEM_FUN_CHANGE_CATEGORY,
37855	VIRTUAL_MEMBER_CHANGE_CATEGORY}): New enumerators.
37856	(diff_category::EVERYTHING_CATEGORY): Adjust.
37857	(class_diff::{changed, deleted, inserted}_member_fns): Declare new
37858	member functions.
37859	* src/abg-comp-filter.cc (data_member_added_or_removed): Add
37860	missing comments.
37861	(has_non_virtual_mem_fn_change): New static predicate function.
37862	(harmless_filter::visit): Categorize non-virtual member function
37863	changes in a diff into NON_VIRT_MEM_FUN_CHANGE_CATEGORY.
37864	* src/abg-comparison.cc
37865	(TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macro.
37866	(report_mem_header): Count filtered functions for added/deleted
37867	functions as well.
37868	(class_diff::priv::count_filtered_changed_mem_fns): Renamed
37869	priv::count_filtered_member_functions into this.  Filter out
37870	changes to non-virtual member functions here.
37871	(class_diff::priv::count_filtered_{inserted, deleted}_mem_fns):
37872	New member functions.
37873	(class_diff::{deleted, inserted, changed}_member_fns): Define new
37874	member functions.
37875	(class_diff::report): Adjust count for filtered inserted/deleted
37876	member functions.  Do not report NON_VIRT_MEM_FUN_CHANGE_CATEGORY
37877	if it's disallowed.
37878	(class_diff::traverse): Propagate only
37879	VIRTUAL_MEMBER_CHANGE_CATEGORY from member functions to their
37880	enclosing class.
37881	* src/abg-ir.cc (member_function_is_virtual): Define new
37882	functions.
37883	* tools/bidiff.cc (set_diff_context_from_opts): Adjust to add
37884	NON_VIRT_MEM_FUN_CHANGE_CATEGORY into the harmless group and
37885	VIRTUAL_MEMBER_CHANGE_CATEGORY into the harmful one.
37886	* tests/data/test-diff-filter/test0-report.txt: New test input.
37887	* tests/data/test-diff-filter/test10-report.txt: Likewise.
37888	* tests/data/test-diff-filter/test10-v0.cc: Likewise.
37889	* tests/data/test-diff-filter/test10-v0.o: Likewise.
37890	* tests/data/test-diff-filter/test10-v1.cc: Likewise.
37891	* tests/data/test-diff-filter/test10-v1.o: Likewise.
37892	* tests/data/test-diff-filter/test11-report.txt: Likewise.
37893	* tests/data/test-diff-filter/test11-v0.cc: Likewise.
37894	* tests/data/test-diff-filter/test11-v0.o: Likewise.
37895	* tests/data/test-diff-filter/test11-v1.cc: Likewise.
37896	* tests/data/test-diff-filter/test11-v1.o: Likewise.
37897	* tests/data/test-diff-filter/test2-report.txt: Likewise.
37898	* tests/data/test-diff-filter/test9-report.txt: Likewise.
37899	* tests/data/test-diff-filter/test9-v0.cc: Likewise.
37900	* tests/data/test-diff-filter/test9-v0.o: Likewise.
37901	* tests/data/test-diff-filter/test9-v1.cc: Likewise.
37902	* tests/data/test-diff-filter/test9-v1.o: Likewise.
37903	* tests/test-diff-filter.cc: Consume the test input above to run
37904	more tests.
37905
379062014-04-13  Dodji Seketeli <dodji@redhat.com>
37907
37908	Make class_decl pimpl and harden comparison infloop prevention
37909	* include/abg-ir.h (class_decl::{priv}): New private data member.
37910	(class_decl::{get_is_declaration_only, set_is_declaration_only,
37911	is_struct, get_definition_of_declaration, get_earlier_declaration,
37912	add_base_specifier, get_base_specifiers, get_member_types,
37913	get_data_members, get_member_functions,
37914	get_member_function_templates, get_member_class_templates}): Move
37915	these methods out-of-line.
37916	(class_decl::{comparison_started_,
37917	declaration_,is_declaration_only_, definition_of_declaration,
37918	is_struct_, bases_, member_types_, data_members_,
37919	member_functions_, member_function_template,
37920	member_class_templates_}): Move these data members into the pimpl
37921	in ...
37922	* src/abg-ir.cc
37923	(class_decl::priv::{declaration_,is_declaration_only_,
37924	definition_of_declaration, is_struct_, bases_, member_types_,
37925	data_members_, member_functions_, member_function_template,
37926	member_class_templates_}): ... here.
37927	(class_decl::priv::classes_being_compared_): New data member.
37928	(class_decl::priv::priv): Initialize the data members.
37929	(class_decl::priv::{mark_as_being_compared,
37930	unmark_as_being_compared, comparison_started): New methods.
37931	(class_decl::{get_is_declaration_only, set_is_declaration_only,
37932	is_struct, get_definition_of_declaration, add_base_specifier,
37933	get_base_specifiers, get_member_types, get_data_members,
37934	get_member_functions, get_member_function_templates,
37935	get_member_class_templates}): Move these out-of-line in here.
37936	(class_decl::{class_decl, set_definition_of_declaration,
37937	set_earlier_declaration, insert_member_type, add_member_type,
37938	add_data_member, add_member_function,
37939	add_member_function_template, add_member_class_template,
37940	has_no_base_nor_member}): Adjust.
37941	(class_decl::operator==): Harden inf-loop prevention during class
37942	comparison using the new priv::mark/unmark_as_being_compared()
37943	functions.  Now comparison of a class really compares member
37944	functions again.  And it is *slooow*.  I should probably change
37945	this to compare only virtual member functions.  But at least this
37946	should be correct and robust for now.
37947	* tests/data/test-diff-filter/test0-report.txt: Adjust.
37948	* test01-report.txt: Adjust.
37949
379502014-04-11  Dodji Seketeli <dodji@redhat.com>
37951
37952	Remove the parent member of the diff node
37953	* include/abg-comparison.h (diff::parent_): Remove.
37954	(diff::diff): Adjust.
37955	(diff::{get, set}_parent): Remove.
37956	* src/abg-comp-filter.cc (harmless_filter::visit): Remove category
37957	propagation to the parent.
37958
379592014-04-11  Dodji Seketeli <dodji@redhat.com>
37960
37961	Update the decl_base copy constructor for forgotten members
37962	* src/abg-ir.cc (decl_base::decl_base): Copy forgotten decl_base
37963	members hashing_started_, qualified_parent_name_, qualified_name_.
37964
379652014-04-11  Dodji Seketeli <dodji@redhat.com>
37966
37967	Comment fix in filtering code
37968	* src/abg-comp-filter.cc (harmful_filter::visit): Fix comment
37969	typos.
37970
379712014-04-11  Dodji Seketeli <dodji@redhat.com>
37972
37973	Put data member type size changes in SIZE_OR_OFFSET_CHANGE_CATEGORY
37974	* src/abg-comp-filter.cc (type_size_changed): New overload for
37975	type_base_sptr.
37976	(data_member_type_size_changed): New predicate.
37977	(harmful_filter::visit): Use the new predicate to categorize data
37978	member type size changes into the SIZE_OR_OFFSET_CHANGE_CATEGORY.
37979
379802014-04-11  Dodji Seketeli <dodji@redhat.com>
37981
37982	Represent a removed+added data member at a given offset as changed
37983	* include/abg-fwd.h (get_data_member_offset): Declare new overload for
37984	decl_base_sptr.
37985	* include/abg-comparison.h (unsigned_decl_base_sptr_map)
37986	(unsigned_changed_type_or_decl_map): New typedefs.
37987	* src/abg-ir.cc (get_data_member_offset): Define new overload for decl_base_sptr.
37988	* src/abg-comparison.cc (diff_kind::subtype_change_kind): New
37989	enumerator for a change about a type or sub-type of a member of a
37990	structure/enum.
37991	(report_mem_header): Handle the new enumerator above.
37992	(class_diff::priv::{deleted_dm_by_offset_, inserted_dm_by_offset_,
37993	changed_dm_}): New data members.
37994	(class_diff::priv::subtype_changed_dm_): Renamed
37995	class_diff::priv::changed_data_members_ into this.
37996	(class_diff::priv::subtype_changed_dm): Renamed
37997	class_diff::priv::data_member_has_changed into this. Adjust.
37998	(class_diff::count_filtered_subtype_changed_dm): Renamed
37999	count_filtered_data_members into this.  Adjust.
38000	(class_diff::priv::count_filtered_changed_dm): New member
38001	function.
38002	(class_diff::lookup_tables_empty): Adjust.
38003	(class_diff::ensure_lookup_tables_populated): Adjust.  Detect when
38004	a data member is deleted and added back to offset N, and be
38005	prepared to present that as a change of data member at offset N.
38006	(class_diff::report): Adjust.  Report data members of a given
38007	offset that have changed.
38008	* tests/data/test-diff-dwarf/test6-report.txt: New reference
38009	report for new test input.
38010	* tests/data/test-diff-dwarf/test6-v0.cc: Source code for new test
38011	input binary.
38012	* tests/data/test-diff-dwarf/test6-v0.o: New test input binary.
38013	* tests/data/test-diff-dwarf/test6-v1.cc: Source code for new test
38014	input binary.
38015	* tests/data/test-diff-dwarf/test6-v1.o: New test input binary.
38016	* tests/test-diff-dwarf.cc: Adjust to include the new test inputs above.
38017
380182014-04-11  Dodji Seketeli <dodji@redhat.com>
38019
38020	Unmark class_diff node as being traversed once traversal is finished
38021	* src/abg-comparison.cc (class_diff:traverse): Unmark class_diff
38022	node as being traversed once traversal is finished
38023
380242014-04-11  Dodji Seketeli <dodji@redhat.com>
38025
38026	Do not use the parent diff node link for category propagation
38027	* src/abg-comparison.cc (class_diff::traverse): Use the new
38028	TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY macro to propagate
38029	categorization from the children diff nodes to the current one for
38030	bases, data members and member functions.
38031	(scope_diff::traverse): Likewise, use the
38032	TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY to propagate
38033	categorization from the children diff nodes to the current one.
38034
380352014-04-11  Dodji Seketeli <dodji@redhat.com>
38036
38037	Ensure that each diff node is traversed just once
38038	* include/abg-comparison.cc (pointer_map): New typedef.
38039	(diff_context::{has_diff_for}): New overload for diff*.
38040	(diff_context::{diff_has_been_traversed, mark_diff_as_traversed,
38041	forget_traversed_diffs}): Declare new methods.
38042	* src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE)
38043	(ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Define new macros.
38044	(diff_context::priv::traversed_diff_nodes_): New data member.
38045	(diff_context::has_diff_for): New overload for diff*
38046	(diff_context::{diff_has_been_traversed, mark_diff_as_traversed,
38047	forget_traversed_diffs}): Define new member functions.
38048	(diff_context::maybe_apply_filters): Forget the traversed diffs
38049	before applying a filter.
38050	({distinct_diff, var_diff, pointer_diff, reference_diff,
38051	qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff,
38052	function_decl_diff, type_decl_diff, typedef_diff,
38053	translation_unit_diff}::traverse): Ensure that the diff node is
38054	traversed only once.
38055
380562014-04-11  Dodji Seketeli <dodji@redhat.com>
38057
38058	Factorize diff sub-tree traversal and category propagation code
38059	* src/abg-comparison.cc
38060	(TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY)
38061	(TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macros.
38062	({distinct_diff, pointer_diff, reference_diff,
38063	qualified_type_diff, enum_diff, base_diff, function_decl_diff,
38064	typedef_diff}::traverse): Use the new macro above in lieu of the
38065	duplicated sub-tree traversal code in there.
38066
380672014-04-11  Dodji Seketeli <dodji@redhat.com>
38068
38069	Style fixes in the diff nodes traversing code
38070	* src/abg-comparison.cc (TRY_{PRE, PRO}_VISIT, TRY_{PRE,
38071	PRO}_VISIT_CLASS_DIFF, ): Add a white space.
38072
380732014-04-10  Dodji Seketeli <dodji@redhat.com>
38074
38075	Supporting reporting data member name change
38076	* src/abg-comparison.cc (represent): Support reporting data member
38077	name change.
38078
380792014-04-10  Dodji Seketeli <dodji@redhat.com>
38080
38081	Consider added/removed data members as changing size or offset
38082	* src/abg-comp-filter.cc (data_member_added_or_removed): New
38083	static function.
38084	(harmless_filter::visit): Re-organize logic.  Categorize data
38085	member addition/removal into SIZE_OR_OFFSET_CHANGE_CATEGORY.
38086
380872014-04-10  Dodji Seketeli <dodji@redhat.com>
38088
38089	Add missing comment
38090	* src/abg-ir.cc (non_type_tparameter::get_hash): Add missing api doc.
38091
380922014-04-09  Dodji Seketeli <dodji@redhat.com>
38093
38094	Fix and add missing hashing through the virtual decl_base::get_hash
38095	* include/abg-ir.h (struct {scope_decl, non_type_tparameter,
38096	type_composition, class_decl}::hash): Declare hashers.
38097	({scope_decl, var_decl, non_type_tparameter, type_composition,
38098	class_decl}::get_hash): Provide new overloads of the get_hash.
38099	* src/abg-hash.cc ({type_decl, scope_type_decl,
38100	qualified_type_def, pointer_type_def, reference_type_def,
38101	enum_type_decl, typedef_decl, var_decl,
38102	function_decl}::hash::operator()): If the hash is being
38103	calculated, do not use the not-yet fully calculated hash value.
38104	Rather, calculate the hash, cache it and return the value.
38105	({class_decl, non_type_tparameter}::hash::operator()): Moved the
38106	{class_decl, non_type_tparameter}::hash declaration out of here
38107	and stick it in include/abg-ir.h.  Keep the definition of the
38108	hashing operators here though.
38109	(type_composition::hash::operator()): New operator definition.
38110	* src/abg-ir.cc ({scope_decl, var_decl, class_decl,
38111	non_type_tparameter, type_composition}::get_hash): Define new
38112	virtual overload.
38113
381142014-04-08  Dodji Seketeli <dodji@redhat.com>
38115
38116	Fix mis-hashing of base specifiers and function_decl during comparison
38117	* include/abg-ir.h (function_decl::get_hash): Declare new virtual
38118	overload.
38119	* src/abg-hash.cc (class_decl::base_spec::hash::operator()):
38120	Properly hash the base specifier so that it doesn't collide with
38121	hashing a class.
38122	* src/abg-ir.cc (decl_base::get_hash): Abort if we detect a
38123	missing overload for this;
38124	(function_decl::get_hash() const): Implement this missing
38125	overload, allowing using the virtual decl_base::get_hash for
38126	function_decl.
38127
381282014-04-08  Dodji Seketeli <dodji@redhat.com>
38129
38130	Properly place opening quote and add missing closing quote in report
38131	* src/abg-comparison.cc (corpus_diff::report): Move the [{A,D}]
38132	marker before the opening quote.  And add a closing quote.
38133	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
38134	* tests/data/test-diff-filter/test0-report.txt: Adjust.
38135	* tests/data/test-diff-filter/test01-report.txt: Adjust.
38136	* tests/data/test-diff-filter/test2-report.txt: Adjust.
38137
381382014-04-08  Dodji Seketeli <dodji@redhat.com>
38139
38140	Drive-by indentation fix
38141	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Fix
38142	indentation.
38143
381442014-04-08  Dodji Seketeli <dodji@redhat.com>
38145
38146	Drop ABI artifacts that are local to a function
38147	* src/abg-dwarf-reader.cc (get_scope_for_die): If the parent die
38148	is  DW_TAG_subprogram then just drop the whole thing on the floor.
38149	(build_ir_node_from_die): When the scope is NULL, just drop the
38150	whole thing on the floor.
38151
381522014-04-08  Dodji Seketeli <dodji@redhat.com>
38153
38154	Fix the static data member recognition hack
38155	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
38156	When trying to recognize the global var_decl as being definition
38157	variables for static data members, lookup the declaration for the
38158	data member in the relevant class.  If found, then just flag the
38159	var_decl for the data member as being static; no need to add a
38160	var_decl as data member in that case, that would duplicate the
38161	data member.
38162
381632014-04-08  Dodji Seketeli <dodji@redhat.com>
38164
38165	Fix looking up a node inside a class
38166	* src/abg-ir.cc (lookup_node_in_scope): Do not forget to actually
38167	look at the class members.  Sigh.
38168
381692014-04-07  Dodji Seketeli <dodji@redhat.com>
38170
38171	Work around old dwarf producers forgetting mangled names for functions
38172	* src/abg-comparison.cc
38173	(corpus_diff::priv::ensure_lookup_tables_populated): If lookup
38174	using mangled name for a deleted function yields nada, try the
38175	lookup with the pretty representation for the function.
38176
381772014-04-07  Dodji Seketeli <dodji@redhat.com>
38178
38179	Make type_base::get_{size,alignment}_in_bits virtual
38180	* include/abg-ir.h (type_base::get_{size,alignment}_in_bits): Make
38181	this virtual.
38182	(typedef_decl::get_{size,alignment}_in_bits): Add new member
38183	functions.  Get the size,alignment from the underlying type and
38184	update the current size/alignment if they differ.  Keep in mind
38185	that the size of an underlying class_decl can change over its
38186	lifetime, given how the dwarf reader reads the type information,
38187	i.e, there can be a DIE for a class type with no size information
38188	that will lead to the creation of a class_decl with size zero.
38189	Later during the DWARF reading process, another DIE will
38190	supplement the type information, adding size information to that
38191	class_decl.  In between, a typedef_decl might have been created
38192	with the first version of the class_decl that has a zero size.  I
38193	guess this should be extended to the other type constructs that
38194	have an underlying type (qualified types, references and pointers).
38195
381962014-04-07  Dodji Seketeli <dodji@redhat.com>
38197
38198	Look through typedefs when setting SIZE_OR_OFFSET_CHANGE_CATEGORY
38199	* include/abg-fwd.h (is_class_type): Declare new functions.
38200	* src/abg-comp-filter.cc (harmful_filter::visit): Use the above to
38201	convert a type into a class.
38202	* src/abg-ir.cc (is_class_type): Define the new function.
38203
382042014-04-06  Dodji Seketeli <dodji@redhat.com>
38205
38206	Add a new DECL_NAME_CHANGE_CATEGORY change category
38207	* include/abg-comparison.h (enum
38208	diff_category::DECL_NAME_CHANGE_CATEGORY): New enumerator.
38209	* src/abg-comparison.cc (report_name_size_and_alignment_changes)
38210	({enum, typedef}_diff::report): Adjust to avoid emitting name
38211	change report if the DECL_NAME_CHANGE_CATEGORY category of change
38212	is currently disallowed.
38213	* abg-comp-filter.cc (decl_name_changed): New static function.
38214	(harmless_filter::visit): Detect that the decl name changed and
38215	put the current diff node (and its parents) into the
38216	DECL_NAME_CHANGE_CATEGORY category.
38217	* tools/bidiff.cc (set_diff_context_from_opts): Set the new
38218	DECL_NAME_CHANGE_CATEGORY category into the harmless_changes group
38219	of categories.
38220	* tests/data/test-diff-filter/test6-report.txt: New test input file.
38221	* tests/data/test-diff-filter/test6-v0.cc: Likewise.
38222	* tests/data/test-diff-filter/test6-v0.o: Likewise.
38223	* tests/data/test-diff-filter/test6-v1.cc: Likewise.
38224	* tests/data/test-diff-filter/test6-v1.o: Likewise.
38225	* tests/data/test-diff-filter/test7-report.txt: Likewise.
38226	* tests/data/test-diff-filter/test7-v0.cc: Likewise.
38227	* tests/data/test-diff-filter/test7-v0.o: Likewise.
38228	* tests/data/test-diff-filter/test7-v1.cc: Likewise.
38229	* tests/data/test-diff-filter/test7-v1.o: Likewise.
38230	* tests/test-diff-filter.cc: Take the new inputs above to run new tests.
38231	* tests/Makefile.am: Add the new files above to the distribution.
38232
382332014-04-05  Dodji Seketeli <dodji@redhat.com>
38234
38235	Emit qualified name for typedefs
38236	* src/abg-comparison.cc (typedef_diff::report): Emit qualified
38237	names for typedefs in diff reports about typedef name changes.
38238
382392014-04-05  Dodji Seketeli <dodji@redhat.com>
38240
38241	Fix indentation in distinct type diff report
38242	* src/abg-comparison.cc (distinct_diff::report): Do not forget to
38243	change line.
38244
382452014-04-05  Dodji Seketeli <dodji@redhat.com>
38246
38247	Really compare return types for function types
38248	* src/abg-ir.cc (compare_function_types): Compare return types,
38249	unless this is a method and the return type is the same type as
38250	the containing class type.
38251	* tests/data/test-diff-dwarf/test5-report.txt: Reference report
38252	for the comparison of the two input binaries below.
38253	* tests/data/test-diff-dwarf/test5-v0.cc: Source code for the
38254	input binary below.
38255	* tests/data/test-diff-dwarf/test5-v0.o: Test input binary.
38256	* tests/data/test-diff-dwarf/test5-v1.cc: Source code for the
38257	input binary below.
38258	* tests/data/test-diff-dwarf/test5-v1.o: Test input binary.
38259
382602014-04-05  Dodji Seketeli <dodji@redhat.com>
38261
38262	Add missing tests for previous commits
38263	* tests/data/test-diff-dwarf/test4-report.txt: Adjust.
38264	* tests/test-diff-dwarf.cc: Run tests for
38265	data/test-diff-dwarf/test3-report.txt" and
38266	data/test-diff-dwarf/test4-report.txt.
38267
382682014-04-05  Dodji Seketeli <dodji@redhat.com>
38269
38270	Categorize through compatible distinct type diffs
38271	* src/abg-comparison.cc (report_size_and_alignment_changes): Split
38272	this static function out of ...
38273	(report_name_size_and_alignment_changes): ... this one.
38274	(distinct_diff::report): If the typedef-stripped variants of the
38275	diff subjects are of the same kind, display their diff.
38276	Otherwise, tell explicitly is the distinct type diff involves a
38277	type size change.
38278	(distinct_diff::traverse): If the typedef-stripped variants of the
38279	diff subjects are of the same kind, traverse that underlying diff
38280	sub-tree and propagate the categorizing possibly resulting from
38281	that traversal.
38282	* tests/data/test-diff-dwarf/test4-v0.o: New test input binary.
38283	* tests/data/test-diff-dwarf/test4-v0.cc: Source code for the
38284	input binary above.
38285	* tests/data/test-diff-dwarf/test4-v1.o: New test input binary.
38286	* tests/data/test-diff-dwarf/test4-v1.cc: Source code for the
38287	input binary above.
38288	* tests/data/test-diff-dwarf/test4-report.txt: Reference report
38289	for the difference between the two binaries above.
38290	* tests/data/test-diff-filter/test5-v0.o: New test input binary.
38291	* tests/data/test-diff-filter/test5-v0.cc: Source code for the
38292	input binary above.
38293	* tests/data/test-diff-filter/test5-v1.o: New test input binary.
38294	* tests/data/test-diff-filter/test5-v1.cc: Source code for the
38295	input binary above.
38296	* tests/data/test-diff-filter/test5-report.txt: Reference report
38297	for the difference between the two binaries above.
38298	* tests/test-diff-filter.cc: Adjust to produce a filtered diff for
38299	the two input binaries above.
38300	* tests/Makefile.am: Adjust to add missing test files to the
38301	distribution.
38302
383032014-04-04  Dodji Seketeli <dodji@redhat.com>
38304
38305	Slight run-by fixes
38306	* src/abg-comparison.cc
38307	(corpus_diff::priv::apply_filters_and_compute_diff_stats)
38308	(corpus_diff::report): Use compute_diff for types which it has an
38309	overload rather than going through the compute_diff_for_decls that
38310	would use dynamic casting.
38311
383122014-04-04  Dodji Seketeli <dodji@redhat.com>
38313
38314	Do not hook type diff nodes to a parent
38315	* abg/comparison.cc (var_diff::var_diff): Do not set parent node
38316	for the type diff of the var_diff.
38317	(var_diff::traverse): Handle category propagation from the
38318	type diff node to the var_diff node.
38319	(pointer_diff::underlying_type_diff)
38320	(reference_diff::underlying_type_diff)
38321	(qualified_type_diff::underlying_type_diff, enum_diff::enum_diff)
38322	(base_diff::get_underlying_class_diff)
38323	(typedef_diff::underlying_type_diff): Do not set the parent node
38324	here.
38325	({pointer_diff, reference_diff, qualified_type, enum_diff,
38326	class_diff, base_diff, function_decl_diff,
38327	typedef_diff}::traverse): Handle category propagation here.
38328	* tests/data/test-diff-filter/test4-v0.o: New input binary.
38329	* tests/data/test-diff-filter/test4-v0.cc: Source code for the
38330	input binary above.
38331	* tests/data/test-diff-filter/test4-v1.o: New input binary.
38332	* tests/data/test-diff-filter/test4-v1.cc: Source code for the
38333	input binary above.
38334	* tests/data/test-diff-filter/test4-report.txt: Reference diff
38335	report for the input binaries above.
38336	* tests/test-diff-filter.cc:: Run bidiff --no-harmless on the
38337	binaries above.
38338
383392014-04-04  Dodji Seketeli <dodji@redhat.com>
38340
38341	Fix off-by one comparison bug in comparing function parameters
38342	* src/abg-comparison.cc
38343	(function_decl_diff::ensure_lookup_tables_populated): Function
38344	parameters that are diff'ed start at the first non-implicit
38345	parameter, not at the first parameter.  Oops.
38346	* tests/data/test-diff-dwarf/test3-v0.o: New test input binary.
38347	* tests/data/test-diff-dwarf/test3-v0.cc: Source code for the
38348	binary above.
38349	* tests/data/test-diff-dwarf/test3-v1.o: New test input binary.
38350	* tests/data/test-diff-dwarf/test3-v1.cc: Source code for the
38351	binary above.
38352	* tests/data/test-diff-dwarf/test3-report.txt: Reference report
38353	for the diff of the new test inputs.
38354	* tests/test-diff-dwarf.cc: Use the test inputs above to run new
38355	tests.
38356
383572014-04-03  Dodji Seketeli <dodji@redhat.com>
38358
38359	Do not forget parm sub-type changes as opposed to parm changes
38360	* src/abg-comparison.cc
38361	(function_decl_diff::ensure_lookup_tables_populated): A parm
38362	change is valid only when the added parm has a different name from
38363	the removed parm.  Both have the same index, of course.  In that
38364	case, do not try to remove the corresponding parm sub-type change.
38365	* tests/data/test-bidiff/test-enum0-report.txt: Adjust.
38366	* tests/data/test-bidiff/test-enum1-report.txt: Adjust.
38367	* tests/data/test-bidiff/test-qual-type0-report.txt: Adjust.
38368	* tests/data/test-bidiff/test-struct0-report.txt: Adjust.
38369	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
38370	* tests/data/test-diff-dwarf/test1-report.txt: Adjust.
38371	* tests/data/test-diff-filter/test0-report.txt: Adjust.
38372	* tests/data/test-diff-filter/test01-report.txt: Adjust.
38373	* tests/data/test-diff-filter/test1-report.txt: Adjust.
38374	* tests/data/test-diff-filter/test2-report.txt: Adjust.
38375	* tests/data/test-diff-filter/test3-report.txt: Adjust.
38376
383772014-04-03  Dodji Seketeli <dodji@redhat.com>
38378
38379	Remove useless white space
38380	* src/abg-ir.cc (look_through_decl_only_class): Remove useless
38381	white space.
38382
383832014-04-02  Dodji Seketeli <dodji@redhat.com>
38384
38385	Use mangled name for decl comparison when it's present
38386	* src/abg-ir.cc (decl_base::operator==(const decl_base& other)
38387	const): Use the mangled name of the decl in priority.
38388	* src/abg-hash.cc (struct decl_base::hash::operator()): Likewise.
38389	* src/abg-comparison.cc (function_decl_diff::report): Do not
38390	report a function name change if it doesn't involve a mangled name
38391	change.  This might change when we start dealing with templates.
38392
383932014-04-02  Dodji Seketeli <dodji@redhat.com>
38394
38395	A change involving a decl-only class is not SIZE_OR_OFFSET_CHANGE_CATEGORY
38396	* src/abg-comp-filter.cc (harmful_filter::visit): If a size change
38397	involves a decl-only class, it certainly shouldn't trigger putting
38398	the sub-tree into the SIZE_OR_OFFSET_CHANGE_CATEGORY category.
38399
384002014-04-02  Dodji Seketeli <dodji@redhat.com>
38401
38402	Fix heuristics to detect function static-ness for DWARF < 3
38403	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Make
38404	the heuristics work for functions with no parameters.
38405
384062014-04-02  Dodji Seketeli <dodji@redhat.com>
38407
38408	Avoid emitting local filtered-out changes in more spots
38409	* src/abg-comparison.cc (maybe_report_diff_for_member): Take the
38410	diff_context in parameter.  Use that to check if local changes of
38411	category ACCESS_CHANGE_CATEGORY are filtered-out and do not report
38412	the change in that case.
38413	({var_diff, enum_diff, class_diff, base_diff,
38414	function_decl_diff}::report): Adjust.
38415
384162014-04-02  Dodji Seketeli <dodji@redhat.com>
38417
38418	Add a COMPATIBLE_TYPE_CHANGE_CATEGORY to bidiff --no-harmless
38419	* include/abg-comparison.h
38420	(diff_category::COMPATIBLE_TYPE_CHANGE_CATEGORY): New enumerator.
38421	(operator|=(diff_category&, diff_category)): New declaration.
38422	* include/abg-fwd.h (is_typedef, strip_typedef)
38423	(types_are_compatible): New declarations.
38424	* include/abg-ir.h (operator==(const decl_base_sptr, const
38425	decl_base_sptr)): Added the consts here.
38426	(operator==(const type_base_sptr, const type_base_sptr)): New
38427	declaration.
38428	* src/abg-comp-filter.cc (is_compatible_change): New static
38429	function.
38430	(harmless_filter::visit): Detect compatible changes and add the
38431	sub-tree into the new COMPATIBLE_TYPE_CHANGE_CATEGORY if
38432	applicable. Cleanup the logic.
38433	* src/abg-comparison.cc (operator|=(diff_category&,
38434	diff_category)): Define new function.
38435	(operator==(const decl_base_sptr l, const decl_base_sptr r)): Add
38436	consts.
38437	(operator==(const type_base_sptr l, const type_base_sptr r)):
38438	Define new operator.
38439	(is_typedef, strip_typedef, types_are_compatible): New function
38440	definitions.
38441	* tests/data/test-diff-filter/test3-report.txt: New test report
38442	reference.
38443	* tests/data/test-diff-filter/test3-v0.cc: Source code for new
38444	test input.
38445	* tests/data/test-diff-filter/test3-v0.o: New test input.
38446	* tests/data/test-diff-filter/test3-v1.cc: Source code for new
38447	test input.
38448	* tests/data/test-diff-filter/test3-v1.o: New test input.
38449	* tests/test-diff-filter.cc: Adjust to consume the new tests
38450	inputs above.
38451	* tools/bidiff.cc: Add the new COMPATIBLE_TYPE_CHANGE_CATEGORY
38452	into the --harmless group.
38453
384542014-04-01  Dodji Seketeli <dodji@redhat.com>
38455
38456	Don't emit local filtered-out changes
38457	* src/abg-comparison.cc (represent): For var_decl, do not emit
38458	filtered-out local size/offset/access changes.
38459	(report_name_size_and_alignment_changes): Take the diff context.
38460	Do not report filtered-out local size/offset changes.
38461	({var_diff, enum_diff, class_diff, type_decl_diff}::report):
38462	Adjust.
38463	* test0-report.txt: Adjust.
38464	* test01-report.txt: New reference report for the same inputs
38465	test0-v{1,0}.o, but called without the --no-harmless command line.
38466	* tests/data/test-diff-filter/test2-v0.cc: Source code for new test input.
38467	* tests/data/test-diff-filter/test2-v1.cc: Likewise.
38468	* tests/data/test-diff-filter/test2-v0.o: New test input.
38469	* tests/data/test-diff-filter/test2-v1.o: Likewise.
38470	* tests/data/test-diff-filter/test2-report.txt: Reference report
38471	for new test input.
38472	* tests/test-diff-filter.cc: Consume the test inputs above.
38473	* tests/Makefile.am: Add the new test inputs above to the
38474	distribution.
38475
384762014-04-01  Dodji Seketeli <dodji@redhat.com>
38477
38478	Compact & intuitive reporting for changed function parameters
38479	* include/abg-comparison.h (unsigned_changed_parm_map)
38480	(unsigned_parm_map): New typedefs.
38481	* src/abg-comparison.cc
38482	(function_decl_diff::subtype_changed_parms): Renamed this from
38483	changed_parms.
38484	(function_decl_diff::priv::subtype_changed_parms_}): Renamed this
38485	from changed_parms_;
38486	(function_decl_diff::priv::{deleted_parms_by_id_,
38487	added_parms_by_id_, changed_parms_by_id_}): New members.
38488	(function_decl_diff::ensure_lookup_tables_populated): Update the
38489	new priv::changed_parms_by_id_ member to contain the parameters
38490	that got changed, as opposed to the subtype_changed_parms_ member
38491	that contain parameters that got a sub-type change.  The other
38492	priv::*_by_id_ members are helpers for this.  Update them too.
38493	(function_decl_diff::subtype_changed_parms): Renamed this from
38494	::changed_parms.
38495	(function_decl_diff::report): Report separately about parameters
38496	having a sub-type change, and parameters that got changed.  Note
38497	that in both cases, the change is necessarily to a compatible
38498	type.
38499	* data/test-diff-dwarf/test2-v0.cc: New test file.
38500	* data/test-diff-dwarf/test2-v0.o: Likewise.
38501	* data/test-diff-dwarf/test2-v1.cc: Likewise.
38502	* data/test-diff-dwarf/test2-v1.o: Likewise.
38503	* data/test-diff-dwarf/test2-report.txt: Likewise.
38504	* tests/Makefile.am: Add the new test files above to the
38505	distribution.
38506	* tests/test-diff-dwarf.cc: Consume the input files above to
38507	actually perform a regression test.
38508
385092014-03-31  Dodji Seketeli <dodji@redhat.com>
38510
38511	Fix thinko class_diff traversing.
38512	* src/abg-comparison.cc (class_diff::traverse): Fix thinking in
38513	introduced by commit "6709478 Fix infinite loop when traversing
38514	classes and their members"
38515	* tests/data/test-diff-filter/test1-v{0,1}.o: New test binary input files.
38516	* tests/data/test-diff-filter/test1-v{0,1}.cc: Source code for the
38517	above.
38518	* tests/data/test-diff-filter/test1-report.txt: Reference report
38519	for the diffing of the two binary input files above.
38520	* tests/test-diff-filter.cc: Make the test run on the new input above.
38521	* tests/Makefile.am: Add the new material to the distribution.
38522
385232014-03-31  Dodji Seketeli <dodji@redhat.com>
38524
38525	Add forgotten test output adjustment
38526	* tests/data/test-diff-filter/test0-report.txt: Adjust for the
38527	commit "a8d5284 Fix diff report indentation issue"
38528	* tests/data/test-diff-dwarf/test{0,1}-report.txt: Likewise.
38529
385302014-03-31  Dodji Seketeli <dodji@redhat.com>
38531
38532	Add forgotten source file for binary test input
38533	* tests/data/test-diff-dwarf/test1-v0.cc: New file.
38534	* tests/data/test-diff-dwarf/test1-v1.cc: Likewise.
38535
385362014-03-31  Dodji Seketeli <dodji@redhat.com>
38537
38538	Fix diff report indentation issue
38539	* abg-comparison.cc (corpus_diff::report): Indent the details of
38540	function changes.
38541
385422014-03-31  Dodji Seketeli <dodji@redhat.com>
38543
38544	Fix infinite loop when traversing classes and their members
38545	* src/abg-comparison.cc (TRY_{PRE,POST}_VISIT_CLASS_DIFF): New
38546	macros.
38547	(class_diff::priv::traversing_): New flag.
38548	(class_diff::priv::priv): New constructor to initialize the new
38549	flag above.
38550	(class_diff::traversing): Do not traverse the diff again if it's
38551	being traversed already.
38552
385532014-03-31  Dodji Seketeli <dodji@redhat.com>
38554
38555	Fix access_changed and data_member_offset_changed predicates
38556	* src/abg-comp-filter.cc (access_changed)
38557	(data_member_offset_changed): Fix detection of membership.
38558
385592014-03-29  Dodji Seketeli <dodji@redhat.com>
38560
38561	Take filtering in account in diff stats & better categorizing
38562	* include/abg-comparison.h
38563	(diff_category::ACCESS_CHANGE_CATEGORY): Renamed
38564	ACCESS_CHANGED_CATEGORY into this.
38565	(diff_category::SIZE_OR_OFFSET_CHANGE_CATEGORY): Renamed
38566	SIZE_CHANGED_CATEGORY into this.  Changed its semantics to
38567	incorporate offset changes as well.
38568	* src/abg-comparison.cc (struct noop_deleter): Move this up.
38569	(represent): Do not report filtered out data members.
38570	(report_mem_header): Add a new num_filtered parameter to take
38571	filtered-out members in account in members report headers.
38572	Adjust.
38573	(class_diff::priv::{count_filtered_bases,
38574	count_filtered_data_members, count_filtered_member_functions}):
38575	New member functions.  When a member is filtered, do not report
38576	it all.
38577	({enum_diff, class_diff}::report): Adjust.  Take filtered members
38578	into account in headers.
38579	(corpus_diff::priv::apply_filters_and_compute_diff_stats): New
38580	member function.
38581	(corpus_diff::priv::emit_diff_stats): Renamed
38582	emit_corpus_diff_stats into this.  Change it to take the stats in
38583	parameter.
38584	(corpus_diff::report): Adjust to re-use the above.  Filter
38585	varibles as well.  Take the filtered functions & variables in
38586	account in the stats.  Do not report filtered-out functions &
38587	variables at all.
38588	* src/abg-comp-filter.cc (type_size_changed, access_changed)
38589	(data_member_offset_changed): New predicates.
38590	({harmless, harmful}_filter::visit): Adjust to use the new
38591	predicates above.  Update the harmful variant for the new
38592	SIZE_OR_OFFSET_CHANGE_CATEGORY category.
38593	* tools/bidiff.cc (set_diff_context_from_opts): Adjust for the
38594	categories name changes.
38595	* tests/data/test-diff-filter/test0-report.txt: New test input.
38596	* tests/data/test-diff-filter/test0-v0.cc: Likewise.
38597	* tests/data/test-diff-filter/test0-v0.o: Likewise.
38598	* tests/data/test-diff-filter/test0-v1.cc: Likewise.
38599	* tests/data/test-diff-filter/test0-v1.o: Likewise.
38600	* tests/test-diff-filter.cc: New test harness.
38601	* tests/Makefile.am: Add the new test files above to the
38602	distribution.
38603
386042014-03-29  Dodji Seketeli <dodji@redhat.com>
38605
38606	Fix var_diff length determination
38607	* src/abg-comparison.cc (var_diff::length):  Just compare the two
38608	diff subjects.
38609
386102014-03-29  Dodji Seketeli <dodji@redhat.com>
38611
38612	Fix typos in the test-diff-dwarf.cc source code
38613	* tests/test-diff-dwarf.cc: Fix various typos.
38614
386152014-03-27  Dodji Seketeli <dodji@redhat.com>
38616
38617	Initial implementation of diff tree node filtering
38618	* include/abg-comp-filter.h: New file.
38619	* include/Makefile.am: Add the new include/abg-comp-filter.h to
38620	the source distribution.
38621	* include/abg-comparison.h (enum visiting_kind, diff_category): New enums.
38622	(operator|): Declare new operator declaration for the new
38623	visiting_kind enum.
38624	(operator{|,^,&,~}): Declare new operator decl for the new
38625	diff_category enum.
38626	(diff_context::{get_allowed_category, set_allowed_category,
38627	switch_categories_on, switch_categories_off, diff_filters,
38628	add_diff_filter, maybe_apply_filters}): Declare new member functions.
38629	(diff::{parent_, category_}): New members.
38630	(diff::diff): Adjust.
38631	(diff::{get_parent, set_parent, get_category, add_to_category,
38632	is_filtered_out, to_be_reported}):  New members.
38633	(diff_node_visitor::{get_visiting_kind, set_visiting_kind}): New
38634	members.
38635	(diff_node_visitor::visit): Add a new flag to saying if the
38636	visitor is being called in post or pre children traversing mode.
38637	* src/abg-comparison.cc (operator|): Declare new operator
38638	declaration for the new visiting_kind enum.
38639	(operator{|,^,&,~}): Declare new operator decl for the new
38640	diff_category enum.
38641	(diff_context::priv::{allowed_category_, filters_}): New members.
38642	(diff_context::diff_context): Add all known filters.
38643	(diff_context::{get_allowed_category, set_allowed_category,
38644	switch_categories_on, switch_categories_off, diff_filters,
38645	add_diff_filter, maybe_apply_filters}): Define new member
38646	functions.
38647	(diff::{is_filtered_out, to_be_reported}): Define new members.
38648	(*::report): Use the new diff::to_be_reported function.
38649	(*::traverse): Adjust for pre/post visiting.
38650	(var_diff::var_diff): Chain the type diff node to its parent.
38651	({pointer_diff, reference_diff, qualified_type_diff,
38652	typedef_diff}::underlying_type_diff): Chain the underlying type
38653	diff node to its parent.
38654	(enum_diff::enum_diff): Likewise.
38655	(base_diff::underlying_class_diff): Likewise.
38656	({class_diff, corpus_diff}::report): Do not report changed
38657	(member) functions that have been filtered out.  Rather report
38658	that they have been filtered out.
38659	({function_decl_diff, class_diff}::traverse): Chain underlying
38660	type diff nodes to their parent.
38661	(diff_node_visitor::visit): Add a new flag to saying if the
38662	visitor is being called in post or pre children traversing mode.
38663	Make sure to call the default diff::visit overload.
38664	* src/abg-comp-filter.cc: New file.
38665	* src/Makefile.am: Add the new abg-comp-filter.cc to the source
38666	distribution.
38667	* tools/bidiff.cc (options::show_harm{ful,less}_changes): New
38668	members.
38669	(display_usage): Add usage strings for --no-harmless and
38670	--no-harmful options.
38671	(parse_command_line): Parse --no-harmless and --no-harmful command
38672	line options.
38673	(set_diff_context_from_opts): Populate the diff context
38674	accordingly.
38675
386762014-03-26  Dodji Seketeli <dodji@redhat.com>
38677
38678	Add missing headers double inclusion guards
38679	* include/abg-comparison.h: Add a missing double inclusion guard.
38680	* include/abg-diff-utils.h: Likewise.
38681
386822014-03-26  Dodji Seketeli <dodji@redhat.com>
38683
38684	Add a missing apostrophe to access reporting
38685	* src/abg-comparison.cc (represent): For member var_decls, add a
38686	missing apostrophe after the access.
38687	* tests/data/test-diff-dwarf/test0-report.txt: Update test report.
38688
386892014-03-21  Dodji Seketeli <dodji@redhat.com>
38690
38691	Fix diff emptiness detection for function_decl_diff nodes
38692	* src/abg-comparison.cc (function_decl_diff::length): Just compare
38693	the two functions here, damit.
38694	* tests/data/test-diff-dwarf/test0-report.txt: Adjust.
38695
386962014-03-21  Dodji Seketeli <dodji@redhat.com>
38697
38698	Fixlets in the bidiff regression testing harness
38699	* tests/test-bidiff.cc (main): Fix a typo.  Fix the path to the
38700	output path.
38701
387022014-03-21  Dodji Seketeli <dodji@redhat.com>
38703
38704	Initial regression test for dwarf diffing
38705	* tests/test-diff-dwarf.cc: New dwarf diffing regression test
38706	harness.
38707	* tests/data/test-diff-dwarf/test0-report.txt: New test input.
38708	* tests/data/test-diff-dwarf/test0-v0.cc: Likewise.
38709	* tests/data/test-diff-dwarf/test0-v0.o: Likewise.
38710	* tests/data/test-diff-dwarf/test0-v1.cc: Likewise.
38711	* tests/data/test-diff-dwarf/test0-v1.o: Likewise.
38712	* tests/Makefile.am: Add the new test inputs from
38713	tests/test-diff-dwarf.cc and tests/data/test-diff-dwarf/* to
38714	the build system.
38715
387162014-03-21  Dodji Seketeli <dodji@redhat.com>
38717
38718	Rename test-walker.cc into test-ir-walker.cc
38719	* tests/test-ir-walker.cc: Renamed test-walker.cc into this.
38720	* tests/Makefile.am: Adjust.  The generated binary is now testirwalker.
38721
387222014-03-21  Dodji Seketeli <dodji@redhat.com>
38723
38724	Initial diff tree traversal infrastructure
38725	* include/abg-comparison.h (struct diff_traversable_base, struct
38726	diff_node_visitor): New type.
38727	(class diff): Extends the new diff_traversable_base.
38728	({diff, distinct_diff, var_diff, pointer_diff, reference_diff,
38729	qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff,
38730	function_decl_diff, type_decl_diff, typedef_diff,
38731	translation_unit_diff, corpus_diff}::traverse): New methods.
38732	(function_decl_diff::return_type_diff): New accessor.  Renamed
38733	return_diff into this.
38734	(translation_unit_diff::{first, second}_translation_unit): New
38735	accessors.
38736	(corpus_diff::{deleted, added, changed}_functions): New accessors.
38737	* src/abg-comparison.cc ({distinct_diff, var_diff,
38738	pointer_diff, reference_diff, qualified_type_diff, enum_diff,
38739	class_diff, base_diff, scope_diff, function_decl_diff,
38740	type_decl_diff, typedef_diff, translation_unit_diff,
38741	corpus_diff}::traverse): New function implementations.
38742	(maybe_report_diff_for_member): Renamed
38743	maybe_report_diff_for_class_members into this.
38744	(var_diff::report): Adjust.
38745	(struct translation_unit_diff::priv): New private type.
38746	(translation_unit_diff::translation_unit_diff): Instantiate the
38747	new priv_ member.
38748	(translation_unit_diff::{first,second}_translation_unit): New
38749	accessors.
38750	(corpus_diff::{deleted, added, changed}_functions): New function
38751	implementations.
38752	(diff_node_visitor::visit): New function implementations.
38753
387542014-03-19  Dodji Seketeli <dodji@redhat.com>
38755
38756	Make tree walking preemptive
38757	* include/abg-traverse.h (traversable_base::traversable): Change
38758	the signature of this to return a boolean.
38759	* include/abg-ir.h (ir_traversable_base::traverse): Change the
38760	signature of this to return a boolean.
38761	(*::traverse): Adjust.
38762	(ir_node_visitor::visit): Change the signature of this to return a
38763	boolean.
38764	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Adjust.
38765	* src/abg-ir.cc (::traverse): Adjust.
38766	* tests/test-walker.cc (name_printing_visitor::visit): Adjust.
38767
387682014-03-26  Jonathan Wakely <jwakely@redhat.com>
38769
38770	Fix comment typos
38771	* include/abg-diff-utils.h (compute_diff): Fix typo in apidoc
38772	comment.
38773
387742014-03-24  Dodji Seketeli <dodji@redhat.com>
38775
38776	Follow DW_AT_abstract_origin and add missing mangled name
38777	* src/abg-dwarf-reader.cc (build_function_decl): Change signature
38778	to take function_decl to which one shall add properties that got
38779	added by subsequent DIEs later.
38780	(build_class_type_and_add_to_ir): Adjust.
38781	(build_function_decl): Allow adding new properties to an existing
38782	function_decl.  Add the mangled name in particular.
38783	* tests/data/test-read-dwarf/test1.abi: Update test.
38784
387852014-03-20  Dodji Seketeli <dodji@redhat.com>
38786
38787	Fix destructor naming.
38788	* src/abg-ir.cc (function_decl::get_pretty_representation): In
38789	DWARF at least, the destructor function name already contains the
38790	'~'.  No need to add it.
38791
387922014-03-20  Dodji Seketeli <dodji@redhat.com>
38793
38794	Better static function determination heuristic
38795	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Better
38796	heuristic.
38797
387982014-03-20  Dodji Seketeli <dodji@redhat.com>
38799
38800	Dynamically wire class_decl::base_spec hashing
38801	* include/abg-ir.h (decl_base::get_hash): Make this virtual.
38802	(class_decl::base_spec::get_hash): Declare a new virtual overload.
38803	* src/abg-ir.cc (class_decl::base_spec::get_hash): Define.
38804
388052014-03-20  Dodji Seketeli <dodji@redhat.com>
38806
38807	Slight indentation fix in the diff report
38808	* src/abg-comparison.cc (class_diff::report): Indentation fix for
38809	member function changes report.
38810
388112014-03-20  Dodji Seketeli <dodji@redhat.com>
38812
38813	Get rid of class_decl::member_function
38814	* include/abg-fwd.h (is_member_function)
38815	(get_member_function_is_{ctor,dtor,const})
38816	(get_member_function_vtable_offset): New function declarations.
38817	* include/abg-ir.h (class_decl::member_function): Remove.
38818	(class_decl::member_functions): Adjust.  This is now just a vector
38819	of method_decl_sptr.
38820	(class_decl::add_member_function): Remove the overload taking
38821	class_decl::member_function.  Adjust the other overload to take a
38822	method_decl_sptr.
38823	(class mem_fn_context_rel): New class.
38824	(class_decl::method_decl::set_scope): New virtual overload.
38825	(class_decl::member_function): Remove.
38826	(operator==): Remove the overload taking a
38827	class_decl::member_function.
38828	(class_decl::member_function::hash): Remove.
38829	(ir_node_visitor::visit): Remove the overload taking a
38830	class_decl::member_function.
38831	* include/abg-comparison.h (changed_member_function_sptr)
38832	(string_member_function_sptr_map): Adjust.
38833	* src/abg-comparison.cc (represent): Adjust the overload taking a
38834	class_decl::member_function to take a class_decl::method_decl.
38835	(class_diff::{report, ensure_lookup_tables_populated}): Adjust.
38836	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the
38837	overload taking a class_decl::member_function.
38838	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
38839	Adjust.
38840	* src/abg-hash.cc (decl_base::hash::operator()): Use the fully
38841	qualified name of the decl in the hash, to increase the likelihood
38842	of avoiding hash collisions.
38843	(method_type::hash::operator()): Likewise.
38844	(function_decl::hash::operator()): Take member functions in
38845	account.
38846	(class_decl::member_function::hash::operator()): Remove.
38847	(class_decl::hash::operator()): Adjust.
38848	(type_base::dynamic_hash::operator()): Adjust.
38849	* src/abg-ir.cc (is_member_function)
38850	(get_member_function_is_{ctor,dtor,const})
38851	(get_member_function_vtable_offset): New function definitions.
38852	(function_decl::get_pretty_representation): Adjust.
38853	(function_decl::operator): Take member functions in account here.
38854	(class_decl::insert_member_decl): Adjust.
38855	(mem_fn_context_rel::~mem_fn_context_rel): New definition.
38856	(class_decl::member_function::*): Remove.
38857	(class_decl::method_decl::set_scope): New definition.
38858	(class_decl::get_num_virtual_functions): Adjust.
38859	(class_decl::add_member_function): Remove overload taking a
38860	class_decl::member_function.  Define a new overload taking a
38861	class_decl::method_decl.
38862	(ir_node_visitor::visit): Remove the overload taking a
38863	class_decl::member_function.
38864	* src/abg-reader.cc (build_class_decl): Adjust.
38865	* src/abg-writer.cc (write_voffset, write_class_decl): Adjust.
38866
388672014-03-19  Dodji Seketeli <dodji@redhat.com>
38868
38869	Get rid of class_decl::data_member
38870	* include/abg-fwd.h (has_scope): Delete the overloads for
38871	type_base.
38872	(get_member_is_static): Add an overload for decl_base*.
38873	({is,get,set}_data_member,{get_,set}_data_member_is_laid_out)
38874	({get,set}_data_member_offset): New access declarations.
38875	* include/abg-ir.h (class context_rel): Move up.
38876	(decl_base::set_context_rel): New definition.
38877	(class dm_context_rel): New type.
38878	(decl_base::hash_as_member): Remove.
38879	(var_decl::set_scope): Declare new virtual member.
38880	(class_decl::data_member): Remove.
38881	(ir_node_visitor::visit): Remove the overload for
38882	class_decl::data_member.
38883	(represent_data_member): Remove the represent overload for
38884	class_decl::data_member into this.  Make it take a var_decl.
38885	(represent): Change the overload that takes two
38886	class_decl::data_member take two var_decl.  And adjust it.
38887	(class_diff::report): Adjust.
38888	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the
38889	overload that takes a class_decl::data_member*.  Adjust the
38890	overload that takes a var_decl to recognize (static) data members.
38891	* src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir)
38892	(build_class_type_and_add_to_ir, build_ir_node_from_die):
38893	Adjust.
38894	* src/abg-hash.cc (var_decl::hash::operator()): Adjust.
38895	(class_decl::data_member::hash::operator()): Remove.
38896	(decl_base::hash::operator()): Take the context relationship in
38897	account here.
38898	(decl_base::hash_as_member::operator()): Remove.
38899	({enum_type_decl,typedef_decl}::hash::operator()): Adjust.
38900	(class_decl::member_function::hash::operator()): Adjust.
38901	(type_base::dynamic_hash::operator()): Adjust.
38902	* src/abg-ir.cc (dm_context_rel::~dm_context_rel): New definition.
38903	(has_scope): Remove overload for type_base.
38904	(get_member_is_static): New overload for decl_base*.
38905	(is_data_member): New function definition.
38906	({get,set}_data_member_{offset,is_laid_out}): Define new
38907	accessors.
38908	(var_decl::set_scope): Define new member function.  Make this set
38909	a dm_context_rel as the context relationship.
38910	(var_decl::operator==): Adjust to take in account the new data
38911	member relationship.
38912	(class_decl::class_decl): Adjust.
38913	(class_decl::insert_member_decl): Adjust.
38914	(class_decl::add_data_member): Remove the overload for
38915	class_decl::data_member.
38916	(class_decl::add_data_member): Adjust the overload for var_decl.
38917	(operator==): Remove overload for class_decl::data_member*.
38918	(class_decl::data_member::operator==): Likewise.
38919	(ir_node_visitor::visit): Remove overload for
38920	class_decl::data_member.
38921	* src/abg-writer.cc (write_layout_offset, write_class_decl):
38922	Adjust.
38923	* tests/data/test-read-write/test20.xml: Adjust.
38924
389252014-03-18  Dodji Seketeli <dodji@redhat.com>
38926
38927	Better base class diff reporting
38928	* include/abg-comparison.h (class base_diff): New.
38929	* include/abg-ir.h (function_decl::get_first_non_implicit_parm):
38930	New member function.
38931	(function_type::get_first_non_implicit_parm): Likewise.
38932	* src/abg-comparison.cc (base_has_changed): Change parm to take
38933	class_decl::base_spec_sptr.
38934	(class_diff::ensure_lookup_tables_populated): Compare the base
38935	specs not just the base classes.
38936	(class_diff::report): Adjust.  Report sub-type changes in the
38937	member functions.
38938	(base_diff::*): Define member functions.
38939	(compute_diff): Define an overload for base_diff_sptr.
38940	* src/abg-hash.cc ({function_type,
38941	method_type}::hash::operator()): Do not hash the implicit parm of
38942	member functions.
38943	(class_decl::hash::operator()):  Do not hash member types.
38944	* src/abg-ir.cc (decl_base::decl_base): Initialize the
38945	hashing_started_ member that got moved here from class_decl.
38946	(decl_base::get_hash): Do not set the hash if it's being set b/c
38947	we are in a class_decl.
38948	(decl_base::operator==) Do not compare hashes for now.  Two decls
38949	can have different hashes and compare equal; think about an
38950	incomplete type foo, that compares equal with a complete foo.
38951	Their hashes will be different though.  So for now, just avoid
38952	comparing these.
38953	(compare_function_types): Avoid comparing the implicit parameter
38954	for member functions.
38955	({function, method}_type::get_first_non_implicit_parm): New
38956	definition.
38957	* tests/data/test-read-write/test20.xml: Update.
38958
389592014-03-13  Dodji Seketeli <dodji@redhat.com>
38960
38961	Do not report change in typedef underlying type is there is none
38962	* src/abg-comparison.cc (typedef_diff::report): Do not forget to
38963	check the length of the diff of the underlying type before sending
38964	its diff report down the wire.
38965
389662014-03-13  Dodji Seketeli <dodji@redhat.com>
38967
38968	Avoid hashing a access & static-ness of member types twice
38969	* src/abg-hash.cc (class_decl::hash::operator()): Do hash the
38970	'member' part of the member types here, it has been hashed
38971	already.
38972
389732014-03-13  Dodji Seketeli <dodji@redhat.com>
38974
38975	Set class {size,loc} when adding members to a decl-only class
38976	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
38977	forget to set class size and location when adding members to a
38978	declaration-only class, turning it into a definition class.
38979
389802014-03-13  Dodji Seketeli <dodji@redhat.com>
38981
38982	Use the same representation for member and non-member types
38983	* include/abg-fwd.h (is_at_class_scope): Add new oveloads.
38984	(as_non_member_type, as_non_member_class_decl): Remove.
38985	(has_scope, is_member_decl, is_member_type): New function
38986	declarations.  (get_member_is_static, set_member_is_static):
38987	Likewise.  * include/abg-ir.h (enum access_specifier): Move to
38988	the abigail:: namespace, from ...
38989	(class_decl::access_specifier): ... here.  (class
38990	context_rel): New type.  (decl_base::hash_as_member): New
38991	hasher.  (decl_base::context_): Change the type of this to
38992	context_rel_sptr.  (decl_base::get_context_rel): New protected
38993	getter.  (decl_base::get_scope): Move this out-of-line.
38994	(class_decl::member_type): Remove.
38995	(class_decl::member_types): Adjust this typedef.
38996	(class_decl::{insert,add}_member_type): Make these take a
38997	type_base_sptr now.  (class_decl::add_member_type): Change the
38998	overload that returned a member_type to return a
38999	type_base_sptr.  (get_member_access_specifier,
39000	set_member_access_specifier): New function declarations.  *
39001	include/abg-comparison.h (class member_type_diff): Remove.
39002	(compute_diff): Remove the overload for member_type_diff.  *
39003	src/abg-comparison.cc (compute_diff_for_types): Adjust for the
39004	removal of class_decl::member_type.
39005	(maybe_report_diff_for_class_members): New static function.
39006	(report_name_size_and_alignment_changes): Do not report a name
39007	change just because of a struct -> class change.  ({var_diff,
39008	enum_diff, function_decl_diff}::report): Use the new
39009	maybe_report_diff_for_class_members.  (class_diff::report):
39010	Adjust for the removal of class_decl::member_type.  Use the
39011	new maybe_report_diff_for_class_members.  (class member_diff):
39012	Remove.  * src/abg-dwarf-reader.cc (die_access_specifier)
39013	(get_scope_for_die, build_translation_unit_and_add_to_ir)
39014	(build_class_type_and_add_to_ir, build_function_decl)
39015	(build_ir_node_from_die): Adjust.  * abg-hash.cc (struct
39016	decl_base::hash_as_member): Define.  ({scope_type_decl,
39017	enum_type_decl, typedef_decl}::hash::operator()): Use the
39018	decl_base::hash_as_member.
39019	* src/abg-ir.cc (decl_base::decl_base): Adjust.
39020	(decl_base::get_scope): New out-of-line getter.
39021	(decl_base::{operator==, set_scope): Adjust.
39022	(has_scope, is_member_decl, is_member_type)
39023	(get_member_access_specifier, set_member_access_specifier)
39024	(get_member_is_static, set_member_is_static, is_at_class_scope):
39025	New function definitions.
39026	(as_non_member_type, as_non_member_class_decl): Remove.
39027	(get_node_name): Adjust.
39028	(class_decl::{class_decl, set_earlier_declaration,
39029	insert_member_decl, insert_member_type, add_member_type):
39030	Likewise.
39031	(class_decl::member_type::*) Remove.
39032	* src/abg-reader.cc (read_access, build_qualified_type_decl)
39033	(build_reference_type_def, build_typedef_decl)
39034	(build_class_decl): Adjust.
39035	* src/abg-writer.cc (write_access, write_member_type)
39036	(write_class_decl): Likewise.
39037
390382014-03-12  Dodji Seketeli <dodji@redhat.com>
39039
39040	Avoid more static_casts in the (comparison) code
39041	* src/abg-ir.cc (class_decl::insert_member_type, operator==):
39042	Remove static_casts.
39043	(class_decl::member_type::operator==): Likewise.
39044	(class_decl::member_class_template::operator==): Likewise.
39045
390462014-03-12  Dodji Seketeli <dodji@redhat.com>
39047
39048	Allow adding members to decl-only classes making them defined classes
39049	* include/abg-fwd.h (lookup_type_in_scope)
39050	(lookup_var_decl_in_scope): New declarations.
39051	* include/abg-ir.h (class_decl::get_is_declaration_only): Rename
39052	is_declaration_only on this.
39053	(class_decl::set_is_declaration_only):
39054	* src/abg-comparison.cc (try_to_diff<class_decl>)
39055	(class_diff::ensure_lookup_tables_populated)
39056	(scope_diff::ensure_lookup_tables_populated): Update for the
39057	get_is_declaration_only renaming.
39058	* src/abg-dwarf-reader.cc (get_scope_for_die): Likewize.
39059	(build_class_type_and_add_to_ir): Make sure that a member type or
39060	data member is not already present in the class before adding it.
39061	Also, if a decl-only class gets a data member, it's not a
39062	decl-only class anymore.
39063	* src/abg-hash.cc (class_decl::hash::operator()): Update for the
39064	get_is_declaration_only renaming.
39065	* src/abg-ir.cc (scope_decl::find_iterator_for_member)
39066	(look_through_decl_only_class): Likewise.
39067	(lookup_type_in_scope, lookup_var_decl_in_scope, get_node_name)
39068	(convert_node_to_decl, lookup_node_in_scope)
39069	(lookup_type_in_scope): New definitions.
39070	(class_decl::{set_definition_of_declaration,
39071	set_earlier_declaration, operator==}): Update for the
39072	get_is_declaration_only renaming.
39073	* src/abg-reader.cc (build_class_decl): Likewise.
39074	* src/abg-writer.cc (write_class_is_declaration_only): Likewise.
39075
390762014-03-12  Jonathan Wakely <jwakely@redhat.com>
39077
39078	Fixed typos in abg-diff-utils.h
39079	* include/abg-diff-utils.h (compute_diff): Fix typos in the API
39080	doc.
39081
390822014-03-11  Dodji Seketeli <dodji@redhat.com>
39083
39084	Initialize a variable
39085	* tools/bilint.cc (main): Initialize the 'r' variable.
39086
390872014-03-11  Dodji Seketeli <dodji@redhat.com>
39088
39089	Do not declare classes before defining them anymore
39090	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
39091	declare classes before defining them because both the declaration
39092	and the definition now compare equal.
39093	* tests/data/test-read-dwarf/test1.abi: Update test.
39094	* tests/data/test-read-write/test20.xml: Likewise.
39095
390962014-03-11  Dodji Seketeli <dodji@redhat.com>
39097
39098	Little style fix
39099	* src/abg-comparison.cc (class_diff::report): Slight style fix.
39100
391012014-03-10  Dodji Seketeli <dodji@redhat.com>
39102
39103	Better support for decl-only classes in diffing and comparison
39104	* include/abg-fwd.h (look_through_decl_only_class): New function
39105	declaration.
39106	* src/abg-comparison.cc (class_diff::length): Just compare the two
39107	classes.
39108	(compute_diff): Look through the two classes if they are
39109	decl-only, and use their declaration for the diffing.
39110	* src/abg-ir.cc (look_through_decl_only_class): Define this new
39111	entry point.
39112	(class_decl::set_definition_of_declaration): Allow setting a
39113	definition that is itself a declaration-only.
39114	* src/abg-writer.cc (write_class_decl): Declaration-only can now
39115	have members, namely member types.
39116
391172014-03-10  Dodji Seketeli <dodji@redhat.com>
39118
39119	Fix comparison wrt hash number
39120	* src/abg-ir.cc (decl_base::operator==): Do not consider empty
39121	hashes.
39122	(class_decl::operator==): Better support for comparing decl-only
39123	classes against non-decl-only classes.
39124
391252014-03-10  Dodji Seketeli <dodji@redhat.com>
39126
39127	Better support of class DIEs with DW_AT_specification
39128	* src/abg-dwarf-reader.cc (get_scope_for_die): The definition of a
39129	declaration-only class can be NULL.  Do not look through in that
39130	case.
39131	(build_class_type_and_add_to_ir): Support adding class members to
39132	an existing class.
39133	(build_ir_node_from_die): If a class DIE has a DW_AT_specification,
39134	get the specification DIE, get its matching IR node and add the
39135	current members of the current DIE to that IR node.
39136
391372014-03-10  Dodji Seketeli <dodji@redhat.com>
39138
39139	Tell struct and class apart
39140	* include/abg-ir.h (class_decl::is_struct_): New member.
39141	(class_decl::class_decl): Take an additional is_struct member.
39142	(class_decl::is_struct): New getter.
39143	* src/abg-ir.cc (class_decl::class_decl): Initialize the new
39144	is_struct_ data member.
39145	(class_decl::get_pretty_representation): Tell struct and class
39146	apart.
39147	* abg-reader.cc (read_is_struct): New static function.
39148	(build_class_decl): Capture the struct-ness of the class.
39149	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
39150	Likewise.
39151	* src/abg-writer.cc (write_is_struct): New static function.
39152	(write_class_decl): Write the struct-ness of the class.
39153	* tests/data/test-read-dwarf/test1.abi: Update test.
39154
391552014-03-06  Dodji Seketeli <dodji@redhat.com>
39156
39157	Fix typedef_diff emptyness detection
39158	* src/abg-comparison.cc (typedef_diff::length): Do not mask away the
39159	dynamic type of the typedef_decl before the comparison.
39160
391612014-02-28  Dodji Seketeli <dodji@redhat.com>
39162
39163	Add --drop/--keep options to bidiff
39164	* include/abg-sptr-utils.h: New file.
39165	* include/Makefile.am: Add abg-sptr-utils. to the build system.
39166	* include/abg-libxml-utils.h (reader_sptr, xml_char_sptr): Remove
39167	these typedefs as there are now in abg-sptr-utils.
39168	(build_sptr): Likewise for this template and its specializations
39169	declarations.
39170	* src/abg-libxml-utils.cc (sptr_utils::build_sptr): Mode the
39171	definition of the specializations for xmlTextReader and xmlChar
39172	into the sptr_utils namespace.
39173	* include/abg-corpus.h
39174	(corpus::{get_regex_patterns_of_fns_to_suppress,
39175	get_regex_patterns_of_vars_to_suppress,
39176	get_regex_patterns_of_fns_to_keep,
39177	get_regex_patterns_of_vars_to_keep}): Declare new member
39178	functions.
39179	* src/abg-comparison.cc (sptr_utils::regex_t_deleter): Define new
39180	functor.
39181	(build_sptr) Define new specialization for regex_t.
39182	(struct array_deleter): Remove unused functor.
39183	(corpus::priv::regex_patterns_{fns,vars}_to_{suppress,keep}): New data
39184	members.
39185	(symtab_build_visitor_type::regex_patterns_{fns,vars}_to_{suppress,keep}):
39186	Likewise.
39187	(symtab_build_visitor_type::r_{fns,vars}_{suppress,keep})):
39188	Likewise.
39189	(symtab_build_visitor_type::symtab_build_visitor_type): Update the
39190	signature of this constructor to take regex patterns for functions
39191	and variables to suppress and to keep.  Also, initialize the data
39192	members from these new parameters.
39193	(symtab_build_visitor_type::regex_{fns,vars}_{suppress,keep}): New
39194	member functions.
39195	(symtab_build_visitor_type::{add_fn_to_wip_fns,
39196	add_var_to_wip_vars}): Likewise.
39197	(symtab_build_visitor_type::visit) Use either add_fn_to_wip_fns or
39198	add_var_to_wip_vars depending on the overload of the visit()
39199	member.
39200	(corpus::priv::build_symbol_table): Update for the change of the
39201	symtab_build_visitor_type constructor signature.
39202	(corpus::get_regex_patterns_of_{fns,vars}_to_{suppress,keep}):
39203	Define new member functions.
39204	* tools/bidiff.cc (options::{drop,keep}_{fn,var}_regex_patterns}):
39205	New data member.
39206	(display_usage): Add help strings for --drop, --drop-fn,
39207	--drop-var, --keep, --keep-fn, --keep-var
39208	(parse_command_line): Parse the command lines above.
39209	(set_corpus_keep_drop_regex_patterns): Define new static function.
39210	(main): Use the new set_corpus_keep_drop_regex_patterns.
39211
392122014-02-28  Dodji Seketeli <dodji@redhat.com>
39213
39214	Style fix in the dwarf reader
39215	* src/abg-dwarf-reader.cc (die_is_public_decl): Rename
39216	is_public_decl into this.
39217	(die_is_declaration_only): Rename is_declaration_only into this.
39218	(build_class_type_and_add_to_ir, build_var_decl)
39219	(build_function_decl): Adjust for the renames above.
39220
392212014-02-28  Dodji Seketeli <dodji@redhat.com>
39222
39223	Skip artificial (member) functions from DWARF
39224	* src/abg-dwarf-reader.cc (die_is_artificial): New static
39225	function.
39226	(build_class_type_and_add_to_ir, build_ir_node_from_die): Use the
39227	die_is_artificial function to test if the function DIE is
39228	artificial and then skip it.
39229
392302014-02-28  Dodji Seketeli <dodji@redhat.com>
39231
39232	Fix function parameter addition/deletion/change detection
39233	* include/abg-ir.h (function_decl::parameter::get_name_id):
39234	Declare new entry point.
39235	* src/abg-comparison.cc
39236	(function_decl_diff::ensure_lookup_tables_populated): Use the new
39237	function_decl::parameter::get_name_id() for the unique name of the
39238	parameter.  Also, fix a little logic error: if a parm is deleted
39239	and inserted, in all cases, consider it as not deleted.
39240
392412014-02-28  Dodji Seketeli <dodji@redhat.com>
39242
39243	Add a --stat option to bidiff
39244	* include/abg-comparison.h (diff_context::show_stats_only):
39245	Declare new accessors.
39246	* src/abg-comparison.cc
39247	(diff_context::priv::show_stats_only_): New member.
39248	(diff_context::show_stats_only): Define new accessors.
39249	(corpus_diff::report): If showing stats only, quit right after
39250	showing the summary.
39251	* tools/bidiff.cc (options::show_stats_only): New data member.
39252	(options::options): Initialize the new data member.
39253	(display_usage): Add help string for --stat.
39254	(parse_command_line): Parse the --stat option.
39255	(set_diff_context_from_opts): Update to set the show_stats_only
39256	onto the context.  Cleanup the logic to make it more compact.
39257
392582014-02-28  Dodji Seketeli <dodji@redhat.com>
39259
39260	Report about functions of different names
39261	* src/abg-comparison.cc (function_decl_diff::report): Consider the
39262	case of functions with different names.  This doesn't happen in
39263	the current pipeline b/c they just show up as deleted/added
39264	functions so the function reporter doesn't see them as they have
39265	been already reported by now.
39266
392672014-02-28  Dodji Seketeli <dodji@redhat.com>
39268
39269	Fix length calculation for type diffs.
39270	* src/abg-comparison.cc (diff_length_of_type_bases): Fix stupid
39271	harmful thinko here.
39272
392732014-02-28  Dodji Seketeli <dodji@redhat.com>
39274
39275	Fix calculation of the length of distinct_diff
39276	* src/abg-comparison.cc (distinct_diff::length): Also perform a
39277	deep comparison here.
39278
392792014-02-28  Dodji Seketeli <dodji@redhat.com>
39280
39281	Fix diff length calculation for typedef diffs
39282	* src/abg-comparison.cc (typedef_diff::length): Just use
39283	comparison for this.
39284
392852014-02-28  Dodji Seketeli <dodji@redhat.com>
39286
39287	Fix layout of diff summary
39288	* src/abg-comparison.cc
39289	(corpus_diff::priv::emit_corpus_diff_stats): Remove useless
39290	vertical and horizontal white spaces.
39291
392922014-02-28  Dodji Seketeli <dodji@redhat.com>
39293
39294	Fix indentation of pieces of class diff report
39295	* src/abg-comparison.cc (represent, class_diff::report): Fix
39296	indentation.
39297
392982014-02-28  Dodji Seketeli <dodji@redhat.com>
39299
39300	Fix detection of entities of different kinds for diff purposes
39301	* src/abg-comparison.cc
39302	(distinct_diff::entities_are_of_distinct_kinds): Consider two NULL
39303	decls are distinct types for the purpose of diffing.  This is just
39304	a shortcut to avoid creating a null_diff type for now.  But then,
39305	stop considering same pointers as different.  This was a bug.
39306
393072014-02-28  Dodji Seketeli <dodji@redhat.com>
39308
39309	Constify function_decl::parameter::get_type_pretty_representation()
39310	* include/abg-ir.h
39311	(function_decl::parameter::get_type_pretty_representation): This
39312	is now const.
39313
393142014-02-28  Dodji Seketeli <dodji@redhat.com>
39315
39316	Improve API doc for the location machinery
39317	* include/abg-ir.h (class location): Improve doc.
39318	(decl_base::{get,set}_location): Likewise.
39319
393202014-02-26  Dodji Seketeli <dodji@redhat.com>
39321
39322	Remove useless dynamic cast
39323	* src/abg-ir.cc (class_decl::insert_member_decl): Remove useless
39324	dynamic cast from here.
39325
393262014-02-26  Dodji Seketeli <dodji@redhat.com>
39327
39328	Insert reference, pointers and qual types at their declaration point
39329	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Insert
39330	reference, pointers and qualified types at the point where we see
39331	them, in their scope, rather than under the scope of their
39332	underlying type.  This is because their might be first declared as
39333	member types and we don't want to loose that information.
39334
393352014-02-24  Dodji Seketeli <dodji@redhat.com>
39336
39337	Fix documentation for the diff_utils namespace
39338	* include/abg-diff-utils.h (namespace diff_utils): Add comment.
39339	(compute_diff): Update comments for some overloads where they were
39340	missing.
39341
393422014-02-21  Dodji Seketeli <dodji@redhat.com>
39343
39344	Misc style fixes
39345	* src/abg-comparison.cc
39346	(class_diff::ensure_lookup_tables_populated): use
39347	as_non_member_class_decl rather that complicated casting.
39348	src/abg-ir.cc (var_decl::get_pretty_representation): Use
39349	get_type_declaration rather than casting.
39350
393512014-02-21  Dodji Seketeli <dodji@redhat.com>
39352
39353	Fix a glitch in member data diff reporting
39354	* src/abg-comparison.cc (represent): Do not forget the "'" around
39355	the access specifier.
39356
393572014-02-21  Dodji Seketeli <dodji@redhat.com>
39358
39359	Proper support for diffing member types
39360	* include/abg-comparison.h (class member_type_diff): New class.
39361	(member_type_diff_sptr): New convenience typedef.
39362	(compute_diff): New overload for member_type_diff.
39363	* src/abg-comparison.cc (struct member_type_diff::priv): New
39364	definition.
39365	(member_type_diff::{first_member_type, second_member_type,
39366	underlying_type_diff, length}): New member function definitions.
39367	(compute_diff): New definition for member type diffs.
39368	(compute_diff_for_types): Support diffing
39369	member types.
39370	(class_diff::report): Do not use strip member types now that we
39371	can properly diff them.
39372
393732014-02-21  Dodji Seketeli <dodji@redhat.com>
39374
39375	Fix the support for printing cv-qualified names
39376	* include/abg-ir.h (decl_base::{location_, name_,
39377	qualified_parent_name_, qualified_name_}): Make these data members
39378	protected rather than private.
39379	(decl_base::get_qualified_parent_name): Declare new member
39380	functions.
39381	(decl_base::get_qualified_name): Make the core overload virtual.
39382	Simplify the other overload that calls the core one.
39383	(qualified_type_def::build_name): Declare new protected helper
39384	function.
39385	(qualified_type_def::{get_cv_quals_string_prefix,
39386	get_qualified_name}): Declare new functions.
39387	(pointer_type_def::{get_qualified_name}}): Likewise.
39388	(class_decl::member_type::get_qualified_name): Likewise.
39389	* src/abg-ir.cc (decl_base::get_qualified_parent_name): New
39390	definition.
39391	(decl_base::get_name): Make this out-of-line.
39392	(decl_base::get_qualified_name): The signature of this got
39393	simplified.  Make it use the new get_qualified_parent_name.
39394	(qualified_type_def::{build_name, get_qualified_name,
39395	get_cv_quals_string_prefix}): New definitions.
39396	(qualified_type_def::qualified_type_def): Update the constructor
39397	to use the new build_name function above.
39398	(pointer_type_def::get_qualified_name): New definitions.
39399	(reference_type_def::get_qualified_name): Likewise.
39400	(class_decl::member_type::get_qualified_name): Likewise.
39401
394022014-02-21  Dodji Seketeli <dodji@redhat.com>
39403
39404	Misc style fix
39405	* src/abg-comparison.cc (represent): Remove useless curly braces
39406	and vertical spaces.
39407
394082014-02-21  Dodji Seketeli <dodji@redhat.com>
39409
39410	Support DW_AT_specification on class/struct DIEs
39411	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Support
39412	DW_AT_specification on DW_TAG_{class,structure}type.
39413
394142014-02-21  Dodji Seketeli <dodji@redhat.com>
39415
39416	Avoid comparing member types and class templates
39417	* src/abg-comparison.h (compute_diff): For class_decl_sptr, do not
39418	compare member types and member class templates.  This adds a lots
39419	of noise that is not necessarily useful for now.
39420	* tests/data/test-bidiff/test-qual-type0-report.txt: Update tests.
39421	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
39422	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
39423
394242014-02-21  Dodji Seketeli <dodji@redhat.com>
39425
39426	Fix the report of added/removed function parameters
39427	* src/abg-comparison.cc
39428	(function_decl_diff::priv::{inserted_parms_, removed_parms_}):
39429	Remove these.
39430	(function_decl_diff::ensure_lookup_tables_populated): Fix thinko.
39431	Avoid using the members removed above.  Use one less loop to
39432	update the changed params.
39433	(function_decl_diff::report): Avoid using the removed_parms_
39434	data member that was removed above.
39435
394362014-02-21  Dodji Seketeli <dodji@redhat.com>
39437
39438	Put the setter of access specifiers in class_decl::member_base
39439	* include/abg-ir.h
39440	(class_decl::member_base::set_access_specifier): Put the setter
39441	for access specifier here, where it belongs ...
39442	(class_decl::member_type::set_access_specifier): ... not here.
39443
394442014-02-21  Dodji Seketeli <dodji@redhat.com>
39445
39446	First approach to avoid duplication of IR nodes for forward-declared classes
39447	* src/abg-dwarf-reader.cc (is_declaration_only): Put this back (I
39448	removed it earlier).
39449	(build_class_type_and_add_to_ir): If the class is a
39450	declaration-only (a forward declaration), do not add a new
39451	declaration only IR node.
39452
394532014-02-21  Dodji Seketeli <dodji@redhat.com>
39454
39455	Do not forget to set the indexes of fn parms
39456	* include/abg-ir.h (function_type::function_type): In the
39457	constructor that takes a vector of parms, walk the vector and set
39458	the indexes of the parms.
39459
394602014-02-19  Dodji Seketeli <dodji@redhat.com>
39461
39462	Misc diff reporting output cleanup
39463	* src/abg-comparison.cc (function_decl_diff::report): Do not talk
39464	about changed function anymore.  Rather, say that some indirect
39465	sub-types changed in the function.
39466
394672014-02-19  Dodji Seketeli <dodji@redhat.com>
39468
39469	Do not forget some member types/functions we built IR nodes for
39470	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
39471	Associate the member type IR node to the offset of the die of the
39472	member type.
39473	(build_ir_node_from_die): For a DW_TAG_subprogram DIE that has a
39474	DW_AT_specification pointing to another subprogram DIE, associate
39475	the offset of this DIE to the IR node of that other DIE.
39476
394772014-02-19  Dodji Seketeli <dodji@redhat.com>
39478
39479	Better support of static member variables
39480	* include/abg-fwd.h (fqn_to_components)
39481	(lookup_type_in_translation_unit, demangle_cplus_mangled_name):
39482	Declare new public entry points
39483	* src/abg-comparison.cc (corpus_diff::report): Report stuff about
39484	global variables using their mangled name, and demangle them.  If
39485	there is no mangled name for the variable, then use its pretty
39486	representation.
39487	(compute_diff): For the corpus overload, compare global variables
39488	using their mangled name, if its available; otherwise, fall back
39489	to using their pretty representation.
39490	* src/abg-corpus.cc (var_comp::operator()(const var_decl*,
39491	const_var_decl*)): Compare variables using their mangled name in
39492	priority.  If it's not available then use their pretty
39493	representation.
39494	* src/abg-dwarf-reader.cc
39495	(read_context::var_decls_to_re_add_to_tree): New accessor.
39496	(build_translation_unit_and_add_to_ir): If there is what appears
39497	to be a definition of a static member variable variable -- this is
39498	in case this definition lacks the DW_AT_specification attribute
39499	that links it to the DW_TAG_member or DW_TAG_variable DIE that is
39500	a child of the right class/structure DIE -- that is not at the
39501	right place in the DIE tree, remove it from the its current place
39502	in the tree and try to hang it off of the right DIE.  To do this,
39503	de-mangle its mangled name, look at what is supposed to be the
39504	parent class name, look it up in the translation unit IR, and if
39505	found, stick the variable IR node in there, as a static member
39506	variable.  If not found, then bad luck.
39507	(build_class_type_and_add_to_ir): Do not try to see if a member
39508	variable is static here as the way I was doing it was unreliable.
39509	Build the data member node directly w/o going through building a
39510	variable node first.  Register the data member in the die offset
39511	-> IR node map.
39512	(build_ir_node_from_die): When seeing DW_TAG_variable, look for a
39513	DW_AT_specification attribute.  If there is one, then it points to
39514	a the DIE of a data member and means that data member is static.
39515	Flag the IR node of that data member as static thus.  Update the
39516	die offset -> IR node map.  If there is no DW_AT_specification
39517	attribute or if it doesn't point to a data member DIE, schedule
39518	this variable tag for a stage when after the whole IR is built for
39519	the translation unit, the variable's mangled named is inspected,
39520	its hypothetical parent struct/class is looked up and the variable
39521	IR node is put into the node of the right struct/class IR node.
39522	* src/abg-ir.cc (enum lookup_entity_kind): New.
39523	(fqn_to_components, iterator, lookup_type_in_translation_unit)
39524	(lookup_node_in_translation_unit, lookup_type_in_translation_unit)
39525	(demangle_cplus_mangled_name): New function definitions.
39526
395272014-02-19  Dodji Seketeli <dodji@redhat.com>
39528
39529	Shorten an accessor name in the DWARF reader
39530	* src/abg-dwarf-reader.cc (read_context::cur_tu): Rename
39531	read_context::current_translation_unit into this.
39532	(read_context::current_scope, die_location)
39533	(build_translation_unit_and_add_to_ir, build_enum_type)
39534	(build_function_decl): Adjust wrt the change above.
39535
395362014-02-19  Dodji Seketeli <dodji@redhat.com>
39537
39538	Unset decl scope when removing the decl from its scope
39539	* src/abg-ir.cc (remove_decl_from_scope): Unset the scope of the
39540	decl.
39541
395422014-02-19  Dodji Seketeli <dodji@redhat.com>
39543
39544	Support adding data member from var_decl
39545	* src/abg-ir.cc (class_decl::insert_member_decl):  Support taking
39546	a var_decl.
39547	(class_decl::add_data_member): Do not insert a data member twice.
39548
395492014-02-19  Dodji Seketeli <dodji@redhat.com>
39550
39551	Fix qualified type pretty printing
39552	* src/abg-ir.cc (qualified_type_def::qualified_type_def): Remove
39553	useless white space.
39554
395552014-02-19  Dodji Seketeli <dodji@redhat.com>
39556
39557	Add class_decl::member_base::set_is_static() accessor
39558	* include/abg-ir.h (class_decl::member_base::get_is_static):
39559	Rename is_static into get_is_static.
39560	(class_decl::member_base::set_is_static): New accessor.
39561	* src/abg-comparison.cc (represent): Adjust for
39562	class_decl::member_base::is_static -> get_is_static.
39563	* src/abg-corpus.cc (symtab_build_visitor_type::visit): Likewise.
39564	src/abg-hash.cc (class_decl::member_function::hash::operator()):
39565	Likewise.
39566	* src/abg-ir.cc (class_decl::member_base::operator==): Likewise.
39567	* src/abg-writer.cc (write_class_decl): Likewise.
39568
395692014-02-13  Dodji Seketeli <dodji@redhat.com>
39570
39571	Fixes needed to diff libstdc++ v4_4 against master
39572	* src/abg-comparison.cc
39573	(class_diff::ensure_lookup_tables_populated): Support several
39574	instances of the same member function being deleted.  That can
39575	happen when the same member function was present in the initial
39576	class several times.  Yeah, I've seen that in dwarf.
39577	* src/abg-corpus.cc (corpus::priv::build_symbol_table): Do not add
39578	the same variable (identified by its mangled name) twice in the
39579	variable symbol table.
39580
395812014-02-13  Dodji Seketeli <dodji@redhat.com>
39582
39583	Fix wrong deleted functions count when diffing corpora
39584	* src/abg-comparison.cc
39585	(corpus_diff::priv::ensure_lookup_tables_populated): If a function
39586	has changed, deleted it from the list the removed functions.
39587
395882014-02-13  Dodji Seketeli <dodji@redhat.com>
39589
39590	Several fixes needed to read libstdc++.so
39591	* src/abg-reader.cc (read_context::map_id_and_node): Allow
39592	duplicated class and basic type declarations.
39593	(build_type_decl): Allow duplicated type decls.
39594	(build_qualified_type_decl, build_pointer_type_def)
39595	(build_reference_type_def): As there can be several distinct
39596	duplicated types, compare them by value.
39597	(build_class_decl): There can be duplicated class decls.
39598	* src/abg-writer.cc (write_enum_type_decl): The name of the enum
39599	needs to be xml-escaped.
39600
396012014-02-12  Dodji Seketeli <dodji@redhat.com>
39602
39603	qualified, pointer and reference types can be member types
39604	* src/abg-reader.cc (build_qualified_type_decl)
39605	(build_pointer_type_def, build_reference_type_def): Consider that
39606	these types can be member types.
39607
396082014-02-12  Dodji Seketeli <dodji@redhat.com>
39609
39610	Consider two typedefs with different names to be different
39611	* src/abg-ir.cc (typedef_decl::operator==): Consider two typedefs
39612	with different names to be different.
39613
396142014-02-12  Dodji Seketeli <dodji@redhat.com>
39615
39616	Really Avoid trying to build IR nodes for non-public functions
39617	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For the
39618	DW_TAG_subprogram case, bail out early if the current function is
39619	non-public.
39620
396212014-02-12  Dodji Seketeli <dodji@redhat.com>
39622
39623	Add --{changed,deleted,added}-{fns,vars} options to bidiff
39624	* include/abg-comparison.h
39625	(diff_context::{show_{deleted,changed_added}_{fns,vars}}): Declare
39626	new accessors.
39627	(corpus_diff::context): Declare new getter.
39628	* src/abg-comparison.cc
39629	(diff_context::{show_{deleted,changed_added}_{fns,vars}}): Define
39630	these new accessors.
39631	(corpus_diff::priv::emit_corpus_diff_stats): Define new function.
39632	(corpus_diff::context()): Define new getter.
39633	(corpus_diff::report): Use the new
39634	corpus_diff::priv::emit_corpus_diff_stats to emit diff stats at
39635	the beginning of the report.  Conditionalise emitting the
39636	different parts of the reports (changed,deleted,added stuff) on
39637	the values of the new properties that were just added.
39638	* tools/bidiff.cc
39639	(options::{show_{deleted,changed,added}_{fns,vars}): New
39640	properties.
39641	(display_usage, parse_command_line): Update for the newly added
39642	--{changed,deleted,added}-{fns,vars} command line options.
39643	(set_diff_context_from_opts): Define new static function.
39644	(main): Create a diff context, initialize it from the options
39645	(using set_diff_context_from_opts) and pass it to compute_diff.
39646
396472014-02-11  Dodji Seketeli <dodji@redhat.com>
39648
39649	Add --show-symtabs to bidiff
39650	* tools/bidiff.cc (display_usage): Update usage string.
39651	(parse_command_line): Recognize the --show-symtab cmdline option.
39652	(display_symtabs): New static function.
39653	(main): Call the new display_symtabs.
39654
396552014-02-11  Dodji Seketeli <dodji@redhat.com>
39656
39657	Harden class_decl node traversal code
39658	* src/abg-ir.cc (class_decl::traverse): Add a few asserts here and there.
39659
396602014-02-11  Dodji Seketeli <dodji@redhat.com>
39661
39662	Fix the pretty representation for member functions
39663	* src/abg-ir.cc (function_decl::get_pretty_representation): Fix
39664	this to properly display the representation of member functions.
39665	* tests/data/test-bidiff/test-enum0-report.txt: Update this.
39666	* tests/data/test-bidiff/test-enum1-report.txt: Likewise.
39667	* tests/data/test-bidiff/test-qual-type0-report.txt: Likewise.
39668	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
39669	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
39670
396712014-02-11  Dodji Seketeli <dodji@redhat.com>
39672
39673	Do not forget to traverse member types
39674	* include/abg-ir.h (class_decl::member_type::traverse): Declare new virtual
39675	function.
39676	(ir_node_visitor::visit): Declare new virtual function
39677	* src/abg-ir.cc (class_decl::member_type::traverse): Implement the
39678	traversal of a member type.
39679	(ir_node_visitor::visit): Provide a default implementation for the
39680	visitor of member type.
39681
396822014-02-11  Dodji Seketeli <dodji@redhat.com>
39683
39684	From DWARD, avoid adding IR nodes for member functions twice
39685	* include/abg-fwd.h (as_non_member_class_decl): Declare new overload.
39686	* src/abg-ir.cc (as_non_member_class_decl): Define new overload.
39687	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Add
39688	member functions to the DIE -> IR Node map.
39689	(build_ir_node_from_die): Assert that DW_TAG_subprogram cannot be
39690	for a member function here because getting the scope of the member
39691	function would have constructed the entire class that contains it,
39692	including the member function.  Then, calling
39693	build_ir_node_from_die for the DIE of the member function would
39694	find the already IR Node in the DIE -> IR Node map.
39695
396962014-02-11  Dodji Seketeli <dodji@redhat.com>
39697
39698	Fix access specifiers value
39699	* include/abg-ir.h (class_decl::enum access_specifier): Give the enumerators
39700	the same values as what the DWARF spec says.
39701
397022014-02-10  Dodji Seketeli <dodji@redhat.com>
39703
39704	Misc diff report cleanups
39705	* include/abg-ir.h (function_decl::parameter::get_type_name): Add
39706	comment.
39707	(function_decl::parameter::get_type_pretty_representation): New
39708	member fn.
39709	* src/abg-comparison.cc (represent): When representing changed
39710	members, use their pretty representation.
39711	(function_decl_diff::{ensure_lookup_tables_populated, report}): Use the
39712	pretty representation of parameters type.
39713	(typedef_diff::report): Enclose the underlying type in "'".
39714	(corpus_diff::report): Add proper spacing.
39715
397162014-02-10  Dodji Seketeli <dodji@redhat.com>
39717
39718	Re-organize the output of diffing two corpora
39719	* src/abg-comparison.cc (corpus_diff::report): Emit
39720	information about the number of added/removed/changed
39721	functions.  If the report is big, prefix any added
39722	function with '[A]' deleted function with '[B]'.  Also,
39723	fix indentation.
39724
397252014-02-10  Dodji Seketeli <dodji@redhat.com>
39726
39727	Support diffing entities of different kinds.
39728	* include/abg-comparison.h (class distinct_diff): Declare new
39729	type.
39730	(compute_diff_for_distinct_kinds): Declare new function.
39731	* src/abg-comparison.cc (distinct_diff::{distinct_diff, first,
39732	second, entities_are_of_distinct_kinds, length, report}): Define
39733	new member functions.
39734	(compute_diff_for_distinct_kinds, try_to_diff_distinct_kinds):
39735	Define new function.
39736	(compute_diff_for_types, compute_diff_for_decls): Support diffing
39737	entities of different kinds.
39738
397392014-02-10  Dodji Seketeli <dodji@redhat.com>
39740
39741	Avoid recursive comparison on class_decl & perform some optimizations
39742	* src/abg-ir.cc (class_decl::operator==(const decl_base& other)
39743	const): Bail out early in case of recursive comparison, or if type
39744	hashes are different.  Do not try to compute qualified name unless
39745	it's really necessary.  The optimizations part of this change were
39746	hinted by profiling.
39747
397482014-02-10  Dodji Seketeli <dodji@redhat.com>
39749
39750	Handle the DIE for a fn that has a 'specification' attribute
39751	* src/abg-dwarf-reader.cc (build_ir_node_from_die): For the
39752	DW_TAG_subprogram case, if the function has a DW_AT_specification
39753	attribute, build the IR node for the specification DIE instead.
39754
397552014-02-10  Dodji Seketeli <dodji@redhat.com>
39756
39757	Add an assert in the dwarf reader
39758	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
39759	Assert that the result of build_function_decl on a member function
39760	is a method_decl.
39761
397622014-02-10  Dodji Seketeli <dodji@redhat.com>
39763
39764	Do not forget that build_ir_node_from_die can return member types
39765	* src/abg-dwarf-reader.cc (get_scope_for_die): Handle member class
39766	types.
39767	(build_function_decl): Likewise.
39768
397692014-02-10  Dodji Seketeli <dodji@redhat.com>
39770
39771	A member function can have an empty mangled name
39772	* src/abg-comparison.cc
39773	(class_diff::ensure_lookup_tables_populated): If a member function
39774	has an empty mangling name, use its pretty representation.
39775
397762014-02-10  Dodji Seketeli <dodji@redhat.com>
39777
39778	Remove too eager asserts
39779	* src/abg-comparison.cc
39780	(class_diff::ensure_lookup_tables_populated): Do not assert that
39781	the same member type cannot be deleted/inserted twice.  It
39782	actually can for, pointers, references, typedefs, etc.
39783
397842014-02-10  Dodji Seketeli <dodji@redhat.com>
39785
39786	Fix some new line handling in diff reports
39787	* src/abg-comparison.cc (represent): Remove extra new line after
39788	reporting virtual function number.
39789	(class_diff::report): Do not forget to emit a new line between two
39790	inserted functions.
39791
397922014-02-10  Dodji Seketeli <dodji@redhat.com>
39793
39794	Perform the diff of changed functions and variables in the right order
39795	* src/abg-comparison.cc
39796	(corpus_diff::priv::ensure_lookup_tables_populated): In a changed
39797	function or variable, do not mix up the new and old value.
39798
397992014-02-10  Dodji Seketeli <dodji@redhat.com>
39800
39801	Fix typo in report
39802	* src/abg-comparison.cc (reference_diff::report): Fix typo
39803	refereneced -> referenced.
39804
398052014-02-10  Dodji Seketeli <dodji@redhat.com>
39806
39807	Fix various crashes
39808	* src/abg-comparison.cc (decls_equal::operator()(const decls_type,
39809	const decls_type) const): Do not crash when of the decl_types is
39810	NULL.
39811	({pointer_diff, reference_diff, enum_diff}::length): Avoid
39812	crashing if the underlying type is NULL.
39813	* abg-ir.cc (function_decl::get_pretty_representation): Avoid
39814	crashing on member functions with empty parameter set.
39815	signed-off-by: Dodji Seketeli <dodji@redhat.com>
39816
398172014-02-10  Dodji Seketeli <dodji@redhat.com>
39818
39819	More optimizations hinted by profiling
39820	* include/abg-ir.h (decl_base::qualified_name_): New member.
39821	(decl_base::get_qualified_name): Cache the qualified name.
39822	(decl_base::get_type): Return a reference on the shared pointer.
39823	(method_type::get_class_type): Likewise.
39824	(class_decl::get_definition_of_declaration): Likewise.
39825	(class_decl::member_type::get_underlying_type): Likewise.
39826	(class_decl::base_spec::get_base_class): Likewise.
39827	* src/abg-ir.cc (decl_base::get_qualified_name): Implement the
39828	caching.
39829	(class_decl::member_type::get_qualified_name): Return a reference
39830	on the shared pointer.
39831
398322014-02-10  Dodji Seketeli <dodji@redhat.com>
39833
39834	Avoid crashing when getting function parm type name
39835	* include/abg-ir.h (function_decl::parameter::get_type_name): New
39836	member function.
39837	* src/abg-comparison.cc
39838	(function_decl_diff::ensure_lookup_tables_populated): Use the new
39839	member function above.
39840
398412014-02-10  Dodji Seketeli <dodji@redhat.com>
39842
39843	Small optimization hinted by profiling
39844	* include/abg-diff-utils.h (d_path_vec::max_d): Avoid using member
39845	functions.  This is relevant only when compiling w/o optimization.
39846
398472014-02-10  Dodji Seketeli <dodji@redhat.com>
39848
39849	Fix allocation of diff_utils::d_path_vec
39850	* include/abg-diff-utils.h (d_path_vec::d_path_vec):  Do not
39851	forget to allocate enough data for reverse vectors as well.  The
39852	comment of the constructor is accurate.
39853
398542014-02-07  Dodji Seketeli <dodji@redhat.com>
39855
39856	Misc style fixes
39857	* include/abg-hash.h (combine_hashes): Remove trailing white
39858	spaces.
39859	* include/abg-ir.h (class function_decl): Add end-of-class
39860	comment.
39861	(struct type_base::cached_hash): Fix comment.
39862	* src/abg-comparison.cc: Remove useless new line.
39863	* src/abg-corpus.cc: Likewise.
39864	* src/abg-writer.cc: Likewise.
39865
398662014-02-07  Dodji Seketeli <dodji@redhat.com>
39867
39868	Support looking through decl-only classes and update diff reports accordingly
39869	* include/abg-comparison.h (class diff_context): New class.
39870	(class diff::{ctxt_, reported_once_, currently_reporting_}): New
39871	data members.
39872	(diff::diff): Initialize the new data members above.
39873	(diff::{context, currently_reporting, reported_once}): New
39874	accessors.
39875	(compute_diff, var_diff::var_diff, pointer_diff::pointer_diff)
39876	(reference_diff::reference_diff, qualified_type_diff)
39877	(enum_diff:enum_diff, class_diff::class_diff)
39878	(scope_diff::scope_diff, function_decl_diff::function_decl_diff)
39879	(type_decl_diff::type_decl_diff, typedef_diff::typedef_diff)
39880	(translation_unit_diff::translation_unit_diff, corpus_diff::corpus_diff):
39881	Take an additional pointer to diff_context.
39882	* abg-comparison.cc (diff_context::{has_diff_for,
39883	has_diff_for_types, add_diff}): New methods.
39884	(try_to_diff, compute_diff_for_types, compute_diff_for_decls)
39885	(represent): Take an additional pointer to
39886	diff_context in argument.  In the later function, do not re-report
39887	a diff if it has already been reported, or if it's being reported
39888	already.
39889	(var_diff::var_diff, pointer_diff::pointer_diff)
39890	(reference_diff::reference_diff)
39891	(qualified_type_diff::qualified_type_diff, enum_diff::enum_diff)
39892	(class_diff::class_diff, scope_diff::scope_diff)
39893	(function_decl_diff::function_decl_diff, type_decl::type_decl)
39894	(typedef_diff::typedef_diff)
39895	(translation_unit_diff::translation_unit_diff)
39896	(corpus_diff::corpus_diff): Take an additional pointer to
39897	diff_context in argument.
39898	({pointer_diff, qualified_type_diff,
39899	reference_type_diff}::report): do not re-report a diff about the
39900	underlying type if it has already been reported, or if it's being
39901	reported already.
39902	(enum_diff::report): Fix this to properly use the populated lookup
39903	tables.
39904	(compute_diff): take an additional pointer to diff_context in
39905	argument. For the var_decl, pointer_diff reference_type_diff,
39906	qualified_type_diff enum_diff, scope_diff, function_decl_diff,
39907	type_decl_diff and typedef_diff overloads, do not re-build a diff
39908	object, if one exits already.  Otherwise, record the new diff
39909	object created so that it can be re-used later.
39910	(enum_diff::ensure_lookup_tables_populated): Fix logic to avoid
39911	one loop.
39912	(class_decl::priv::{deleted_member_functions_,
39913	inserted_member_functions_, changed_member_function_}): New
39914	members to support reporting about member functions changes.
39915	(class_decl::{lookup_tables_empty, clear_lookup_tables, length):
39916	Update for the new additions above.
39917	(class_decl::ensure_lookup_tables_populated): Likewise.  Fix to
39918	properly use the lookup tables and also avoid a going through
39919	several loops to compute the changed members.
39920	(class_decl::report): Flip a switch to make the beginning and end
39921	of the reporting, in the context.  Also, do not try to report
39922	again, if we were already reporting this diff.  Fix quite some
39923	spots to properly use the lookup tables.
39924	(scope_diff::ensure_lookup_tables_populated): Skip decl-only
39925	classes during comparison. Fix some thinkos.  Fix logic to avoid a
39926	loop.
39927	(scope_diff::report): Adjust to pass a context to
39928	compute_diff_for_types.
39929	(function_decl_diff::ensure_lookup_tables_populated): Fix logic to
39930	avoid a loop.
39931	(function_decl_diff::report): Adjust call to
39932	compute_diff_for_types to pass the context.
39933	(typedef::report): Avoid re-reporting the diff of the underlying
39934	types, if we are already reporting it.
39935	(corpus_diff::priv::ensure_lookup_tables_populated): Use the
39936	pretty representation of the function rather than its name to key
39937	the maps of deleted and added functions. Fix logic to avoid going
39938	through an additional loop for the changed functions.
39939	(corpus_diff::report): Add a title for removed/added/changed
39940	functions.  Fix indentation for added/removed/changed functions.
39941	* include/abg-ir.h (class_decl::comparison_started_): New member
39942	* src/abg-dwarf-reader.cc (is_public_decl): Style fix.
39943	(is_declaration_only_): New static function.
39944	(build_class_type_and_add_to_ir): Create decl-only classes (IR) for
39945	classes flagged as declaration-only in the DWARF.
39946	* src/abg-hash.cc (class_decl::hash::operator()): Do not forget to
39947	include the "is_declaration_only" flag into the hashing.
39948	* src/abg-ir.cc (class_decl::operator==): Look through decl-only
39949	classes to get their definitions and compare the definitions
39950	instead.  Avoid comparing member types and fns if the comparison
39951	of this type has already started.
39952	* src/abg-reader.cc (build_class_decl): Set the definition of a
39953	declaration, when we see it.
39954	* tests/data/test-bidiff/test-qual-type0-report.txt: Update.
39955	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
39956	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
39957	signed-off-by: Dodji Seketeli <dodji@redhat.com>
39958
399592014-02-07  Dodji Seketeli <dodji@redhat.com>
39960
39961	Support reading *.bi input with duplicated qualified type ids.
39962	* src/abg-reader.cc (read_context::map_id_and_node): Support
39963	qualified types with duplicated ids.
39964
399652014-02-07  Dodji Seketeli <dodji@redhat.com>
39966
39967	Fix comparison of member types
39968	* src/abg-ir.cc (class_decl::member_type::operator==): Compare the
39969	underlying type of the member type.
39970
399712014-02-07  Dodji Seketeli <dodji@redhat.com>
39972
39973	Avoid duplicated entries in the symbol tables of the corpus
39974	* include/abg-ir.h ({var_decl, function_decl}::ptr_equal): New
39975	equality functor for pointers to var_decl and function_decl.
39976	({function_decl, var_decl}::hash): Make these hashing functors
39977	public.
39978	* include/abg-hash.cc (struct var_decl::hash, struct
39979	function_decl::hash): Remove these from here.  There are now in
39980	the public abg-ir.h.
39981	({var_decl, function_decl}::hash::operator()): Define these here.
39982	* src/abg-corpus.cc (symtab_build_visitor_type::{fns_map,
39983	fn_is_in_map, add_fn_to_map, vars_map, var_is_in_map,
39984	add_var_to_map}): New accessors.
39985	(corpus::priv::build_symbol_table): Avoid duplicated entries in
39986	variables and functions symbols tables.
39987
399882014-02-07  Dodji Seketeli <dodji@redhat.com>
39989
39990	Ease debugging of abigail::diff_utils::compute_diff
39991	* include/abg-diff-utils.h (compute_diff): Add asserts on for the
39992	length of the shortest edit script during the divide and conquer
39993	part of the diff algorithm.
39994
399952014-02-07  Dodji Seketeli <dodji@redhat.com>
39996
39997	Fix further reaching reverse path calculation in core diff algo
39998	* include/abg-diff-utils.h (end_of_frr_d_path_in_k_plus_delta):
39999	Favour moving left when the two abscissas at the previous steps
40000	are equal.
40001	(compute_diff): Update the length of the shortest edit script when
40002	the size of one of the inputs is zero.
40003	* tests/test-core-diff.cc (in_out_spec): Add a new input to diff
40004	two sequences for regression testing.
40005	* tests/data/test-core-diff/report13.txt: New reference for
40006	the comparison of the new regression test above.
40007
400082014-02-07  Dodji Seketeli <dodji@redhat.com>
40009
40010	Add debugging facilities for core diffing issues
40011	* include/abg-ir.h (fns_to_str): Declare new fn.
40012	* src/abg-ir.cc (get_next_string, fn_to_str, fns_to_str): New
40013	static functions.
40014	(fns_to_str): Define new fn.
40015	* tools/abg-tools-utils.cc (dump_functions_as_string)
40016	(dump_function_names, compare_functions): New functions.
40017
400182014-01-20  Dodji Seketeli <dodji@redhat.com>
40019
40020	Fix apidoc comment
40021	* src/abg-ir.cc (decl_base::operator==): Fix comment.
40022
400232014-01-20  Dodji Seketeli <dodji@redhat.com>
40024
40025	Fix bilint outputting for translation units & corpus
40026	* tools/bilint.cc (main): Fix logic.
40027
400282014-01-20  Dodji Seketeli <dodji@redhat.com>
40029
40030	Remove debugging assertion when diffing
40031	* include/abg-diff-utils.h (d_path_vec::at): Do not check for
40032	bounds.
40033
400342014-01-20  Dodji Seketeli <dodji@redhat.com>
40035
40036	Do not use exceptions in dynamic_cast
40037	* src/abg-ir.cc (class_decl::member_function::operator==)
40038	(class_decl::member_function::operator==): Do not use the
40039	exception path for dynamic casting.  This was near the top of many
40040	profiles.
40041
400422014-01-20  Dodji Seketeli <dodji@redhat.com>
40043
40044	Just add decls sequentially when reading from DWARF
40045	* src/abg-dwarf-reader.cc (insert_decl_into_ir_under_scope)
40046	(build_namespace_decl_and_add_to_ir, build_enum_type)
40047	(build_class_type_and_add_to_ir, build_ir_node_from_die)
40048	(build_ir_node_from_die): Remove.
40049	* tests/data/test-read-dwarf/test0.abi: Update because now type
40050	IDs can be used before they are defined.
40051	* tests/data/test-read-dwarf/test1.abi: Likewise.
40052
400532014-01-17  Dodji Seketeli <dodji@redhat.com>
40054
40055	Misc Doxygen API doc fixes
40056	* include/abg-comparison.h: Various doxygen api doc string fixes.
40057	* include/abg-diff-utils.h: Likewise.
40058	* include/abg-dwarf-reader.h: Likewise.
40059	* include/abg-ir.h: Likewise.
40060	* include/abg-reader.h: Likewise.
40061	* include/abg-writer.h: Likewise.
40062	* src/abg-comparison.cc: Likewise.
40063	* src/abg-corpus.cc: Likewise.
40064	* src/abg-dwarf-reader.cc: Likewise.
40065	* src/abg-ir.cc: Likewise.
40066	* src/abg-libxml-utils.cc: Likewise.
40067	* src/abg-reader.cc: Likewise.
40068	* src/abg-writer.cc: Likewise.
40069
400702014-01-17  Dodji Seketeli <dodji@redhat.com>
40071
40072	Fix bilint --noout, add --diff option
40073	* tools/bilint.cc (options::options): Initialize ...
40074	(options::{diff, bidiff}): ... new members.
40075	(display_usage): Update the display usage string for --diff &
40076	--bidiff options.
40077	(parse_command_line): Support the --diff and --bidiff options.
40078	(main): Require the --diff option to actually diff the emitted
40079	output with input.  Make --noout really work for when reading
40080	from dwarf.
40081
400822014-01-17  Dodji Seketeli <dodji@redhat.com>
40083
40084	Read .abi files with types used before being defined & lots of fixes
40085	* src/abg-reader.cc (read_context::m_decls_stack): Make this is a
40086	std::deque, rather than a std::stack.
40087	(read_context::{get_id_xml_node_map,
40088	clear_id_xml_node_map, get_xml_node_decl_map,
40089	map_xml_node_to_decl, get_decl_for_xml_node,
40090	clear_xml_node_decl_map, map_id_and_node, get_xml_node_from_id,
40091	get_scope_for_node, build_or_get_type_decl}): New member
40092	functions.
40093	(read_context::{get_cur_decl, push_decl, pop_decl}): Update this
40094	now that the decl stack uses a std::deque.
40095	(read_context::clear_decls_stack): New.
40096	(read_context::get_translation_unit):  Use the first decl of the
40097	decl stack, that is most certainly the global scope of the current
40098	translation unit, to get the translation unit.
40099	(read_context::key_type_decl): Take a new flag to force the
40100	re-keying; that is set an id to a new type, even if the id was
40101	already set to a type.
40102	(read_context::push_and_key_type_decl): Assert that a type must
40103	have a declaration.
40104	(handle_*): Make these return the decl_base_sptr resulting from
40105	the parsing of the xml node, rather than just a bool.
40106	(walk_xml_node_to_map_type_ids): New static function.
40107	(read_translation_unit_from_input): Read the abi-instr xml
40108	sub-tree once, just to build an id->xml node map.  That way, when a
40109	declaration needs a type what is not yet defined, it can just get
40110	its XML node, build the type from it and use it.  Do not forget to
40111	advance the xml reader cursor when the reading of the 'abi-instr'
40112	sub-tree is read.  Clear all the new maps we have used for the
40113	current translation unit.
40114	(handle_element_node): Cleanup logic.
40115	(build_namespace_decl): Update the new xml node -> decl map, and
40116	use it to avoid building the same namespace twice.
40117	(build_function_parameter): Do not even try to get the type of a
40118	variadic parameter.
40119	(build_function_decl, build_var_decl): Support types that are defined later.
40120	(build_type_decl): Do not build the same type twice.  But there
40121	can be several 'unnamed-enum-underlying-type' node.  In that case
40122	just return the previous one.
40123	(build_qualified_type_decl, build_pointer_type_def)
40124	(build_reference_type_def, build_enum_type_decl)
40125	(build_typedef_decl): Support underlying type defined later.
40126	(build_class_decl): Support declaration-only related cases where
40127	we can have several xml nodes with the same id.  Update the new
40128	xml node -> IR node maps.  Fix member type adding.
40129	(build_type_tparameter, build_non_type_tparameter)
40130	(build_template_tparameter): Support used types defined later.
40131
401322014-01-17  Dodji Seketeli <dodji@redhat.com>
40133
40134	Fix member class template creation
40135	* src/abg-ir.cc (class_decl::add_member_class_template): Do not
40136	forget the scope of the member class template itself.
40137
401382014-01-17  Dodji Seketeli <dodji@redhat.com>
40139
40140	Avoid endless loop in unescape_xml_string
40141	* src/abg-libxml-utils.cc (unescape_xml_string): Avoid and endless
40142	loop for strings containing an '&' but that are not pre-defined
40143	entities.
40144
401452014-01-17  Dodji Seketeli <dodji@redhat.com>
40146
40147	Fix a potential crash
40148	* src/abg-ir.cc (decl_base::get_qualified_name): Do not crash if
40149	the scope is empty.
40150
401512014-01-17  Dodji Seketeli <dodji@redhat.com>
40152
40153	Do not loose the member type information when reading them from DWARF
40154	* include/abg-ir.h (class_decl::declaration_):  Make this be a
40155	decl_base_sptr so that it can actually be a
40156	class_decl::member_type which underlying type is a class decl.
40157	(class_decl::{set, get}_earlier_declaration): Take or return a
40158	decl_base_sptr rather than a class_decl_sptr.
40159	* src/abg-ir.cc (class_decl::set_earlier_declaration): Take a
40160	decl_base_sptr rather than a class_decl_sptr.
40161	* src/abg-dwarf-reader.cc (die_class_map_type): Make this map take
40162	decl_base_sptr rather than a class_decl_sptr.
40163	(build_class_type_and_add_to_ir): If the class being currently
40164	built is a member class, do not loose that information after it
40165	has been added to its scope.  Also, base types and types of member
40166	variables can be member types and should retain that information.
40167	(build_qualified_type): Likewise, the underlying type of a
40168	qualified type shouldn't loose the information about its
40169	potentially being a member type.
40170	(build_pointer_type_def, build_reference_type, build_typedef_type)
40171	(build_var_decl, build_function_decl): Likewise.
40172
401732014-01-17  Dodji Seketeli <dodji@redhat.com>
40174
40175	Fix hashing of member types
40176	* include/abg-ir.h (class_decl::{member_function_template,
40177	member_class_template}):  Make these inherit from decl_base, to
40178	comply with class_decl::member_type.
40179	(class_decl_base_spec::{base_spec, member_type, member_function,
40180	member_function_template, member_class_template}::hash): Declare
40181	these hashing functors in the header here.
40182	(class_decl::{member_base, member_type, data_member,
40183	member_function, member_function_template,
40184	member_class_template}::hash::operator()): define these out of
40185	line here.
40186	(type_base::dynamic_hash::operator()): Update this to hash member
40187	things.
40188	* src/abg-writer.cc (write_qualified_type_def)
40189	(write_pointer_type_def, write_class_decl)
40190	(write_reference_type_def, write_enum_type_decl): Add an overload
40191	that takes the type ID to use in the serialization.
40192	(write_member_type): New implementation.
40193
401942014-01-17  Dodji Seketeli <dodji@redhat.com>
40195
40196	A Member class can also be a scope for other decls in DWARF
40197	* include/abg-fwd.h (as_non_member_class_decl): Declare ...
40198	* src/abg-ir.cc (as_non_member_class_decl): ... this new function.
40199	* include/abg-ir.h (class class_decl::member_type): Add more
40200	comments about member types.
40201	* src/abg-dwarf-reader.cc (get_scope_for_die): Use the new
40202	as_non_member_class_decl here.
40203
402042014-01-17  Dodji Seketeli <dodji@redhat.com>
40205
40206	Misc style fixes
40207	* include/abg-ir.h (location_manager::_Impl): Rename this type
40208	into priv.
40209	* src/abg-ir.cc b/src/abg-ir.cc (location_manager::_Impl):
40210	Likewise.
40211	(location_manager::location_manager): Update for the renaming
40212	above.
40213	* src/abg-reader.cc (build_type_decl): Remove useless white space.
40214	(build_enum_type_decl, build_class_decl): Use the _sptr typedef in
40215	the return type.
40216
402172014-01-14  Dodji Seketeli <dodji@redhat.com>
40218
40219	Update namespace comments
40220	* src/abg-dwarf-reader.cc (namespace dwarf_reader): Add apidoc comment.
40221	* src/abg-reader.cc (namespace xml_reader): Update apidoc comment.
40222
402232014-01-14  Dodji Seketeli <dodji@redhat.com>
40224
40225	Expand 'abi-instr' XML element nodes during de-serialization
40226	* src/abg-reader.cc (update_read_context)
40227	(update_depth_info_of_read_context): Remove.
40228	(read_context::{pop_scope, pop_scope_or_abort): New.
40229	(read_context::{push_decl_to_current_scope,
40230	push_and_key_type_decl}): Remove the overloads that take the
40231	'update_depth_info' boolean.
40232	(build_namespace_decl): New static function.
40233	(build_function_decl, build_var_decl, build_type_decl)
40234	(build_qualified_type_decl, build_pointer_type_def)
40235	(build_reference_type_def, build_enum_type_decl, build_type_decl)
40236	(build_class_decl, build_function_tdecl, build_class_tdecl)
40237	(build_type_tparameter, build_type_composition)
40238	(build_non_type_tparameter, build_template_tparameter)
40239	(build_template_parameter, build_type): Remove the
40240	'update_depth_info' boolean from parameters.
40241	(handle_element_node): Renamed handle_element into this.  Take an
40242	xml node and a boolean to add the resulting IR node to the IR.
40243	(handle_type_decl, handle_namespace_decl)
40244	(handle_qualified_type_decl, handle_pointer_type_def)
40245	(handle_reference_type_def, handle_enum_type_decl)
40246	(handle_typedef_decl, handle_var_decl, handle_function_decl)
40247	(handle_class_decl, handle_function_tdecl, handle_class_tdecl):
40248	Take an xml node and a boolean to add the resulting IR node to the
40249	IR.
40250	(advance_cursor): No more need to call update_read_context.
40251	(read_translation_unit_from_input): Expand the 'abi-instr' node
40252	into memory so that we walk its XML nodes and build the IR nodes
40253	from them.
40254	(read_location): Remove the overload that was using the xml reader.
40255	():
40256
402572014-01-14  Dodji Seketeli <dodji@redhat.com>
40258
40259	Misc style fixes
40260	* src/abg-reader.cc (read_context::{get_cur_decl, pop_decl}): Return
40261	decl_base_sptr rather than shared_ptr<decl_base>.
40262	(read_context::push_decl): Take a decl_base_sptr rather than
40263	shared_ptr<decl_base>.
40264
402652014-01-14  Dodji Seketeli <dodji@redhat.com>
40266
40267	Fix apidoc markup
40268	* include/abg-comparison.h (class var_diff): @ref var_decls ->
40269	@ref var_decl.
40270	* src/abg-comparison.cc (function_decl_diff::first_function_decl):
40271	@Return -> @return.
40272
402732014-01-14  Jonathan Wakely <jwakely@redhat.com>
40274
40275	Fix checkout & build instructions
40276	* CONTRIBUTING: Fix Git repository url.
40277	* doc/website/mainpage.txt: Add elfutils into the dependencies
40278	list and fix the repository directory name.  Also use autoreconf
40279	-i.
40280	* include/abg-fwd.h: Fix Git repository URL.
40281
402822014-01-13  Dodji Seketeli <dodji@redhat.com>
40283
40284	Tweak dwarf reading test to detect more namespace linking-fu
40285	* tests/data/test-read-dwarf/test0.cc: Define a member function
40286	out-of-line, outside of its namespace.
40287	* tests/data/test-read-dwarf/test0.abi: Update the .abi file.
40288	* tests/data/test-read-dwarf/test0: Update the resulting binary.
40289
402902014-01-13  Dodji Seketeli <dodji@redhat.com>
40291
40292	Add asserts to detect type id mis-management in native format
40293	* read_translation_unit_from_input
40294	(read_translation_unit_from_input): Abort when an element could
40295	not be handled.
40296	(build_function_parameter, build_type_decl, qualified_type_def)
40297	(build_pointer_type_def, build_reference_type_def)
40298	(build_enum_type_decl, build_typedef_decl, build_class_decl)
40299	(build_type_tparameter, build_template_tparameter)
40300	(handle_qualified_type_decl, handle_pointer_type_def)
40301	(handle_reference_type_def, handle_typedef_decl):
40302	Abort when a referred-to type is not found or if a type is defined twice.
40303
403042014-01-13  Dodji Seketeli <dodji@redhat.com>
40305
40306	Misc style fixes
40307	* src/abg-hash.cc
40308	(class_decl::member_function_template::hash::operator()): Remove
40309	useless vertical space.
40310	* src/abg-ir.cc (class_decl::class_decl): Properly indent.
40311	* src/abg-writer.cc (fn_tmpl_shared_ptr_map)
40312	(class_tmpl_shared_ptr_map): Properly indent these typedefs.
40313
403142014-01-13  Dodji Seketeli <dodji@redhat.com>
40315
40316	Optimize comparison & underlying type accessing
40317	* include/abg-ir.h (qualified_type::get_underlying_type)
40318	(pointer_type_def::get_pointed_to_type)
40319	(reference_type_def::get_pointed_to_type)
40320	(typedef_decl::get_underlying_type): Avoid triggering refcount
40321	counter increasing/decreasing here, by returning a reference to
40322	the underlying type.  This showed up high on a profile.
40323	({scope_decl, type_decl, scope_type_decl, namespace_decl,
40324	qualified_type_def, pointer_type_def, reference_type_def,
40325	enum_type_decl, typedef_decl, var_decl, class_decl}::operator==):
40326	Avoid taking the exception-using path of dynamic_cast.  This
40327	showed up very high on a profile.
40328
403292014-01-13  Dodji Seketeli <dodji@redhat.com>
40330
40331	Fix reading/writing native xml corpus files
40332	* src/abg-reader.cc (read_context::clear_type_map): New member
40333	function.
40334	(read_translation_unit_from_input): Read up to the next element
40335	node if we are not on an element node already.  Clear the type
40336	map.  Realize that we might be on the next 'abi-instr' node upon
40337	completion.
40338	(read_corpus_from_input): Read up to the next element node if we
40339	are not on an element node already.  It must be an "abi-corpus"
40340	node.  THen Advance to the next 'abi-instr' element node before
40341	handing it to read_translation_unit_from_input.
40342	* src/abg-writer.cc (write_context::clear_type_id_map): New member
40343	function.
40344	(write_translation_unit): Call it.
40345	* tools/abg-tools-utils.cc (guess_file_type): Read enough bytes to
40346	detect abi-corpus files magic bytes.
40347	* tools/bilint.cc (main): Do not write the corpus file to the
40348	output stream if --noout has been provided.
40349
403502014-01-13  Dodji Seketeli <dodji@redhat.com>
40351
40352	Escape xml pre-defined entities in native (de-)serialization.
40353	* include/abg-libxml-utils.h (escape_xml_string)
40354	(unescape_xml_string): Declare new functions.
40355	* src/abg-libxml-utils.cc (escape_xml_string)
40356	(unescape_xml_string): Define them.
40357	* src/abg-reader.cc (build_function_decl, build_var_decl)
40358	(build_type_decl, build_enum_type_decl, build_class_decl)
40359	(build_type_tparameter, build_non_type_tparameter)
40360	(build_template_tparameter, handle_namespace_decl)
40361	(handle_typedef_decl): Use unescape_xml_string.
40362	* src/abg-writer.cc (write_type_decl, write_function_decl)
40363	(write_class_decl, write_type_tparameter)
40364	(write_non_type_tparameter, write_template_tparameter): Use
40365	escape_xml_string.
40366
403672014-01-13  Dodji Seketeli <dodji@redhat.com>
40368
40369	Implement hash caching
40370	* include/abg-ir.h (decl_base::hash_): New member.
40371	(decl_base::{g,s}et_hash): New accessors.
40372	(type_base_::cached_hash): Forward-declare new hasher.
40373	(struct type_ptr_equal): New equality predicate.
40374	(type_shared_ptr_equal::operator()): Do not forget to test pointer
40375	equality.
40376	(type_base::cached_hash): Declare new hasher.
40377	* src/abg-hash.cc ({decl_base, type_decl, scope_type_decl,
40378	qualified_type_def, pointer_type_def, reference_type_def,
40379	enum_type_decl, typedef_decl, var_decl, function_decl,
40380	function_decl::parameter, class_decl::data_member,
40381	class_decl::member_function, class_decl, }::hash::operator()):
40382	Implement caching.
40383	(type_base::cached_hash::operator()(const type_base*)): Define.
40384	(type_base::cached_hash::operator() (const type_base_sptr):
40385	Define.
40386	* src/abg-ir.cc (type_ptr_map): Make this map use
40387	type_base::cached_hash instead of type_base::ptr_hash now.
40388	(decl_base::decl_base): Initialize the new
40389	decl_base::hash_. member.
40390	(decl_base::{s,g}et_hash): Define.
40391	(decl_base::operator==(const decl_base& other)): Take the hash in
40392	account to speed up inequality detection.
40393	* src/abg-writer.cc (type_ptr_map): Renamed type_shared_ptr_map
40394	into this.  Make it use type_base::cached_hash and type_ptr_equal
40395	instead of type_base::shared_ptr_hash and type_shared_ptr_equal.
40396	(get_id_for_type): Add overload for type_base*.  Re-write the
40397	previous overload in terms of this one.
40398	(write_context::m_type_id_map): Use type_ptr_map as the type for
40399	this.
40400
404012014-01-13  Dodji Seketeli <dodji@redhat.com>
40402
40403	Do not canonicalize types anymore; it's slow and luckily not needed
40404	* src/abg-ir.h (translation_unit::canonicalize_type): Remove.
40405	* src/abg-dwarf-reader.cc (canonicalize_and_add_type_to_ir)
40406	(canonicalize_and_insert_type_into_ir)
40407	(canonicalize_and_insert_type_into_ir_under_scope): Remove.
40408	(build_enum_type, build_class_type, build_ir_node_from_die):
40409	Update for removal of type canonicalization.
40410	* src/abg-ir.cc (translation_unit::canonicalize_type): Remove.
40411
404122014-01-13  Dodji Seketeli <dodji@redhat.com>
40413
40414	Fix class scope setting & member type de-serializing from dwarf
40415	* include/abg-fwd.h (add_decl_to_scope, insert_decl_into_scope):
40416	return the decl added to the scope.
40417	(as_non_member_type, get_type_declaration): Declare new entry
40418	points.
40419	* include/abg-ir.h (class decl_base::insert_decl_into_scope):
40420	Update this friend declaration.
40421	(class scope_decl, class_decl): Update the friend add_decl_to_scope
40422	declaration.
40423	(scope_decl::add_member_decl): Return the added decl.
40424	(class_decl_sptr): Move this typedef befoer the class_decl class
40425	declaration.
40426	(class_decl::definition_of_declaration_): New member.
40427	(class_decl::{set_definition_of_declaration,
40428	get_definition_of_declaration}): New accessors.
40429	(class_decl::add_member_decl): Return the added member.
40430	(class_decl::insert_member_type): New member.
40431	(class_decl::member_base::access_specifier): Make this protected.
40432	(class_decl::member_type): Make this inherit from type_vase.
40433	(class_decl::member_type::type_): Remove this member.
40434	(class_decl::member_type::as_type): Remove this accessor.
40435	(class_decl::member_type::operator==(const type_base&)): New.
40436	(class_decl::member_type::operator shared_ptr<type_base>() const):
40437	Remove.
40438	(class_decl::member_type::get_underlying_type): New.
40439	(class_decl::member_type::operator==(const member_type&) const):
40440	New.
40441	* src/abg-comparison.cc
40442	(class_diff::{ensure_lookup_tables_populated, report}): Adjust for
40443	the removal of class_decl::member_type::as_type.
40444	* src/abg-dwarf-reader.cc (scope_stack_type): Change this as a
40445	typedef to stack<scope_decl*>.
40446	(current_scope): Change return type from scope_decl_sptr to
40447	scope_decl*.
40448	(insert_decl_into_scope): New.
40449	(build_namespace_decl_and_add_to_ir): Use insert_decl_into_scope
40450	in lieu of add_decl_to_scope.
40451	(build_class_type_and_add_to_ir): likewise.  Link a class
40452	definition to its declaration.  Push the current scope on the
40453	scope stack.  Use as_non_member_type.  Fix setting member types.
40454	(get_scope_for_die): Look through declaration-only classe to get
40455	its definition.
40456	(build_qualified_type, build_pointer_type_def)
40457	(build_reference_type, build_typedef_type, build_var_decl)
40458	(build_function_decl): Use as_non_member_type.
40459	(build_ir_node_from_die): Fix member variable & function adding.
40460	* src/abg-ir.cc (scope_decl::{add_member_decl,
40461	insert_member_decl}): Return the added member.
40462	(add_decl_to_scope): Likewise.
40463	(insert_decl_into_scope): Likewise.
40464	(get_top_most_scope_under): Fix logic.
40465	(get_type_declaration): New overload that return a decl_base*.
40466	(as_non_member_type): New definition.
40467	(class_decl::{get_definition_of_declaration,
40468	set_definition_of_declaration, insert_member_decl}): Likewise.
40469	(class_decl::add_member_decl): Re-write in terms of
40470	class::insert_member_decl.
40471	(class_decl::insert_member_type): New definition.
40472	(class_decl::add_member_type): Re-write in terms of
40473	class_decl::insert_member_type.
40474	(class_decl::remove_member_type): Update for the
40475	class_decl::member_type::as_type removal.
40476	(class_decl::{add_data_member, add_member_function,
40477	add_member_function_template, add_member_class_template}): Call
40478	scope_decl::add_member_decl.
40479	(class_decl::member_type::member_type): Update as the type now
40480	virtually inherits from type_base.
40481	(class_decl::member_type::{set,get}_access_specifier): New
40482	definitions.
40483	(class_decl::member_type::get_underlying_type): Likewise.
40484	(class_decl::member_type::set_scope): Update wrt
40485	class_decl::member_type::as_type -> get_underlying_type rename.
40486	(class_decl::member_type::operator==(const decl_base& other)):
40487	There is no more class_decl::member_type::as_type.
40488	(class_decl::member_type::operator==(const type_base& other)):
40489	New.
40490	(class_decl::member_type::get_pretty_representation): Update wrt
40491	class_decl::member_type::as_type -> get_underlying_type rename.
40492	* src/abg-reader.cc (build_class_decl): New that add
40493	add_member_decl adds even member types, no need to add it
40494	explicitly anymore.
40495
404962014-01-07  Dodji Seketeli <dodji@redhat.com>
40497
40498	Add regression tests for dwarf reading
40499	* tests/test-read-dwarf.cc: New dwarf reading regression test.
40500	* tests/data/test-read-dwarf/test0: New test input.
40501	* data/test-read-dwarf/test0: Likewise.
40502	* data/test-read-dwarf/test0.abi: Likewise.
40503	* data/test-read-dwarf/test0.cc: Likewise.
40504	* data/test-read-dwarf/test1: Likewise.
40505	* data/test-read-dwarf/test1.abi: Likewise.
40506	* data/test-read-dwarf/test1.cc: Likewise.
40507	* tests/Makefile.am: Build the new tests/test-read-dwarf.cc file.
40508
405092014-01-07  Dodji Seketeli <dodji@redhat.com>
40510
40511	Remove useless dependencies in tests/Makefile.am
40512	* tests/Makefile.am: Remove useless *_DEPENDENCIES variables.
40513
405142014-01-07  Dodji Seketeli <dodji@redhat.com>
40515
40516	Support new 'abi-corpus' native XML format (.abi)
40517	* include/abg-reader.h (read_corpus_from_native_xml)
40518	(read_corpus_from_native_xml_file): Declare new entry points.
40519	* include/abg-writer.h (write_corpus_to_native_xml)
40520	(write_corpus_to_native_xml_file): Likewise.
40521	* src/abg-reader.cc (read_translation_unit_from_input): Renamed
40522	read_input into this.  Support new 'path' attribute for
40523	'abi-instr' XML element.
40524	(read_corpus_from_input): New static function.
40525	(read_translation_unit_from_file)
40526	(read_translation_unit_from_buffer)
40527	(read_translation_unit_from_istream): Update wrt read_input ->
40528	read_translation_unit_from_input.
40529	(read_corpus_from_native_xml, read_corpus_from_native_xml)
40530	(read_corpus_from_native_xml_file): Define new entry points.
40531	* src/abg-writer.cc (write_translation_unit): Write 'path'
40532	attribute into the 'abi-instr' xml element.
40533	(write_corpus_to_native_xml, write_corpus_to_native_xml_file):
40534	Define new entry points.
40535	* tools/abg-tools-utils.h (file_type::{FILE_TYPE_XML_CORPUS,
40536	FILE_TYPE_ZIP_CORPUS}): New enumerators.
40537	* tools/abg-tools-utils.cc (guess_file_type): Support detection of
40538	the new xml file format containing a document root 'abi-corpus'
40539	root element.
40540	* tools/bidiff.cc (main): Support diffing xml corpus-es and zip
40541	corpus-es.
40542	* tools/bidw.cc (main): Recognize elf files before reading them.
40543	* tools/bilint.cc (main): Support reading xml/zip corpus-es too.
40544	* tests/data/test-read-write/test[0-23].xml: Update 'path'
40545	attribute.
40546
405472014-01-07  Dodji Seketeli <dodji@redhat.com>
40548
40549	Misc style fixes
40550	* include/abg-writer.h (write_translation_unit): Re-indent parms.
40551	* src/abg-writer.cc (write_translation_unit): Likewise.
40552	* test/test-read-write.cc (main): Fix white space.
40553
405542014-01-06  Dodji Seketeli <dodji@redhat.com>
40555
40556	Fix global variables diff reporting in corpus-es
40557	* src/abg-comparison.cc
40558	(corpus_diff::priv::ensure_lookup_tables_populated): Fix a wrong
40559	assert, resulting from a copy paste typo.
40560
405612014-01-06  Dodji Seketeli <dodji@redhat.com>
40562
40563	Add support for global variables in corpus diffing
40564	* include/abg-comparison.h (string_var_ptr_map, changed_var_ptr)
40565	(string_changed_var_ptr_map): New convenience typedefs.
40566	* src/abg-comparison.cc
40567	(corpus_diff::priv::{deleted_vars_,added_vars_,changed_vars_}):
40568	New members.
40569	(corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables}):
40570	Update wrt the new variables related lookup tables.
40571	(corpus_diff::ensure_lookup_tables_populated): Update to populate
40572	variables related lookup tables.
40573	(corpus_diff::report): Update to display added/removed/changed
40574	variables.
40575
405762014-01-06  Dodji Seketeli <dodji@redhat.com>
40577
40578	Misc style fixlets
40579	* include/abg-comparison.h (changed_function_ptr): Fix comment.
40580	* src/abg-comparison.cc (corpus_diff::report): Likewise.
40581	* src/abg-corpus.cc (corpus::is_empty): Likewise.
40582
405832013-12-23  Dodji Seketeli <dodji@redhat.com>
40584
40585	Initial support for diffing ABI corpus files
40586	* include/abg-comparison.h (string_function_ptr_map)
40587	(changed_function_ptr, string_changed_function_ptr_map)
40588	(corpus_diff_sptr): New convenience typedefs.
40589	(translation_unit_diff): Add comments.
40590	(class corpus_diff): New type.
40591	(compute_diff): New overload for corpus_diff.
40592	* include/abg-corpus.h (corpus::{functions, variables}): New
40593	typedefs.
40594	(corpus::{operator==, get_functions, get_variables}): New members.
40595	* include/abg-diff-utils.h (struct deep_ptr_eq_functor): New
40596	functor.
40597	* include/abg-ir.h (translation_unit::operator==): New member
40598	equality operator.
40599	* src/abg-comparison.cc (struct corpus_diff::priv): New private
40600	struct holding the private members of corpus_diff.
40601	(corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables,
40602	ensure_lookup_tables_populated}): Define new private member functions.
40603	(corpus_diff::{corpus_diff, first_corpus, second_corpus,
40604	function_changes, variable_changes, length, report}): New public members.
40605	(struct noop_deleter): New struct.
40606	(compute_diff): New implementation for corpus_diff.
40607	* src/abg-corpus.cc (struct corpus::priv): Renamed corpus::impl
40608	into this.  Add new fns, vars and is_symbol_table_built data
40609	members.
40610	(corpus::priv::build_symbol_table): New member function.
40611	(class symtab_build_visitor_type): New visitor type to build the
40612	symbol table.
40613	(struct func_comp, struct var_comp): New comparison functors.
40614	(corpus::priv::build_symbol_table): Define new member function.
40615	(corpus::{corpus, add, get_translation_units, operator==,
40616	get_functions, get_variables}): Define new members.
40617	* src/abg-ir.cc (translation_unit::operator==): Define new member
40618	equality operator.
40619	(operator==(translation_unit_sptr l, translation_unit_sptr r)):
40620	Define new equality operator.
40621	* tools/abg-tools-utils.h (enum file_type): New enum.
40622	(guess_file_type): Declare new function.
40623	* tools/abg-tools-utils.cc (guess_file_type): define new function.
40624	* tools/bidiff.cc (main): Guess the type of the files given in
40625	input and support elf files reading and diffing.
40626
406272013-12-23  Dodji Seketeli <dodji@redhat.com>
40628
40629	Generalize use of equality operator in core diff algorithms
40630	* include/abg-diff-utils.h (struct default_eq_functor): New
40631	equality functor.
40632	(end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Add a
40633	new equality functor template parameter and document it.  Use it
40634	to compare the elements of the sequences given in argument.
40635	(compute_middle_snake, ses_len, compute_diff): Add a new equality
40636	functor template parameter and document it.  Adjust call to
40637	end_of_frr_d_path_in_k_plus_delta, end_of_fr_d_path_in_k and
40638	compute_middle_snake.
40639	(ses_len, compute_diff): Add a new overload that uses a
40640	default_eq_functor as comparison functor, to avoid breaking
40641	existing client code.
40642	* src/abg-diff-utils.cc (compute_middle_snake): Adjust the call to
40643	the compute_middle_snake.
40644
406452013-12-23  Dodji Seketeli <dodji@redhat.com>
40646
40647	Change ir node visitor interface work on pointer to nodes
40648	* include/abg-ir.h (ir_traversable_base): New type to be the base
40649	of IR nodes that are to be traversed.  Extends traversable_base.
40650	Its ir_traversable_base::traversable() method takes an
40651	ir_node_visitor&.
40652	(ir_node_visitor::visit): Change these virtual overloads to take
40653	pointers to IR nodes, rather than references.  This will be useful
40654	to e.g, store these IR nodes in containers on the side for some
40655	algorithms to work.  That is going to be useful later to,
40656	e.g. build symbol tables on the side, using the visitor interface.
40657	(class decl_base): Make this inherit ir_traversable_base.
40658	* src/abg-ir.cc (*::traverse): Adjust comments and the call the
40659	ir_node_visitor::visit call.  Use the ir_traversable_base type
40660	rather than traversable_base.
40661	(ir_traversable_base::traverse): Define.
40662	(ir_node_visitor::visit): Change these overloads to take pointers
40663	rather than reference to ir nodes.
40664	* tests/test-walker.cc (name_printing_visitor::visit): Adjust to
40665	take pointers rather than references.
40666
406672013-12-23  Dodji Seketeli <dodji@redhat.com>
40668
40669	Do not forget to read function parms
40670	* src/abg-dwarf-reader.cc (build_function_decl): Do not forget the
40671	the function parameters.  Oops.
40672
406732013-12-20  Dodji Seketeli <dodji@redhat.com>
40674
40675	Support reading member functions and member types from DWARF
40676	* include/abg-ir.h (method_type_sptr): New convenience typedef.
40677	* src/abg-dwarf-reader.cc (read_context::{dwarf_version,
40678	die_wip_classes_map}): New accessors.
40679	(die_is_virtual): Rename is_virtual into this.
40680	(is_type_tag, is_type_die, die_virtual_function_index): Define new
40681	static functions.
40682	(die_member_offset): Fix comment.
40683	(get_scope_for_die): Take the read context as argument.
40684	(canonicalize_and_add_type_to_ir): Likewise.  On NULL scope, get
40685	the current translation unit from the read context.
40686	(canonicalize_and_insert_type_into_ir_under_scope): Handle NULL
40687	context.
40688	(build_function_decl): Support creating method_decls from here
40689	when necessary.
40690	(build_class_type_and_add_to_ir): Rename build_class_type into
40691	this.  Handle adding the class to the IR and to the relevant maps.
40692	During the creation of the class, arrange for
40693	build_ir_node_from_die on the current DIE to return a
40694	declaration-only class, representing the declaration for the class
40695	that is being constructed.  This breaks circular dependencies
40696	induced by decls/types that refer to the class being built, before
40697	the class is fully built and has a (logical) type ID.  Once the
40698	class is created, make it refer to the class declaration that was
40699	previously handed for the requests to the class DIE.  Now requests
40700	to the class DIE will just yield the newly built class.  Add
40701	support for member functions and member types.
40702	(build_corpus): Support reading the dwarf version and stick it
40703	into the context.
40704	(build_ir_node_from_die): Adjust for change in
40705	canonicalize_and_add_type_to_ir and build_class_type signature
40706	change.
40707	* src/abg-ir.cc (class_decl::method_decl::get_type): Support
40708	returning NULL type.
40709
407102013-12-20  Dodji Seketeli <dodji@redhat.com>
40711
40712	Don't crash in get_global_scope on empty decls
40713	* src/abg-ir.cc (get_global_scope): Don't crash when given a NULL
40714	decl.
40715
407162013-12-20  Dodji Seketeli <dodji@redhat.com>
40717
40718	Make decl_base::set_scope virtual, to work on class_decl::member_type
40719	* include/abg-ir.h (decl_base::set_scope): Make this virtual.
40720	(class_decl::member_type::set_scope): Declare an overload here.
40721	* src/abg-ir.cc (class_decl::member_type::set_scope): Define new
40722	overload.  Make this set the scope of the underlying type of the
40723	member type as well.
40724
407252013-12-20  Dodji Seketeli <dodji@redhat.com>
40726
40727	Support artificial parameters
40728	* include/abg-ir.h (function_decl::parameter::{get,
40729	set}_artificial): Add new accessors for an "artificial" flag.
40730	* src/abg-reader.cc (build_function_parameter): Support reading
40731	the artificial parameter flag.
40732	* src/abg-writer.cc (write_function_decl): Support writing the
40733	artificial parameter flag.
40734
407352013-12-19  Dodji Seketeli <dodji@redhat.com>
40736
40737	Initial support for reading struct/class
40738	* src/abg-dwarf-reader.cc (enum virtuality): New enum.
40739	(class expr_result, struct dwarf_expr_eval_context): New types.
40740	(die_size_in_bits)
40741	(die_access_specifier, die_virtuality, is_virtual)
40742	(die_location_expr, op_pushes_constant_value)
40743	(op_pushes_non_constant_value, op_manipulates_stack)
40744	(op_is_arith_logic, op_is_control_flow)
40745	(eval_last_constant_dwarf_sub_expr, die_member_offset)
40746	(build_class_type): New static functions.
40747	(build_ir_node_from_die<DW_TAG_{class, structure}_type>): Support
40748	creating IR node for class and struct by calling the new
40749	build_class_type.
40750
407512013-12-19  Dodji Seketeli <dodji@redhat.com>
40752
40753	Slight style fix
40754	* src/abg-dwarf-reader.cc (build_qualified_type): Fix indentation.
40755
407562013-12-19  Dodji Seketeli <dodji@redhat.com>
40757
40758	Be more forgiving when parsing xml from stdin
40759	* src/abg-libxml-utils.cc (xml_istream_input_read): Return the
40760	byte read count even when the stream seems to be borked.  In that
40761	case it should be zero.
40762
407632013-12-19  Dodji Seketeli <dodji@redhat.com>
40764
40765	Don't crash if building pointer/reference yields NULL
40766	* src/abg-dwarf-reader.cc
40767	(build_ir_node_from_die<DW_TAG_pointer_type)
40768	(DW_TAG_rvalue{0,1}_reference_type>): Do not crash if building the
40769	IR node for the underlying type yields NULL.
40770
407712013-12-19  Dodji Seketeli <dodji@redhat.com>
40772
40773	Use dwarf_attr_integrate() rather than dwarf_attr()
40774	* src/abg-dwarf-reader.cc (die_string_attribute)
40775	(die_unsigned_constant_attribute, die_signed_constant_attribute)
40776	(die_flag_attribute, die_die_attribute): Use dwarf_attr_integrate
40777	rather than dwarf_attr to look through DW_AT_abstract_origin.
40778
407792013-12-14  Dodji Seketeli <dodji@redhat.com>
40780
40781	Support enums
40782	* src/abg-dwarf-reader.cc (build_enum_type): New function.
40783	(build_ir_node_from_die): Call the new build_enum_type here to
40784	Handle DW_TAG_enumeration_type DIEs.
40785
407862013-12-14  Dodji Seketeli <dodji@redhat.com>
40787
40788	Build & use a DIE -> parent map to avoid emitting useless types
40789	* include/abg-ir.h (translation_unit::{mark_type_as_used,
40790	prune_unused_types}): Remove these declarations.
40791	* src/abg-ir.cc (translation_unit::priv::used_types_): Remove.
40792	(class subtype_marking_visitor): Likewise.
40793	(translation_unit::{mark_type_as_used, prune_unused_types):
40794	Likewise.
40795	(get_top_most_scope_under): Fix logic and add comment.
40796	* src/abg-dwarf-reader.cc (die_tu_map_type, offset_offset_map):
40797	New convenience typedefs.
40798	(read_context::{die_tu_map_, die_parent_map_}): New context
40799	members.
40800	(read_context::{die_tu_map, die_parent_map}): New accessors.
40801	(build_ir_node_from_die): New overload that takes the scope of the
40802	ir node in parameter.
40803	(die_signed_constant_attribute): Un-comment this.
40804	(build_die_parent_relations_under, build_die_parent_map)
40805	(get_parent_die, get_scope_for_die): New static functions.
40806	(build_translation_unit_and_add_to_ir): Renamed
40807	build_translation_unit into this. Populate the new
40808	read_context::die_tu_map() here.
40809	(canonicalize_and_add_type_to_ir)
40810	(canonicalize_and_insert_type_into_ir)
40811	(canonicalize_and_insert_type_into_ir_under_scope): Move these
40812	overloads over the top of the file.
40813	(build_namespace_decl_and_add_to_ir): Fix this by adding the
40814	namespace to the IR scope of the DIE (using the new
40815	get_scope_for_die()).  Update the read_context::die_decl_map()
40816	map.
40817	(build_function_decl): Support functions that return void.  Also,
40818	skip parameters that don't have type set.
40819	(build_corpus): Walk all the DIEs to build a DIE -> parent map.
40820	Adjust for the rename to build_translation_unit_and_add_to_ir.
40821	(build_ir_node_from_die): Add a scope parm.  Adjust back to
40822	building IR nodes only for public decls, unless the
40823	'called_from_public_decl' flag is set.  Adjust to stick the resulting
40824	IR node into the scope given in parameter.
40825
408262013-12-14  Dodji Seketeli <dodji@redhat.com>
40827
40828	Mark sub-types as part of general type marking
40829	* src/abg-ir.cc (subtype_marking_visitor): New visitor.
40830	(translation_unit::mark_type_as_used): When marking a composite
40831	type as used, mark its sub-types as well.
40832
408332013-12-14  Dodji Seketeli <dodji@redhat.com>
40834
40835	Add missing virtual keywords for traverse() method
40836	* include/abg-ir.h ({translation_unit, decl_base, scope_decl,
40837	type_decl, namespace_decl, qualified_type_decl, pointer_type_def,
40838	reference_type_def, enum_type_decl, typedef_decl, var_decl,
40839	function_tdecl, class_decl, class_decl::data_member,
40840	class_decl::member_function, class_decl::member_function_template,
40841	class_decl::member_class_template}::traverse): Add a virtual
40842	keyword at least to "document" that this method is virtual -- and
40843	thus remind the user that it overrides the
40844	traversable_base::traverse().
40845
408462013-12-14  Dodji Seketeli <dodji@redhat.com>
40847
40848	Add a is_type overload
40849	* include/abg-fwd.h (is_type): Declare new overload that takes a
40850	type reference.
40851	* src/abg-ir.cc (is_type): Define.
40852
408532013-12-13  Dodji Seketeli <dodji@redhat.com>
40854
40855	Prune types that are not ref'ed by public decls
40856	* include/abg-fwd.h (remove_decl_from_scope): Declare new
40857	function.
40858	* include/abg-ir.h (type_base_sptr, decl_base_sptr): Move these
40859	convenience typedef before the translation_unit declaration.
40860	(translation_unit::{mark_type_as_used, prune_unused_types}):
40861	Declare new methods.
40862	(decl_base::remove_member_decl): Likewise.
40863	(class_decl::{remove_member_decl, remove_member_type): Likewise.
40864	* src/abg-dwarf-reader.cc (die_decl_map_type): Change this map
40865	type so that the value is now a DIE offset, rather than a DIE.
40866	This is because many times the lifetime of DIEs is shorter than
40867	the one of the reader_context.  Also, the die offset uniquely
40868	designates a physical DIE even if several different instances of
40869	logical DIE might point to it.
40870	(struct die_hash): Remove this as it's useless now that we store
40871	DIE offsets in the map.
40872	(build_translation_unit): Call build_ir_node_from_die w/o setting
40873	the called_from_public_decl flag.  Prune the types that are not
40874	used by any public decls.
40875	(build_namespace_decl_and_add_to_ir): all build_ir_node_from_die
40876	w/o setting the called_from_public_decl flag.
40877	(build_ir_node_from_die): Change the only_public_decl flag into a
40878	called_from_public_decl flag.  Mark types used by public decls as
40879	such.  Adjust for the parm changes of build_qualified_type
40880	build_pointer_type_def, build_reference_type, and
40881	build_typedef_type.
40882	(build_qualified_type, build_pointer_type_def)
40883	(build_reference_type, build_typedef_type): Take a new
40884	called_from_public_decl.  Pass it to build_ir_node_from_die.
40885	(build_var_decl): Call build_ir_node_from_die with the
40886	called_from_public_decl flag set to true to flag the types
40887	referenced by this variable as being used.
40888	(build_function_decl): Take a called_from_public_decl flag as
40889	well, as this function can now call build_function_decl itself to
40890	build a function decl out of the value of the DW_AT_specification
40891	attribute, for DIEs representing function definitions.  Also, flag
40892	the types referenced by public functions are being used.
40893	* src/abg-ir.cc (translation_unit::priv::used_types_): New map for
40894	the used types.
40895	(translation_unit::{mark_type_as_used, prune_unused_types}):
40896	Define new methods.
40897	(scope_decl::remove_member_decl): Likewise.
40898	(remove_decl_from_scope): Define new function.
40899	(class_decl::{remove_member_decl, remove_member_type}): Define new
40900	methods.
40901
409022013-12-12  Dodji Seketeli <dodji@redhat.com>
40903
40904	Support reading namespaces
40905	* include/abg-fwd.h (get_global_scope): Return a const
40906	global_scope.  Add a new overload that takes a naked pointer as
40907	parm.
40908	(insert_decl_into_scope, get_top_most_scope_under): Declare new
40909	entry points.
40910	* include/abg-ir.h (class decl_base, class scope_decl): Add
40911	insert_decl_into_scope as a friend of these classes.
40912	(scope_decl::{insert_decl_into_scope, find_iterator_for_member}):
40913	Declare new member.
40914	(scope_decl::get_member_decls): New non-const overload.
40915	* src/abg-dwarf-reader.cc (build_translation_unit): Remove the
40916	"recurse" parameter.  Adjust the call to build_ir_node_from_die to
40917	read just public decls that are at namespace scope.  Anything else
40918	should be dropped unless it's needed to emitting the public
40919	namespace-level decls.
40920	(build_namespace_decl_and_add_to_ir)
40921	(canonicalize_and_insert_type_into_ir): Define new static
40922	functions.
40923	(build_corpus): Adjust ad build_translation_unit doesn't have the
40924	"recurse" parameter anymore.
40925	(canonicalize_and_add_type_to_ir): Make this static.  Fix
40926	comments.
40927	(build_ir_node_from_die): Take a new "only_public_decl"
40928	parameter. For DW_TAG_base_type case, use the new
40929	canonicalize_and_insert_type_into_ir to insert the type at the
40930	right place in the global scope making sure it is seen before the
40931	current scope.  For pointer, references and qualified types, use
40932	canonicalize_and_insert_type_into_ir to add the type at the same
40933	scope as its underlying type.  Handle DW_TAG_{namespace,module}
40934	using the new build_namespace_decl_and_add_to_ir function.  Add
40935	some vertical spaces and some assertions.
40936	* src/abg-ir.cc (scope_decl::add_member_decl): Use scope_decl_sptr
40937	typedef.
40938	(scope_decl::{insert_member_decl,find_iterator_for_member}):
40939	Define new methods.
40940	(insert_decl_into_scope, get_top_most_scope_under): Define new
40941	functions.
40942	(get_global_scope): Constify the return type.
40943	(get_translation_unit): Adjust as get_global_scope now returns a
40944	const.
40945	* src/abg-reader.cc (get_translation_unit): Likewise.
40946
409472013-12-12  Dodji Seketeli <dodji@redhat.com>
40948
40949	Fix function_decl::parameter::operator==
40950	* include/abg-ir.h (function_decl::parameter::operator==): Support
40951	empty type, e.g, in presence of a variadic parameter.
40952
409532013-12-12  Dodji Seketeli <dodji@redhat.com>
40954
40955	Misc style fixes
40956	* include/abg-ir.h (decl_base::set_visibility): Remove useless
40957	white space.
40958	(class scope_decl): Remove useless white space.
40959	(scope_decl::add_member_decl): Use decl_base_sptr convenience
40960	typedef.
40961	(global_scope_sptr, namespace_decl_sptr): New convenience typedef.
40962	(class global_scope): Remove useless white space.
40963
409642013-12-11  Dodji Seketeli <dodji@redhat.com>
40965
40966	Misc style fixes
40967	* src/abg-dwarf-reader.cc (die_string_attribute, is_public_decl)
40968	(build_translation_unit, build_ir_node_from_die): Fix comments.
40969	(die_unsigned_constant_attribute, die_signed_constant_attribute)
40970	(die_loc_and_name): Align parms.
40971
409722013-12-11  Dodji Seketeli <dodji@redhat.com>
40973
40974	Support typedef types
40975	* src/abg-dwarf-reader.cc (build_typedef_type): Define new static
40976	function.
40977	(canonicalize_and_add_type_to_ir): Do not crash on NULL input
40978	type.  Also, add a new overload for smart pointer on scope.
40979	(build_ir_node_from_die): For DW_TAG_base_type case, adjust as
40980	canonicalize_and_add_type_to_ir now takes smart pointers on
40981	scopes.  Support the DW_TAG_typedef case by calling the new
40982	build_typedef_type.
40983
409842013-12-11  Dodji Seketeli <dodji@redhat.com>
40985
40986	Support reference types
40987	* src/abg-dwarf-reader.cc (build_pointer_type_def): Do not forget
40988	to get the proper size of the pointer type.
40989	(build_reference_type): Define new static function.
40990	(build_ir_node_from_die): Call build_reference_type for the
40991	DW_TAG_reference_type and DW_TAG_rvalue_reference_type cases.
40992
409932013-12-11  Dodji Seketeli <dodji@redhat.com>
40994
40995	Support pointer types
40996	* include/abg-fwd.h (get_translation_unit, get_global_scope):
40997	Declare new overloads that act on a naked pointer to decl_base.
40998	* src/abg-dwarf-reader.cc (build_pointer_type_def): Define new
40999	static function.
41000	(canonicalize_and_add_type_to_ir): Take a naked pointer to
41001	scope_decl rather than a smart pointer.
41002	(build_ir_node_from_die): For DW_TAG_base_type, adjust.  Support
41003	DW_TAG_pointer_type case.  For DW_TAG_{const,volatile}_type case,
41004	make sure the qualified type is in the same scope as its
41005	underlying type.
41006	* src/abg-ir.cc (get_global_scope, get_translation_unit): Define
41007	new overloads that acts on a naked decl_base.
41008
410092013-12-11  Dodji Seketeli <dodji@redhat.com>
41010
41011	Support qualified types
41012	* src/abg-dwarf-reader.cc (build_qualified_type)
41013	(canonicalize_and_add_type_to_ir): Define new static functions.
41014	(build_ir_node_from_die): In the DW_TAG_base_type case, use the
41015	new canonicalize_and_add_type_to_ir which is a factorization of
41016	this code.  In the DW_TAG_{const,volatile}_type, use the new
41017	build_qualified_type and canonicalize_and_add_type_to_ir
41018	functions.
41019
410202013-12-11  Dodji Seketeli <dodji@redhat.com>
41021
41022	Support reading public functions from DWARF
41023	* src/abg-dwarf-reader.cc (read_context::dwarf_): New member.
41024	(read_context::load_debug_info): Move the content of
41025	load_debug_info_from_elf here.
41026	(read_context::dwarf): New accessor for the dwarf_ member above.
41027	(die_flag_attribute, die_loc_and_name, is_public_decl)
41028	(build_function_decl): New static functions.
41029	(die_location): Do not try to create a location object when the
41030	location has empty file or empty line number.
41031	(build_translation_unit): Take a new address_size parameter.
41032	(build_type_decl): Really take a context parameter.  Use the new
41033	die_loc_and_name() here.
41034	(build_var_decl): Skip non-public vars.
41035	(build_corpus): Use dwarf_nextcu instead of dwfl_nextcu, so that
41036	we can get the address_size used in the current CU.  Note that for
41037	this we are getting the Dwarf* pointer from the context thanks to
41038	the new read_context::dwarf() getter.  Adjust the call to
41039	build_translation_unit to pass it the new address_size.
41040	(build_ir_node_from_die): Shorten lines a little bit.  Call the
41041	new build_function_decl to support reading DW_TAG_subprogram DIEs.
41042	(read_corpus_from_elf): Adjust to create the read context earlier
41043	and use its read_context::load_debug_info method to load the debug
41044	info.
41045
410462013-12-11  Dodji Seketeli <dodji@redhat.com>
41047
41048	Make bilint read input from stdin
41049	* include/abg-libxml-utils.h (new_reader_from_istream): Declare
41050	new public entry point.
41051	* src/abg-libxml-utils.cc (xml_istream_input_read)
41052	(xml_istream_input_close): New static functions.
41053	(new_reader_from_istream): Define new public input function.
41054	* include/abg-reader.h (read_translation_unit_from_istream):
41055	Declare new entry points.
41056	* src/abg-reader.cc (read_translation_unit_from_istream): Define
41057	new entry points.
41058	* tools/bilint.cc (options::{read_from_stdin, noout}): New
41059	members.
41060	(display_usage): Document --stdin and --noout.
41061	(parse_command_line): Adjust to consider that no option on the
41062	command line means reading from stdin, just like --stdin.  Support
41063	the --noout option as well.
41064	(main): Support Read the abi instr from stdin; in that case, what
41065	was read is just serialized back to stdout, unless --noout was
41066	supplied.
41067
410682013-12-11  Dodji Seketeli <dodji@redhat.com>
41069
41070	Support the "address-size" attribute for <abi-instr> elements
41071	* include/abg-ir.h (translation_unit::translation_unit): Take an
41072	address_size parameter.
41073	(translation_unit::{get_address_size, set_address_size}): New
41074	accessors.
41075	* src/abg-ir.cc (translation_unit::priv::address_size_): New
41076	private member.
41077	(translation_unit::translation_unit): Take an address_size
41078	parameter.
41079	(translation_unit::{get_address_size, set_address_size}): Define
41080	these new methods.
41081	* src/abg-reader.cc (read_input): Read the "address-size"
41082	attribute from the abi-instr element.
41083	* src/abg-writer.cc (write_translation_unit): Write the
41084	"address-size" attribute.
41085	* tests/data/test-read-write/test23.xml: New test input.
41086	* tests/test-read-write.cc (in_out_specs): Add the new test above
41087	to the list of files to read and write back.
41088
410892013-12-11  Dodji Seketeli <dodji@redhat.com>
41090
41091	Support variadic arguments in function decls
41092	* src/abg-reader.cc (build_function_parameter): Support reading
41093	the "is-variadic" attribute.
41094	* src/abg-writer.cc (write_function_decl): Support writing the
41095	"is-variadic" attribute.
41096	* tests/data/test-read-write/test22.xml: New test input.
41097	* tests/test-read-write.cc (in_out_specs): Add the new test to the
41098	list of files to read and write back.
41099
411002013-12-07  Dodji Seketeli <dodji@redhat.com>
41101
41102	Initial support of reading an ABI Corpus from DWARF
41103	* configure.ac: Check the presence of libdw.so and
41104	elfutils/libdwfl.h headers from elfutils and define the necessary
41105	linking flags.
41106	* include/abg-dwarf-reader.h: New header file
41107	* include/Makefile.am: Add the new header file to the source
41108	distribution.
41109	* src/abg-dwarf-reader.cc:: New file.
41110	* src/Makefile.am: Add the new file to the source distribution.
41111	* include/abg-fwd.h (dump): Add declarations for several overloads
41112	to allow dumping to a given output stream.
41113	* include/abg-ir.h (class translation_unit): Use a pimpl idiom for
41114	this now.
41115	(translation_unit::canonicalize_type): Declare new method.
41116	* src/abg-ir.cc (struct translation_unit::priv): New private type
41117	for the pimpl idiom for translation_unit.
41118	(translation_unit::{translation_unit, get_global_scope, get_path,
41119	set_path, get_loc_mgr}): Adjust for pimpl idiom.
41120	(translation_unit::canonicalize_type): Define this new method and
41121	one overload.
41122	* src/abg-writer.cc (dump): Define several overloads to dump IR
41123	nodes to given output streams.
41124	* tools/bidw.cc: New file for the new bidw tool.
41125	* tools/Makefile.am: Define rules to build the new bidw tools.
41126
411272013-12-07  Dodji Seketeli <dodji@redhat.com>
41128
41129	Pass a string by reference rather than by value
41130	* tools/bilint.cc (display_usage): Pass program name by reference.
41131
411322013-12-07  Dodji Seketeli <dodji@redhat.com>
41133
41134	Misc style fixes
41135	* src/abg-ir.cc (location_manager::location_manager)
41136	(translation_unit::{is_empty, traverse, ~translation_unit): Remove
41137	useless vertical white spaces.
41138	* tools/bilint.cc (parse_command_line): Fix indentation.
41139
411402013-12-04  Dodji Seketeli <dodji@redhat.com>
41141
41142	Prepare serialization API for multiple backends
41143	* include/abg-reader.h: New file with abigail::xml_reader APIs.
41144	* include/abg-writer.h: New file with abigail::xml_writer APIs.
41145	* include/Makefile.am: Add the new files above to the source
41146	distribution.
41147	* src/abg-reader.cc: Update top-file comments.
41148	(namespace xml_reader): Rename namespace
41149	reader into this.
41150	(read_to_translation_unit, read_corpus_from_archive): New static
41151	functions.
41152	(read_translation_unit_from_file)
41153	(read_translation_unit_from_file, read_corpus_from_file): New
41154	entry points.
41155	(struct array_deleter): New functor.
41156	(translation_unit::read): Remove this.
41157	* src/abg-writer.cc: Update top file comments.
41158	(namespace xml_writer): Rename namespace
41159	writer into this.
41160	(struct archive_write_ctxt): New internal type.
41161	(create_archive_write_context, write_translation_unit_to_archive)
41162	(write_translation_unit, write_corpus_to_archive): New low level
41163	static functions overloads.
41164	(write_corpus_to_archive, write_translation_unit): Public higher
41165	level overloads.
41166	(translation_unit::write): Remove.
41167	(dump): Update for new xml_writer namespace.
41168	* include/abg-ir.h (translation_unit::{read, write}): Remove these
41169	serialization methods.
41170	* include/abg-corpus.h (corpus_sptr): New convenience typedef.
41171	(corpus::{read, write}): Remove these methods.
41172	* src/abg-corpus.cc (corpus::{read, write})
41173	(corpus::impl::{serialized_tus, archive}): Remove these members.
41174	(corpus::impl::{get_archive, close_archive, write_tu_to_archive,
41175	read_to_translation_unit}): Remove these methods.
41176	* tests/test-bidiff.cc (main): Update for usage of the new
41177	xml_reader API.
41178	* tests/test-read-write.cc (main): Likewise. Update for the usage
41179	of the new xml_writer API, too.
41180	* tests/test-walker.cc (main): Update for the usage of the new
41181	xml_reader API.
41182	* tests/test-write-read-archive.cc (main): Likewise.  And for the
41183	xml_writer API, too.
41184	* tools/biar.cc (add_tus_to_archive, extract_tus_from_archive): Likewise.
41185	* tools/bidiff.cc (main): Likewise, for xml_reader APIs.
41186	* tools/bilint.cc (main): Likewise, for xml_writer APIs, too.
41187
411882013-11-29  Dodji Seketeli <dodji@redhat.com>
41189
41190	Add support for bidiff regression testing
41191	* tests/data/test-bidiff/test-enum0-v0.cc.bi: New input file.
41192	* tests/data/test-bidiff/test-enum0-v1.cc.bi: Likewise.
41193	* tests/data/test-bidiff/test-enum0-report.diff: Likewise.
41194	* tests/data/test-bidiff/test-enum1-v0.cc.bi: Likewise.
41195	* tests/data/test-bidiff/test-enum1-v1.cc.bi: Likewise.
41196	* tests/data/test-bidiff/test-enum1-report.txt: Likewise.
41197	* tests/data/test-bidiff/test-qual-type0-v0.cc.bi: Likewise.
41198	* tests/data/test-bidiff/test-qual-type0-v1.cc.bi: Likewise.
41199	* tests/data/test-bidiff/test-qual-type0-report.txt: Likewise.
41200	* tests/data/test-bidiff/test-struct0-v0.cc.bi: Likewise.
41201	* tests/data/test-bidiff/test-struct0-v1.cc.bi: Likewise.
41202	* tests/data/test-bidiff/test-struct0-report.txt: Likewise.
41203	* tests/data/test-bidiff/test-struct1-v0.cc.bi: Likewise.
41204	* tests/data/test-bidiff/test-struct1-v1.cc.bi: Likewise.
41205	* tests/data/test-bidiff/test-struct1-report.txt: Likewise.
41206	* tests/data/test-bidiff/test-var0-v0.cc.bi: Likewise.
41207	* tests/data/test-bidiff/test-var0-v1.cc.bi: Likewise.
41208	* tests/data/test-bidiff/test-var0-report.txt: Likewise.
41209	* tests/test-bidiff.cc: New file.
41210	* tests/Makefile.am: Build the new runtestbidiff regression test
41211	and add the above to the source distribution.
41212
412132013-11-29  Dodji Seketeli <dodji@redhat.com>
41214
41215	Add missing test inputs to source distribution
41216	* tests/Makefile.am (data/test-read-write/test{17, 18, 19, 20,
41217	21}.xml): Add these test input files to the source distribution.
41218
412192013-11-28  Dodji Seketeli <dodji@redhat.com>
41220
41221	Add diff support for var_decl
41222	* include/abg-comparison.h (class var_diff): New declaration.
41223	(var_diff_sptr): New convenience typedef.
41224	(compute_diff): New overloads for var_diff, decl_base and
41225	type_base.
41226	* src/abg-comparison.cc (try_to_diff): Renamed try_to_diff_types
41227	into this.
41228	(compute_diff_for_types): Adjust for the try_to_diff_types
41229	renaming.  Fix comments.
41230	(compute_diff_for_decls): Re-use try_to_diff.  Update for
41231	var_decl.
41232	(compute_diff): Define overloads for decl_base, type_base and
41233	var_decl.
41234	(diff_length_of_decl_bases, diff_length_of_type_bases): New static
41235	help functions.
41236	(report_name_size_and_alignment_changes): Renamed
41237	report_size_and_alignment_changes into this.  Make it report name
41238	changes as well.
41239	(var_diff::priv): New struct.
41240	(var_diff::{var_diff, first_var, second_var, type_diff, length,
41241	report}): Define methods.
41242	({qualified_type_diff, enum_diff, class_diff, scope_diff,
41243	function_decl_diff}::report): Do not report
41244	anything if the diff is empty.
41245	(type_decl_diff::length): Fix this.
41246	(type_decl_diff::report): Adjust for renaming to
41247	report_name_size_and_alignment_changes.
41248
412492013-11-28  Dodji Seketeli <dodji@redhat.com>
41250
41251	Add enum_type_decl::get_pretty_representation()
41252	* include/abg-ir.h (enum_type_decl::get_pretty_representation):
41253	Declare new virtual method override.
41254	* src/abg-ir.cc (enum_type_decl::get_pretty_representation):
41255	Define it.
41256
412572013-11-28  Dodji Seketeli <dodji@redhat.com>
41258
41259	Change return type of abigail::is_type()
41260	* include/abg-fwd.h (is_type): Change the return type from bool to
41261	type_base_sptr.
41262
412632013-11-27  Dodji Seketeli <dodji@redhat.com>
41264
41265	Support diff for enum_type_decl
41266	* include/abg-ir.h (enum_type_decl_sptr): New typedef.
41267	(enum_type_decl::enumerator::enumerator): Make default constructor
41268	public so that enumerators can be stored in vectors.  Maybe I
41269	should have made stored pointers to enumerators instead ...
41270	(enum_type_decl::enumerator::get_qualified_name): Define new
41271	method.
41272	* include/abg-comparison.h (string_enumerator_map)
41273	(changed_enumerator, string_changed_enumerator_map)
41274	(enum_diff_sptr): New convenience typedefs.
41275	(class enum_diff): Declare new class.
41276	(compute_diff): New overload for enum_type_decl.
41277	* src/abg-comparison.cc (enum diff_kind, report_mem_header): Move
41278	these at the beginning of the file.
41279	(struct enum_diff::priv): Define this.
41280	(enum_diff::{clear_lookup_tables, lookup_tables_empty,
41281	ensure_lookup_tables_populated, enum_diff, first_enum,
41282	second_enum, underlying_type_diff, deleted_enumerators,
41283	inserted_enumerators, changed_enumerators, length, report}):
41284	Define these new methods.
41285	(compute_diff): New overload for enum_diff.
41286	(compute_diff_for_types): Add support enum_type_decl here.
41287
412882013-11-27  Dodji Seketeli <dodji@redhat.com>
41289
41290	Fix equality operator for enum_type_decl
41291	* src/abg-ir.cc (enum_type_decl::operator==(const type_base& o)):
41292	This was comparing just the decl_base and type_base part of the
41293	enum.  Now re-use the enum_type_decl::operator==(const decl_base)
41294	that compares the entirety of the types.
41295
412962013-11-27  Dodji Seketeli <dodji@redhat.com>
41297
41298	Fix indentation and wording of some existing diff reports
41299	* src/abg-comparison.cc (class_diff::report): Fix report wording.
41300	Change indentation space from 4 white spaces to two.
41301	(scope_diff::report): Fix logic indentation generation.
41302
413032013-11-26  Dodji Seketeli <dodji@redhat.com>
41304
41305	Change enum_type_decl::enumerators from a list to a vector
41306	* include/abg-ir.h (enum_type_decl::enumerators): Change this from
41307	a list to a vector.
41308	* src/abg-hash.cc (enum_type_decl::hash::operator()): Use the
41309	typedef enum_type_decl::enumerators rather than std::list<blah>.
41310	* src/abg-ir.cc (enum_type_decl::get_enumerators): Use
41311	the enum_type_decl::enumerators typedef.
41312	(enum_type_decl::operator==): Likewise.
41313	* src/abg-reader.cc (build_enum_type_decl): Likewise.
41314	* src/abg-writer.cc (write_enum_type_decl): Likewise.
41315
413162013-11-25  Dodji Seketeli <dodji@redhat.com>
41317
41318	Fix thinko in qualified_type_diff::length
41319	* src/abg-comparison.cc (qualified_type_diff::length): Fix thinko.
41320
413212013-11-25  Dodji Seketeli <dodji@redhat.com>
41322
41323	Support diff between qualified types
41324	* include/abg-ir.h (qualified_type_def_sptr): Declare new typedef.
41325	(class qualified_type_def): Add comment at the end.
41326	(operator<<(std::ostream&, qualified_type_def::CV)): Declare new
41327	streaming operator.
41328	* src/abg-ir.cc (operator<<(std::ostream&,
41329	qualified_type_def::CV)): Define this new streaming operator.
41330	* include/abg-comparison.h (class qualified_type): Declare new
41331	class.
41332	(compute_diff): Declare new overload for qualified_type_def_sptr.
41333	* src/abg-comparison.cc (struct qualified_type_diff::priv): Define
41334	new type.
41335	(qualified_type_diff::{qualified_type_diff, first_qualified_type,
41336	second_qualified_type, underlying_type_diff, length}):
41337	Define new methods.
41338	(get_leaf_type): Define new static function.
41339	(compute_diff): Define overload for qualified_type_def_sptr.
41340	(compute_diff_for_types): Add support for
41341	diffing qualified_type_def here.
41342
413432013-11-25  Dodji Seketeli <dodji@redhat.com>
41344
41345	Cleanup header of changes of underlying types of pointers/references
41346	* src/abg-comparison.cc ({pointer_diff, reference_diff}::report):
41347	Unify header of changes in the referenced type.
41348	* src/abg-ir.cc (decl_base::get_pretty_representation): By
41349	default, do not prefix types with "type ", for consistency sake.
41350
413512013-11-25  Dodji Seketeli <dodji@redhat.com>
41352
41353	Ensure diff types can only be created by compute_diff
41354	* include/abg-comparison.h (diff::diff): Make constructor
41355	protected.
41356	(pointer_diff::pointer_diff): Likewise.
41357	(pointer_diff::{first_pointer, second_pointer}): Constify the
41358	return type.
41359	(compute_diff): Make this a friend of class pointer_diff.
41360	(reference_diff::reference_diff): Make this constructor protected.
41361	(compute_diff): Make this a friend of class reference_diff.
41362	(class_diff::class_diff): Make this constructor protected.
41363	(compute_diff): Make this a friend of class class_diff.
41364	(scope_diff::scope_diff): Make this constructor protected.
41365	(compute_diff): Make this a friend of class scope_diff.
41366	(function_decl_diff::function_decl_diff): Make this constructor
41367	protected.
41368	(type_decl_diff::type_decl_diff): Likewise.
41369	(typedef_diff::typedef_diff): Likewise.
41370	(translation_unit_diff::translation_unit_diff): Likewise.
41371	(compute_diff): Make this a friend of class translation_unit_diff.
41372	* src/abg-comparison.cc (pointer_diff::{first_pointer,
41373	second_pointer}): Constify return type.
41374
413752013-11-21  Dodji Seketeli <dodji@redhat.com>
41376
41377	Add size/alignment info to class diff report
41378	* src/abg-comparison.cc (represent): Move these static overloads
41379	to the beginning of the file.
41380	(report_size_and_alignment_changes): New function.  It has been
41381	factorized out of ...
41382	(type_decl_diff::report): ... this.
41383	(class_diff::report): Use the new
41384	report_size_and_alignment_changes to report size/alignment info
41385	for classes.
41386
413872013-11-21  Dodji Seketeli <dodji@redhat.com>
41388
41389	Style fix
41390	* src/abg-comparison.cc (class_diff::report): Rename first_class
41391	into first and second_class into second.
41392
413932013-11-21  Dodji Seketeli <dodji@redhat.com>
41394
41395	Misc diff reporting nits
41396	* include/abg-ir.h (type_decl::get_pretty_representation): New
41397	overload.
41398	* abg-ir.cc (type_decl::get_pretty_representation): Implement it.
41399	* src/abg-comparison.cc (represent, class_diff::report): Quote the
41400	pretty representation of abi artifacts in the report.
41401	(type_decl_diff::report): Better wording to express type_decl
41402	change.
41403
414042013-11-20  Dodji Seketeli <dodji@redhat.com>
41405
41406	Support reporting changed data member in class
41407	* include/abg-ir.h (operator<<(std::ostream&, decl_base::binding))
41408	(operator<<(std::ostream&, class_decl::access_specifier)): Declare
41409	new streaming operators.
41410	(class_decl::member_type::get_pretty_representation): New virtual
41411	overload.
41412	* src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)):
41413	(operator<<(std::ostream&, class_decl::access_specifier)): Define
41414	new streaming operators.
41415	(class_decl::member_type::get_pretty_representation): Define new method.
41416	* src/abg-comparison.cc (represent): Make the existing overloads
41417	end by a newline. Add a new overload that represents the changes
41418	that happened a given data member.
41419	(enum diff_kind): New.
41420	(report_mem_header): Renamed report_num_dels_or_ins into this.
41421	Make it support introducing changed members as well as
41422	deletions/insertions.
41423	(class_diff::report): Adjust for the report_num_dels_or_ins ->
41424	report_mem_header change.  Use the new represent() overload to
41425	report about changed data members.  Adjust logic now that
41426	represent() emits a newline at its end.  Also adjust logic as far
41427	as representing base classes and member types changes is
41428	concerned.
41429	(type_decl_diff::report): Remove useless white space.
41430
414312013-11-20  Dodji Seketeli <dodji@redhat.com>
41432
41433	Ensure that *::report adds just one empty line to its content
41434	* include/abg-comparison.h (diff::report): Add a comment saying
41435	that each the diff::report interface must leave one empty line at
41436	the end of the report.
41437	* src/abg-comparison.cc ({pointer_diff, reference_diff,
41438	class_diff, scope_diff, function_decl_diff, type_decl_diff,
41439	typedef_diff}::report): Leave just one
41440	empty line after content.
41441
414422013-11-20  Dodji Seketeli <dodji@redhat.com>
41443
41444	Various doxygen doc additions and fixes
41445	* include/abg-comparison.h: Lots of doc string additions & fixes,
41446	especially for typedefs.
41447	* include/abg-ir.h: Likewise.
41448	* src/abg-comparison.cc: Likewise.
41449	* src/abg-ir.cc: Likewise.
41450
414512013-11-20  Dodji Seketeli <dodji@redhat.com>
41452
41453	Better support changed base classes and member types
41454	* include/abg-comparison.h (class_diff::{clear_lookup_tables,
41455	lookup_tables_empty, ensure_lookup_tables_populated}): Declare new
41456	methods.
41457	(compute_diff): Make this a friend of class_diff.
41458	* src/abg-comparison.cc (class_diff::priv::{deleted_bases_,
41459	inserted_bases_, changed_bases_, deleted_member_types_,
41460	inserted_member_types_, changed_member_types_,
41461	deleted_data_members_, inserted_data_members_,
41462	changed_data_members_, deleted_member_class_tmpls_,
41463	inserted_member_class_tmpls_, changed_member_class_tmpls_}):
41464	Define new members.
41465	(class_diff::priv::{base_has_changed, member_type_has_changed,
41466	data_member_has_changed}): Declare and define new methods.
41467	(class_diff::{clear_lookup_tables, lookup_tables_empty,
41468	ensure_lookup_tables_populated}): Define new methods.
41469	(class_diff::report): Detect and report when a base class or a
41470	member type has changed, as opposed to just saying that it has
41471	been removed and inserted.  Fix the rest of the function to avoid
41472	emitting useless vertical space and avoid saying that the class
41473	has "zero" insertion/deletion of a given kind of member.
41474	(scope_diff::report): avoid saying that the scope has "zero"
41475	insertion/deletion of a given kind of member.  Avoid useless
41476	vertical spaces.
41477	(type_decl_diff::report): Avoid useless vertical spaces.
41478
414792013-11-19  Dodji Seketeli <dodji@redhat.com>
41480
41481	Add bilint tool to validate bi files somewhat.
41482	* tools/bilint.cc: New file.
41483	* tools/Makefile.am: Build and install the new file above.
41484
414852013-11-19  Dodji Seketeli <dodji@redhat.com>
41486
41487	Add diff support for typedef_decl and type_decl
41488	* include/abg-ir.h (operator<<(std::ostream&,
41489	decl_base::visibility)): Declare new streaming operator.
41490	* src/abg-ir.cc (operator<<(std::ostream&,
41491	decl_base::visibility)): Define it.
41492	(type_decl::{operator==, get_pretty_representation}): Likewise,
41493	define these new overloads.
41494	(decl_base::{operator==, get_pretty_representation}): New overloads.
41495	* include/abg-comparison.h (type_decl_diff type_decl_diff_sptr,
41496	typedef_diff, typedef_diff_sptr): Declare new classes and
41497	typedefs.
41498	* src/abg-comparison.cc (type_decl_diff::{type_decl_diff,
41499	first_type_decl, second_type_decl, length, report}): New methods
41500	definitions.
41501	(compute_diff): New function definition that takes pointers of
41502	type_decl.
41503	(typedef_diff::{typedef_diff, first_typedef_decl,
41504	second_typedef_decl, underlying_type_diff, length, report}): New
41505	methods.
41506	(compute_diff): New function definition that takes pointers of
41507	typedef_decl.
41508	(try_to_diff_types): New template function, factorized out of ...
41509	(compute_diff_for_types): ... this.  Add support diffing type_decl
41510	and typedef_decl.
41511	(pointer_diff::report): Fix indentation of emitted report.
41512	* tools/bidiff.cc (parse_command_line): Fix style.
41513
415142013-11-19  Dodji Seketeli <dodji@redhat.com>
41515
41516	Avoid missing member types while reading bi files
41517	* include/abg-fwd.h (get_type_declaration): Declare function.
41518	* include/abg-ir.h (class decl_base): Add class_decl as a friend.
41519	This to be able to call decl_base::set_scope from class_decl.
41520	(scope_decl::add_member_decl): Make this virtual protected, so
41521	that it can be called (virtually) from e.g, class_decl.
41522	(type_decl_sptr, typedef_decl_sptr): New convenience typedefs.
41523	(class_decl::add_member_decl): New virtual overload for
41524	scope_decl::add_member_decl.
41525	(class_decl::{add_member_type, add_data_member,
41526	add_member_function}): New overloads.
41527	* src/abg-ir.cc (add_decl_to_scope): Benign style cleanup.
41528	(get_type_declaration): Define new function.
41529	(class_decl::add_member_decl): New method.
41530	(class_decl::add_member_type): Avoid silently added a new member
41531	type when that member type has already been (perhaps
41532	inadvertently) added to a scope already.  Rather, put a strict
41533	assert in place there.  Also add a new overload that constructs
41534	the member type out of a classic type and adds it to the class.
41535	(class_decl::{add_data_member, add_member_function}): Likewise.
41536	(class_decl::{add_member_function_template,
41537	add_member_class_template}): Avoid silently added a new member
41538	template when that template has already been (perhaps
41539	inadvertently) added to a scope already.  Rather, put a strict
41540	assert in place there.
41541	* src/abg-reader.cc (push_decl_to_current_scope): Take a an extra
41542	flag saying if the current decl should be added to the current
41543	scope as well (in addition to being pushed onto the stack of
41544	scopes maintained in the reader context).
41545	(push_and_key_type_decl): Likewise, take that extra flag and pass
41546	it to push_decl_to_current_scope.
41547	(build_function_decl, build_var_decl, build_type_decl)
41548	(build_qualified_type_decl, build_pointer_type_def)
41549	(build_reference_type_def, build_enum_type_decl, build_typedef_decl)
41550	(build_function_tdecl, build_class_tdecl): Likewise.
41551	(build_class_decl): Likewise.  When building member data, types,
41552	and functions, make sure /not/ to add the data, type of function to
41553	the current scope before adding it to the class_decl.  This was
41554	making the member not being added to the class because it already
41555	had a scope.
41556	(build_type_tparameter, build_type_composition)
41557	(build_non_type_tparameter, build_template_tparameter)
41558	(build_type): Adjust to add the template parm to the current scope
41559	explicitly, like previously.
41560	(handle_type_decl): Use build_type_decl function. Add the
41561	type_decl to the current scope, like previously.
41562	(handle_namespace_decl, handle_qualified_type_decl)
41563	(handle_pointer_type_def, handle_reference_type_def)
41564	(handle_enum_type_decl, handle_typedef_decl, handle_var_decl)
41565	(handle_function_decl, handle_class_decl, handle_function_tdecl)
41566	(handle_class_tdecl): Adjust to add the decl to the current scope,
41567	like previously.
41568	* tests/data/test-read-write/test21.xml: New test input with
41569	member type(def).
41570
415712013-10-24  Dodji Seketeli <dodji@redhat.com>
41572
41573	Avoid tabs and add const/virtual/offsets to class member diff reports
41574	* include/abg-ir.h (class_decl::get_num_virtual_functions): New
41575	declaration.
41576	* src/abg-ir.cc (class_decl::get_num_virtual_functions): New
41577	definition.
41578	(function_decl::get_pretty_representation): Represent
41579	destructors and const member functions.
41580	* src/abg-writer.cc (write_cdtor_const_static): Take a new bool
41581	parm for constness and serialize it.
41582	(write_class_decl): Serialize member functions & function template
41583	const-ness.
41584	* src/abg-reader.cc (read_cdtor_const): Read the "const" xml
41585	attribute, rather than "is_const".
41586
415872013-10-24  Dodji Seketeli <dodji@redhat.com>
41588
41589	Fix num insertions reporting in member functions
41590	* src/abg-comparison.cc (class_diff::report): Fix num insertions
41591	reporting.
41592
415932013-10-24  Dodji Seketeli <dodji@redhat.com>
41594
41595	Serialize vtable offset for virtual functions
41596	* include/abg-ir.h
41597	(class_decl::member_function::get_vtable_offset): Renamed
41598	class_decl::member_function::get_vtable_offset_in_bits into this.
41599	The offset is an index into a table; it's not a value in bits.
41600	* src/abg-hash.cc (class_decl::member_function::hash): Update wrt
41601	function name change above.
41602	* src/abg-ir.cc (class_decl::member_function::operator==):
41603	Likewise.
41604	* src/abg-reader.cc (build_class_decl): Rename the attribute
41605	vtable-offset-in-bits into vtable-offset.
41606	* src/abg-writer.cc (write_voffset): New function.
41607	(write_class_decl): Use the new write_voffset.  Cleanup.
41608
416092013-10-24  Dodji Seketeli <dodji@redhat.com>
41610
41611	White space and style fixes
41612	* include/abg-ir.h (class_decl::member_function::member_function):
41613	Align function parameters.
41614	* src/abg-ir.cc (type_decl::operator==): Remove useless white spaces
41615
416162013-10-24  Dodji Seketeli <dodji@redhat.com>
41617
41618	Do not report added/removed type_decls
41619	* src/abg-comparison.cc (scope_diff::report): Do not report
41620	added/removed type_decls.
41621
416222013-10-24  Dodji Seketeli <dodji@redhat.com>
41623
41624	Fix string representation for variables and methods
41625	* src/abg-ir.cc (var_decl::get_pretty_representation): Don't use
41626	the pretty representation for the type of the variable; just use
41627	its qualified name.
41628	(method_type::set_class_type): I wonder what I was thinking when
41629	setting the first parameter's type to being the type of the
41630	class.  Remove this.
41631	(function_decl::get_pretty_representation): Use the "method "
41632	prefix for methods.  Avoid printing the first parameter of
41633	methods.  Use the qualified name of the parameter type, rather
41634	than its pretty representation.
41635	* src/abg-writer.cc (write_class_decl): Do not skip the first
41636	function parameter when serializing the method.
41637
416382013-10-24  Dodji Seketeli <dodji@redhat.com>
41639
41640	Support reporting removed types/decls
41641	* include/abg-comparison.h (scope_diff::{removed_types,
41642	removed_decls, added_types, added_decls}): New accessor methods
41643	declarations.
41644	* src/abg-comparison.cc (scope_diff::{removed_types,
41645	removed_decls, added_types, added_decls}): New accessor methods
41646	definitions.
41647	(scope_diff::report): Report removed & added types/decls.
41648
416492013-10-24  Dodji Seketeli <dodji@redhat.com>
41650
41651	Fix erratic reporting of changed types & decls in scopes
41652	* src/abg-comparison.cc
41653	(scope_diff::ensure_lookup_tables_populated): A changed type/decl
41654	is not only one that has been both deleted and inserted (as is a
41655	type/decl with a given name N has been deleted and a type/decl
41656	with that same name N has been inserted), but we must also ensure
41657	that both inserted and deleted type/decl are not the same.
41658	Otherwise, it might has been a type/decl that has been shuffled
41659	around.
41660
416612013-10-24  Dodji Seketeli <dodji@redhat.com>
41662
41663	Fix some class & scope diff reports formatting glitchs
41664	* src/abg-comparison.cc (class_diff::report): Quote data members.
41665	(scope_diff::report): Simplify how we report changed types. Avoid
41666	unnecessary vertical spaces.
41667
416682013-10-24  Dodji Seketeli <dodji@redhat.com>
41669
41670	Pretty representation for variables and types by default
41671	* include/abg-ir.h (var_decl::get_pretty_representation): New
41672	method declaration.
41673	* src/abg-ir.cc (decl_base::get_pretty_representation): Prefix
41674	types with the "type " string.
41675	(var_decl::get_pretty_representation): New method definition.
41676
416772013-10-24  Dodji Seketeli <dodji@redhat.com>
41678
41679	Re-write middle snakes management in core diff algorithms
41680	* include/abg-diff-utils.h (point::set): New overload..
41681	(point::{add, operator<, operator>, operator<=, operator>=}): New
41682	methods.
41683	(point::operator!=): Constify.
41684	(point::operator==): Constify. Cleanup.
41685	(point::operator=): Keep emptiness.
41686	(class snake): New class definition
41687	(d_path_vec::{over_bounds, offset}): New methods.
41688	(d_path_vec::check_index_against_bound): Don't take a bound
41689	parameter anymore.  Use the new over_bound method above.  Fix up
41690	error reporting.
41691	(d_path_vec::d_path_vec): Fix d_path_vec size allocation.
41692	(d_path_vec::operator[]): Use the d_path_vec::at method to check
41693	all accesses against the bounds.  This is slower, but at least we
41694	can expect to have something that is more robust.  We can remove
41695	the bound checking later when we are sure the code has been tested
41696	enough.  Also use the new offset() method.
41697	(d_path_vec::at): Take long long.
41698	(ends_of_furthest_d_paths_overlap): Constify input parameters.
41699	(end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Take
41700	an instance of the new snake in parameter, rather than a bare end
41701	point that wasn't carrying enough information about the snake.
41702	Record the snake which consists of up to four points: a begin
41703	point, an intermediate point, a diagonal start point and an end
41704	point.  Return that snake upon successful completion.
41705	(compute_middle_snake): Take an instance of snake, rather than the
41706	two points that were supposed to represent a snake and with which
41707	we were loosing information before.  Revisit/simplify the logic of
41708	this function; this literally goes forward or in reverse, gets the
41709	resulting snake returned by the end_of_fr_d_path_in_k and
41710	end_of_frr_d_path_in_k_plus_delta functions, detect if these snakes
41711	overlap and just return the current snake.  Much simpler.  The
41712	caller now gets a snake, which has much more information than the
41713	previous snake approximation made of just two points.  Bonus
41714	point, this follows almost to the word, what the paper says.
41715	(maybe_record_match_point, find_snake_start_point): Remove these
41716	as there are not used by compute_middle_snake anymore.
41717	(print_snake, ses_len): Update these to take/handle a snake.
41718	(snake_end_points): New declaration.
41719	(compute_diff): When we are getting an empty first sequence, this
41720	means that we are inserting the second sequence *before* the
41721	beginning of the first sequence; keep this information by setting
41722	the insertion point index to -1, rather than zero.  Update this to
41723	get/handle snakes, rather than free points vaguely representing
41724	snakes.  Now that compute_middle_snake returns real snakes, handle
41725	the information we are getting.  Basically for edit scripts of
41726	length equal to 1, as the snake carries all the necessary
41727	information about the non-diagonal edge (as well as the diagonal
41728	edges), we (can) now precisely update the current edit script (as
41729	well as the longest common sub-sequence).  For edit scripts of
41730	length greater than 1, better at which points to divide the
41731	problem and consequently, at which points to conquer it back --
41732	better following The Paper to the letter.
41733	(display_edit_script): Update this for the use of instances of
41734	snake.
41735	* src/abg-diff-utils.cc (ends_of_furthest_d_paths_overlap): Update
41736	for constification of inputs.
41737	(snake_end_points): Define new function.
41738	(compute_middle_snake): Adapt for the taking an instance of snake.
41739	* tests/test-diff2.cc (main): Update for using instances of snake.
41740	* tests/test-core-diff.cc: Add new tests.
41741	* tests/data/test-core-diff/report0.txt: Update for output
41742	adaptation.
41743	* tests/data/test-core-diff/report6.txt: Likewise.
41744	* tests/data/test-core-diff/report7.txt: Likewise.
41745	* tests/data/test-core-diff/report8.txt: New test data.
41746	* tests/data/test-core-diff/report9.txt: Likewise.
41747	* tests/data/test-core-diff/report10.txt: Likewise.
41748	* tests/data/test-core-diff/report11.txt: Likewise.
41749	* tests/data/test-core-diff/report12.txt: Likewise.
41750	* tests/data/test-core-diff/report3.txt: Likewise.
41751
417522013-10-19  Dodji Seketeli <dodji@redhat.com>
41753
41754	Support diff/reporting for functions & better diff/report in general
41755	* include/abg-ir.h ({decl_base, class_decl,
41756	function_decl}::get_pretty_representation): New virtual member to
41757	get a pretty string name for decls & types.
41758	(class_decl::parameter): Add an index to the parameter type.
41759	(class_decl::parameter::parameter): Update the constructor for the
41760	change above.
41761	(class_decl::parameter::{get_index, set_index}): Accessors for the
41762	new index.
41763	(class_decl::parameter::operator==): Take in account the index.
41764	(function_type::append_parameter): Set the index of the parameter
41765	here.
41766	* include/abg-fwd.h (get_type_name): New declaration.
41767	* src/abg-ir.cc (get_type_name): New definition.
41768	({decl_base, function_decl,
41769	class_decl}::get_pretty_representation): New implementations.
41770	(method_type::set_class_type): Update this to set function
41771	parameter's index by default.
41772	(function_decl::append_parameters): Use the append_parameter
41773	method from function_type.
41774	* include/abg-comparison.h (class function_decl_diff): New type
41775	declaration.
41776	* src/abg-comparison.cc (compute_diff_for_decls, compute_diff):
41777	New definitions.
41778	({pointer_diff, class_diff, scope_diff}::report): Use the new
41779	get_pretty_representation.  Output a prettier report.
41780	(function_decl_diff::priv): New type.
41781	(function_decl_diff::{deleted_parameter_at, inserted_parameter_at,
41782	ensure_lookup_tables_populated, function_decl_diff,
41783	first_function_decl, second_function_decl, changed_parms,
41784	removed_parms, added_parms, length, report}): New member function
41785	definitions.
41786	* src/abg-hash.cc (function_decl::parameter::hash): Update this to
41787	take the index in account.
41788
417892013-10-19  Dodji Seketeli <dodji@redhat.com>
41790
41791	Misc style & white space fixes
41792	* include/abg-fwd.h (is_global_scope, is_at_global_scope)
41793	(is_at_class_scope, is_at_template_scope, is_template_parameter)
41794	(is_type, is_var_decl, is_template_parm_composition_type)
41795	(is_template_decl, is_function_template_pattern)
41796	(add_decl_to_scope, get_global_scope, get_translation_unit):
41797	Remove parameter names from declarations.
41798	* include/abg-ir.h (decl_base::set_location): Remove useless white
41799	space.
41800	(struct type_shared_ptr_equal): Fix comment filling.
41801
418022013-10-16  Dodji Seketeli <dodji@redhat.com>
41803
41804	Avoid useless hashing during serialization
41805	* src/abg-writer.cc (write_context::get_id_for_type): Avoid the
41806	useless hashing incurred by the [] operator on the map, when we
41807	already have the value we want.
41808
418092013-10-16  Dodji Seketeli <dodji@redhat.com>
41810
41811	Add more IR nodes dumping routines
41812	* include/abg-fwd.h (dump): Declare 4 overloads for the dumping
41813	routines.
41814	* include/abg-ir.h (var_decl_sptr): New typedef.
41815	* src/abg-writer.cc (dump(const decl_base_sptr)): Add comments.
41816	(dump(const type_base_sptr)): New dumping routines.
41817	(dump(const var_decl_sptr)): Likewise.
41818
418192013-10-16  Dodji Seketeli <dodji@redhat.com>
41820
41821	Fix IR node comparison bugs
41822	* include/abg-ir.h (type_shared_ptr_equal::operator()): Fix thinko
41823	in checking for the boolean value of the pointers to types.
41824	* src/abg-ir.cc (type_decl::operator==(const decl_base&)): Do not
41825	forget to compare the decl_base part of the type too.
41826	(type_decl::operator==(const type_base&)): To ease maintenance,
41827	re-use the equality operator that takes a decl_base.
41828	(scope_type_decl::operator==(const type_base&)): Likewise.
41829	(qualified_type_def::operator==(const type_base&)): Likewise.
41830	(compare_function_types): New sub-routine to compare function
41831	types.  It fixes an infinite recursion when comparing two methods
41832	of the same class.
41833	(function_type::operator==(const type_base&)): Use the new
41834	compare_function_types function.
41835	(class_decl::operator==(const decl_base&)): Fix a thinko in the
41836	first test of the function.  Use a dedicated scope for each class
41837	section comparison; that way, there won't be any chance to misuse
41838	the variables pertaining to a different section.  Fix the member
41839	function sections; we were mistakenly using the variables for the
41840	*data* section there.
41841	(class_decl::operator==(const type_base&)): Re-use the operator
41842	that takes a decl_base.
41843	(class_decl::operator==(const class_decl&)): Don't remove
41844	const-ness during the static cast.
41845	(class_decl::member_function::operator==(const member_function&)):
41846	Do not remove the reference from the static cast.
41847	(class_decl::member_class_template::operator==(const
41848	member_base&)): Likewise.
41849	(type_tparameter::operator==(const template_parameter&)):
41850	Likewise.
41851	(template_tparameter::operator==(const template_parameter&)):
41852	Likewise.
41853	(function_tdecl::operator==(const template_decl&)): Likewise.
41854	(class_tdecl::operator==(const template_decl&)): Likewise.
41855	(class_tdecl::operator==(const class_tdecl&)): Likewise.
41856	* tests/data/test-read-write/test12.xml: Update this because the
41857	test now correctly considers two type template parameters at the
41858	same index as being equivalent.
41859	* tests/data/test-read-write/test13.xml: Likewise.
41860
418612013-10-16  Dodji Seketeli <dodji@redhat.com>
41862
41863	On going white space cleanups
41864	* include/abg-ir.h: Remove useless white spaces.
41865	* src/abg-ir.cc: Likewise.
41866	* src/abg-reader.cc: Likewise.
41867	* src/abg-writer.cc: Likewise.
41868
418692013-10-15  Dodji Seketeli <dodji@redhat.com>
41870
41871	Finish reporting about class_diff
41872	* src/abg-comparison.cc (report_num_dels_or_ins): Factorize out
41873	the header of each of inserted/deleted parts of the class into
41874	this new function.
41875	(class_diff::report): Use the new report_num_dels_or_ins.  Cleanup
41876	the code.  Add support for reporting about member functions,
41877	member function templates and member class templates.
41878
418792013-10-15  Dodji Seketeli <dodji@redhat.com>
41880
41881	White space cleanup in abg-ir.h
41882	* include/abg-ir.h
41883	(class_decl::member_function_template::member_function_template):
41884	Remove useless white space.
41885
418862013-10-15  Dodji Seketeli <dodji@redhat.com>
41887
41888	Progress on diffing pointers, references and classes
41889	* include/abg-comparison.h (diff::{first_subject,second_subject): Changed
41890	first_scope/second_scope into these; so that this diff class now works on
41891	stuff that are not scope.  Changed the type of these to
41892	decl_base_sptr
41893	(diff::diff): Update for the change above.
41894	(diff::{length, report}): New virtual pure methods.
41895	(class pointer_diff, reference_diff): New classes declarations.
41896	(compute_diff): New overloads for the new classes above.  Make the
41897	existing overloads take shared_pointers instead of references.
41898	Also make them return shared pointers of the computed diff, rather
41899	than just populating diff references passed in parameter.
41900	(class class_diff): Renamed class class_decl_diff into this.
41901	(report_changes): Change these functions into member functions.
41902	* src/abg-comparison.cc (compute_diff_for_types): New static
41903	function.
41904	(pointer_diff::pointer_diff, pointer_diff::first_pointer)
41905	(pointer_diff::second_pointer, pointer_diff::length)
41906	(pointer_diff::underlying_type_diff)
41907	(pointer_diff::underlying_type_diff, pointer_diff::report)
41908	(pointer_diff::report, compute_diff)
41909	(reference_diff::reference_diff, reference_diff::first_reference)
41910	(reference_diff::second_reference)
41911	(reference_diff::underlying_type_diff)
41912	(reference_diff::underlying_type_diff, reference_diff::length)
41913	(reference_diff::report, compute_diff): New functions.
41914	(class_diff::class_diff, class_diff::length)
41915	(class_diff::first_class_decl, class_diff::second_class_decl)
41916	(class_diff::base_changes, class_diff::base_changes)
41917	(class_diff::member_types_changes)
41918	(class_diff::member_types_changes)
41919	(class_diff::data_members_changes)
41920	(class_diff::data_members_changes, class_diff::member_fns_changes)
41921	(class_diff::member_fns_changes)
41922	(class_diff::member_fn_tmpls_changes)
41923	(class_diff::member_class_tmpls_changes)
41924	Update wrt class_decl_diff -> class_diff renaming.
41925	(class_diff::report): Make the report function be a member
41926	function.  Add an indentation parameter. Add support for member
41927	types and data members.
41928	(compute_diff): New overload for class_decl_sptr.
41929	(scope_diff::first_scope, scope_diff::second_scope)
41930	(scope_diff::length, scope_diff::report): New member functions.
41931	(scope_diff::{deleted_member_at, inserted_member_at}): Update wrt
41932	first_scope -> first_subject change.
41933	(compute_diff): New overload for scope_decl_sptr.
41934	(translation_unit_diff::report): Change the report function into
41935	this member function.
41936	(compute_diff): Change the overload for translation_unit to take a
41937	translation_unit_sptr rather than a reference.
41938	* tools/bidiff.cc (main): Update this wrt the change of the
41939	signature of compute_diff.
41940
419412013-10-15  Dodji Seketeli <dodji@redhat.com>
41942
41943	Fix construction of class_decl::member_type
41944	* include/abg-ir.h (class_decl::member_type::member_type): Remove
41945	inline body from here.
41946	* src/abg-ir.cc (class_decl::member_type::member_type): Move
41947	implementation here.  Also, properly set the name of the the
41948	member_type at construction time.
41949
419502013-10-15  Dodji Seketeli <dodji@redhat.com>
41951
41952	Few typedef additions to abg-ir.h
41953	* include/abg-ir.h (pointer_type_def_sptr)
41954	(reference_type_def_sptr): New typedefs.
41955
419562013-10-11  Dodji Seketeli <dodji@redhat.com>
41957
41958	Add debugging routines for decl_base_sptr and translation_unit
41959	* src/abg-writer.cc (dump): Add two version of this; on for
41960	decl_base_sptr, one for translation_unit&.
41961
419622013-10-11  Dodji Seketeli <dodji@redhat.com>
41963
41964	Initial implementation of tu diffing & bidiff cmd line program
41965	* include/abg-comparison.h (class translation_unit_diff): New type.
41966	(compute_diff): Make this take class_decl&, rather than
41967	class_decl_sptr.  Add new overloads for scope_decl& and
41968	translation_unit&.
41969	(report_changes): New overload for scope_diff& and
41970	translation_unit&.
41971	* src/abg-comparison.cc (struct class_decl_diff::priv): New type.
41972	(class class_decl_diff): Add comments to methods.
41973	(class translation_unit_diff): Implement methods.
41974	(compute_diff, report_changes): Implement the new overloads.
41975	(scope_diff::ensure_lookup_tables_populated): Fix a thinko here.
41976	* src/abg-ir.cc (is_var_decl): Add new predicate.
41977	* tools/abg-tools-utils.h (file_exists, is_regular_file)
41978	(check_file): Declare new functions.
41979	* tools/abg-tools-utils.cc (get_stat, file_exists, check_file)
41980	(is_regular_file): Define new functions.
41981	(is_dir): Use the new get_stat.
41982	* tools/bidiff.cc: New file.
41983	* tools/Makefile.am: Add tools/bidiff.cc to the build system; make it
41984	produce the bidiff tool.
41985
419862013-10-10  Dodji Seketeli <dodji@redhat.com>
41987
41988	Fix inheritance of operator== on decl_base and type_base
41989	* include/abg-ir.h (*lots of descendants of decl_base, type_decl)
41990	(template_decl, class_decl::member_base): Replace the previous classical
41991	*::operator==(*&) with an overload of decl_base::operator==(const
41992	decl_base&), type_base::operator==(const type_base),
41993	template_decl::operator==(const template_decl&) or
41994	class_decl::member_base::operator==(const
41995	class_decl::member_base&).  This makes the descendant operator be
41996	the one called when a comparison involves references the parent
41997	class.
41998	* src/abg-ir.cc: Write the implementation of the above.  Remove
41999	the useless static_casts from the previous operator== code.
42000
420012013-10-10  Dodji Seketeli <dodji@redhat.com>
42002
42003	On going misc white spaces and style fixes
42004	* include/abg-ir.h: Add author.  Remove many useless white
42005	spaces.  Add missing end-of-class comments.  Move function
42006	declaration comments from here to their definition point.
42007	* include/abg-fwd.h: Remove useless indentation.  Also move
42008	doxygen comments to *definition* points in src/abg-ir.cc.
42009	* src/abg-ir.cc: Remove many useless white spaces.  Move comments
42010	from declaration points to here.
42011
420122013-10-06  Dodji Seketeli <dodji@redhat.com>
42013
42014	Fix middle snake determination & ses len computation for d == 1
42015	* include/abg-diff-utils.h (compute_middle_snake): After the
42016	overlap determination happened, finding the middle snake can
42017	require keep on building the current path until the "end".  The
42018	end meaning reaching the max of D.  And that max is (M + N)/2 + 1.
42019	In the extreme cases were middle snake was on the very last step
42020	(M + N) + 1, we were not finding the middle snake.  Fix this.
42021	(compute_diff): When d == 1 and the first edge on the edit graph
42022	is a non-diagonal edge and when a_base != a_begin, we were failing
42023	to properly initialize x,y to find that non-diagonal edge.  Also
42024	we were failing to correctly compute the size of the sequence.
42025	Fix these.
42026	* tests/test-core-diff.cc: Add a new regression test for the two
42027	cases above.
42028	* tests/data/test-core-diff/report7.txt: New reference data for
42029	the new regression test.
42030
420312013-10-05  Dodji Seketeli <dodji@redhat.com>
42032
42033	Initial un-debugged implementation of scope diffing
42034	* include/abg-comparison.h (class scope_diff): New type.
42035	(compute_diff(scope_decl_sptr, scope_decl_sptr, scope_diff)): New
42036	declaration.
42037	(report_changes): New declaration.
42038	* src/abg-comparison.cc (struct scope_diff::priv): Define.
42039	(scope_diff::{clear_lookup_tables, lookup_tables_empty,
42040	ensure_lookup_tables_populated, scope_diff, member_changes,
42041	deleted_member_at, inserted_member_at, changed_types,
42042	changed_decls}): Define these new member functions.
42043	(compute_diff): Define.
42044	* include/abg-ir.h (decl_base_sptr): New typedef.
42045	(operator==(decl_base_sptr, decl_base_sptr)): Declare new
42046	operator.
42047	* src/abg-ir.cc (operator==(decl_base_sptr, decl_base_sptr)):
42048	Define.
42049	(scope_decl::{operator==, traverse}): Adjust for using vectors to
42050	store scope members now, rather than lists.
42051	(scope_decl::{declarations, scopes}): Make these types be vector.
42052	This makes the members of a scopes be vector, rather than lists.
42053	This enables them to be diffed.
42054
420552013-10-05  Dodji Seketeli <dodji@redhat.com>
42056
42057	Simplify & cleanup compute_diff core api
42058	* include/abg-diff-utils.h (insertion::inserted_): Changed the
42059	type of this from vector<int> to vector<unsigned>.
42060	(insertion::{insertion, inserted_indexes}): Adjust.
42061	(compute_diff): Add two new simpler overloads.  Implement them in
42062	term of the former more complex overload.
42063	(compute_lcs): Adjust for the vector<int> -> vector<unsigned>
42064	change.
42065	* src/abg-diff-utils.cc (compute_lcs, compute_ses): Adjust for the
42066	compute_diff change above.
42067	* src/abg-comparison.cc (compute_diff, report_changes): Adjust for
42068	the compute_diff & vector<unsigned> changes above..
42069
420702013-10-05  Dodji Seketeli <dodji@redhat.com>
42071
42072	Misc white space, style and comments cleanup
42073	* include/abg-ir.h (class scope_decl): Add end of class comment.
42074	(class type_base): Add a _sptr typedef and end of class comment.
42075	* src/abg-ir.cc (operator==(class_decl_sptr, class_decl_sptr)):
42076	Fix comment.
42077
420782013-10-04  Dodji Seketeli <dodji@redhat.com>
42079
42080	Un-debugged initial implementation of class diffing.
42081	* include/abg-ir.h (decl_base::get_qualified_name): New
42082	declaration.
42083	(class_decl::{base_specs, member_types, data_members,
42084	member_functions, member_function_templates,
42085	member_class_templates}): Make all these containers be vectors,
42086	rather than list.  This makes these containers (like
42087	class_decl::base_specs, class_decl::member_types, etc) be suitable
42088	to be used by the core diffing algorithms to diff their content.
42089	(operator==(class_decl_sptr, class_decl_sptr))
42090	(operator==(class_decl::member_type_sptr, class_decl::member_type_sptr))
42091	(operator==(class_decl::base_spec_sptr,
42092	class_decl::base_spec_sptr))
42093	(operator==(class_decl::data_member_sptr,
42094	class_decl::data_member_sptr))
42095	(operator==(class_decl::member_function_sptr,
42096	class_decl::member_function_sptr))
42097	(operator==(class_decl::member_function_template_sptr,
42098	class_decl::member_function_template_sptr))
42099	(operator==(class_decl::member_class_template_sptr,
42100	class_decl::member_class_template_sptr)): Declare
42101	these new equality operators.  These are to be used by the core
42102	diffing algorithms when comparing two vectors of shared pointers
42103	of members of class_decls.
42104	* src/abg-ir.cc (decl_base::get_qualified_name): Define.
42105	(class_decl::class_decl, class_decl::operator==(class_decl&)): Adjust for the
42106	containers type change to a vector.
42107	(operator==(class_decl_sptr, class_decl_sptr))
42108	(operator==(class_decl::member_type_sptr, class_decl::member_type_sptr))
42109	(operator==(class_decl::base_spec_sptr,
42110	class_decl::base_spec_sptr))
42111	(operator==(class_decl::data_member_sptr,
42112	class_decl::data_member_sptr))
42113	(operator==(class_decl::member_function_sptr,
42114	class_decl::member_function_sptr))
42115	(operator==(class_decl::member_function_template_sptr,
42116	class_decl::member_function_template_sptr))
42117	(operator==(class_decl::member_class_template_sptr,
42118	class_decl::member_class_template_sptr)): Define
42119	these.
42120	* include/abg-comparison.h (diff::scope_): Remove
42121	(diff::{first_scope_, second_scope_}): New members.
42122	(class_decl_diff::class_decl_diff): Pass the new scopes to this
42123	constructor.
42124	(class_decl_diff::{first_class_decl, second_class_decl})
42125	(report_changes): New declarations.
42126	* src/abg-comparison.cc (class_decl_diff::class_decl_diff): Update
42127	as per the declaration.
42128	(class_decl_diff::{first_class_decl, second_class_decl}): Define
42129	as per the declaration.
42130	(compute_diff): Initial implementation for this.
42131	(report_changes): Define.
42132
421332013-10-04  Dodji Seketeli <dodji@redhat.com>
42134
42135	Change the diff::changes_type back to just edit_script
42136	* include/abg-comparison.h (diff::changes_type):
42137	Remove this typedef.
42138	(class_decl_diff::data_members_changes): Rename
42139	class_decl_diff::data_member_changes into this.
42140	(class_decl_diff::member_fn_tmpls_changes): Renamed
42141	class_decl_diff::member_fn_tmpl_changes into this.
42142	(class_decl_diff::member_class_tmpls_changes): Renamed
42143	class_decl_diff::member_class_tmpl_changes into this.
42144	(class_decl_diff::{base_changes, member_types_changes,
42145	data_members_changes, member_fns_changes, member_fn_tmpls_changes,
42146	member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust
42147	these declarations for the use of edit_script.
42148	* src/abg-comparison.cc (class_decl_diff::priv::*): Likewise.
42149	(class_decl_diff::{base_changes, member_types_changes,
42150	data_members_changes, member_fns_changes, member_fn_tmpls_changes,
42151	member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust
42152	these definitions for the above.
42153
421542013-10-04  Dodji Seketeli <dodji@redhat.com>
42155
42156	Misc white space, style and comment fixes
42157	* include/abg-ir.h: Lots of useless white space removals and
42158	comments adding.
42159	(class class_decl::member_base): Fix comment.
42160	* src/abg-hash.cc: Lots of useless white space removals too.
42161	* src/abg-ir.cc: Remove useless white space too.
42162
421632013-10-04  Dodji Seketeli <dodji@redhat.com>
42164
42165	Fix middle snake determination
42166	* include/abg-diff-utils.h (point::{operator!=,operator==}): New
42167	operators.
42168	(end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Allow
42169	the initial point (-1,-1) that is not a point addressing elements
42170	of the input sequences, but that is the starting point of the
42171	forward paths and the ending point of reverse paths in the "Linear
42172	Refinement" of the algorithm.
42173	(is_match_point, maybe_record_match_point)
42174	(find_snake_start_point): New functions.
42175	(find_last_snake_in_path): Remove this.  It's not used anymore.
42176	(compute_middle_snake): Allow checking for overlapping paths even
42177	on points that are outside of the edit graph boundaries.  Once the
42178	overlap is detected, if a non-empty snake has been seen already,
42179	report it as the middle snake.  Otherwise, keep building the path
42180	until the end and report the last snake encountered as the middle
42181	snake.  Add comments.
42182	(compute_diff): For the d == 1 case, fix the logic of the finding
42183	the non-diagonal edge.  Fix typos.  Add comments.
42184	(display_edit_script): Fix report glitches.
42185	* tests/data/test-core-diff/report3.txt: Update as per the report
42186	glitch above.
42187	* tests/data/test-core-diff/report4.txt: Likewise.
42188	* tests/data/test-core-diff/report5.txt: Likewise.
42189	* tests/data/test-core-diff/report6.txt: New reference report for
42190	a new test.
42191	* tests/test-core-diff.cc: Add a new test for negative delta.
42192
421932013-10-03  Dodji Seketeli <dodji@redhat.com>
42194
42195	Initial regression test facility for core diff algorithms
42196	* tests/data/test-core-diff/report0.txt: New test reference data.
42197	* tests/data/test-core-diff/report1.txt: Likewise.
42198	* tests/data/test-core-diff/report2.txt: Likewise.
42199	* tests/data/test-core-diff/report3.txt: Likewise.
42200	* tests/data/test-core-diff/report4.txt: Likewise.
42201	* tests/data/test-core-diff/report5.txt: Likewise.
42202	* tests/test-core-diff.cc: New regression test program.
42203	* tests/Makefile.am: Add these new files to the build system.
42204
422052013-10-02  Dodji Seketeli <dodji@redhat.com>
42206
42207	Initial command line testing facility for core diff algorithms
42208	* tests/test-diff2.cc: New command line testing facility.
42209	* tests/Makefile.am: Add this to the build system.
42210
422112013-10-02  Dodji Seketeli <dodji@redhat.com>
42212
42213	Fix core diff algorithms for negative deltas
42214	* diff2.h (point::point): New copy constructor.
42215	(point::{operator+=, operator=}):  Use point::set.
42216	(point::{operator--, operator++,}): New operators.
42217	(d_path_vec::{a_size_, b_size_}): New members.
42218	(d_path_vec::max_d_): Remove this member.
42219	(d_path_vec::max_d): Compute this, now that max_d_ was removed.
42220	(point_is_valid_in_graph): Declare this new function.
42221	(end_of_fr_d_path_in_k, ): Return
42222	a bool when the end of furthest reaching past found is within the
42223	bounds of the edit graph.  Add comments.
42224	(end_of_frr_d_path_in_k_plus_delta): Likewise.  Also, delta can be
42225	negative; support that.  Do not cross the boundaries of the edit
42226	graph when following a diagonal edge.
42227	(find_last_snake_in_path): New function.
42228	(compute_middle_snake): Make forward/reverse d_path_vec be big
42229	enough to hold paths for M+N differences.  Normally M+N/2 should
42230	be enough, but we were getting weird out of bound errors.  Let's
42231	handle it this way for now.  Do not require that we check for
42232	overlap only when we are on a diagonal edge.  Once we detected an
42233	overlap, use the new find_last_snake_in_path to find the
42234	boundaries of the snake.
42235	(ses_len): Delta can be negative.
42236	(display_edit): Small minor English nit.
42237
422382013-09-28  Dodji Seketeli <dodji@redhat.com>
42239
42240	Lay down the foundations of computing the diff between two class_decl
42241	* include/abg-diff-utils.h: New file.
42242	* src/abg-diff-utils.cc: Likewise.  Implement the code diffing
42243	algorithms from Eugene Myers.
42244	* include/abg-comparison.h: New file. First short at defining the
42245	basic APIs to compute the diff of two classes.
42246	* src/abg-comparison.cc: New file.  Start the implementation of
42247	the above header.
42248
422492013-09-26  Dodji Seketeli <dodji@redhat.com>
42250
42251	Prepare node visitors to be usable on things other than IR nodes
42252	* include/abg-fwd.h (node_visitor_base): Renamed ir_node_visitor
42253	into this.
42254	* include/abg-traverse.h (struct node_visitor_base): New base for
42255	the visitors.
42256	(struct traversable_base): Update comments.
42257	(traversable_base::traverse): Change this into non-pure virtual.
42258	Make it take a reference to node_visitor_base, rather than a
42259	reference to ir_node_visitor.
42260	* src/abg-traverse.cc (traversable_base::traverse): New empty
42261	default implementation.
42262	* include/abg-ir.h: Make ir_node_visitor inherit from new
42263	node_visitor_base.
42264
422652013-09-26  Dodji Seketeli <dodji@redhat.com>
42266
42267	Renamed data members from m_something to something_
42268	* src/abg-ir.{cc,h}: Renamed data members from m_something to
42269	something_ and update their usage.
42270
422712013-08-29  Dodji Seketeli <dodji@redhat.com>
42272
42273	Initial version of an archive manipulation program: biar
42274	* tests/test-utils.h (is_dir, ensure_dir_path_created)
42275	(ensure_parent_dir_created): Move these directories manipulation
42276	utilities from here to ...
42277	* tools/abg-tools-utils.h (is_dir, ensure_dir_path_created)
42278	(ensure_parent_dir_created): ... here in this new file.
42279	(dir_name, base_name): Declare these new functions.
42280	* tests/test-utils.cc (is_dir, ensure_dir_path_created)
42281	(ensure_parent_dir_created): Likewise, move these to ...
42282	* tools/abg-tools-utils.cc (is_dir, ensure_dir_path_created)
42283	(ensure_parent_dir_created): ... here in this new file.
42284	(dir_name, base_name): Define these.
42285	* tools/Makefile.am: New file.  Create a new libtoolsutils.la
42286	static library with stuff from tools/abg-tools-utils.cc in it.
42287	Also create a new 'biar' program with the stuff from the new
42288	tools/biar.cc in it.
42289	* tools/biar.cc: New file.  Contains the code for the new "biar"
42290	archive manipulation command line utility.
42291	* tests/test-read-write.cc (main): Adjust for the change about
42292	ensure_parent_dir_created above.
42293	* tests/test-write-read-archive.cc (main): Likewise.
42294	* Makefile.am (SUBDIRS): Add the new tools/ sub-directory to the
42295	build system.
42296	* configure.ac (AC_CONFIG_FILES): Generate tools/Makefile.
42297	* tests/Makefile.am: Make libtestutils.la link with the new
42298	libtoolsutils.la.  Make sure to express the dependencies between
42299	libtestutils.la and the binaries that depend on it.  Otherwise
42300	parallel builds can go awry.
42301
423022013-08-29  Dodji Seketeli <dodji@redhat.com>
42303
42304	Define translation_unit{_sptr,s} types in abigail::
42305	* include/abg-corpus.h (abigail::corpus::{translation_unit_sptr,
42306	translation_units):  Do not define these typedefs here.  Rather)
42307	(define them ...
42308	* include/abg-ir.h
42309	(abigail::{translation_units,translation_unit_sptr): ... here.
42310	This is because a translation unit can be manipulated
42311	independently from an abi corpus.
42312	* src/abg-corpus.cc (corpus::get_translation_units): Adjust return
42313	type to comply with the change above.
42314
423152013-08-29  Dodji Seketeli <dodji@redhat.com>
42316
42317	Fix header inclusion in abg-corpus.h
42318	* include/abg-corpus.h: Drop incomplete abg-traverse.h and
42319	abg-fwd.h.  Use abg-ir.h proper and be done with it.  Users of the
42320	library will just have to use abg-corpus.h to manipulate and the
42321	archives and the IR they contain.
42322
423232013-08-29  Dodji Seketeli <dodji@redhat.com>
42324
42325	Add error message to translation_unit::write
42326	* src/abg-writer.cc (translation_unit::write): Add an error
42327	message to stderr if something ultimately went wrong.
42328
423292013-08-29  Dodji Seketeli <dodji@redhat.com>
42330
42331	Rename abigail::corpus::{get_file_path --> get_path}
42332	* include/abg-corpus.h (corpus::{get_path, set_path): Renamed
42333	corpus::get_file_path and corpus::set_file_path into these as
42334	get_path/set_path is what is used elsewhere as well.
42335	* src/abg-corpus.cc (corpus::{get_path, set_path}): Likewise.
42336	* tests/test-write-read-archive.cc (main): Adjust for the change
42337	above.
42338
423392013-08-29  Dodji Seketeli <dodji@redhat.com>
42340
42341	Cleanup src/Makefile.am
42342	* src/Makefile.am: Fix library naming and remove useless trailing
42343	space from directory path.
42344
423452013-08-27  Dodji Seketeli <dodji@redhat.com>
42346
42347	Initial writing/reading of an ABI corpus to an archive
42348	* configure.ac: Support detection of libzip dependency. Define
42349	new DEPS_CFLAGS and DEPS_LIBS variables for use in
42350	Makefile.am to refer to the dependency headers and
42351	libraries.
42352	* doc/website/mainpage.txt: Update this to talk about the new
42353	libzip dependency.
42354	* include/Makefile.am: Add abg-libzip-utils.h to the build system.
42355	* include/abg-corpus.h (corps): Hide abigail::corpus's private behind a
42356	pimpl idiom.
42357	(corpus::{drop_translation_units, get_file_path, set_file_path,
42358	write, read}): New methods.
42359	* include/abg-libxml-utils.h (new_reader_from_buffer): Declare new
42360	function.
42361	* include/abg-libzip-utils.h: New file.
42362	* src/Makefile.am: Add abg-corpus.cc and abg-libzip-utils.cc to
42363	the build system.  Refer to the library and headers dependencies
42364	via the new DEPS_LIBS and DEPS_CFLAGS variables.
42365	* src/abg-corpus.cc: New file.
42366	* src/abg-ir.cc (translation::set_path): New method.
42367	* src/abg-libxml-utils.cc (new_reader_from_buffer): Define new
42368	function.
42369	* src/abg-libzip-utils.cc: New file.
42370	* src/abg-reader.cc (translation_unit::read): New overload.
42371	* src/abg-writer.cc: Inject the names from the std namespace into
42372	the abigail namespace, rather than into abigail::writer.
42373	(abigail::translation_unit::write): New overload.  This can now
42374	use ofstream and the other stuff from std that are injected in the
42375	abigail:: namespace.
42376	* tests/Makefile.am: Add tests/test-write-read-archive.cc to the
42377	build system; use that to build runtestwritereadarchive.  Also add
42378	the input test data from
42379	tests/data/test-write-read-archive/test[0-4].xml.
42380	* /tests/data/test-write-read-archive/test[0-4].xml: New test
42381	input data files.
42382	* tests/test-write-read-archive.cc: New test for this archive
42383	write/read support.
42384
423852013-08-27  Dodji Seketeli <dodji@redhat.com>
42386
42387	Fix & add missing API documentation
42388	* src/abg-ir.cc (location_manager::create_new_location): Fix
42389	documentation comment.  (translation_unit::translation_unit)
42390	(translation_uni::get_global_scope, translation_unit::get_path)
42391	(translation_unit::traverse, translation_unit::get_loc_mgr)
42392	(translation_unit::is_empty, translation_unit::traverse): Add
42393	missing documentation comments.
42394	* src/abg-libxml-utils.cc (new_reader_from_file): Fix comment.
42395	* src/abg-reader.cc (translation_unit::read): Likewise.
42396
423972013-08-27  Dodji Seketeli <dodji@redhat.com>
42398
42399	Remove useless header inclusion
42400	* include/abg-traverse.h: Remove useless #include <tr1/memory>
42401
424022013-08-27  Dodji Seketeli <dodji@redhat.com>
42403
42404	Misc white space cleanups
42405	* include/abg-corpus.h: Cleanup white spaces.
42406	* include/abg-fwd.h: Likewise.
42407	* include/abg-ir.h: Likewise.
42408	* include/abg-libxml-utils.h: Likewise.
42409	* src/abg-config.cc: Likewise.
42410	* src/abg-ir.cc: Likewise.
42411	* src/abg-reader.cc: Likewise.
42412	* src/abg-writer.cc: Likewise.
42413
424142013-08-27  Dodji Seketeli <dodji@redhat.com>
42415
42416	Small cleanup in abg-config.cc
42417	* src/abg-config.cc: Include auto-generated
42418	$(top_builddir)/config.h file.
42419
424202013-08-27  Dodji Seketeli <dodji@redhat.com>
42421
42422	Pass absolute paths to the compiler during the build
42423	* src/Makefile.am: Pass absolute file paths to the compiler during
42424	the build.  This helps in e.g in emacs' compilation mode, when the
42425	output shows an error reported by GCC's diagnostics, setting point
42426	to the error line and hitting 'enter' transports the user to the
42427	file location where the error happened; as the file path is nows
42428	absolute, emacs can always find it.  Otherwise, finding it depends
42429	on $PWD and whatnot.
42430	* tests/Makefile.am: Likewise.
42431
424322013-08-27  Dodji Seketeli <dodji@redhat.com>
42433
42434	Misc cleanups in abg-fwd.h
42435	* include/abg-fwd.h: Move location, location_manager and
42436	translation_unit in the ir section.  Remove stuff that was
42437	commented out anyway.
42438
424392013-08-27  Dodji Seketeli <dodji@redhat.com>
42440
42441	Move location, location_manager & translation_unit back into abg-ir.h
42442	* include/abg-corpus.h: Move location location_manager,
42443	translation_unit from here ...
42444	* include/abg-ir.h: ... to here.  The reason being that these are
42445	really constructs of the Internal Representation of the ABI/API of
42446	a translation unit.  What is left in abg-corpus is really
42447	exclusively related to an ABI Corpus, which I see more as a
42448	"packaging" construct that abstracts the bundling of several
42449	translation units together.  Also, I fixed some comments about the
42450	location/location_manger types; now a location is made specific to
42451	a translation unit; to an abi corpus.  A location of a given
42452	translation unit has to be decoded by the location manager of that
42453	same translation unit.
42454
424552013-08-22  Dodji Seketeli <dodji@redhat.com>
42456
42457	Make libxml2 a private dependency wrt pkconfig
42458	* libabigail.pc.in: Libxml2 is not exposed to clients so make it
42459	be a private dependency.
42460
424612013-08-22  Dodji Seketeli <dodji@redhat.com>
42462
42463	White space fix in COMPILING
42464	* COMPILING: White space fix.
42465
424662013-08-22  Dodji Seketeli <dodji@redhat.com>
42467
42468	Add abg-version.h.in to the source distribution & cleanup
42469	* include/Makefile.am:  Add abg-version.h.in to the source
42470	distribution.
42471	* configure.ac: Generate abg-version.h in using the existing
42472	AC_CONFIG_FILES macro call.
42473
424742013-08-22  Dodji Seketeli <dodji@redhat.com>
42475
42476	Support pkgconfig through a new libabigail.pc file
42477	* libabigail.pc.in: New pkgconfig file.
42478	* configure.ac: Define the LIBXML2_VERSION variable that is used
42479	in the libabigail.pc.in file.  Generate the libabigail.pc file
42480	from its libabigail.pc.in template.
42481	* Makefile.am: Add libabigail.pc.in to the source distribution.
42482	Install the generated libabigail.pc to the right destination.
42483
424842013-08-21  Dodji Seketeli <dodji@redhat.com>
42485
42486	Tweak the apidoc mainpage
42487	* include/abg-fwd.h<doxygen markup>: Fix link to the project web
42488	page and for git check-out.
42489
424902013-08-21  Dodji Seketeli <dodji@redhat.com>
42491
42492	Initial website generation-fu using Doxygen
42493	* doc/website/mainpage.txt: New file representing the input for
42494	the website.
42495	* doc/website/libabigail-website.doxy: New file representing the
42496	doxygen configuration for the website generation.
42497	* doc/api/libabigail.doxy: Output doxygen generation warnings into
42498	a file.
42499	* doc/Makefile.am: Support generating the website from doxygen.
42500	Update the api generation relevant macros names for better
42501	consistency.  Make "make html" generate the website too.  Make
42502	"make clean" erase the website bits too.  Add a 'website'
42503	target to make the website.
42504
425052013-08-21  Dodji Seketeli <dodji@redhat.com>
42506
42507	Fix typo in CONTRIBUTING file
42508	* CONTRIBUTING: Fix typo, courtesy of Mark Wielaard.
42509
425102013-08-19  Dodji Seketeli <dodji@redhat.com>
42511
42512	Remove autotools-generated files
42513	* Makefile.in: Remove this autotools-generated file.  I know that
42514	people in the GCC-realm like storing these autotools-generated
42515	files into the source control system, but I believe in this day
42516	and age, this is annoying (to say the least) for the project
42517	developers for no good reason.  Requiring (the ubiquitous)
42518	autoconf for building from source is no big deal today, and typing
42519	"autoreconf" is not hard to do, really.  And it saves the
42520	developers for having to update a bunch of boilerplate
42521	automatically generated files into the source control system; this
42522	is really unnecessary noise and it is a commonly accepted good
42523	practice to avoid doing it these days.  To help people who do not
42524	know how to handle this, there is a COMPILING file in the source
42525	tree that explains how to build the project from sources.
42526	* aclocal.m4: Likewise.
42527	* configure: Likewise.
42528	* include/Makefile.in: Likewise.
42529	* src/Makefile.in: Likewise.
42530	* doc/Makefile.in: Likewise.
42531	* tests/Makefile.in: Likewise.
42532
425332013-08-19  Dodji Seketeli <dodji@redhat.com>
42534
42535	Add a new COMPILING file explaining how to build the package
42536	* COMPILING: New file.
42537
425382013-08-14  Dodji Seketeli <dodji@redhat.com>
42539
42540	Remove name of unused parameter in decl_base::traverse.
42541	* src/abg-ir.c (decl_base::traverse): Remove name of unused parameter.
42542
425432013-08-14  Dodji Seketeli <dodji@redhat.com>
42544
42545	install headers in $includedir/libabigail
42546	* include/Makefile.am: Install headers in $includedir/libabigail
42547
425482013-08-14  Dodji Seketeli <dodji@redhat.com>
42549
42550	For usage from within GCC set header path to $includedir/libabigail
42551	* abigail.m4:  The include path used for compilation goes to
42552	$includedir/libabigail.
42553
425542013-08-08  Benjamin Kosnik <bkoz@redhat.com>
42555
42556	Separate out bits from the ir header.
42557	* include/abg-irfwd.h: Move to...
42558	* include/abg-fwd.h: ...this.
42559	* include/abg-ir.h (traverse_base): Move to...
42560	* include/abg-traverse.h: ...here. New.
42561	* include/abg-ir.h (location, location_manager, translation_unit):
42562	Move to...
42563	* include/abg-corpus.h: ...here.
42564	* include/Makefile.am: Adjust.
42565	* include/Makefile.in: Regenerate.
42566
425672013-08-07  Benjamin Kosnik <bkoz@redhat.com>
42568
42569	Template naming compression.
42570	* include/abg-ir.h: Template naming compressions.
42571	(class_template_decl): To class_tdecl.
42572	(function_template_decl): To function_tdecl.
42573	(template_type_parameter): To type_tparameter.
42574	(template_non_type_parameter): To non_type_tparameter.
42575	(template_template_parameter): To template_tparameter.
42576	(tmpl_parm_type_composition): To type_composition.
42577	* include/abg-irfwd.h: Same.
42578	* src/abg-hash.cc: Same.
42579	* src/abg-ir.cc: Same.
42580	* src/abg-reader.cc: Same.
42581
425822013-08-07  Benjamin Kosnik <bkoz@redhat.com>
42583
42584	Slight change to doxy config.
42585	* doc/api/libabigail.doxy: Turn off namespace scopes, on all the viz.
42586
425872013-08-07  Benjamin Kosnik <bkoz@redhat.com>
42588
42589	Move class_decl nested types out-of-line.
42590	* include/abg-ir.h (class_decl): Move nested types out of line.
42591
425922013-08-07  Benjamin Kosnik <bkoz@redhat.com>
42593
42594	Rename class_decl::method to class_decl::method_base.
42595	* include/abg-ir.h (class_decl::member): To member_base.
42596	* src/abg-hash.cc: Same.
42597	* src/abg-ir.cc: Same.
42598	* src/abg-writer.cc: Same.
42599
426002013-08-07  Benjamin Kosnik <bkoz@redhat.com>
42601
42602	Nest hashers.
42603	* include/abg-ir.h: Nest all hashers.
42604	* include/abg-irfwd.h (abigail): Don't inject std::tr1::hash.
42605	Remove hasher forward declarations.
42606	* include/abg-hash.h: Tweak.
42607	* src/abg-hash.cc: Define hashers here.
42608	* src/abg-ir.cc: Adjust for above.
42609	* src/abg-reader.cc: Same.
42610	* src/abg-writer.cc: Same.
42611
426122013-08-06  Benjamin Kosnik <bkoz@redhat.com>
42613
42614	Rename abi_corpus to corpus
42615	* include/abg-corpus.h (abi_corpus): Change to corpus.
42616	* include/abg-hash.h: Tweaks.
42617	* include/abg-libxml-utils.h: Same.
42618
426192013-08-06  Benjamin Kosnik <bkoz@redhat.com>
42620
42621	Simplify interface for serializing/deserializing translation_units.
42622	* include/abg-ir.h (translation_unit::read): New member function.
42623	(translation_unit::write): Same.
42624	* src/abg-reader.cc (translation_unit::read): Define.
42625	* src/abg-writer.cc (translation_unit::write): Define.
42626	* include/abg-reader.h: Remove.
42627	* include/abg-writer.h: Remove.
42628	* include/Makefile.am (headers): Same.
42629	* include/Makefile.in: Regenerate.
42630
426312013-08-06  Benjamin Kosnik <bkoz@redhat.com>
42632
42633	First pass clean reading API.
42634	* include/abg-reader.h (read_file): Remove extraneous file parameter.
42635	* src/abg-reader.cc: Same.
42636	* tests/test-read-write.cc: Adjust.
42637
426382013-08-06  Benjamin Kosnik <bkoz@redhat.com>
42639
42640	Rename traversable to traversable_base, move up the _decl hierarchy via decl_base derivation.
42641	* include/abg-ir.h (traversable): To traversable_base.
42642	(decl_base): Inherit from traversable_base.
42643	(decl_base::traverse): Null definition.
42644	(function_decl, etc.): Remove traversable_base as base class.
42645
426462013-08-06  Benjamin Kosnik <bkoz@redhat.com>
42647
42648	Standardize typedef naming. Plural form is the container form, smart_ptr types are type + _sptr.
42649	* include/abg-ir.h (scope_decl): Add declarations, scopes as types.
42650	(function_type): Add parameter_sptr, parameters as types.
42651	(enum_type_decl): Add type_sptr, enumerators as types.
42652	(class_decl): Adjust typedefs for consistency.  Change
42653	base_specs_type to base_specs, member_types_type to member_types,
42654	data_members_type to data_members, member_functions_type to
42655	member_functions, member_function_templates_type to
42656	member_function_templates, member_class_templates_type to
42657	member_class_templates.
42658
426592013-08-02  Benjamin Kosnik <bkoz@redhat.com>
42660
42661	Doxygen markup fixes final.
42662	* include/abg-config.h: Doxygen cleanups round two.
42663	* include/abg-hash.h: Same.
42664	* include/abg-ir.h: Same.
42665	* include/abg-irfwd.h: Same.
42666	* include/abg-libxml-utils.h: Same.
42667	* src/abg-config.cc: Same.
42668	* src/abg-hash.cc: Same.
42669	* src/abg-ir.cc: Same.
42670	* src/abg-reader.cc: Same.
42671	* src/abg-writer.cc: Same.
42672
426732013-08-01  Benjamin Kosnik <bkoz@redhat.com>
42674
42675	Forward decls for abg-ir.h, doxygen fixups, restyle.
42676	* include/abg-irfwd.h: New file for forward declarations.
42677	* include/Makefile.am: Add new header.
42678	* include/Makefile.in: Regenerate.
42679	* include/*: Forward declare, doxygen fixups, restyle.
42680	* src/*: Same.
42681	* src/abg-corpus.cc: Empty, removed.
42682	* doc/api/libabigail.doxy: Tweak.
42683
426842013-08-01  Benjamin Kosnik <bkoz@redhat.com>
42685
42686	Add virtual dtor to translation_unit.
42687	* include/abg-ir.h (translation_unit): Add virtual dtor.
42688	* src/abg-ir.cc: Define.
42689
426902013-08-01  Benjamin Kosnik <bkoz@redhat.com>
42691
42692	Adjust doxygen input path.
42693	* doc/api/libabigail.doxy: Adjust include directory.
42694
426952013-08-01  Benjamin Kosnik <bkoz@redhat.com>
42696
42697	Collapse subdir of include to include.
42698	* include/libabigail/abg-*.h: Move to...
42699	* include/abg-*.h
42700	* include/libabigail: Remove.
42701	* configure.ac: Adjust include location from libabigail/include to
42702	include.
42703	* Makefile.in: Same.
42704	* aclocal.m4: Same.
42705	* configure: Same.
42706	* doc/Makefile.in: Same.
42707	* include/Makefile.am: Same.
42708	* src/Makefile.am: Same.
42709	* src/Makefile.in: Same.
42710	* tests/Makefile.am: Same.
42711	* tests/Makefile.in: Same.
42712
427132013-07-23  Dodji Seketeli <dodji@seketeli.org>
42714
42715	Update autotool auto-generated files
42716	* Makefile.in: Updated.
42717	* aclocal.m4: Likewise.
42718	* configure: Likewise.
42719	* doc/Makefile.in: Likewise.
42720	* src/Makefile.in: Likewise.
42721	* tests/Makefile.in: Likewise.
42722
427232013-07-20  Dodji Seketeli <dodji@seketeli.org>
42724
42725	Implement a translation unit traversal API
42726	* include/libabigail/abg-ir.h (struct ir_node_visitor, struct
42727	traversable): New interfaces.
42728	(translation_unit, scope_decl, type_decl, qualified_type_def)
42729	(pointer_type_def, reference_type_def, enum_type_decl)
42730	(typedef_decl, var_decl, function_decl, data_member)
42731	(member_function, member_function_template)
42732	(member_class_template): Implement the traversable interface,
42733	overload the traversable::traverse pure virtual function.
42734	* src/abg-ir.cc ({translation_unit, scope_decl, type_decl,
42735	namespace_decl, qualified_type_def, pointer_type_def,
42736	reference_type_def, enum_type_decl, typedef_decl, var_decl,
42737	function_decl, class_decl::member_function, class_decl,
42738	class_decl::data_member, class_decl::member_function_template,
42739	class_decl::member_class_template, function_template_decl,
42740	class_template_decl, }::traverse): Implement traversal.
42741	(ir_node_visitor::visit): New method, overloaded for the types
42742	above, which implement the traversable interface.
42743	* tests/test-walker.cc: New test case program to showcase how to
42744	use the new traversal API.
42745	* tests/makefile.am: Add test-walker.cc to the build system.
42746
427472013-07-19  Dodji Seketeli <dodji@seketeli.org>
42748
42749	By default, statically link libabigail with whoever uses abigail.m4
42750	* abigail.m4: Make $abigaillibs statically link libabigail by default.
42751
427522013-07-19  Dodji Seketeli <dodji@seketeli.org>
42753
42754	Move static member definition to abg-viz-dot.cc file
42755	* include/libabigail/abg-viz-dot.h: Move definition of
42756	node_base::_M_count_total to ...
42757	* src/abg-viz-dot.cc: ... here.
42758
427592013-07-19  Dodji Seketeli <dodji@seketeli.org>
42760
42761	Put headers in include/libabigail
42762	* include/libabigail: New directory.
42763	* include/Makefile.am:  New file.
42764	* include/libabigail/Makefile.am: New file.
42765	* src/abg-*.h: Move these in include/libabigail/*.h
42766	* src/Makefile.am: Set -I option to look for headers in include/libabigail
42767	* doc/api/libabigail.doxy: Look for headers in include/libabigail
42768	* tests/Makefile.am: Set -I option to look for headers in include/libabigail
42769	* abigail.m4: Set includedir to $prefix/include/libabigail for
42770	library used as a dep, or to srcdir/libabigail/include/libabigail
42771	in GCC source tree.
42772	* configure.ac: Add Makefile.am in include and include/libabigail
42773	* abigail.m4: Look for headers in include/libabigail when the
42774	libabigail is in in the source tree and in $incdir/libabigail when
42775	it is installed as a dependency.
42776
427772013-07-18  Benjamin Kosnik <bkoz@redhat.com>
42778
42779	Install into docdir, turn off collaboration graphs.
42780	* doc/Makefile.am (doc-install-html-doxygen): Install generated
42781	files into docdir.
42782	* doc/api/libabigail.doxy (COLLABORATION_GRAPH): Turn off.
42783
427842013-07-18  Benjamin Kosnik <bkoz@redhat.com>
42785
42786	Fix dependencies for api/html output directory.
42787	* doc/Makefile.am: Create abi output directory.
42788
427892013-07-16  Dodji Seketeli <dodji@seketeli.org>
42790
42791	Prepare for publishing
42792	* COMMIT-LOG-GUIDELINES: New file.
42793	* CONTRIBUTING: New file.
42794	* README: Amended to refer to the first files above.
42795
427962013-07-16  Dodji Seketeli <dodji@seketeli.org>
42797
42798	LGPLv3 License the library
42799	* COPYING-LGPLV3:  New file.
42800	* abg-config.cc: License the file to LGPLv3.
42801	* abg-config.h: Likewise.
42802	* abg-corpus.cc: Likewise.
42803	* abg-corpus.h: Likewise.
42804	* abg-hash.cc: Likewise.
42805	* abg-hash.h: Likewise.
42806	* abg-ir.cc: Likewise.
42807	* abg-ir.h: Likewise.
42808	* abg-libxml-utils.cc: Likewise.
42809	* abg-libxml-utils.h: Likewise.
42810	* abg-reader.cc: Likewise.
42811	* abg-reader.h: Likewise.
42812	* abg-writer.cc: Likewise.
42813	* abg-writer.h: Likewise.
42814	* src/abg-viz-common.cc: Likewise.
42815	* src/abg-viz-common.h: Likewise.
42816	* src/abg-viz-dot.cc: Likewise.
42817	* src/abg-viz-dot.h: Likewise.
42818	* src/abg-viz-svg.cc: Likewise.
42819	* src/abg-viz-svg.h: Likewise.
42820	* tests/test-read-write.cc: Likewise.
42821	* tests/test-utils.cc: Likewise.
42822	* tests/test-utils.h: Likewise.
42823
428242013-07-17  Dodji Seketeli <dodji@seketeli.org>
42825
42826	Add assert.h in abg-ir.cc
42827	* src/abg-ir.cc: Add missing assert.h
42828
428292013-07-17  Dodji Seketeli <dodji@seketeli.org>
42830
42831	Fix missing license blurbs
42832	* src/abg-config.cc: Fix licensing blurb.
42833	* src/abg-config.h: Likewise.
42834	* src/abg-corpus.cc: Likewise.
42835	* src/abg-corpus.h: Likewise.
42836	* src/abg-ir.cc: Likewise.
42837	* src/abg-ir.h: Likewise.
42838	* src/abg-reader.cc: Likewise.
42839	* src/abg-writer.cc: Likewise.
42840
428412013-07-02  Benjamin Kosnik <bkoz@redhat.com>
42842
42843	Correct DOT merge.
42844	* src/abg-viz-common.h: Use _M_attributes for attribute overflows.
42845	* src/abg-viz-dot.h: Merge in correct node_base.
42846	* src/abg-viz-dot.cc: Same.
42847	* tests/test-dot.cc: Correct examples.
42848	* tests/Makefile.am: Add .gv to CLEANFILES.
42849	* tests/Makefile.in: Regenerate.
42850
428512013-07-02  Benjamin Kosnik <bkoz@redhat.com>
42852
42853	Pull out common style type.
42854	* src/abg-viz-common.h: Pull out common style type.
42855	* src/abg-viz-dot.cc: Adjust scoping.
42856	* src/abg-viz-common.cc: Same.
42857	* src/abg-viz-dot.h: Use common style class.
42858	* src/abg-viz-svg.h: Same.
42859
428602013-07-02  Benjamin Kosnik <bkoz@redhat.com>
42861
42862	Commonize visualization support.
42863	* src/abg-viz-svg.h: Move common code to...
42864	* src/abg-viz-dot.h: Move common code to...
42865	* src/abg-viz-common.h: ...here. New.
42866	* src/abg-viz-svg.cc: Move common code to...
42867	* src/abg-viz-common.cc: ...here. New.
42868	* src/Makefile.am: Add abg-viz-common.cc, abg-viz-common.h
42869	* src/Makefile.in: Regenerate.
42870
428712013-07-01  Benjamin Kosnik <bkoz@redhat.com>
42872
42873	Initial DOT work.
42874	* doc/vizualization/layout/scripts/
42875	(inkscape_export_svg_to_plain_svg.sh): Move...
42876	(inkscape_export_svg_to_png_and_pdf.sh): Move...
42877	* scripts: ..here. New toplevel directory.
42878	* scripts/scripts/dot_to_png.sh: New.
42879	* scripts/scripts/dot_to_svg.sh: New.
42880	* src/Makefile.am: Add abg-viz-dot.cc, abg-viz-dot.h.
42881	* tests/Makefile.am: Add test-dot.cc.
42882	* src/abg-viz-dot.cc: New.
42883	* src/abg-viz-dot.h: New.
42884	* tests/test-dot.cc: New.
42885	* doc/vizualization/graph: New.
42886	* doc/vizualization/graph/gv/sa-A.gv: New.
42887	* doc/vizualization/graph/gv/sa-B.gv: New.
42888	* doc/vizualization/graph/gv/sa-C1.gv: New.
42889	* doc/vizualization/graph/gv/sa-C2.gv: New.
42890	* doc/vizualization/graph/gv/sa-C3.gv: New.
42891	* doc/vizualization/graph/gv/sa-C4.gv: New.
42892	* doc/vizualization/graph/gv/sa-D1.gv: New.
42893	* doc/vizualization/graph/gv/sa-D2.gv: New.
42894	* doc/vizualization/graph/gv/sa-D2v.gv: New.
42895	* doc/vizualization/graph/gv/sa-D3.gv: New.
42896	* doc/vizualization/graph/gv/sa-D3v.gv: New.
42897	* doc/vizualization/graph/gv/sa-D4v.gv: New.
42898	* doc/vizualization/graph/gv/sa-D5v1.gv: New.
42899	* doc/vizualization/graph/gv/sa-D5v2.gv: New.
42900	* doc/vizualization/graph/gv/sa-DD1.gv: New.
42901	* doc/vizualization/graph/gv/sa-DD2.gv: New.
42902	* doc/vizualization/graph/gv/sa-DD3.gv: New.
42903	* doc/vizualization/graph/gv/sa-DD4.gv: New.
42904	* doc/vizualization/graph/gv/sa-DD5.gv: New.
42905	* doc/vizualization/graph/gv/sa-base.gv: New.
42906	* doc/vizualization/graph/png/sa-A.png: New.
42907	* doc/vizualization/graph/png/sa-B.png: New.
42908	* doc/vizualization/graph/png/sa-C1.png: New.
42909	* doc/vizualization/graph/png/sa-C2.png: New.
42910	* doc/vizualization/graph/png/sa-C3.png: New.
42911	* doc/vizualization/graph/png/sa-C4.png: New.
42912	* doc/vizualization/graph/png/sa-D1.png: New.
42913	* doc/vizualization/graph/png/sa-D2.png: New.
42914	* doc/vizualization/graph/png/sa-D2v.png: New.
42915	* doc/vizualization/graph/png/sa-D3.png: New.
42916	* doc/vizualization/graph/png/sa-D3v.png: New.
42917	* doc/vizualization/graph/png/sa-D4v.png: New.
42918	* doc/vizualization/graph/png/sa-D5v1.png: New.
42919	* doc/vizualization/graph/png/sa-D5v2.png: New.
42920	* doc/vizualization/graph/png/sa-DD1.png: New.
42921	* doc/vizualization/graph/png/sa-DD2.png: New.
42922	* doc/vizualization/graph/png/sa-DD3.png: New.
42923	* doc/vizualization/graph/png/sa-DD4.png: New.
42924	* doc/vizualization/graph/png/sa-DD5.png: New.
42925	* doc/vizualization/graph/png/sa-base.png: New.
42926	* doc/vizualization/graph/sources/sa-A.cc: New.
42927	* doc/vizualization/graph/sources/sa-B.cc: New.
42928	* doc/vizualization/graph/sources/sa-C.cc: New.
42929	* doc/vizualization/graph/sources/sa-D.cc: New.
42930	* doc/vizualization/graph/sources/sa-DD.cc: New.
42931	* doc/vizualization/graph/sources/sa-base.cc: New.
42932	* doc/vizualization/graph/svg/sa-A.svg: New.
42933	* doc/vizualization/graph/svg/sa-B.svg: New.
42934	* doc/vizualization/graph/svg/sa-C1.svg: New.
42935	* doc/vizualization/graph/svg/sa-C2.svg: New.
42936	* doc/vizualization/graph/svg/sa-C3.svg: New.
42937	* doc/vizualization/graph/svg/sa-C4.svg: New.
42938	* doc/vizualization/graph/svg/sa-D1.svg: New.
42939	* doc/vizualization/graph/svg/sa-D2.svg: New.
42940	* doc/vizualization/graph/svg/sa-D2v.svg: New.
42941	* doc/vizualization/graph/svg/sa-D3.svg: New.
42942	* doc/vizualization/graph/svg/sa-D3v.svg: New.
42943	* doc/vizualization/graph/svg/sa-D4v.svg: New.
42944	* doc/vizualization/graph/svg/sa-D5v1.svg: New.
42945	* doc/vizualization/graph/svg/sa-D5v2.svg: New.
42946	* doc/vizualization/graph/svg/sa-DD1.svg: New.
42947	* doc/vizualization/graph/svg/sa-DD2.svg: New.
42948	* doc/vizualization/graph/svg/sa-DD3.svg: New.
42949	* doc/vizualization/graph/svg/sa-DD4.svg: New.
42950	* doc/vizualization/graph/svg/sa-DD5.svg: New.
42951	* doc/vizualization/graph/svg/sa-base.svg: New.
42952
429532013-07-01  Benjamin Kosnik <bkoz@redhat.com>
42954
42955	Regenerate build/configure.
42956	* aclocal.m4:
42957	* configure:
42958
429592013-06-06  Benjamin Kosnik <bkoz@redhat.com>
42960
42961	Regenerate configure files.
42962	* Makefile.in:
42963	* aclocal.m4:
42964	* configure:
42965	* doc/Makefile.in:
42966	* src/Makefile.in:
42967	* tests/Makefile.in:
42968
429692013-05-28  Benjamin Kosnik <bkoz@redhat.com>
42970
42971	Add svg generation.
42972	* src/Makefile.am: Add abg-viz-svg.cc, abg-viz-svg.h.
42973	* tests/Makefile.am: Add test-svg.cc.
42974	* src/abg-viz-svg.cc: New.
42975	* src/abg-viz-svg.h: New.
42976	* tests/test-svg.cc: New.
42977
429782013-05-22  Benjamin Kosnik <bkoz@redhat.com>
42979
42980	Remove ChangeLog
42981	* ChangeLog: Remove content.
42982
429832013-05-21  Benjamin Kosnik <bkoz@redhat.com>
42984
42985	Fixup abg-version.h merge duplicate.
42986	* configure.ac: Remove src/abg-version.h merge duplicate.
42987
429882013-05-20  Benjamin Kosnik <bkoz@redhat.com>
42989
42990	Add doc/visualization/layout.
42991	* doc/vizualization/layout: New.
42992	* doc/vizualization/layout/pdf/sa-A.pdf: New.
42993	* doc/vizualization/layout/pdf/sa-B.pdf: New.
42994	* doc/vizualization/layout/pdf/sa-C1.pdf: New.
42995	* doc/vizualization/layout/pdf/sa-C2.pdf: New.
42996	* doc/vizualization/layout/pdf/sa-C3.pdf: New.
42997	* doc/vizualization/layout/pdf/sa-D1.pdf: New.
42998	* doc/vizualization/layout/pdf/sa-D2.pdf: New.
42999	* doc/vizualization/layout/pdf/sa-D2v.pdf: New.
43000	* doc/vizualization/layout/pdf/sa-D3.pdf: New.
43001	* doc/vizualization/layout/pdf/sa-D3v.pdf: New.
43002	* doc/vizualization/layout/pdf/sa-D4v.pdf: New.
43003	* doc/vizualization/layout/pdf/sa-DD1.pdf: New.
43004	* doc/vizualization/layout/pdf/sa-DD2.pdf: New.
43005	* doc/vizualization/layout/pdf/sa-DD3.pdf: New.
43006	* doc/vizualization/layout/pdf/sa-DD4.pdf: New.
43007	* doc/vizualization/layout/pdf/sa-DD5.pdf: New.
43008	* doc/vizualization/layout/pdf/sa-base.pdf: New.
43009	* doc/vizualization/layout/png/sa-A.png: New.
43010	* doc/vizualization/layout/png/sa-B.png: New.
43011	* doc/vizualization/layout/png/sa-C1.png: New.
43012	* doc/vizualization/layout/png/sa-C2.png: New.
43013	* doc/vizualization/layout/png/sa-C3.png: New.
43014	* doc/vizualization/layout/png/sa-D1.png: New.
43015	* doc/vizualization/layout/png/sa-D2.png: New.
43016	* doc/vizualization/layout/png/sa-D2v.png: New.
43017	* doc/vizualization/layout/png/sa-D3.png: New.
43018	* doc/vizualization/layout/png/sa-D3v.png: New.
43019	* doc/vizualization/layout/png/sa-D4v.png: New.
43020	* doc/vizualization/layout/png/sa-DD1.png: New.
43021	* doc/vizualization/layout/png/sa-DD2.png: New.
43022	* doc/vizualization/layout/png/sa-DD3.png: New.
43023	* doc/vizualization/layout/png/sa-DD4.png: New.
43024	* doc/vizualization/layout/png/sa-DD5.png: New.
43025	* doc/vizualization/layout/png/sa-base.png: New.
43026	* doc/vizualization/layout/scripts/
43027	(inkscape_export_svg_to_plain_svg.sh): New.
43028	(inkscape_export_svg_to_png_and_pdf.sh): New.
43029	* doc/vizualization/layout/sources/sa-A.cc: New.
43030	* doc/vizualization/layout/sources/sa-B.cc: New.
43031	* doc/vizualization/layout/sources/sa-C.cc: New.
43032	* doc/vizualization/layout/sources/sa-D.cc: New.
43033	* doc/vizualization/layout/sources/sa-DD.cc: New.
43034	* doc/vizualization/layout/sources/sa-base.cc: New.
43035	* doc/vizualization/layout/svg/sa-A.svg: New.
43036	* doc/vizualization/layout/svg/sa-B.svg: New.
43037	* doc/vizualization/layout/svg/sa-C1.svg: New.
43038	* doc/vizualization/layout/svg/sa-C2.svg: New.
43039	* doc/vizualization/layout/svg/sa-C3.svg: New.
43040	* doc/vizualization/layout/svg/sa-D1.svg: New.
43041	* doc/vizualization/layout/svg/sa-D2.svg: New.
43042	* doc/vizualization/layout/svg/sa-D2v.svg: New.
43043	* doc/vizualization/layout/svg/sa-D3.svg: New.
43044	* doc/vizualization/layout/svg/sa-D3v.svg: New.
43045	* doc/vizualization/layout/svg/sa-D4v.svg: New.
43046	* doc/vizualization/layout/svg/sa-DD1.svg: New.
43047	* doc/vizualization/layout/svg/sa-DD2.svg: New.
43048	* doc/vizualization/layout/svg/sa-DD3.svg: New.
43049	* doc/vizualization/layout/svg/sa-DD4.svg: New.
43050	* doc/vizualization/layout/svg/sa-DD5.svg: New.
43051	* doc/vizualization/layout/svg/sa-base.svg: New.
43052
430532013-05-20  Benjamin Kosnik <bkoz@redhat.com>
43054
43055	Generate abg-version.h at configure time.
43056	* configure.ac: Add src/abg-version.h to AC_CONFIG_FILES.
43057	* src/Makefile.am: Remove abg-version.h generation rules.
43058	* src/abg-version.h.in: New.
43059
430602013-04-02  Benjamin Kosnik <bkoz@redhat.com>
43061
43062	Add doc dir. Add Doxgen api generation rules.
43063	* doc: Add.
43064	* doc/Makefile.am (html, install-html): Add.
43065	* doc/Makefile.in: Add.
43066	* doc/api/libabigail.doxy: Add doxygen config.
43067	* src/abg-*: Add @file markup.
43068
430692013-03-27  Benjamin Kosnik <bkoz@redhat.com>
43070
43071	Add configure to source control
43072	* configure: Add.
43073	* src/abg-corpus.cc: include stdexcept
43074
430752013-06-25  Dodji Seketeli <dodji@redhat.com>
43076
43077	Support offsets and virtual attribute in base class specifiers
43078	* src/abg-ir.h (class_decl::base_spec::base_spec): Take an offset
43079	and a is_virtual flag.
43080	(class_decl::base_spec::{get_is_virtual, get_offset_in_bits}): New
43081	methods.
43082	(class_decl::has_no_base_nor_member): New method declaration..
43083	* src/abg-ir.cc (class_decl::base_spec::base_spec): Take an offset
43084	and a is_virtual flag
43085	(class_decl::has_no_base_nor_member): Define it.
43086	* src/abg-reader.cc (read_offset_in_bits): Renamed
43087	read_var_offset_in_bits into this.
43088	(read_is_virtual): New static function.
43089	(build_class_decl): Read the 'layout-offset-in-bits' and the
43090	'is-virtual' of the base class specifier.  Adjust for the
43091	read_var_offset_in_bits -> read_offset_in_bits rename.
43092	* src/abg-writer.cc (write_layout_offset): New overload for the
43093	base class specifiers.
43094	(write_class_decl): If the class has no member or base class, make
43095	it a proper empty xml element.  Write the offset and the
43096	is-virtual attribute.
43097	* tests/data/test-read-write/test20.xml: New test input data.
43098	* tests/test-read-write.cc: De-serialize the test above, serialize
43099	it back and compare that both versions are the same.
43100
431012013-06-22  Dodji Seketeli <dodji@redhat.com>
43102
43103	Iron out support for simple base classes.
43104	* src/abg-ir.h (class_decl::base_spec::base_spec): Move this
43105	out-of-line.  Add a new constructor for clients compiled without
43106	RTTI.
43107	* src/abg-ir.cc (class_decl::base_spec::base_spec):  This is now
43108	here out-of-line.  Define the new constructor for clients compiled
43109	without RTTI.
43110	* tests/data/test-read-write/test19.xml: New test case input for
43111	base classes.
43112	* tests/test-read-write.cc: De-serialize and serialize the new
43113	test case input above.
43114
431152013-06-21  Dodji Seketeli <dodji@redhat.com>
43116
43117	Fix handling of forward decl of classes
43118	* abg-ir.h (class_decl::set_earlier_declaration): Move this
43119	out-of-line and add an overload.
43120	* src/abg-ir.cc (class_decl::set_earlier_declaration): Moved this
43121	out-of-line here and add an overload.
43122	* src/abg-reader.cc (build_class_decl): Really read the
43123	'decl-of-decl-id' property.  Do not make the definition use the id
43124	of the declaration.  Both have their id.
43125	* src/abg-writer.cc (write_class_decl):  Put a space before the
43126	property "def-of-decl-id".
43127	* tests/data/test-read-write/test18.xml: New test input.
43128	* tests/test-read-write.cc: De-serialize this new input, serialize
43129	it back and make sure both versions are identical.
43130
431312013-06-21  Dodji Seketeli <dodji@redhat.com>
43132
43133	Serialize the layout offset of class data members.
43134	* src/abg-writer.cc (write_layout_offset): New function.
43135	(write_class_decl): Serialize the layout offset.
43136
431372013-06-21  Dodji Seketeli <dodji@redhat.com>
43138
43139	Support Bitwise OR for qualified_type_def::CV better
43140	* src/abg-ir.h (qualified_type_def::CV_RESTRICT): New enumerator
43141	for the qualified_type_def::CV enum.
43142	(operator|(qualified_type_def::CV, qualified_type_def::CV)): New
43143	declaration.
43144	* src/abg-ir.cc (operator|(qualified_type_def::CV,
43145	qualified_type_def::CV)): New definition.
43146	* src/abg-reader.cc (build_qualified_type_decl): No need for
43147	casting the result of bitwise or between instances of
43148	qualified_type_def::CV.
43149
431502013-06-14  Dodji Seketeli <dodji@seketeli.org>
43151
43152	Support method type/decl, variadic functions, class declarations-only
43153	* src/abg-ir.h (function_decl::parameter::parameter): New
43154	constructor with variadic parameter marker.
43155	(function_decl::m_type): Make this protected to let method_decl
43156	inheriting class to access it.
43157	(function_decl::get_type): Move this out-of-line.
43158	(class method_type, method_type_hash): New types.
43159	(enum class_decl::access_specifier): Add no_access new enumerator.
43160	(class_decl::data_member::data_member): Move this out-of-line.
43161	(class_decl::data_member::~data_member): Declare virtual
43162	destructor.
43163	(class method_decl): New class.
43164	(class member_function): Make this inherit method_decl, instead of
43165	function_decl.
43166	(class_decl::class_decl): New constructors.
43167	(class_decl::{hashing_started, is_declaration_only,
43168	set_earlier_declaration, get_earlier_declaration}): New methods.
43169	* src/abg-ir.cc (add_decl_to_scope): If a decl is already in a
43170	scope, don't add it to this scope.
43171	(get_global_scope): Make this work when passed an instance of
43172	global_scope.
43173	(dynamic_type_hash::operator()): Add support for method_type.
43174	(method_type::{method_type, set_class_type, ~method_type, })
43175	(method_type_hash::operator()): New defintions.
43176	(function_decl::get_type, class_decl::class_decl): Move these
43177	out-of-line here.
43178	(class_decl::method_decl::{method_decl, ~method_decl, get_type}):
43179	New definitions.
43180	(class_decl::member_function::member_function): Move this
43181	out-of-line here.  Support method_decl.
43182	(class_decl::data_member::data_member): Likewise.
43183	(class_decl_hash::operator()): Guard this against endless loop.
43184	* src/abg-reader.cc (write_class_is_declaration_only): New static
43185	function.
43186	(write_var_decl): Take a flag to write the mangled name or not.
43187	(write_function_decl): Take a flag to skip the first parameter.
43188	(write_cdtor_const_static): Use 'yes' instead of 'true' as value
43189	of the properties.
43190	(write_decl, write_function_template_decl): Adjust wrt the new
43191	signatures of write_var_decl and write_function_decl.
43192	(write_enum_type_decl): Simplify call to write_location.
43193	(write_class_decl): Support serializing declaration-only classes.
43194	* src/abg-writer.cc:
43195	* tests/data/test-read-write/test17.xml: New test input.
43196	* tests/test-read-write.cc: De-serialize the above, and serialize it back.
43197	* tests/data/test-read-write/test10.xml: Update this test.
43198
431992013-06-01  Dodji Seketeli <dodji@redhat.com>
43200
43201	Support function_type and adapt a function_decl to use it
43202	* src/abg-ir.h (class function_type): Forward decl prior to class
43203	function_decl.
43204	(function_decl::parameter): Pass string by const reference.  Add a
43205	variadic marker member and initialize it.
43206	(function_decl::parameter::get_type): Add a non-const overload.
43207	(function_decl::parameter::get_variadic_marker): New getter.
43208	(function_decl::function_decl) Take a const reference to a vector
43209	for parameters, type size/alignment.  Add two overloads that takes a
43210	pointer to function_type.
43211	(function_decl::get_parameters): Move this out-of-line.
43212	(function_decl::append_parameter(s)): Renamed
43213	function_decl::add_parameter(s) into these.  Move it out-of-line.
43214	Add an overload.
43215	(function_decl::{get_type, set_type}): New declaration.
43216	(function_decl::get_return_type): Move this out-of-line.
43217	(function_decl::is_variadic): New in-line function.
43218	(function_decl::m_type): New data member.
43219	(function_decl::{m_parms, m_return_type}): Remove.  This are now
43220	carried by function_decl::m_type.
43221	(class function_type, struct function_type_hash): New
43222	declarations.
43223	(member_function::member_function): Take a vector of pointers to
43224	parameters.  Take size/align of the type of the member function.
43225	Adjust initialization.
43226	* src/abg-ir.cc (dynamic_type_hash): Hash instance of
43227	function_type accessed through a pointer.
43228	(function_type::{operator==, ~function_type})
43229	(function_type_hash::operaror(), function_decl::{get_return_type,
43230	}, function_decl::parameter::hash::operator()): New definitions.
43231	(function_decl::function_decl): The out-of-line definitions of the
43232	declarations above.
43233	(function_decl::append_parameter): Moved this out-of-line from
43234	inline function_decl::add_parameter.  Make this rely on the
43235	underlying m_type.
43236	(function_decl::operator==): Adjust for use of vector for the
43237	parameters.  Also, there is no need anymore to compare the
43238	parameters or the return types as they are compared by the
43239	comparison of the function types.
43240	* src/abg-reader.cc (build_function_decl): Read the new size/alignment
43241	attributes on the function-decl element.  Build a function_type
43242	and use it to build the function_decl.  Parameters and return type
43243	are now hung off of the function_type.
43244	(handle_function_decl): use build_function_decl.
43245	* src/abg-writer.cc (write_function_decl): Write the new
43246	size/alignment properties of the function-decl element.  Adjust
43247	for the use of vectors for function parameters now.
43248	* tests/data/test-read-write/test10.xml: Adjust for the presence
43249	of size/alignment properties in the function-decl element now.
43250	* tests/data/test-read-write/test11.xml: Likewise.
43251	* tests/data/test-read-write/test12.xml: Likewise.
43252	* tests/data/test-read-write/test13.xml: Likewise.
43253	* tests/data/test-read-write/test14.xml: Likewise.
43254	* tests/data/test-read-write/test9.xml: Likewise.
43255
432562013-06-01  Dodji Seketeli <dodji@redhat.com>
43257
43258	Support null type hashing
43259	* src/abg-ir.cc (dynamic_type_hash::operator()(const type_base* t)
43260	const): Support hashing null type.
43261
432622013-05-23  Dodji Seketeli <dodji@redhat.com>
43263
43264	Add a couple of output file suffix configuration properties
43265	* src/abg-config.h (config::{get_tu_instr_suffix,
43266	set_tu_instr_suffix, get_tu_instr_archive_suffix,
43267	set_tu_instr_archive_suffix}): New decls.
43268	* src/abg-config.cc (config::{get_tu_instr_suffix,
43269	set_tu_instr_suffix, get_tu_instr_archive_suffix,
43270	set_tu_instr_archive_suffix}): New defs.
43271
432722013-05-23  Dodji Seketeli <dodji@redhat.com>
43273
43274	Add a new add_decl_to_scope overload
43275	* src/abg-ir.h (add_decl_to_scope): New declaration.
43276	* src/abg-ir.cc (add_decl_to_scope): New definition.
43277
432782013-05-23  Dodji Seketeli <dodji@redhat.com>
43279
43280	Ensure add_decl_to_scope properly updates the scope
43281	* src/abg-ir.h (scope_decl::m_member_scopes)
43282	(scope_decl::get_member_scopes): New declarations.
43283	(scope_decl::add_member_decl): Move this to ...
43284	* src/abg-ir.cc (scope_decl::add_member_decl): ... here.  Make it
43285	update the new scope_decl::m_member_scopes too.
43286
432872013-05-23  Dodji Seketeli <dodji@redhat.com>
43288
43289	Add translation_unit::get_path
43290	* src/abg-ir.cc (translation_unit::get_path): New declaration.
43291	* src/abg-ir.cc (translation_unit::get_path): New definition.
43292
432932013-05-23  Dodji Seketeli <dodji@redhat.com>
43294
43295	Link the global scope to its translation unit
43296	* src/abg-ir.h (global_scope::global_scope): Take a translation
43297	unit and initialize the tu member with it.
43298	* src/abg-ir.cc (translation_unit::get_global_scope): Initialize
43299	the global scope with its actual translation unit.
43300
433012013-05-23  Dodji Seketeli <dodji@redhat.com>
43302
43303	Have location numbers that are stable throughout translation unit editing
43304	* src/abg-irc.cc (location_manager::create_new_location): Just
43305	append the new expanded location to the end of the location
43306	vectors, and return the new size of the vector as the location
43307	number.  That way we don't change the location number of an
43308	expanded location that is already in the vector -- that change
43309	happens if we keep the vector sorted during the insertion.
43310	(location_manager::expand_location):  The index of the expanded
43311	location is the location number - 1.
43312
433132013-05-23  Dodji Seketeli <dodji@redhat.com>
43314
43315	Fix in-source detection of the library for GCC
43316	* abigail.m4 (ABIGAIL_INIT): Don't forget to set abigaillibs when
43317	we detect the library in the source tree, particularly for GCC.
43318
433192013-05-21  Dodji Seketeli <dodji@redhat.com>
43320
43321	Re-generate aclocal.m4
43322	* aclocal.m4: Re-generate with autoconf 2.64.
43323
433242013-05-21  Benjamin Kosnik <bkoz@redhat.com>
43325
43326	Generate abg-version at configure time in builddir
43327	* configure.ac: Add src/abg-version.h to AC_CONFIG_FILES.
43328	* src/Makefile.am: Remote ad-hoc generation of abg-version.h from
43329	here.
43330	* src/abg-version.h.in: New file.
43331	* configure: Re-generate.
43332	* src/Makefile.in: Likewise.
43333
433342013-05-21  Dodji Seketeli <dodji@redhat.com>
43335
43336	add abigail.m4 to the distribution
43337	* Makefile.am: Add abigail.m4 to the distribution.
43338	* Makefile.in: Re-generate.
43339
433402013-05-10  Dodji Seketeli <dodji@redhat.com>
43341
43342	Pedantic fixes
43343	* src/abg-ir.h (enum decl_base::binding): Remove trailing space.
43344	(enum class_decl::access_specifier): Likewise.
43345
433462013-05-07  Dodji Seketeli <dodji@redhat.com>
43347
43348	Fix for building libabigail inside the GCC tree
43349	* abigail.m4: Detect when we are in the GCC tree; disable version
43350	check in that case.
43351
433522013-05-07  Dodji Seketeli <dodji@redhat.com>
43353
43354	Re-generate configury with autoconf 2.64
43355	* abigail.m4: Add licence header.
43356	* configure.ac: Re-generate configure script with autoconf 2.64
43357	like for GCC.
43358
433592013-05-07  Dodji Seketeli <dodji@redhat.com>
43360
43361	Allow autoconf-based clients to detect the library
43362	* configure.ac: Define the components of the version number as
43363	autoconf variables.  Set the version number to 0.1.0
43364	* abigail.m4: New file
43365	* Makefile.am: Add abigail.m4 to the build system.  Install it in
43366	$(datadir)/aclocal.
43367	* src/Makefile.am: Generate and add abg-version.h from the version
43368	number autoconf variable defined in configure.ac.  Re-generate
43369	abg-version.h each time configure.ac changes.
43370	* src/abg-config.h (abigail_get_library_version): Declare ...
43371	* src/abg-config.cc (abigail_get_library_version): ... and define
43372	this wirth C linkage.  This is useful for autoconf tests to test
43373	for the presence of the library.
43374	* configure: Re-generate.
43375	* Makefile.in: Likewise.
43376	* src/Makefile.in: Likewise.
43377	* tests/Makefile.in: Likewise.
43378
433792013-05-03  Dodji Seketeli <dodji@redhat.com>
43380
43381	Build system fix for make distcheck
43382	* Makefile.am: Support the doc sub-directory.  We don't have a
43383	COPYRIGHT file.
43384	* src/Makefile.am: Don't prefix the file paths by the absolute
43385	path of the src dir; current autotools know how to deal with it,
43386	otherwise and it break them.
43387	* tests/Makefile.am: Likewise.  Make sure to remove the output of
43388	the tests upon make clean.
43389	* Makefile.in: Re-generate.
43390	* aclocal.m4: Likewise.
43391	* configure: Likewise.
43392	* src/Makefile.in: Likewise.
43393	* tests/Makefile.in: Likewise.
43394
433952013-05-02  Dodji Seketeli <dodji@redhat.com>
43396
43397	Initial support for member class templates
43398	* src/abg-ir.cc (class_decl::add_member_function_template): Fix
43399	comment.
43400	(class_decl::add_member_class_template)
43401	(class_decl::member_class_template::operator==)
43402	(class_decl::member_class_template_hash::operator()): New
43403	definitions.
43404	(class_decl::operator==): Compare member templates.  Fix logic.
43405	(class_decl::data_member_hash::operator())
43406	(class_decl::member_function_hash::operator())
43407	(class_decl::member_function_template_hash::operator()): Don't
43408	hash the is_static boolean as it's hashed as part of the 'member'
43409	sub-object hashing.
43410	(class_decl::member_function_template::operator==): Move this out
43411	of line here, from the header file.
43412	(class_decl_hash::operator()): Hash member class templates.
43413	* src/abg-ir.h (class_decl::member::{m_is_static,is_static}): Add the is_static
43414	boolean here, so that it's factorized out of the inherited classes
43415	of this class.
43416	(class_decl::data_member::{is_static, m_is_static})
43417	(class_decl::member_function::{is_static, m_is_static})
43418	(class_decl::member_function_template::{is_static, m_is_static}): Remove this
43419	as it's now part of the base 'member' class.
43420	(class_decl::data_member::operator==)
43421	(class_decl::member_function::operator==): Don't compare the
43422	is_static boolean as it's now compared as part of the 'member'
43423	sub-object comparison.
43424	(class_decl::member_function_template::operator==): Move this
43425	out-of-line into src/abg-ir.cc.
43426	(class class_decl::member_class_template, struct
43427	class_decl::member_class_template_hash)
43428	(class_decl::{add_member_class_template,
43429	get_member_class_templates}): New declarations.
43430	(class_decl::member_class_templates_type): New typedef.
43431	* src/abg-reader.cc (build_class_decl): Support de-serializing
43432	member class templates.
43433	* src/abg-writer.cc (write_class_decl): Likewise, support
43434	serializing member class templates.
43435	* tests/data/test-read-write/test16.xml: New test input.
43436	* tests/test-read-write.cc (int_out_specs[]): Add the new test
43437	input to the list of inputs that are de-serialized and serialized
43438	back.
43439	* tests/Makefile.am: Add the new test input to the distribution.
43440
434412013-05-02  Dodji Seketeli <dodji@redhat.com>
43442
43443	Initial support of class templates
43444	* src/abg-ir.cc (class_template_decl::class_template_decl)
43445	(class_template_decl::set_pattern)
43446	(class_template_decl::operator==)
43447	(class_template_decl::~class_template_decl)
43448	(class_template_decl_hash::operator())
43449	(class_tmpl_shared_ptr_hash::operator()): New definitions.
43450	* src/abg-ir.h (class class_template_decl, struct
43451	class_tmpl_shared_ptr_hash, struct class_tmpl_shared_ptr_hash):
43452	New declarations.
43453	* src/abg-reader.cc (read_context::const_class_tmpl_map_it): New
43454	typedef.
43455	(read_context::get_fn_tmpl_decl): Fix comment.
43456	(read_context::{get_class_tmpl_decl,key_class_tmpl_decl})
43457	(build_class_template_decl, handle_class_template_decl): New
43458	definitions.
43459	(read_context::m_class_tmpl_map): New member.
43460	(handle_element): Support "class-template-decl" xml elements
43461	nodes.
43462	(build_class_decl): Add missing bits to comment.
43463	(build_function_template_decl): Fix spacing.
43464	* src/abg-writer.cc (class_tmpl_shared_ptr_map): New typedef.
43465	(write_context::m_class_tmpl_map): New member.
43466	(write_context::get_id_for_class_tmpl, write_class_template_decl):
43467	New definitions.
43468	(write_template_parameters): Factorize this this out from ...
43469	(write_function_template_decl): ... here.
43470	(write_decl): Support writing instances of class_template_decl.
43471	Fix spacing.
43472	* tests/data/test-read-write/test15.xml: New test input.
43473	* tests/Makefile.am: Add the new test15.xml input to the
43474	distribution.
43475	* tests/test-read-write.cc (in_out_specs): Add the new test15.xml
43476	test to the list of serialized output to be de-serialized and
43477	serialized back.
43478
434792013-05-02  Dodji Seketeli <dodji@redhat.com>
43480
43481	Fix function_tempalte_decl init & hashing
43482	* src/abg-ir.cc (function_template_decl::operator==): Compare the
43483	patterns, not a pointer to them.
43484	(function_template_decl_hash::operator()): Don't try to hash null
43485	patterns.
43486	* src/abg-ir.h (function_template_decl::function_template_decl):
43487	Use function_template_decl::set_pattern to set the pattern here.
43488
434892013-04-30  Dodji Seketeli <dodji@redhat.com>
43490
43491	Support member function templates
43492	* src:abg-ir.h: Move template declarations before class
43493	class_decl, so that class_decl can have member templates.
43494	(class class_decl::member_function_template)
43495	(class_decl::add_member_function_template)
43496	(class_decl::{base_specs_type, member_types_type,
43497	data_members_types, member_functions_type,
43498	member_function_templates_type}): New declarations.
43499	* src/abg-ir.cc (class_decl::add_member_function_template)
43500	(class_decl::member_function_template_hash::operator()): New
43501	definitions.
43502	(class_decl_hash::operator()):  Support hashing for member
43503	function templates.
43504	* src/abg-reader.cc (build_class_decl): Use the new
43505	class_decl::{member_types_type, data_members_type,
43506	member_functions_type, base_specs_type} types.  Support member
43507	function templates.
43508	* src/abg-writer.cc (write_cdtor_const_static): New definition.
43509	(write_class_decl): Support member function templates.
43510	* tests/data/test-read-write/test14.xml: New input data.
43511	* tests/Makefile.am: Add it to the distribution.
43512	* tests/test-read-write.cc (InOutSpec int_out_specs): De-serialize
43513	the new test input file, serialize it back and diff both results.
43514
435152013-04-25  Dodji Seketeli <dodji@redhat.com>
43516
43517	Inheritance fix
43518	* src/abg-ir.h (class template_non_type_parameter): Make this
43519	inherit decl_base virtually.
43520
435212013-04-25  Dodji Seketeli <dodji@redhat.com>
43522
43523	Small comment fix
43524	* src/abg-ir.h (class template_decl): Fix comment.
43525
435262013-04-25  Dodji Seketeli <dodji@redhat.com>
43527
43528	Add some decl predicates
43529	* src/abg-ir.h (is_at_global_scope): Rename
43530	is_decl_at_global_scope into this.
43531	(is_at_class_scope, is_at_template_scope)
43532	(is_template_parameter, is_type)
43533	(is_template_parm_composition_type)
43534	(is_function_template_pattern, is_template_decl): New
43535	declarations.
43536	* src/abg-ir.cc (is_at_global_scope): Rename
43537	is_decl_at_global_scope into this.
43538	(is_at_class_scope, is_at_template_scope, is_template_parameter)
43539	(is_type, is_template_parm_composition_type)
43540	(is_function_template_pattern, is_template_decl): New definitions.
43541	* src/abg-reader.cc (update_depth_info_of_read_context): Use the
43542	new is_at_class_scope decl.
43543
435442013-04-25  Dodji Seketeli <dodji@redhat.com>
43545
43546	Support composing template type parameters
43547	* src/abg-ir.h (class tmpl_parm_type_composition): New
43548	declaration.
43549	* src/abg-ir.cc
43550	(tmpl_parm_type_composition::tmpl_parm_type_composition)
43551	(tmpl_parm_type_composition::~tmpl_parm_type_composition): New
43552	definitions.
43553	* src/abg-reader.cc (build_tmpl_parm_type_composition): New
43554	function.
43555	(build_template_parameter): Support template parameter type
43556	composition.
43557	* src/abg-writer.cc (write_tmpl_parm_type_composition): New
43558	function.
43559	(write_template_non_type_parameter): Fix type-id attribute.
43560	(write_template_parameter): Support template parameter type
43561	composition.
43562	* tests/data/test-read-write/test13.xml: New test input.
43563	* tests/Makefile.am: Add it to the distribution.
43564	* tests/test-read-write.cc (InOutSpec in_out_spec): Add test13.xml
43565	to the list of xml file that are de-serialized and serialized back.
43566
435672013-04-24  Dodji Seketeli <dodji@redhat.com>
43568
43569	Fix depth management during the parsing
43570	* src/abg-ir.cc (decl_base_hash::operator()):  Don't hash the
43571	context for decls in general.
43572	* src/abg-reader.cc (read_context::push_decl_to_current_scope)
43573	(read_context::push_and_key_type_decl): Add an overload that takes
43574	a node and update_depth_info boolean.
43575	(build_var_decl, build_type_decl, build_qualified_type_decl)
43576	(build_pointer_type_def, build_reference_type_def)
43577	(build_enum_type_decl, build_type_decl)
43578	(build_template_type_parameter, build_template_non_type_parameter)
43579	(build_template_template_parameter, build_template_parameter)
43580	(build_type): Make these functions take an update_depth_info
43581	parameter.  Pass it do read_context::push_and_key_type_decl or
43582	read_context::push_decl_to_current_scope rather than call
43583	update_read_context.
43584	(build_function_decl, build_class_decl)
43585	(build_function_template_decl): Change the seen_by_reader
43586	parameter into update_depth_info.  Pass the update_depth_info bool
43587	to read_context::push_decl_to_current_scope rather than call
43588	update_depth_info here.
43589	(handle_class, handle_function_template_decl): Adjust.
43590	* tests/data/test-read-write/test12.xml: Add new test input.
43591	* tests/test-read-write.cc (InOutSpec in_out_specs): Add it to the
43592	list of input to de-serialize, serialize back and compare the two.
43593	* tests/Makefile.am: Add the new test input to the distribution.
43594
435952013-04-23  Dodji Seketeli <dodji@redhat.com>
43596
43597	Initial support for function templates
43598	* src/abg-ir.h (function_decl::set_return_type): New inline
43599	definition.
43600	(class template_decl, struct template_decl_hash, class
43601	template_parameter, struct template_parameter_hash, struct
43602	dynamic_template_parameter_hash, struct
43603	template_parameter_shared_ptr_hash, class template_type_parameter)
43604	(struct template_type_parameter_hash, class
43605	template_non_type_parameter, struct
43606	template_non_type_parameter_hash, class
43607	template_template_parameter, struct
43608	template_template_parameter_hash, class function_template_decl)
43609	(struct function_template_decl_hash, struct
43610	fn_tmpl_shared_ptr_hash): New declarations.
43611	* src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing for
43612	template template, and template type parameters.
43613	(template_decl_hash::operator, template_decl::~template_decl)
43614	(template_decl::operator==, template_parameter::operator==)
43615	(template_parameter_hash::operator())
43616	(dynamic_template_parameter_hash::operator())
43617	(template_type_parameter::operator==)
43618	(template_type_parameter::~template_type_parameter)
43619	(template_type_parameter_hash::operator())
43620	(template_non_type_parameter::operator==)
43621	(template_non_type_parameter::~template_non_type_parameter)
43622	(template_non_type_parameter_hash::operator())
43623	(template_template_parameter::operator==)
43624	(template_template_parameter::~template_template_parameter)
43625	(template_template_parameter_hash::operator())
43626	(function_template_decl::operator==)
43627	(function_template_decl_hash::operator())
43628	(fn_tmpl_shared_ptr_hash::operator())
43629	(function_template_decl::~function_template_decl()): New
43630	definitions.
43631	* src/abg-reader.cc (read_context::get_fn_tmpl_decl)
43632	(read_context::key_fn_tmpl_decl): New functions.
43633	(read_context::m_fn_tmpl_map): New data member.
43634	(read_context::key_type_decl): Renamed read_context::add_type_decl
43635	into this.
43636	(read_context::push_decl_to_current_scope): Renamed
43637	read_context::finish_decl_creation into this.  Add an assert.
43638	(read_context::push_and_key_type_decl): Renamed
43639	read_context::finish_type_decl_creation into this.  Adjust to the
43640	use of push_decl_to_current_scope and key_type_decl.
43641	(build_function_template_decl, build_template_type_parameter)
43642	(build_template_non_type_parameter)
43643	(build_template_template_parameter, build_template_parameter)
43644	(handle_function_template_decl): New functions.
43645	(handle_element): Call handle_function_template_decl.
43646	(build_function_decl): Take a bool parameter to update depth
43647	information in parsing context.  Move instantiation of
43648	function_decl before parsing its xml sub-nodes.  Update the depth
43649	info in the parsing context if necessary.  Push the newly
43650	intantiated decl to scope.  And then parse the sub nodes.  Do not
43651	forget to add the fn parameters and return type using
43652	function_decl::add_parameter and function_decl::set_return_type.
43653	(build_var_decl, build_type_decl, build_qualified_type_decl)
43654	(build_pointer_type_def, build_reference_type_def)
43655	(build_enum_type_decl, build_typedef_decl, handled_type_decl)
43656	(handle_qualified_type_decl, handle_pointer_type_def)
43657	(handle_reference_type_def, handle_enum_type_decl)
43658	(handle_typedef_decl, handle_var_decl, handle_function_decl)
43659	(handle_class_decl): Adjust.
43660	(build_class_decl): Take a bool parameter to update depth
43661	information in parsing context. Add comment.  Wait for the class
43662	members to be built, before keying (and thus hashing it) the
43663	class.
43664	(build_type): Fix logic, and adjust.
43665	* src/abg-writer.cc (write_context::type_has_existing_id)
43666	(write_context::get_id_for_fn_tmpl, write_template_type_parameter)
43667	(write_template_non_type_parameter)
43668	(write_template_template_parameter, write_template_parameter)
43669	(write_function_template_decl): New functions.
43670	(write_context::get_id_for_type): Simplify logic.
43671	(write_decl): Support writing function template.
43672	* tests/data/test-read-write/test11.xml: New test input.
43673	* tests/test-read-write.cc (InoutSpec in_out_specs[]):
43674	De-serialize the new test11.xml test, serialize it back and diff
43675	output and input.
43676	* tests/Makefile.am: Add test11.xml to the distribution.
43677
436782013-04-23  Dodji Seketeli <dodji@redhat.com>
43679
43680	Mangled name of a scope_decl is its name
43681	* src/abg-ir.h (scope_decl::scope_decl): The mangled name is the name.
43682
436832013-04-23  Dodji Seketeli <dodji@redhat.com>
43684
43685	Update scope when adding class members
43686	* src/abg-ir.h (class_decl::add_member_type)
43687	(class_decl::add_data_member, class_decl::add_member_function):
43688	Move the inline implementation of these functions ...
43689	* src:abg-ir.cc (class_decl::add_member_type)
43690	(class_decl::add_data_member, class_decl::add_member_function):
43691	... here.  Augment their implementation to properly update the
43692	scope of the member.
43693
436942013-04-23  Dodji Seketeli <dodji@redhat.com>
43695
43696	Rename class_decl::member_type::get_type into as_type
43697	* src/abg-ir.h (class_decl::member_type::get_type): Rename this
43698	into class_decl::member_type::as_type.
43699	* src/abg-writer.cc (write_class_decl): Adjust.
43700
437012013-04-23  Dodji Seketeli <dodji@redhat.com>
43702
43703	Avoid having multiple sub-objects of base classes
43704	* src/abg-ir.cc (decl_base::decl_base): Remove useless definition.
43705	(type_base::type_base): Remove default arguments from parameters.
43706	(scope_type_decl::scope_type_decl)
43707	(namespace_decl::namespace_decl): Call the constructors for the
43708	virtual bases explicitly.
43709	* src/abg-ir.h (class scope_decl): Perform virtual inheritance of
43710	decl_base.
43711	(global_scope::global_scope): Call virtual base decl_base's
43712	constructor directly.
43713	(class type_decl): Inherit from decl_base and type_base
43714	virtually.
43715	(class scope_type_decl): Inherit from type_base virtually.
43716	(class qualified_type_def, pointer_type_def, reference_type_def)
43717	(class enum_type_decl, typedef_decl): Inherit from type_base and
43718	decl_base virtually.
43719	(class var_decl, function_decl): Inherit from decl_base virtually.
43720	(class class_decl::member): Don't inherit from anything and adjust
43721	constructor's mem-initializer accordingly.
43722	(class class_decl::member_type): Inherit from decl_base virtually
43723	and adjust constructor's mem-initializer accordingly.
43724	(class_decl::{data_member::data_member,member_function::member_function)
43725	(class_decl::class_decl): Call virtual base's constructor
43726	explicitly.
43727
437282013-04-22  Dodji Seketeli <dodji@redhat.com>
43729
43730	Move inline hashing functions out of line
43731	* src/abg-ir.h (decl_base_hash::operator())
43732	(type_base_hash::operator(), type_decl_hash::operator())
43733	(scope_type_decl_hash::operator())
43734	(qualified_type_def_hash::operator())
43735	(pointer_type_def_hash::operator())
43736	(reference_type_def_hash::operator())
43737	(enum_type_decl_hash::operator(), typedef_decl_hash::operator())
43738	(var_decl_hash::operator(), function_decl_hash::operator())
43739	(class_decl::member_type_hash::operator())
43740	(class_decl::base_spec_hash::operator())
43741	(class_decl::data_member_hash::operator())
43742	(class_decl::member_function_hash::operator()): Move these inline
43743	definition ...
43744	* src/abg-ir.cc: ... here.
43745
437462013-04-22  Dodji Seketeli <dodji@redhat.com>
43747
43748	Various style nit fixes
43749	* src/abg-ir.cc: Move the emacs mode specifier for the file to the
43750	top of the file, otherwise, it's not effective.
43751	(struct location_manager::priv): Add end of struct comment.
43752	(class_decl_hash::operator()): Add fn comment.
43753	* src/abg-ir.h: Move the emacs mode specifier for the file to the
43754	top of the file, otherwise, it's not effective.
43755	(class scope_decl): Add end of class comment.
43756	* src/abg-reader.cc: Move the emacs mode specifier for the file to the
43757	top of the file, otherwise, it's not effective.
43758	(read_context::{get_type_decl,add_type_decl): Add comment.
43759	(handle_namespace_decl): Fix indent.
43760	* src/abg-writer.cc: Move the emacs mode specifier for the file to
43761	the top of the file, otherwise, it's not effective.
43762
437632013-04-12  Dodji Seketeli <dodji@redhat.com>
43764
43765	Remove .gitignore from VCS
43766	* .gitignore: Remove from revision control as different
43767	programmers might want to ignore different things.
43768
437692013-04-08  Benjamin Kosnik <bkoz@redhat.com>
43770
43771	Add license
43772	* src/abg-*: Add license.
43773	* tests/test-*: Same.
43774
437752013-04-11  Dodji Seketeli <dodji@redhat.com>
43776
43777	Initial Support for class declarations
43778	* src/abg-ir.h (scope_decl::scope_decl)
43779	(scope_type_decl::scope_type_decl): Don't set mangled name for
43780	scope_decl instances as it doesn't make sense.
43781	(var_decl::var_decl): Pass the type shared pointer by value.
43782	(struct var_decl_hash, function_decl::parameter::operator==)
43783	(struct function_decl::parameter_hash, function_decl::operator==)
43784	(struct function_decl_hash, class class_decl, struct
43785	class_decl_hash): New declarations.
43786	* src/abg-ir.cc (scope_type_decl::scope_type_decl): Don't set the
43787	mangled name.  It doesn't make sense for scope_decls.
43788	(dynamic_type_hash::operator): Fix comment.  Run the hashing for
43789	scope_type_decl instances *after* running it for class_decl
43790	instance, otherwise, the class_decl instances case will never get
43791	hit.
43792	(var_decl::var_decl): Pass the type shared pointer by value.
43793	(function_decl::operator==, class_decl::operator==)
43794	(class_decl_hash::operator()): New fns.
43795	* src/abg-libxml-utils.h (get_xml_node_depth): Declare new fn.
43796	(XML_READER_GET_ATTRIBUTE): Fix comment.
43797	(XML_NODE_GET_ATTRIBUTE): New getter macro.
43798	* src/abg-libxml-utils.cc (get_xml_node_depth): New definition.
43799	* src/abg-reader.cc (update_read_context)
43800	(update_depth_info_of_read_context, read_visibility, read_binding)
43801	(read_access, read_size_and_alignment, read_static)
43802	(read_var_offset_in_bits, read_cdtor_const, build_function_decl)
43803	( build_var_decl, build_type_decl, build_qualified_type_decl)
43804	(build_pointer_type_def, build_reference_type_def)
43805	(build_enum_type_decl, build_typedef_decl, build_class_decl)
43806	(build_type, handle_class_decl): New functions or overloads.
43807	(handle_element): Update to handle "class-decl" xml elements.
43808	* src/abg-writer.cc (write_size_and_alignment, write_access)
43809	(write_class, do_indent_to_level, get_indent_to_level): New fns.
43810	(write_decl): Update to serialize instances of class_decl.
43811	(write_type_decl, write_pointer_type_def)
43812	(write_reference_type_def): Use the new write_size_and_alignment instead of
43813	writing the attributes directly.
43814	* tests/data/test-read-write/test10.xml: New test file.
43815	* tests/Makefile.am: Add tests/data/test-read-write/test10.xml to
43816	the build system.
43817	* tests/test-read-write.cc (in_out_spec): De-serialize
43818	data/test-read-write/test10.xml, serialize it back into
43819	output/test-read-write/test10.xml, and compare the two output that
43820	should be identical.
43821
438222013-04-11  Dodji Seketeli <dodji@redhat.com>
43823
43824	Update enum decl representation as per the schema
43825	* src/abg-reader.cc (handle_enum_type_decl): The name of the
43826	element holding the underlying type is now "underlying-type", no
43827	more "base".
43828	* src/abg-writer.cc (write_enum_type_decl): Likewise.
43829	* tests/data/test-read-write/test6.xml: Likewise.
43830
438312013-04-10  Dodji Seketeli <dodji@redhat.com>
43832
43833	Add tests/data/test-read-write/test9.xml
43834	* tests/data/test-read-write/test9.xml: (Forgot to) Add this new
43835	test file.
43836
438372013-04-04  Dodji Seketeli <dodji@redhat.com>
43838
43839	Support function declarations
43840	* src/abg-ir.h (class function_decl): New declaration & inline
43841	definitions.
43842	* src/abg-ir.cc (function_decl::~function_decl): New definition.
43843	* src/abg-reader.cc (read_location): New overload to read location
43844	from an xmlNodePtr.
43845	(build_function_parameter, handle_function_decl):
43846	New definitions.
43847	(handle_element): Support "function-decl" elements.
43848	* src/abg-writer.cc (write_location): New overload to write a
43849	location directly, not from a decl.
43850	(write_function_decl): New definition.
43851	(write_binding): Support writing the binding attribute from a
43852	function_decl instance.
43853	(write_decl): support serializing function
43854	* tests/data/test-read-write/test9.xml: New test input file.
43855	* tests/Makefile.am: Add data/test-read-write/test9.xml to the
43856	build system.
43857	* tests/test-read-write.cc: De-serialize
43858	data/test-read-write/test9.xml, serialize it back and diff the
43859	output from the input.
43860
438612013-04-03  Dodji Seketeli <dodji@redhat.com>
43862
43863	Update in-vcs configure and docs/Makefile.in to recent configure
43864	* configure: Updated as re-generated by autoconf 2.69.
43865	* doc/Makefile.in: Updated as re-generated by automake 1.12.2.
43866
438672013-04-02  Benjamin Kosnik <bkoz@redhat.com>
43868
43869	Add doc dir. Add Doxgen api generation rules.
43870	* doc: Add.
43871	* doc/Makefile.am (html, install-html): Add.
43872	* doc/Makefile.in: Add.
43873	* doc/api/libabigail.doxy: Add doxygen config.
43874	* src/abg-*: Add @file markup.
43875
438762013-04-03  Dodji Seketeli <dodji@redhat.com>
43877
43878	Introduce/use translation_unit & global_scope types
43879	* abg-corpus.h (abi_corpus::{get_decls, get_loc_mgr}): Remove.
43880	(abi_corpus::add): New function to add a translation unit.
43881	(abi_corpus::get_translation_units): New declaration.
43882	* abg-corpus.cc (abi_corpus::*): Remove all the definitions of
43883	abi_corpus for now, as the abi_corpus type is not used anymore --
43884	for now at least.
43885	* src/abg-ir.h (add_decl_to_scope, get_global_scope)
43886	(get_translation_unit, is_global_scope, is_decl_at_global_scope)
43887	(class translation_unit, class global_scope): New declarations
43888	* src/abg-ir.cc (translation_unit::translation_unit)
43889	(translation_unit::get_global_scope)
43890	(translation_unit::get_loc_mgr, translation_unit::get_loc_mgr)
43891	(translation_unit::is_empty, get_global_scope)
43892	(get_translation_unit, is_global_scope, is_global_scope)
43893	(is_decl_at_global_scope, global_scope::~global_scope): New
43894	definitions.
43895	(scope_decl::scope_decl, scope_decl::scope_decl)
43896	(scope_decl::add_member_decl, scope_decl::get_member_decls): Move
43897	to abg-ir.h, inline.
43898	* src/abg-reader.h (read_file): Don't use abi_corpus in the api.
43899	Rather, use translation_unit.
43900	* src/abg-reader.cc (read_context::get_cur_scope): Now that we
43901	have a specific instance of global_scope to represent global
43902	scope, don't play games with empty scopes to detect a global
43903	scope.
43904	(read_context::get_translation_unit): New definition.
43905	(read_context::finish_decl_creation, finish_type_decl_creation):
43906	(read_input, read_file, read_location, handle_element)
43907	(handle_type_decl)
43908	(handle_namespace_decl, handle_qualified_type_decl)
43909	(handle_pointer_type_def, handle_reference_type_def)
43910	(handle_enum_type_decl, handle_typedef_decl, handle_var_decl):
43911	Don't use abi_corpus anymore.  Rather, the translation unit a decl
43912	belongs to is accessible from the decl itself.
43913	* src/abg-writer.h (write_to_ostream): Use translation_unit in
43914	this API, rather than abi_corpus.
43915	* src/abg-writer.cc (write_translation_unit): Rename write_corpus
43916	into this.  And stop using abi_corpus here.
43917	(write_to_ostream, write_corpus, write_location, write_decl)
43918	(write_type_decl, write_namespace_decl, write_qualified_type_def)
43919	(write_pointer_type_def, write_reference_type_def)
43920	(write_enum_type_decl, write_typedef_decl, write_var_decl): Stop
43921	using abi_corpus.  Use the translation_unit that is accessible
43922	from the decl being serialized, if need be.
43923	* test-read-write.cc (main):  De-serialize the input into an
43924	instance of translation_unit, not an abi_corpus anymore, and
43925	serialize that translation_unit.
43926
439272013-04-02  Dodji Seketeli <dodji@redhat.com>
43928
43929	Support var decl & mangled_name attributes
43930	* src/abg-ir.h (decl_base::binding, decl_base::get_mangled_name)
43931	(decl_base::set_mangled_name, decl_base::m_mangled_name): New
43932	declarations.
43933	(scope_decl::scope_decl: type_decl::type_decl)
43934	(scope_type_decl::scope_type_decl, typedef_decl::typedef_decl):
43935	Initialize mangled_name.
43936	(namespace_decl::namespace_decl): Initialize visibility.
43937	(class var_decl): New declaration.
43938	* src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl)
43939	(type_decl::type_decl, scope_type_decl::scope_type_decl):
43940	Initialize mangled name.
43941	(namespace_decl::namespace_decl): Initialize visibility.
43942	(qualified_type_def::qualified_type_def)
43943	(pointer_type_def::pointer_type_def)
43944	(reference_type_def::reference_type_def): By default, set the
43945	visibility to the same as for the underlying type.
43946	(enum_type_decl::enum_type_decl, typedef_decl::typedef_decl):
43947	Initialize mangled name.
43948	(var_decl::var_decl, var_decl::operator==, var_decl::~var_decl):
43949	New definitions.
43950	* src/abg-reader.cc (read_visibility, read_binding, handle_var_decl): New
43951	definitions.
43952	(read_file): Handle var-decl elements.
43953	* src/abg-writer.cc (write_location): Rename write_decl_location
43954	into this.
43955	(write_var_decl, write_visibility, write_binding): New definitions.
43956	(write_decl, write_type_decl, write_qualified_type_def)
43957	(write_pointer_type_def, write_reference_type_def)
43958	(write_enum_type_decl, write_typedef_decl): Adjust to use
43959	write_location.
43960	* tests/data/test-read-write/test8.xml: New test input.
43961	* tests/test-read-write.cc: De-serialize the above and serialize
43962	it back and ensure both are equal.
43963	* tests/Makefile.am: add tests/data/test-read-write/test8.xml to
43964	the distribution.
43965
439662013-04-02  Dodji Seketeli <dodji@redhat.com>
43967
43968	Don't forget to init context & visibility in decl_base
43969	* src/abg-ir.cc (decl_base::decl_base): Initialize context and
43970	visibility on all the overloads of the constructor.
43971
439722013-03-31  Dodji Seketeli <dodji@redhat.com>
43973
43974	Fix some style
43975	* src/abg-ir.h (decl_base::get_scope): Really re-style.
43976
439772013-03-31  Dodji Seketeli <dodji@redhat.com>
43978
43979	Fix some style
43980	* src/abg-ir.h (decl_base::{get_location, set_location, get_name,
43981	set_name}): Re-style.
43982
439832013-03-31  Dodji Seketeli <dodji@redhat.com>
43984
43985	Basic support for type/decl visibility
43986	* src/abg-ir.h (enum decl_base::visibility)
43987	(decl_base::get_visibility, decl_base::set_visibility)
43988	(decl_base::m_visibility): New.
43989	(decl_base::decl_base, scope_decl::scope_decl)
43990	(type_decl::type_decl, enum_type_decl::enum_type_decl)
43991	(typedef_decl::typedef_decl): Pass visibility.
43992	* src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl)
43993	(type_decl::type_decl, enum_type_decl::enum_type_decl)
43994	(typedef_decl::typedef_decl): Pass visibility.
43995	(qualified_type_def::qualified_type_def)
43996	(pointer_type_def::pointer_type_def)
43997	(reference_type_def::reference_type_def): Initialize visibility.
43998
439992013-03-31  Dodji Seketeli <dodji@redhat.com>
44000
44001	A type/decl shouldn't hold a reference on its scope
44002	* src/abg-ir.h (decl_base::m_context): Make this a naked pointer.
44003	(decl_base::set_scope, add_decl_to_scope): Pass the
44004	scope as a naked pointer.
44005	* src/abg-ir.cc (decl_base::decl_base): Initialize the context to
44006	0.
44007	(decl_base::set_scope, add_decl_to_scope): Pass the scope as a
44008	naked pointer.
44009	* src/abg-reader.cc (read_context::get_cur_scope): Return a naked
44010	pointer.
44011	(handle_namespace_decl): Adjust accordingly.
44012
440132013-03-30  Dodji Seketeli <dodji@redhat.com>
44014
44015	Support typedef declarations
44016	* src/abg-ir.cc (dynamic_type_hash::operator()): Handle hashing of
44017	a pointer to an instance of typedef_decl.
44018	(typedef_decl::typedef_decl, typedef_decl::operator==)
44019	(typedef_decl::operator==, typedef_decl::get_underlying_type)
44020	(typedef_decl::~typedef_decl): New definitions.
44021	* src/abg-ir.h (class typedef_decl, struct typedef_decl_hash): New
44022	declarations.
44023	* src/abg-reader.cc (handle_typedef_decl): New definition.
44024	(handle_element): Handle de-serialization of typedef-decl element.
44025	* src/abg-writer.cc (write_typedef_decl): New definition.
44026	(write_decl): Handle serialization of an instance of typedef_decl.
44027	* tests/data/test-read-write/test7.xml: New test.
44028	* tests/Makefile.am: Add it to the distribution.
44029	* tests/test-read-write.cc: De-serialize the content of the new
44030	test, serialize it back and diff both.
44031
440322013-03-30  Dodji Seketeli <dodji@redhat.com>
44033
44034	Remove useless static_cast from hashing code
44035	* src/abg-ir.h (scope_type_decl_hash::operator())
44036	(qualified_type_def_hash::operator())
44037	(pointer_type_def_hash::operator())
44038	(reference_type_def_hash::operator()): Remove useless static_cast.
44039
440402013-03-30  Dodji Seketeli <dodji@redhat.com>
44041
44042	Simplify equality operators
44043	* src/abg-ir.cc (qualified_type_def::operator==)
44044	(pointer_type_def::operator==, reference_type_def::operator==)
44045	(enum_type_decl::operator==): Simplify the code by safely assuming
44046	the underlying type is non-null.
44047
440482013-03-30  Dodji Seketeli <dodji@redhat.com>
44049
44050	Support enum type declarations
44051	* src/abg-ir.h (class enum_type_decl, struct enum_type_decl_hash):
44052	New declarations.
44053	* src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing
44054	support for enum_type_decl.
44055	(enum_type_decl::enum_type_decl)
44056	(enum_type_decl::get_underlying_type)
44057	(enum_type_decl::get_enumerators, enum_type_decl::~enum_type_decl)
44058	(enum_type_decl::operator==): New definitions.
44059	* src/abg-reader.cc (handle_enum_type_decl): New definition.
44060	(handle_element): Handle "enum-decl" element.
44061	* src/abg-writer.cc (write_enum_type_decl): New.
44062	(write_decl): Add support to serialize enum_type_decl.
44063	* tests/test-read-write.cc: De-serialize and serialize
44064	data/test-read-write/test6.xml back.
44065	* tests/data/test-read-write/test6.xml: New test input.
44066	* tests/Makefile.am: Add it to the distribution.
44067
440682013-03-30  Dodji Seketeli <dodji@redhat.com>
44069
44070	Fix reference-type-def serialization
44071	* tests/test-read-write.cc: Really de-serialize and then serialize
44072	back data/test-read-write/test5.xml, not test4.xml.  Sigh.
44073	* src/abg-writer.cc (write_reference_type_def): As a result of
44074	really trying to serialize reference type definitions fix the
44075	serialization code here.
44076
440772013-03-29  Dodji Seketeli <dodji@redhat.com>
44078
44079	Support reference types
44080	* src/abg-ir.h (class reference_type_def, struct pointer_type_def)
44081	(struct reference_type_def): New declaration.
44082	(type_base_hash::operator(), type_decl_hash::operator())
44083	(scope_type_decl_hash::operator())
44084	(qualified_type_def_hash::operator()): Include the typeid name in
44085	the hash.
44086	* src/abg-ir.cc (reference_type_def::reference_type_def)
44087	(reference_type_def::operator==)
44088	(reference_type_def::get_pointed_to_type)
44089	(reference_type_def::is_lvalue)
44090	(reference_type_def::~reference_type_def): New definitions.
44091	(dynamic_type_hash::operator): Hash pointer_type_def and
44092	reference_type_def instances.
44093	* src/abg-reader.cc (read_context::finish_decl_creation)
44094	(read_context::finish_type_decl_creation)
44095	(handle_reference_type_def): New definitions.
44096	(read_file): Handle "reference-type-def" elements.
44097	(handle_type_decl, handle_namespace_decl)
44098	(handle_qualified_type_decl, handle_pointer_type_def): Use the new
44099	read_context::finish_type_decl_creation or
44100	read_context::finish_decl_creation.
44101	* src/abg-writer.cc (write_reference_type_def): New definition.
44102	(write_decl): Supporting writing a pointer to an instance of
44103	reference_type_def.
44104	* tests/data/test-read-write/test5.xml: New test file.
44105	* tests/test-read-write.cc: (De)Serialize it.
44106	* tests/Makefile.am: Add it to the build system.
44107
441082013-03-28  Dodji Seketeli <dodji@redhat.com>
44109
44110	Support pointer types & Fix IR types equality
44111	* src/abg-ir.h (location::{operator==, operator<})
44112	(decl_base::operator==, scope_decl::operator==)
44113	(type_base::operator==, struct type_shared_ptr_equal)
44114	(type_decl::operator==, scope_type::operator==)
44115	(qualified_type_def::operator==, class pointer_type_def): New
44116	declarations..
44117	* src/abg-ir.cc (decl_base::operator==, scope_decl::operator==)
44118	(type_base::operator==, type_decl::operator==)
44119	(scope_type_decl::operator==, namespace_decl::operator==)
44120	(qualified_type_def::operator==)
44121	(pointer_type_def::pointer_type_def, pointer_type_def::operator==)
44122	(pointer_type_def::get_pointed_to_type)
44123	(pointer_type_def::~pointer_type_def): New definitions.
44124	* src/abg-reader.cc (handle_pointer_type_def): New definition.
44125	(read_input): Handle pointer-type-def
44126	elements.
44127	* src/abg-writer.cc (type_shared_ptr_map):  Make this map use the
44128	use type_shared_ptr_equal predicate.
44129	(write_pointer_type_def): New definition.
44130	(write_decl): Improve logic.  Support serializing a pointer to
44131	pointer_type_def.
44132	* tests/data/test-read-write/test4.xml: New test input file.
44133	* tests/Makefile.am: Add tests/data/test-read-write/test4.xml to
44134	the build system.
44135	* tests/test-read-write.cc: (De)serialize the new test file.
44136
441372013-03-27  Dodji Seketeli <dodji@seketeli.org>
44138
44139	Support qualified types & Misc ancillary fixes
44140	* src/abg-ir.h (struct type_base_hash, struct dynamic_type_hash)
44141	(struct type_shared_ptr_hash, struct scope_type_decl_hash, class
44142	qualified_type_def, struct qualified_type_def_hash): New.
44143	(decl_base_hash::operator()): Constify. Don't crash if the scope
44144	of the decl we are hashing is null.
44145	(class type_decl): Add comment at the end.
44146	(type_decl_hash::operator()): Constify.  Reuse the new
44147	type_base_hash hasher.
44148	(class namespace_decl): Add comment.
44149	* src/abg-ir.cc (qualified_type_def::qualified_type_def)
44150	(qualified_type_def::~qualified_type_def)
44151	(qualified_type_def::get_cv_quals)
44152	(qualified_type_def::set_cv_quals)
44153	(qualified_type_def::get_underlying_type)
44154	(dynamic_type_hash::operator()): New function definitions.
44155	* src/abg-reader.cc (handle_qualified_type_decl): New.
44156	(read_file): Handle elements named "qualified-type-def".
44157	(read::context::add_type_decl): Assert that
44158	the type being associated to the unique ID is non-null.
44159	(handle_type_decl): Fix this in the process; don't crash if some
44160	attributes are not present.  Associate the unique id present in
44161	the xml document with the type we just parsed.
44162	(handle_namespace_decl): Add some comments.  Don't crash if the
44163	name attribute is not present.
44164	* src/abg-writer.cc (write_context::get_id_for_type)
44165	(write_context::m_type_id_map, write_decl_location)
44166	(write_qualified_type_def): New.
44167	(write_decl): Handle instances of qualified_type_def.
44168	(write_type_decl): Use the new write_decl_location and
44169	write_context::get_id_for_type.
44170	* tests/data/test-read-write/test0.xml: Update id format since we
44171	are now using the new write_context::get_id_for_type to generate
44172	it.
44173	* tests/data/test-read-write/test1.xml: Likewise.
44174	* tests/data/test-read-write/test2.xml: Likewise.
44175	* tests/data/test-read-write/test3.xml: New test.
44176	* tests/test-read-write.cc: Test De-serializing
44177	tests/data/test-read-write/test3.xml and serializing it back.
44178	Also don't bail out if we fail on one input.
44179	* tests/Makefile.am: Add tests/data/test-read-write/test3.xml to the
44180	distribution.
44181
441822013-03-27  Benjamin Kosnik <bkoz@redhat.com>
44183
44184	Various autotool adjustments
44185	* configure: Add.
44186	* configure.ac (AM_INIT_AUTOMAKE): Use gcc versions.
44187	(PKG_CHECK_MODULES): Re-use libjava/classpath solution, naming.
44188	* m4/pkg.m4: Add, take from classpath.
44189	* src/Makefile.am: Adjust names.
44190
441912013-03-26  Dodji Seketeli <dodji@seketeli.org>
44192
44193	Remove the 'm_kind' member from the IR
44194	* src/abg-ir.{h,cc}: Remove use of the m_kind field.  We are using
44195	full blown rtti so this uselessly just clutter the code.
44196
441972013-03-26  Dodji Seketeli <dodji@seketeli.org>
44198
44199	Fix parallel build
44200	* tests/Makefile.am: Remove useless absolute reference to the
44201	current directory.
44202
442032013-03-26  Dodji Seketeli <dodji@seketeli.org>
44204
44205	Fix depth handling during the parsing
44206	* src/abg-reader.cc (read_context::get_cur_scope): Remove useless
44207	const overload.  Don't make this rely on m_cur_scope.  Rather, use
44208	the path to the current decl (from the root element) to compute
44209	the cur scope.
44210	(read_context::m_cur_scope, read_context::set_cur_scope): Remove
44211	these.
44212	(update_read_context): Re-think logic.
44213	* tests/data/test-read-write/test2.xml: Add new test input.
44214	* tests/Makefile.am: Add data/test-read-write/test2.xml to the
44215	distribution.
44216	* tests/test-read-write.cc: Add data/test-read-write/test2.xml to
44217	the harness.
44218
442192013-03-25  Dodji Seketeli <dodji@seketeli.org>
44220
44221	Debug read-write of a type-decl in a namespace-decl
44222	* abg-ir.{h,cc} (decl_base::decl_base, scope_decl::scope_decl)
44223	(type_decl::type_decl, namespace_decl::namespace_decl): Do not
44224	append a decl to its context from within its constructor.  It's
44225	better doing that in a function that takes shared_ptrs to decl and
44226	context.  That way we avoid memory management havoc.
44227	(decl_base::set_scope): New private function.
44228	(scope_decl::add_member_decl): Make this private.
44229	(add_decl_to_scope): New function, friend of decl_base and
44230	scope_decl.
44231	* abg-reader.cc (read_context::get_cur_scope): Add a non-const
44232	overload.
44233	(handle_type_decl, handle_namespace_decl): Use add_decl_to_scope.
44234	Adjust to new type_decl and namespace_decl constructor signature.
44235	* src/abg-writer.cc (write_type): Emit 'id', not 'xml:id'.
44236	(write_namespace_decl): Emit "namespace-decl", not
44237	"namespace-decl-name", as the name of namespace element.
44238	* tests/Makefile.am (test0.xml): Rename input0.xml into this.
44239	(test1.xml): New test input.
44240	* tests/data/test-read-write/test0.xml: Update to use 'id' as id
44241	attribute, rather than xml:id.
44242	* tests/data/test-read-write/test1.xml: New test.
44243	* test-read-write.cc (struct InOutSpec): New
44244	(main): Reorganize to give a list of input files to read and to
44245	write to an output file, have the test read the input files, write
44246	them, and diff the two.
44247
442482013-03-22  Dodji Seketeli <dodji@seketeli.org>
44249
44250	Update tests/data/test-read-write/input0.xml
44251	* tests/data/test-read-write/input0.xml: Make this identical to
44252	how it would look like when serialized.
44253
442542013-03-22  Dodji Seketeli <dodji@seketeli.org>
44255
44256	Debug type-decl serialization
44257	* src/abg-writer.cc (do_indent): New function.
44258	(write_corpus&): Use do_indent.  Don't forget to close the
44259	abi-instr tag.
44260	(write_type_decl): Use do_indent.  Handle null decls pointers.
44261	Emit the id at the end of the element.
44262	(write_namespace_decl): Use do_indent.  Handle null decls
44263	pointers.
44264	* tests/test-utils.{h,cc} (get_src_dir,get_build_dir): Constify
44265	the returned reference to string.
44266	(is_dir, ensure_dir_path_created, ensure_parent_dir_created): New
44267	function definitions.
44268	* tests/test-read-write.cc (main): Augment the test to serialize
44269	the corpus too.
44270
442712013-03-21  Dodji Seketeli <dodji@seketeli.org>
44272
44273	Debugged type-decl de-serialization
44274	* src/abg-ir.cc (namespace_decl::~namespace_decl): Add this
44275	missing virtual constructor definition.
44276	* src/abg-reader.cc (read_context::{get_cur_decl,pop_decl}):
44277	Return a null pointer when the decls stack is empty.
44278	(update_read_context): Don't try to de-reference a NULL cur_decl.
44279	(read_input): Don't try to poke at file validity here.  What was I
44280	thinking.  Really test for advance_cursor to return 1, expressing
44281	success.
44282	* src/abg-reader.h (read_file):  Fix style.
44283	* Makefile.am: Add tests sub-directory.
44284	* configure.ac: Build with debugging-friendly options if the
44285	ABIGAIL_DEBUG env variable is set.  Generate tests/Makefile.
44286	* tests/Makefile.am: New file.
44287	* tests/test-read-write.cc: Likewise.
44288	* tests/test-utils.{h,cc}: Likewise.
44289	* tests/data/test-read-write/input0.xml: Likewise.
44290
442912013-03-21  Dodji Seketeli <dodji@seketeli.org>
44292
44293	Initial implementation of serialization of basic types and namespaces.
44294	* src/Makefile.am: Add abg-writer.{h,cc} and abg-config.{h,cc}.
44295	* src/abg-config.{h,cc}: New files.
44296	* src/abg-corpus.h (abi_corpus::decls_type): New typedef.
44297	(abi_corpus::{add,get_decls,get_loc_mgr}): Fix style.
44298	(abi_corpus::is_empty): Declare new function.
44299	* src/abg-corpus.cc (abi_corpus::add): really add the declaration
44300	to the corpus.
44301	(abi_corpus::is_empty): Define new function.
44302	* src/abg-ir.{h,cc} (location_manager::expand_location): Consti-fy
44303	this function.
44304	* src/abg-reader.cc (read_file): Add a corpus parameter.
44305	* src/abg-serialize.cc: Delete this file.
44306	* src/abg-writer.h (write_to_ostream): Rename write into this.
44307	Make it take a corpus and an ostream as parameters.
44308	* abg-writer.cc: New file.
44309
443102013-03-08  Dodji Seketeli <dodji@seketeli.org>
44311
44312	Parse type-decl and namespace-decl elements
44313	* configure.ac: Add libxml2 dependencies.
44314	* src/abg-corpus.{h,cc}: New files.
44315	* src/abg-hash.{h,cc}: Likewise.
44316	* src/abg-libxml-utils.{h,cc}: Likewise.
44317	* src/abg-reader.{h,cc}: Likewise.
44318	* src/abg-serialize.{h,cc}: Likewise.
44319	* src/abg-writer.h: Likewise.
44320	* src/Makefile.am: Build the new files above.
44321	* src/abg-ir.h (class location): Add public accessors for the value, and
44322	a truth operator.  Make the methods be inline.
44323	(class decl_base): Renamed decl into this.  Renamed what_decl_kind
44324	into what_kind. Renamed get_context into get_scope.  Add virtual
44325	destructor, accessors for location and name.
44326	(class {scope_decl, type_base, type_decl} ): Add virtual dtor.
44327	Re-style.
44328	(struct {decl_base_hash, type_decl_hash}): New hashing functors.
44329	(class {scope_type_decl, namespace_decl}): Add virtual dtor.
44330	* src/abg-ir.cc (location::*): Remove location definitions.  There
44331	are now inline in the header.
44332	(class decl_base): Renamed decl into this.  Remove most of the
44333	definitions from here as their are now inline in the header.
44334	(scope_decl::~scope_decl, type_base::~type_base)
44335	(type_decl::~type_decl, scope_type_decl::~scope_type_decl): New
44336	definitions.
44337
443382013-03-04  Dodji Seketeli <dodji@seketeli.org>
44339
44340	Updated hierarchy up to namespace_decl
44341	* src/abg-ir.h (location):  Make the default ctor public.
44342	(class decl): Declare data member and proper constructors.  Make the
44343	context be a shared_ptr.  Add a kind data member to avoid RTTI for
44344	now.
44345	(class scope_decl): Added protected constructor to handle the kind data
44346	member.
44347	(class type_base): Add data members proper and clean the iface up.
44348	(class type_decl, scope_type_decl, namespace_decl): Iron out
44349	constructors.
44350	* src/abg-ir.cc (class location): Fix style.
44351	(class decl, scope_decl, type_base, type_decl, scope_type_decl)
44352	(namespace_decl): Define these types.
44353
443542013-03-01  Dodji Seketeli <dodji@seketeli.org>
44355
44356	Add missing autoconfiscation files into version control
44357	* config.guess: Added to VCS.
44358	* config.sub: Likewise.
44359	* depcomp: Likewise.
44360	* install-sh: Likewise.
44361	* ltmain.sh: Likewise.
44362	* missing: Likewise
44363
443642013-03-01  Dodji Seketeli <dodji@seketeli.org>
44365
44366	Upload m4 file
44367	* m4/: Import this directory into version control.
44368
443692013-03-01  Dodji Seketeli <dodji@seketeli.org>
44370
44371	Create and expand locations
44372	* src/abg-ir.h (class {location, location_manager, decl,
44373	scoped_decl, type_base, type_decl, scope_type_decl): Declare new
44374	types.
44375	* src/abg-ir.cc (class {location, location_manager}): Define new types.
44376
443772013-03-01  Dodji Seketeli <dodji@seketeli.org>
44378
44379	Adjust src/Makefile.am after some file rename
44380	* src/Makefile.am: Update build system for renaming files from
44381	abgl-* into abg-*.
44382
443832013-03-01  Dodji Seketeli <dodji@seketeli.org>
44384
44385	Update the README file
44386	* README: Update.
44387
443882013-02-28  Dodji Seketeli <dodji@seketeli.org>
44389
44390	Initial AUTHORS and README
44391	* AUTHORS:
44392	* README:
44393
443942013-02-28  Dodji Seketeli <dodji@seketeli.org>
44395
44396	Leave license stuff for later
44397	* COPYING:
44398
443992013-02-28  Dodji Seketeli <dodji@seketeli.org>
44400
44401	Initial import Abigail
44402	* AUTHORS:
44403	* COPYING:
44404	* ChangeLog:
44405	* INSTALL:
44406	* Makefile.am:
44407	* NEWS:
44408	* README:
44409	* config.h.in:
44410	* configure.ac:
44411	* src/Makefile.am:
44412	* src/abg-ir.cc:
44413	* src/abg-ir.h:
44414
44415