summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2017-11-06 00:35:24 +0100
committerDodji Seketeli <dodji@redhat.com>2017-11-08 15:37:19 +0100
commit1c7b982f6c0be66b4d5c38e205a2fea953c5bfa7 (patch)
treea1ab239bf073b6bd54a953b923a4b9672af8bd34 /ChangeLog
parentUpdate NEWS file for 1.0 changes (diff)
downloadlibabigail-1c7b982f6c0be66b4d5c38e205a2fea953c5bfa7.tar.gz
libabigail-1c7b982f6c0be66b4d5c38e205a2fea953c5bfa7.tar.bz2
libabigail-1c7b982f6c0be66b4d5c38e205a2fea953c5bfa7.tar.xz
Automatically Update ChangeLog for 1.0
* ChangeLog: Update this file by running "make update-changelog". Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog4208
1 files changed, 4200 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index e0ca790a..83427c9d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4203 @@
12017-11-06 Dodji Seketeli <dodji@redhat.com>
2
3 Automatically Update ChangeLog for 1.0
4 * ChangeLog: Update this file by running "make update-changelog".
5
62017-11-06 Dodji Seketeli <dodji@redhat.com>
7
8 Update NEWS file for 1.0 changes
9 * NEWS: Update for 1.0 changes
10
112017-11-06 Dodji Seketeli <dodji@redhat.com>
12
13 Bump version number to 1.0
14 * configure.ac: Bump version number to 1.0
15
162017-11-08 Dodji Seketeli <dodji@redhat.com>
17
18 Don't make system headers depend on config.h
19 * tools/abipkgdiff.cc: Include config.h after system headers and
20 before libabigail's headers.
21
222017-11-02 Dodji Seketeli <dodji@redhat.com>
23
24 Wire the --no-show-locs option to abidw
25 * doc/manuals/abidw.rst: Update the documentation.
26 * tests/test-annotate.cc: Now that --no-show-locs has an effect on
27 the ABIXML output, let's not use it here, because it changes the
28 output and we don't want that.
29 * tools/abidw.cc (display_usage): Fix a typo in the help string.
30 (load_corpus_and_write_abixml): Set the "show-locs" option to the
31 write_context object that we use.
32
332017-11-02 Dodji Seketeli <dodji@redhat.com>
34
35 Allow setting options to instances of xml_writer::write_context
36 * include/abg-writer.h (create_write_context, set_show_locs)
37 (set_annotate): Declare new functions.
38 (write_corpus, write_corpus_group): Remove the output stream and
39 the annotate parameters as these can be retrieved from the
40 context.
41 * src/abg-writer.cc (write_context::m_show_locs): New data member.
42 (write_context::write_context): Initialize it.
43 (write_context::{get_show_locs, set_show_locs}): Add new member
44 functions.
45 (write_location): Take a write_context, rather than an output
46 stream. From the context, we detect if the user did set the "show
47 loc" option and act accordingly. Write the second overload in
48 terms of the first one.
49 (create_write_context, set_show_locs, set_annotate): Define new
50 functions.
51 (write_type_decl, write_qualified_type_def)
52 (write_pointer_type_def, write_reference_type_def)
53 (write_array_type_def, write_enum_type_decl, write_typedef_decl)
54 (write_var_decl, write_function_decl)
55 (write_class_decl_opening_tag, write_union_decl_opening_tag)
56 (write_type_tparameter, write_non_type_tparameter)
57 (write_function_tdecl, write_class_tdecl): Adjust the invocation
58 of write_location.
59 (write_corpus, write_corpus_group): Remove the output stream and
60 the annotate parameters as these can be retrieved from the
61 context. Adjust.
62 * tools/abidw.c: (load_corpus_and_write_abixml): Create a
63 write_context object, set the 'annotate' option to it and use that
64 object to actually write out the corpus.
65
662017-11-02 Dodji Seketeli <dodji@redhat.com>
67
68 Remove useless vertical space from src/abg-writer.cc
69 * src/abg-writer.cc (class write_context): Remove useless vertical
70 space near the end of the class definition.
71
722017-10-16 Dodji Seketeli <dodji@redhat.com>
73
74 Add a --suppressions option to fedabipkgdiff
75 * tools/fedabipkgdiff (abipkgdiff): If a suppression file was
76 provided, pass it to the underlying abipkgdiff tool.
77 (build_commandline_args_parser): Parse the new --suppressions
78 option.
79 * docs/manuals/fedabipkgdiff.rst: Add documentation for the new
80 --suppressions option.
81
822017-10-16 Dodji Seketeli <dodji@redhat.com>
83
84 Handle exceptions when global_config is not yet set in fedabipkgdiff
85 * tools/fedabipkgdiff: When handling an exception, if the
86 global_config object is not yet set then just let the exception
87 through.
88
892017-10-11 Dodji Seketeli <dodji@redhat.com>
90
91 Fix a indentation warning from GCC 7.2.1
92 * tools/abipkgdiff.cc (compare): In the overload of elf_file, fix
93 a mis-indentation pointed out by a GCC 7.2.1 warning.
94
952017-10-11 Dodji Seketeli <dodji@redhat.com>
96
97 Cleanup a switch-case logic to avoid a GCC 7.2.1 warning
98 * src/abg-dwarf-reader.cc (die_qualified_type_name): Cleanup a
99 switch case to make the form support more what we meant, and shut
100 down a GCC 7.2.1 warning.
101
1022017-10-09 Mark Wielaard <mark@klomp.org>
103
104 Fix -Wmisleading-indentation warning in abg-leaf-reporter.cc.
105 * src/abg-leaf-reporter.cc (leaf_reporter::report): Fix misleading
106 indentation.
107
1082017-10-06 Dodji Seketeli <dodji@redhat.com>
109
110 Add --impacted-changes option to kmidiff
111 * doc/manuals/kmidiff.rst: Document the new --impacted-changes
112 option.
113 * tools/kmidif.cc (options::show_impacted_interfaces): Add new
114 data member.
115 (options::options): Initialize the new data member to false.
116 (display_usage): Add a description string for the new
117 --impacted-changes option.
118 (parse_command_line): Parse the new --impacted-changes option.
119 (set_diff_context): Update the 'show-impacted-interface' property
120 accordingly.
121
1222017-10-04 Dodji Seketeli <dodji@redhat.com>
123
124 Add --full-impact option to kmidiff
125 * doc/manuals/kmidiff.rst: Add documentation for the new
126 --full-impact|-f option.
127 * tools/kmidiff.cc (options::leaf_changes_only): Add new data
128 member.
129 (option::option): Initialize the new data member.
130 (display_usage): Add a documentation string for the new
131 --full-impact|-f option.
132 (parse_command_line): Parse the new --full-impact|-f option.
133 (set_diff_context): Set the diff context appropriately.
134
1352017-09-18 Dodji Seketeli <dodji@redhat.com>
136
137 Add a --leaf-changes-only option to abipkgdiff
138 * doc/manuals/abipkgdiff.rst: Add documentation for the new
139 --leaf-change-only, --impacted-interfaces and --full-impact
140 options.
141 * tools/abipkgdiff.cc (options::{leaf_changes_only,
142 show_impacted_interfaces, show_full_impact_report): Add new data
143 members.
144 (options::options): Initialize them.
145 (display_usage): Add help strings for the new --leaf-change-only,
146 --impacted-interfaces and --full-impact|-f options.
147 (set_diff_context_from_opts): Set the diff context for the
148 'leaf-changes-only' and 'show-impacted-interfaces' flags.
149 (parse_command_line): Parse the --leaf-change-only,
150 --impacted-interfaces and --full-impact options. Handle the case
151 where the --linux-kernel-abi-whitelist|-w option is given a
152 whitelist *package*.
153 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
154 New test output reference.
155 * tests/test-diff-pkg.cc (in_out_spec): Compare
156 data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64.rpm and
157 data/test-diff-pkg/spice-server-0.12.8-1.el7.x86_64.rpm with the
158 new --leaf-changes-only and --impacted-interfaces options, using
159 the new output reference above.
160 * tests/data/Makefile.am: Add the new test material to source
161 distribution.
162
1632017-08-02 Dodji Seketeli <dodji@redhat.com>
164
165 Initial implementation of a --leaf-changes-only option to abidiff
166 * doc/manuals/abidiff.rst: Add documentation the new
167 --leaf-changes-only and --impacted-interfaces options.
168 * src/abg-leaf-reporter.cc: New file.
169 * src/Makefile.am: Add the new src/abg-leaf-reporter.cc file to
170 source distribution.
171 * include/abg-fwd.h (get_var_size_in_bits)
172 (function_decl_is_less_than): Declare new functions.
173 (get_name): Add new overload for type_or_decl_base*.
174 * include/abg-ir.h (struct type_or_decl_hash, type_or_decl_equal)
175 (type_or_decl_base_comp): Define new types.
176 (artifact_sptr_set_type, artifact_ptr_set_type): Define new
177 typedefs.
178 * include/abg-comp-filter.h: Update copyright year.
179 (has_basic_type_name_change): Add new function declaration.
180 * src/abg-comp-filter.cc (decl_name_changed): Take a
181 type_or_decl_base rather than just a decl. Add an overload for
182 diff*.
183 (has_basic_type_name_change): Define new function.
184 * include/abg-comparison.h: Update copyright year.
185 (string_diff_ptr_map): Define this new typedef.
186 (class diff_maps): Define this new class.
187 (diff_context::{set_corpora}): Remove this member function.
188 (diff_context::{set_corpus_diff, get_corpus_diff,
189 show_leaf_changes_only, show_impacted_interfaces,
190 forbid_visiting_a_node_twice_per_interface}): Declare these new
191 member functions.
192 (diff_node_visitor::priv_): Add a new pimpl data member.
193 (diff_node_visitor::{diff_node_visitor, get_visiting_kind,
194 set_visiting_kind}): Turn these into out-of-line member functions.
195 (diff_node_visitor::{set,get}_current_topmost_iface_diff): Add new
196 member functions.
197 (class {scope_diff, function_type_diff, corpus_diff}): Add class
198 leaf_reporter as a friend.
199 (corpus_diff::mark_leaf_diff_nodes, get_leaf_diffs): Declare new
200 member functions.
201 (diff::{visiting_a_node_twice_is_forbidden_per_interface,
202 parent_interface_node}): Define new member functions.
203 (is_diff_of_basic_type): Return a type_decl_diff* rather than just
204 a bool.
205 (is_enum_diff, is_array_diff, is_function_type, is_typedef_diff)
206 (is_corpus_diff): Declare new functions.
207 (corpus_diff::diff_stats::{num_leaf_changes,
208 num_leaf_changes_filtered_out, net_num_leaf_changes}): Add new
209 member functions.
210 (is_distinct_diff): Declare new function.
211 * include/abg-reporter.h: Forward-declare "class diff_maps".
212 (reporter_base::diff_to_be_reported): Declare a new virtual member
213 function.
214 (reporter_base::{report_local_typedef_changes,
215 report_local_reference_type_changes,
216 report_local_function_type_changes}): Declare new member
217 functions.
218 (class leaf_reporter): Define new type.
219 * src/abg-comparison-priv.h (struct diff_hash, diff_equal): Define
220 new types.
221 (diff_artifact_set_map_type): Define new typedef.
222 (diff_context::priv::{first_corpus_, second_corpus_}): Remove
223 these data members.
224 (diff_context::priv::{corpus_diff_, leaf_changes_only_,
225 reset_visited_diffs_for_each_interface_,
226 show_impacted_interfaces_}): Add new data members.
227 (diff_context::priv::priv): Adjust.
228 (corpus_diff::priv::{leaf_diffs_, parent_interface_}): Add new
229 data member.
230 (corpus_diff::diff_stats::priv::{num_leaf_changes,
231 num_leaf_changes_filtered_out}): Add new data members.
232 (corpus_diff::priv::count_leaf_changes): Define new member
233 function.
234 (sort_artifacts_set, get_fn_decl_or_var_decl_diff_ancestor)
235 (is_diff_of_global_decls): Declare new functions.
236 (function_comp::operator()): Factorize this out into the new
237 function abigail::ir::function_decl_is_less_than.
238 * src/abg-ir.cc (get_var_size_in_bits)
239 (function_decl_is_less_than): Define new functions.
240 (get_name): Define new overload for type_or_decl_base*.
241 * src/abg-comparison.cc (is_enum_diff, is_typedef_diff)
242 (is_array_diff, is_function_type_diff, is_corpus_diff)
243 (is_distinct_diff, sort_artifacts_set, is_diff_of_global_decls):
244 Define new functions.
245 (is_union_diff): Fix comment.
246 (diff_context::forbid_visiting_a_node_twice_per_interface): Define
247 new member functions.
248 (diff_context::set_corpus_diff, get_corpus_diff)
249 (diff_context::show_leaf_changes_only)
250 (diff_context::visiting_a_node_twice_is_forbidden_per_interface)
251 (diff_context::show_impacted_interfaces): Define new member
252 functions.
253 (diff_context::get_reporter): Create the reporter that matches
254 what diff_context::show_leaf_changes_only says.
255 (diff_node_visitor::priv): Define a new type.
256 (diff_node_visitor::{diff_node_visitor, get_visiting_kind,
257 set_visiting_kind, or_visiting_kind,
258 set_current_topmost_iface_diff, get_current_topmost_iface_diff}):
259 Define new out-of-line member functions.
260 (struct diff_maps::priv): Define new type.
261 (diff_maps::{diff_maps, get_type_decl_diff_map,
262 get_type_decl_diff_map, get_enum_diff_map, get_class_diff_map,
263 get_union_diff_map, get_typedef_diff_map, get_array_diff_map,
264 get_function_type_diff_map, get_function_decl_diff_map,
265 get_var_decl_diff_map, get_reference_diff_map,
266 get_fn_parm_diff_map, get_distinct_diff_map, insert_diff_node,
267 lookup_impacted_interfaces}): Define member functions.
268 (corpus_diff::{mark_leaf_diff_nodes, get_leaf_diffs}): Define new
269 member functions.
270 (struct leaf_diff_node_marker_visitor): Define new type.
271 (corpus_diff::apply_filters_and_suppressions_before_reporting):
272 Mark diff nodes in here.
273 (corpus_diff::traverse): Appropriately set the current topmost
274 interface into the visitor before visiting a diff node.
275 (compute_diff): In the overload for corpus_sptr, adjust to reflect
276 that we are now storing the corpus_diff in the diff context.
277 (is_diff_of_basic_type): Return a type_decl_diff*, not just a
278 bool.
279 (corpus_diff::priv::count_leaf_changes): Define a new member
280 function.
281 (corpus_diff::diff_stats::{num_leaf_changes,
282 num_leaf_changes_filtered_out, net_num_leaf_changes}): Define new
283 member functions.
284 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the
285 new corpus_diff::priv::count_leaf_changes to compute the number of
286 leaf changes.
287 (corpus_diff::priv::emit_diff_stats): Emit the report about leaf
288 type changes when necessary.
289 * src/abg-reporter-priv.h (report_mem_header): Declare new
290 overload.
291 (maybe_show_relative_offset_change,): Pass the var_diff_sptr
292 parameter by const reference.
293 (represent): Pass the var_diff_sptr parameter by const reference
294 and take a new "local-only" flag.
295 (maybe_show_relative_size_change)
296 (maybe_report_interfaces_impacted_by_diff): Declare new functions.
297 * src/abg-default-reporter.cc: Adjust copyright year.
298 (default_reporter::{report_local_typedef_changes,
299 report_local_qualified_type_changes,
300 report_local_reference_type_changes,
301 report_local_function_type_changes}): Define new member functions.
302 (default_reporter::report): Adjust. Add an overload for
303 function_type_diff&. In the overload for qualified_type_diff, if
304 the name of the underlying type changed, do not detail the changes
305 any further. In the overload for function_decl_diff, Adjust to
306 use the new diff_context::get_{first, second}_corpus member
307 function. In the overload for enum_diff, call the new
308 maybe_report_interfaces_impacted_by_diff that is advertised below.
309 * src/abg-reporter-priv.cc (represent): Adjust the overload for
310 var_diff_sptr.
311 (report_mem_header): Define new overload.
312 (maybe_show_relative_size_change)
313 (maybe_report_interfaces_impacted_by_diff): Define new functions.
314 (reporter_base::diff_to_be_reported): Define new member function.
315 (maybe_show_relative_offset_change): Pass the var_diff_sptr
316 parameter by const reference.
317 (represent): In the overload for var_diff_sptr, pass the
318 var_diff_sptr parameter by reference. Take a 'local_only' flag.
319 Iisplay type changes only if we are not displaying "local changes
320 only". Display size changes of data members too, when in
321 "local-only" mode.
322 * src/abg-suppression.cc (sonames_of_binaries_match)
323 (names_of_binaries_match): Adjust.
324 * tools/abidiff.cc (options::{leaf_changes_only,
325 show_impacted_interfaces}): Add new data members.
326 (display_usage): Emit usage string for the new --leaf-changes-only
327 and --impacted-interfaces options.
328 (parse_command_line): Parse the new --leaf-changes-only and the
329 --impacted-interfaces options.
330 (set_diff_context_from_opts): Set the 'show-leaf-changes' and the
331 'show-impacted-interfaces' flags.
332 * tests/data/test-diff-filter/libtest42-leaf-report-v{0,1}.so: New
333 test input.
334 * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: New
335 test reference output.
336 * tests/data/test-diff-filter/test42-leaf-report-v{0,1}.cc: Source
337 code of the new test inputs.
338 * tests/test-diff-filter.cc (in_out_specs): Use the new test
339 inputs above in this harness.
340 * tests/data/test-diff-suppr/libtest35-leaf-v0.so: New test input.
341 * tests/data/test-diff-suppr/test35-leaf-report-0.txt: New test
342 reference output.
343 * tests/data/test-diff-suppr/test35-leaf-v{0,1}.cc: Source code of
344 the new test inputs.
345 * tests/data/test-diff-suppr/test35-leaf.suppr: Suppression
346 specification to use for the test35 test.
347 * tests/data/test-diff-suppr/libtest36-leaf-v0.so: New test input.
348 * tests/data/test-diff-suppr/libtest36-leaf-v1.so: Likewise.
349 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: New
350 reference test output.
351 * tests/data/test-diff-suppr/test36-leaf-v0.cc: Source code of
352 test input above.
353 * tests/data/test-diff-suppr/test36-leaf-v1.cc: Likewise.
354 * tests/test-diff-suppr.cc (in_out_specs): Use the new test inputs
355 above in this harness.
356 * tests/data/Makefile.am: Add the new test inputs above to source
357 distribution.
358
3592017-07-17 Dodji Seketeli <dodji@redhat.com>
360
361 Allow several kinds of reports to be emitted
362 * include/Makefile.am: Add the new abg-reporter.h header file to
363 source distribution.
364 * include/abg-comparison.h: Include the new abg-reporter.h header
365 file.
366 (diff_context::{g,s}et_reporter): Declare new accessors.
367 ({type_diff_base, decl_diff_base, corpus_diff}::priv): Make this
368 be a struct rather than a class.
369 ({decl_diff_base, class_diff, scope_diff, function_type_diff,
370 corpus_diff}): Declare default_reporter a friend class of these.
371 * include/abg-reporter.h: New file.
372 * src/Makefile.am: Add abg-comparison-priv.h,
373 abg-reporter-priv.{h,cc} and abg-default-reporter.cc files to
374 source distribution.
375 * src/abg-comparison-priv.h: New file.
376 * src/abg-comparison.cc (sort_enumerators)
377 (sort_changed_enumerators, sort_data_members)
378 (sort_string_function_ptr_map)
379 (sort_string_function_decl_diff_sptr_map)
380 (sort_string_var_diff_sptr_map, sort_string_elf_symbol_map)
381 (sort_string_var_ptr_map, sort_string_data_member_diff_sptr_map)
382 (sort_unsigned_data_member_diff_sptr_map)
383 (sort_string_diff_sptr_map, sort_string_base_diff_sptr_map)
384 (sort_string_base_sptr_map, sort_string_fn_parm_diff_sptr_map)
385 (sort_string_parm_map, get_leaf_type, sort_enumerators)
386 (sort_changed_enumerators): Make these functions non-static and
387 move them at the beginning of the file. These functions are now
388 declared in abg-compared-priv.h so they can be shared privately
389 with other files in src/.
390 (diff_context::{g,s}et_reporter): Define new accessors.
391 ({diff_context, diff, type_diff_base, decl_diff_base,
392 distinct_diff, pointer_diff, array_diff, reference_diff,
393 qualified_type_diff, enum_diff, class_or_union_diff, class_diff,
394 base_diff, scope_diff, fn_parm_diff, function_type_diff,
395 function_decl_diff, type_decl_diff, typedef_diff,
396 translation_unit_diff, corpus_diff::diff_stats,
397 corpus_diff}::priv)
398 (diff_less_than_functor, enumerator_value_comp)
399 (changed_enumerator_comp, base_spec_comp, base_diff_comp)
400 (data_member_diff_comp, diff_comp, fn_parm_diff_comp, parm_comp)
401 (elf_symbol_comp, function_comp, function_decl_diff_comp)
402 (var_diff_sptr_comp): Move these type definitions to
403 abg-comparison-priv.h
404 (report_size_and_alignment_changes, report_loc_info)
405 (maybe_report_diff_for_member, maybe_report_diff_for_symbol)
406 (represent, represent_data_member)
407 (maybe_show_relative_offset_change, represent)
408 (report_size_and_alignment_changes, report_loc_info)
409 (report_name_size_and_alignment_changes, report_mem_header)
410 (maybe_report_diff_for_member, maybe_report_diff_for_symbol)
411 (show_linkage_name_and_aliases): Move these definitions to
412 abg-reporter-priv.cc.
413 ({distinct_diff, var_diff, pointer_diff, array_diff,
414 reference_diff, qualified_type_diff, enum_diff,
415 class_or_union_diff, class_diff, base_diff, union_diff,
416 scope_diff, fn_parm_diff, function_type_diff, type_decl_diff,
417 typedef_diff, corpus_diff}::report): Use the reporter object to
418 report about the changes carried by the the current diff node.
419 * src/abg-default-reporter.cc: New file.
420 * src/abg-reporter-priv.h: Likewise.
421
4222017-10-04 Dodji Seketeli <dodji@redhat.com>
423
424 Update copyright year to tools/abidiff.cc
425 * tools/abidiff.cc: Update copyright year.
426
4272017-10-04 Dodji Seketeli <dodji@redhat.com>
428
429 Add missing comment to type declaration
430 * include/abg-comparison.h (struct diff_sptr_hasher): Add missing
431 comment.
432
4332017-10-04 Dodji Seketeli <dodji@redhat.com>
434
435 Misc style fixes in abg-writer.cc
436 * src/abg-writer.cc (type_hasher): Add comment.
437 (write_context::record_decl_as_emitted): Remove useless newline.
438
4392017-10-04 Dodji Seketeli <dodji@redhat.com>
440
441 Initialize naked canonical type
442 * src/abg-ir.cc (type_base::priv::priv): Initialize the naked
443 canonical type data member.
444
4452017-10-04 Dodji Seketeli <dodji@redhat.com>
446
447 [abixml writer] Use an unordered set when appropriate
448 * src/abg-writer.cc (write_context::m_emitted_decl_only_set):
449 Renamed m_emitted_decl_only_map into this and make the type be a
450 set, rather than a map.
451 (write_context::{record_decl_only_type_as_emitted,
452 decl_only_type_is_emitted}): Adjust.
453
4542017-09-29 Dodji Seketeli <dodji@redhat.com>
455
456 [abixml writer] Store pointers to emitted types rather than type-ids
457 * src/abg-writer.cc (type_ptr_set_type): Declare new typedef.
458 (writer_context::m_emitted_type_id_map): Remove this data member.
459 (writer_context::m_emitted_type_set): Add a new data member.
460 (writer_context::{record_type_id_as_emitted, type_id_is_emitted,
461 clear_emitted_types_map}): Remove these member functions.
462 (writer_context::{record_type_as_emitted, type_is_emitted}): Use
463 the new m_emitted_type_set data member above.
464
4652017-09-27 Dodji Seketeli <dodji@redhat.com>
466
467 Use an unordered map for canonical DIE offsets
468 * src/abg-dwarf-reader.cc
469 (read_context::canonical_type_die_offsets_): Renamed the
470 canonical_type_die_vecs_ data member into this.
471 (read_context::canonical_decl_die_offsets_): Renamed the
472 canonical_decl_die_vecs_ data member into this.
473 (read_context::{initialize, compute_canonical_die_offset,
474 compute_canonical_die, get_canonical_die,
475 get_or_compute_canonical_die, set_canonical_die_offset,
476 get_canonical_die_offset}): Adjust.
477
4782017-09-27 Dodji Seketeli <dodji@redhat.com>
479
480 Bug 22190 - crash in read_context::get_or_compute_canonical_die
481 * src/abg-dwarf-reader.cc:
482
4832017-09-27 Dodji Seketeli <dodji@redhat.com>
484
485 Remove redundant (useless) typedef declaration
486 * src/abg-dwarf-reader.cc (dwarf_offsets_type): There are two
487 instances of this typedef declaration, remove one.
488
4892017-09-27 Dodji Seketeli <dodji@redhat.com>
490
491 Renamed offset_offset_map type name into offset_offset_map_type
492 * src/abg-dwarf-reader.cc (offset_offset_map_type): Renamed
493 offset_offset_map into this.
494 (read_context::{primary_die_parent_map_,
495 alternate_die_parent_map_, type_section_die_parent_map_}): Adjust
496 the type of these data members.
497 (read_context::{die_parent_map, type_section_die_parent_map}):
498 Adjust the type of these member functions.
499 (read_context::{build_die_parent_relations_under,
500 get_parent_die}): Adjust for the type name in these functions.
501
5022017-09-27 Dodji Seketeli <dodji@redhat.com>
503
504 Add missing newlines to kmidiff's usage strings
505 * tools/kmidiff.cc (display_usage): Add newlines after the lines
506 for --vmlinux1 and --vmlinux2.
507
5082017-09-21 Dodji Seketeli <dodji@redhat.com>
509
510 22160 - Annotate state flag unitialized in abidw
511 * tools/abidw.cc (options::options): Initialize the annotate data
512 member.
513
5142017-09-18 Dodji Seketeli <dodji@redhat.com>
515
516 Don't crash on classes that differ in their virtual member fn count
517 * src/abg-ir.cc (equals): In the overload for class_decl, when we
518 detect that the virtual member function counts are different, get
519 out, even when we are being asked about the kind of the change.
520
5212017-09-18 Dodji Seketeli <dodji@redhat.com>
522
523 Avoid adding the same data member twice in the DWARF reader
524 * src/abg-dwarf-reader.cc (add_or_update_class_type): After a we
525 try to create a data member type, look *again* if the data member
526 wasn't added recursively by the creation of the data member type.
527
5282017-09-11 Mark Wielaard <mark@klomp.org>
529
530 Bug 22075 - data_member_diff_comp forgets data members names
531 * src/abg-comparison.cc (data_member_diff_comp): Make the
532 comparison take the qualified name of the data member into
533 account. Also, if the initial offset and qualified names of the
534 data members of the diff nodes are equal, consider the offset and
535 qualified names of the new data members.
536
5372017-09-11 Dodji Seketeli <dodji@redhat.com>
538
539 Bug 22122 - Fail to represent 'const array'
540 * src/abg-dwarf-reader.cc (die_is_array_type): Define new static
541 function.
542 (die_is_pointer_or_reference_type): Also test that the DIE can be
543 an array.
544 * tests/data/test-read-dwarf/PR22122-libftdc.so: New binary test input.
545 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: New reference output.
546 * tests/data/Makefile.am: Add the two new test files above to
547 source distribution.
548 * tests/test-read-dwarf.cc (in_out_specs): Run this test harness
549 over the new test input.
550
5512017-09-08 Dodji Seketeli <dodji@redhat.com>
552
553 Finer detection of local changes of var_decl type
554 * src/abg-ir.cc (equals): In the var_decl overload detect size
555 changes of type as being a local change.
556
5572017-09-08 Dodji Seketeli <dodji@redhat.com>
558
559 Misc style fixes
560 * include/abg-fwd.h (get_pretty_representation): Add missing white
561 space.
562 * src/abg-ir.cc (get_name): Fix typo in comment.
563
5642017-09-02 Mark Wielaard <mark@klomp.org>
565
566 readdir_r() is deprecated, use readdir().
567 * src/abg-tools-utils.cc (dir_is_empty): Use readdir() instead
568 of readdir_r().
569
5702017-09-02 Mark Wielaard <mark@klomp.org>
571
572 Declare eval_last_constant_dwarf_sub_expr with [u]int64_t not [s]size_t.
573 * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
574 Declare expr_len as uint64_t and value as int64_t.
575
5762017-08-28 Dodji Seketeli <dodji@redhat.com>
577
578 Bug 22015 - Failing to return global scope of a DIE in certain cases
579 * src/abg-dwarf-reader.cc (get_scope_for_die): If the translation
580 unit of the parent die hasn't yet been constructed, then return
581 the global scope of the current translation unit.
582 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so: New
583 binary test input.
584 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
585 New reference test output.
586 * tests/data/Makefile.am: Add the new test materials above to
587 source distribution.
588 * tests/test-read-dwarf.cc (in_out_specs): Add the new test input
589 to the test suite.
590
5912017-07-17 Dodji Seketeli <dodji@redhat.com>
592
593 Fix some make distcheck failures
594 * tests/data/Makefile.am: Add
595 test-diff-dwarf/test42-PR21296-libgcc.so,
596 test-diff-dwarf/test42-PR21296-libclang.so,
597 test-diff-dwarf/test42-PR21296-clanggcc-report0.txt to the source
598 distribution. Also look for test-diff-filter/test39* tests inputs
599 in the test-diff-filter/test39/ directory.
600
6012017-07-17 Dodji Seketeli <dodji@redhat.com>
602
603 Avoid crashing when the elf file could not be read
604 * src/abg-dwarf-reader.cc
605 (read_context::elf_architecture_is_ppc64): Do not crash if the elf
606 handle is nil.
607
6082017-07-10 Dodji Seketeli <dodji@redhat.com>
609
610 Bug 21730 - Make abipkgdiff compare Linux Kernel packages as expected
611 * include/abg-tools-utils.h (get_vmlinux_path_from_kernel_dist):
612 Declare new function.
613 (get_binary_paths_from_kernel_dist): Re-organize order of
614 parameters.
615 (file_is_kernel_package, file_is_kernel_debuginfo_package): Make
616 the file_path parameter be const.
617 (build_corpus_group_from_kernel_dist_under): Take an additional
618 debug_info_root parameter.
619 * src/abg-tools-utils.cc (file_is_kernel_package)
620 (file_is_kernel_debuginfo_package): Const-ify the file_name
621 parameter.
622 (find_vmlinux_path): Define new static function.
623 (get_binary_paths_from_kernel_dist): Re-organize the order of
624 parameters. The debug_info_root_path parameter is now an input
625 parameter.
626 (get_vmlinux_path_from_kernel_dist): Define new function.
627 (get_binary_paths_from_kernel_dist): Adjust invocation of
628 get_binary_paths_from_kernel_dist.
629 (build_corpus_group_from_kernel_dist_under): Take an additional
630 debug_info_root parameter.
631 * tools/abidw.cc (load_kernel_corpus_group_and_write_abixml):
632 Adjust invocation to build_corpus_group_from_kernel_dist_under.
633 * tools/abipkgdiff.cc (create_maps_of_package_content): Don't map
634 the content of a Linux Kernel package.
635 (compare_prepared_userspace_packages)
636 (compare_prepared_linux_kernel_packages, compare_prepared): Define
637 new functions.
638 (compare): Use the new functions above here.
639 * tools/kmidiff.cc (print_kernel_dist_binary_paths_under): Adjust
640 the invocation of get_binary_paths_from_kernel_dist.
641 (main): Adjust the invocation of
642 build_corpus_group_from_kernel_dist_under. Make sure that a
643 kernel package is accompanied by a debug info package.
644
6452017-07-11 Dodji Seketeli <dodji@redhat.com>
646
647 Support up to two --wp options for abipkgdiff
648 * doc/manuals/abipkgdiff.rst: Update the documentation to say that
649 --wp can be provided twice, but not more than that.
650 * tools/abipkgdiff.cc (options::kabi_whitelist_packages): Rename
651 kabi_whitelist_package to this, and make be of vector<string>
652 type.
653 (package::erase_extraction_directories): Erase the white list
654 package extracted data.
655 (maybe_handle_kabi_whitelist_pkg, parse_command_line): Adjust.
656 (main): Make sure there is no more than 2 --wp on the command
657 line. Associate a white list package to each kernel package on
658 the command line.
659
6602017-07-11 Dodji Seketeli <dodji@redhat.com>
661
662 Fix support of the --wp option of abipkgdiff
663 * tools/abipkgdiff.cc (parse_command_line): Consider the absolute
664 path of the package given in argument to --wp.
665
6662017-07-11 Dodji Seketeli <dodji@redhat.com>
667
668 Use shorter lines in abipkgdiff.cc
669 * tools/abipkgdiff.cc (parse_command_line): Use shorter lines
670 here.
671
6722017-07-11 Dodji Seketeli <dodji@redhat.com>
673
674 Add missing space in abipkgdiff error message
675 * tools/abipkgdiff.cc (extract_package): Add missing space here.
676
6772017-07-11 Dodji Seketeli <dodji@redhat.com>
678
679 Replace --lkaw with -w and --lkaw-pkg with --wp
680 * doc/manuals/abipkgdiff.rst: Adjust the documentation.
681 * tools/abipkgdiff.cc (display_usage): Adjust the usage string.
682 (parse_command_line): Parse -w instead of --lkaw and --wp
683 insteadof --lkaw-pkg.
684
6852017-07-11 Dodji Seketeli <dodji@redhat.com>
686
687 speed up class type lookup in a corpus
688 * src/abg-ir.cc (lookup_class_type): In the overload that looks
689 for a class name denoted by an interned_string in the corpus, do
690 not look for the class in the translation units when the type
691 wasn't found in the type map of the corpus.
692 (maybe_update_types_lookup_map): Remove the
693 erase_if_exists_already parameter and the code that uses it.
694 (lookup_class_type_through_translation_units): Remove this
695 function that is now useless.
696
6972017-07-06 Dodji Seketeli <dodji@redhat.com>
698
699 Bug 21644 - abipkgdiff does not emit diagnostics about comparison errors
700 * include/abg-dwarf-reader.h (status_to_diagnostic_string):
701 Declare new function.
702 * src/abg-dwarf-reader.cc (status_to_diagnostic_string): Define
703 new function.
704 * tools/abipkgdiff.cc (compare): Take a new detailed_error_status
705 parameter.
706 (compare_task::perform): Get the details of the error, in case the
707 status of the comparison is ABIDIFF_ERROR.
708
7092017-07-05 Dodji Seketeli <dodji@redhat.com>
710
711 Bug 21153 - abipkgdiff reports undetermined interface subtype changes
712 * src/abg-ir.cc (get_name_of_qualified_type): A noop-qualified
713 type has an empty string as reprsentation for its qualifier.
714 * src/abg-dwarf-reader.cc (die_qualified_type_name): Adjust to
715 comply with what is done in get_name_of_qualified_type. Adjust
716 comment too.
717 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
718 Adjust.
719 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
720 New reference test output.
721 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64.rpm: New
722 test binary input.
723 * tests/data/test-diff-pkg/libcdio-0.94-2.fc26.x86_64.rpm: Likewise.
724 * tests/data/test-diff-pkg/libcdio-debuginfo-0.94-1.fc26.x86_64.rpm: Likewise.
725 * tests/data/test-diff-pkg/libcdio-debuginfo-0.94-2.fc26.x86_64.rpm Likewise.
726 * tests/data/Makefile.am: Add the new test inputs to source distribution.
727 * tests/test-diff-pkg.cc (in_out_specs): Make this test harness run on
728 the new test inputs above.
729
7302017-07-03 Dodji Seketeli <dodji@redhat.com>
731
732 Fix typo in comments
733 * src/abg-ir.cc (type_base::get_canonical_type_for): Fix a typo in
734 a command.
735
7362017-07-03 Dodji Seketeli <dodji@redhat.com>
737
738 Fix a typo when reporting size change wrt a decl-only class
739 * src/abg-comparison.cc (report_size_and_alignment_changes): Fix
740 typo.
741
7422017-07-03 Dodji Seketeli <dodji@redhat.com>
743
744 Better handle decl-only classes being different from their definition
745 * src/abg-comparison.cc (function_decl_diff::report): Don't report
746 possible vtable changes between a decl-only class and its
747 definition.
748 * src/abg-ir.cc (type_base::get_canonical_type_for): Consider that
749 a decl-only class is different from its definition when comparing
750 types for the purpose of type canonicalization.
751 (equals): In the class_or_union overload, only consider the global
752 decl_only_class_equals_definition() property to know when to
753 consider that a decl-only class is different from its definition
754 when comparing two classes.
755 * src/abg-reader.cc (build_class_decl): Read the size property of
756 a class, even if it's a decl-only class.
757 * src/abg-writer.cc (write_class_decl_opening_tag): Write size
758 property of types even if the types are decl-only classes.
759 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
760 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
761 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
762 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
763 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
764 Likewise.
765 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
766 Likewise.
767 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
768 Likewise.
769 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
770 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
771 Likewise.
772 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
773 Likewise.
774 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
775 Likewise.
776 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
777 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
778 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
779 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
780 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
781 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
782 Likewise.
783 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
784 Likewise.
785 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
786 Likewise.
787 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
788 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
789 Likewise.
790 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
791
7922017-06-28 Dodji Seketeli <dodji@redhat.com>
793
794 Don't add empty translation unit to corpus
795 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
796 A translation unit DIE that has no child DIE shall not be added to
797 the current ABI corpus.
798
7992017-06-27 Dodji Seketeli <dodji@redhat.com>
800
801 Bug 21631 - Forgot a "break" statement in stv_to_elf_symbol_visibility
802 * src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Add a
803 missing break statement.
804
8052017-06-26 Dodji Seketeli <dodji@redhat.com>
806
807 Bug 21630 - A this pointer DIE can be const
808 * src/abg-dwarf-reader.cc (die_this_pointer_is_const): If the DIE
809 is not a DW_TAG_pointer_type then don't crash.
810
8112017-06-23 Dodji Seketeli <dodji@redhat.com>
812
813 Bug 21629 - equivalent DIEs must be of the same DIE source
814 * src/abg-dwarf-reader.cc (compare_dies): Don't propagate
815 a canonical DIE to a DIE that comes from a different source.
816
8172017-06-22 Dodji Seketeli <dodji@redhat.com>
818
819 Bug 21627 - Libabigail doesn't consider translation unit compile dir
820 *if* that translation unit has already been seen in the current
821 binary, instead of creating a new one altogether.
822 This patch doesn't carry a regression test as the problem was found
823 while running the
824 https://pagure.io/libabigail-selfcheck/blob/master/f/selfcheck.py
825 script over the Fedora 25 critpath packages.
826 The patch does however update existing reference outputs of existings
827 tests where appropriate.
828 * include/abg-ir.h (translation_unit::{get_compilation_dir_path,
829 set_compilation_dir_path, get_absolute_path}):
830 * src/abg-corpus.cc (corpus::add): Use the new
831 translation_unit::get_absolute_path() as the key for the tu path
832 -> tu map.
833 * src/abg-dwarf-reader.cc
834 (read_context::resolve_declaration_only_classes): Use the new
835 translation_unit::get_absolute_path().
836 (build_translation_unit_and_add_to_ir): Set the compilation
837 directory of the translation unit.
838 * src/abg-ir-priv.h (translation_unit::priv::{comp_dir_path_,
839 abs_path_}):
840 * src/abg-ir.cc (translation_unit::set_path): Update comment.
841 (translation_unit::{get_compilation_dir_path,
842 set_compilation_dir_path, get_absolute_path}): Define new member
843 functions.
844 * src/abg-reader.cc (read_translation_unit): Take the new
845 'comp-dir-path' attribute into account.
846 * src/abg-writer.cc (write_translation_unit): Emit the new
847 'comp-dir-path' attribute.
848 * tests/data/test-annotate/libtest23.so.abi: Adjust.
849 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
850 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust.
851 * tests/data/test-annotate/test0.abi: Adjust.
852 * tests/data/test-annotate/test1.abi: Adjust.
853 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
854 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
855 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
856 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
857 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
858 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
859 * tests/data/test-annotate/test2.so.abi: Adjust.
860 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
861 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
862 * tests/data/test-annotate/test3.so.abi: Adjust.
863 * tests/data/test-annotate/test4.so.abi: Adjust.
864 * tests/data/test-annotate/test5.o.abi: Adjust.
865 * tests/data/test-annotate/test6.so.abi: Adjust.
866 * tests/data/test-annotate/test7.so.abi: Adjust.
867 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Adjust.
868 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
869 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
870 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
871 * tests/data/test-read-dwarf/test0.abi: Adjust.
872 * tests/data/test-read-dwarf/test1.abi: Adjust.
873 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
874 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
875 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
876 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
877 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
878 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
879 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
880 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
881 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
882 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
883 * tests/data/test-read-dwarf/test2.so.abi: Adjust.
884 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
885 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
886 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
887 * tests/data/test-read-dwarf/test3.so.abi: Adjust.
888 * tests/data/test-read-dwarf/test4.so.abi: Adjust.
889 * tests/data/test-read-dwarf/test5.o.abi: Adjust.
890 * tests/data/test-read-dwarf/test6.so.abi: Adjust.
891 * tests/data/test-read-dwarf/test7.so.abi: Adjust.
892 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust.
893 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
894
8952017-05-04 Dodji Seketeli <dodji@redhat.com>
896
897 Misc style fixes
898 * src/abg-dwarf-reader.cc (read_context::{die_wip_classes_map,
899 die_wip_function_types_map, types_to_canonicalize,
900 tu_die_imported_unit_points_map, die_parent_map,
901 load_kernel_symbol_table}): Add missing space to statement.
902 (get_parent_die): Likewise.
903 (build_enum_type): Fix typo in comment.
904 (e_machine_to_string, get_version_definition_for_versym)
905 (lookup_public_function_symbol_from_elf)
906 (lookup_public_variable_symbol_from_elf)
907 (lookup_data_tag_from_dynamic_segment, die_is_declaration_only)
908 (die_is_reference_type, die_function_type_is_method_type): Fix
909 indentation.
910 (read_context::{resolve_declaration_only_classes,
911 fixup_functions_with_no_symbols,
912 load_symbol_maps_from_symtab_section, load_dt_soname_and_needed,
913 load_elf_architecture, load_elf_properties,
914 maybe_adjust_address_for_exec_or_dyn, maybe_adjust_fn_sym_address,
915 address_is_in_opd_section, load_elf_architecture,
916 build_die_parent_maps}): Likewise.
917 (op_pushes_constant_value, op_manipulates_stack): Use the
918 dwarf_expr_eval_context::push method.
919 (op_is_control_flow, die_return_and_parm_names_from_fn_type_die)
920 (die_function_signature, die_pretty_print_type)
921 (get_default_array_lower_bound)
922 (build_translation_unit_and_add_to_ir, build_enum_type)
923 (add_or_update_class_type, build_function_type)
924 (build_function_decl, build_ir_node_from_die)
925 (lookup_public_function_symbol_from_elf): Fix indentation.
926 * src/abg-ir.cc (maybe_update_types_lookup_map): Remove useless space.
927
9282017-05-31 Dodji Seketeli <dodji@redhat.com>
929
930 Fix doc glitch in abidiff.rst
931 * doc/manuals/abidiff.rst: Fix glitch.
932
9332017-06-12 Dodji Seketeli <dodji@redhat.com>
934
935 Symbols with the same zero value are not aliases
936 * src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section):
937 Do not consider symbols with zero value as being aliases.
938 * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
939 * tests/data/test-diff-filter/test20-inline-report-1.txt:
940 Likewise.
941 * test-diff-filter/test41-PR21486-abg-writer.gcc.o: New test
942 binary input.
943 * tests/data/test-diff-filter/test41-PR21486-abg-writer.llvm.o:
944 Likewise.
945 * tests/data/Makefile.am: Add the new test material to source
946 distribution.
947 * tests/test-diff-filter.cc (in_out_specs): Run the test harness
948 on the new test input above.
949 * tests/data/test-diff-dwarf/test5-report.txt: Adjust.
950 * tests/data/test-diff-filter/test9-report.txt: Adjust.
951 * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
952 * tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust.
953
9542017-06-12 Dodji Seketeli <dodji@redhat.com>
955
956 Support ELF symbol visibility property
957 * include/abg-ir.h (enum elf_symbol::visibility): Define new enum.
958 (elf_symbol::{elf_symbol, create}): Take a visibility parameter.
959 (elf_symbol::{set, get}_visibility): Declare new accessors.
960 (string_to_elf_symbol_binding): Declare new function.
961 * src/abg-ir.cc (elf_symbol::priv::visibility_): New data member.
962 (elf_symbol::priv::priv): Adjust.
963 (elf_symbol::elf_symbol): Take a visibility parameter.
964 (elf_symbol::create): Likewise
965 (elf_symbol::{s,g}et_visibility): Define new accessors.
966 (elf_symbol::is_public): Adjust.
967 (operator<<(std::ostream&, elf_symbol::visibility)): Define new
968 operator.
969 (string_to_elf_symbol_visibility): Define new function.
970 * src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Define
971 new static function.
972 (lookup_symbol_from_sysv_hash_tab)
973 (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab)
974 (create_default_var_sym, create_default_fn_sym): Adjust.
975 * src/abg-reader.cc (read_elf_symbol_binding): Define new
976 function.
977 (build_elf_symbol): Adjust.
978 * src/abg-writer.cc (write_elf_symbol_visibility): Define new
979 function.
980 * tests/data/test-annotate/libtest23.so.abi: Adjust.
981 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust.
982 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust.
983 * tests/data/test-annotate/test0.abi: Adjust.
984 * tests/data/test-annotate/test1.abi: Adjust.
985 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
986 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
987 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
988 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
989 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
990 Adjust.
991 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
992 Adjust.
993 * tests/data/test-annotate/test2.so.abi: Adjust.
994 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
995 Adjust.
996 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
997 * tests/data/test-annotate/test3.so.abi: Adjust.
998 * tests/data/test-annotate/test4.so.abi: Adjust.
999 * tests/data/test-annotate/test5.o.abi: Adjust.
1000 * tests/data/test-annotate/test6.so.abi: Adjust.
1001 * tests/data/test-annotate/test7.so.abi: Adjust.
1002 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi:
1003 Adjust.
1004 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
1005 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
1006 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
1007 * tests/data/test-read-dwarf/test0.abi: Adjust.
1008 * tests/data/test-read-dwarf/test1.abi: Adjust.
1009 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
1010 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
1011 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
1012 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
1013 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
1014 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
1015 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
1016 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
1017 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1018 Adjust.
1019 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1020 Adjust.
1021 * tests/data/test-read-dwarf/test2.so.abi: Adjust.
1022 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1023 Adjust.
1024 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
1025 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1026 Adjust.
1027 * tests/data/test-read-dwarf/test3.so.abi: Adjust.
1028 * tests/data/test-read-dwarf/test4.so.abi: Adjust.
1029 * tests/data/test-read-dwarf/test5.o.abi: Adjust.
1030 * tests/data/test-read-dwarf/test6.so.abi: Adjust.
1031 * tests/data/test-read-dwarf/test7.so.abi: Adjust.
1032 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
1033 Adjust.
1034 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
1035 * tests/data/test-read-write/test26.xml: Adjust.
1036 * tests/data/test-read-write/test27.xml: Adjust.
1037 * tests/data/test-read-write/test28-without-std-fns-ref.xml:
1038 Adjust.
1039 * tests/data/test-read-write/test28-without-std-vars-ref.xml:
1040 Adjust.
1041
10422017-06-09 Dodji Seketeli <dodji@redhat.com>
1043
1044 Filter top cv qualifier changes on function parameter types
1045 * include/abg-comparison.h (enum diff_category): Add a new
1046 FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY enumerator. "Or" the
1047 enumerator to the EVERYTHING_CATEGORY enumerator.
1048 * src/abg-comp-filter.cc (has_fn_parm_type_cv_qual_change): Define
1049 new static function.
1050 (categorize_harmless_diff_node): Categorize changes to top cv
1051 qualifiers on function parameter types into the new
1052 FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
1053 * src/abg-comparison.cc (get_default_harmless_categories_bitmap):
1054 Add the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY category to the
1055 set of harmless categories.
1056 (operator<<(ostream&, diff_category)): Adjust to serialize
1057 the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
1058 * tests/data/test-diff-filter/libtest40-v0.so: New test input binary.
1059 * tests/data/test-diff-filter/libtest40-v1.so: Likewise.
1060 * tests/data/test-diff-filter/test40-report-0.txt: New test
1061 reference output.
1062 * tests/data/test-diff-filter/test40-v0.cc: Source code of the
1063 test binary above.
1064 * tests/data/test-diff-filter/test40-v1.cc: Likewise.
1065 * tests/data/Makefile.am: Add the new test material above to
1066 source distribution.
1067 * tests/test-diff-filter.cc (in_out_specs): Add new binaries to
1068 compare.
1069 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
1070 Adjust.
1071 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
1072 Likewise.
1073 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
1074 Likewise.
1075 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
1076 Likewise.
1077
10782017-05-28 Dodji Seketeli <dodji@redhat.com>
1079
1080 Do not report about voffset when it's not set in debug info
1081 * include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel):
1082 Initialize the virtual offset to -1.
1083 * src/abg-comparison.cc (represent): In the overload to represent
1084 a method_decl, do not represent the vofffset if it's not set.
1085 * src/abg-writer.cc (write_voffset): The virtual offset is signed
1086 because if it's -1, it means no offset is set.
1087 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
1088 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1089 Adjust.
1090 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1091 Adjust.
1092 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1093 Adjust.
1094 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
1095 Adjust.
1096 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
1097 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
1098 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
1099 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
1100 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1101 Adjust.
1102 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1103 Adjust.
1104 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1105 Adjust.
1106 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1107 Adjust.
1108
11092017-05-17 Dodji Seketeli <dodji@redhat.com>
1110
1111 Allow selective resolution of class declaration
1112 * include/abg-fwd.h (type_base_wptrs_type)
1113 (istring_type_base_wptrs_map_type): Define new typedefs.
1114 (lookup_class_types): Declare new functions.
1115 * include/abg-ir.h
1116 (environment::decl_only_class_equals_definition): Declare new
1117 accessor.
1118 (type_maps::{*_types}): Make these accessors return
1119 istring_type_base_wptrs_map_type& instead of
1120 istring_type_base_wptr_map_type&.
1121 * src/abg-dwarf-reader.cc
1122 (read_context::resolve_declaration_only_classes): Implement the
1123 new selective declaration resolution scheme.
1124 * src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of
1125 these data members from istring_type_base_wptr_map_type to
1126 istring_type_base_wptrs_map_type.
1127 (type_maps::{*_types}): Make these accessors definitions return
1128 istring_type_base_wptrs_map_type& instead of
1129 istring_type_base_wptr_map_type&.
1130 (translation_unit::bind_function_type_life_time): Adjust.
1131 (environment::priv::decl_only_class_equals_definition_): New data
1132 member.
1133 (environment::priv::priv): Initialize it. By default, a decl-only
1134 class is now considered different from its definition.
1135 (environment::decl_only_class_equals_definition): Define new
1136 accessor.
1137 (lookup_types_in_map, lookup_class_types): Define new functions.
1138 (lookup_type_in_map, lookup_union_type_per_location)
1139 (lookup_basic_type, lookup_basic_type_per_location)
1140 (lookup_class_type, lookup_class_type_per_location)
1141 (lookup_union_type, lookup_enum_type)
1142 (lookup_enum_type_per_location, lookup_typedef_type)
1143 (lookup_typedef_type_per_location, lookup_qualified_type)
1144 (lookup_pointer_type, lookup_reference_type, lookup_array_type)
1145 (lookup_function_type, maybe_update_types_lookup_map)
1146 (maybe_update_types_lookup_map<class_decl>)
1147 (maybe_update_types_lookup_map<function_type>): Adjust.
1148 (type_base::get_canonical_type_for): When doing type comparison
1149 here, we can now consider that an unresolved class declaration
1150 compares different to an incompatible class definition of the same
1151 name. So no need to look through decl-only classes in that case.
1152 (equals): In the overload for class_or_union, if
1153 environment::decl_only_class_equals_definition() is false, then an
1154 unresolved class declaration of name "N" compares different to a
1155 class definition named "N".
1156 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
1157 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust
1158 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
1159 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
1160 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
1161 Adjust.
1162 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
1163 Adjust.
1164 * tests/data/test-diff-filter/test38/Makefile: New test material.
1165 * tests/data/test-diff-filter/test38/test38-a.c: Likewise.
1166 * tests/data/test-diff-filter/test38/test38-b.c: Likewise.
1167 * tests/data/test-diff-filter/test38/test38-c.c: Likewise.
1168 * tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise.
1169 * tests/data/test-diff-filter/test38/test38-v0: Likewise.
1170 * tests/data/test-diff-filter/test38/test38-v1: Likewise.
1171 * tests/data/test-diff-filter/test38/test38.h: Likewise.
1172 * tests/data/test-diff-filter/test39/Makefile: Likewise.
1173 * tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise.
1174 * tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise.
1175 * tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise.
1176 * tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise.
1177 * tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise.
1178 * tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise.
1179 * tests/data/test-diff-filter/test39/test39-main.c: Likewise.
1180 * tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
1181 * tests/data/test-diff-filter/test39/test39-v0: Likewise.
1182 * tests/data/test-diff-filter/test39/test39-v1: Likewise.
1183 * tests/data/test-diff-filter/test39/test39.h: Likewise.
1184 * tests/data/Makefile.am: Add the new test material above to the
1185 source distribution.
1186 * tests/test-diff-filter.cc (in_out_specs): Add the new test
1187 inputs above to the test harness.
1188
11892017-05-31 Dodji Seketeli <dodji@redhat.com>
1190
1191 Add documentation for the kmidiff tool
1192 * doc/manuals/kmidiff.rst: New doc file.
1193 * doc/manuals/Makefile.am: Add the above file to source
1194 distribution.
1195
11962017-05-31 Dodji Seketeli <dodji@redhat.com>
1197
1198 Allow re-using the ELF/DWARF read_context when loading a corpus group
1199 * include/abg-dwarf-reader.h (reset_read_context): Declare new
1200 function.
1201 * src/abg-dwarf-reader.cc (read_context::elf_paths_): Make this to
1202 be non const.
1203 (read_context::initialize): New function to initialize all data
1204 members.
1205 (read_context::read_context): Use the new read_context::initialize
1206 function, rather than initializing data members 'inline' here.
1207 (reset_read_context): Define a new function to reset a
1208 read_context so that it can be re-used to load a new corpus.
1209
12102017-05-31 Dodji Seketeli <dodji@redhat.com>
1211
1212 Add --vmlinux{1,2} option to abidw and kmidiff
1213 * include/abg-tools-utils.h
1214 (build_corpus_group_from_kernel_dist_under): Add a new
1215 vmlinux_path parameter.
1216 * src/abg-tools-utils.cc (find_vmlinux_and_module_paths): Do not
1217 try to find a vmlinux binary if we already have the path to one.
1218 (build_corpus_group_from_kernel_dist_under): Add a new
1219 vmlinux_path parameter.
1220 * tools/abidw.cc (options::vmlinux): New data member.
1221 (display_usage): Add a usage string for --vmlinux
1222 (parse_command_line): Parse the new --vmlinux option.
1223 (load_kernel_corpus_group_and_write_abixml): Fix some return code
1224 when the function fails. Verify the presence of the vmlinux
1225 binary that was given. Adjust.
1226 * tools/kmidiff.cc (options::{vmlinux1, vmlinux2}): New data
1227 members.
1228 (display_usage): Add a usage string for --vmlinux1 and --vmlinux2.
1229 (parse_command_line): Parse the --vmlinux1 and --vmlinux2
1230 options.
1231 (main): Adjust.
1232
12332017-05-18 Dodji Seketeli <dodji@redhat.com>
1234
1235 Cache function type name computation results
1236 * src/abg-ir.cc (get_type_name): Cache function type names.
1237
12382017-05-29 Dodji Seketeli <dodji@redhat.com>
1239
1240 Fix innacurate test condition when reading an enum type from abixml
1241 * src/abg-reader.cc (build_enum_type_decl): Do not check for
1242 errno which might have been set earlier by something else.
1243 Rather, check the returned value for overflow or underflow.
1244
12452017-05-28 Dodji Seketeli <dodji@redhat.com>
1246
1247 Do not report about voffset when it's not set in debug info
1248 * include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel):
1249 Initialize the virtual offset to -1.
1250 * src/abg-comparison.cc (represent): In the overload to represent
1251 a method_decl, do not represent the vofffset if it's not set.
1252 * src/abg-writer.cc (write_voffset): The virtual offset is signed
1253 because if it's -1, it means no offset is set.
1254 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
1255 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1256 Adjust.
1257 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1258 Adjust.
1259 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1260 Adjust.
1261 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
1262 Adjust.
1263 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust.
1264 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
1265 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
1266 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
1267 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
1268 Adjust.
1269 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1270 Adjust.
1271 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
1272 Adjust.
1273 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
1274 Adjust.
1275
12762017-05-18 Dodji Seketeli <dodji@redhat.com>
1277
1278 Speedup DIE representation computing esp function signature in C
1279 * src/abg-dwarf-reader.cc (die_function_signature): For C DIEs,
1280 just return the (linkage) name of the function.
1281 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
1282 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
1283 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
1284 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
1285
12862017-05-17 Dodji Seketeli <dodji@redhat.com>
1287
1288 Allow selective resolution of class declaration
1289 * include/abg-fwd.h (type_base_wptrs_type)
1290 (istring_type_base_wptrs_map_type): Define new typedefs.
1291 (lookup_class_types): Declare new functions.
1292 * include/abg-ir.h
1293 (environment::decl_only_class_equals_definition): Declare new
1294 accessor.
1295 (type_maps::{*_types}): Make these accessors return
1296 istring_type_base_wptrs_map_type& instead of
1297 istring_type_base_wptr_map_type&.
1298 * src/abg-dwarf-reader.cc
1299 (read_context::resolve_declaration_only_classes): Implement the
1300 new selective declaration resolution scheme.
1301 * src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of
1302 these data members from istring_type_base_wptr_map_type to
1303 istring_type_base_wptrs_map_type.
1304 (type_maps::{*_types}): Make these accessors definitions return
1305 istring_type_base_wptrs_map_type& instead of
1306 istring_type_base_wptr_map_type&.
1307 (translation_unit::bind_function_type_life_time): Adjust.
1308 (environment::priv::decl_only_class_equals_definition_): New data
1309 member.
1310 (environment::priv::priv): Initialize it. By default, a decl-only
1311 class is now considered different from its definition.
1312 (environment::decl_only_class_equals_definition): Define new
1313 accessor.
1314 (lookup_types_in_map, lookup_class_types): Define new functions.
1315 (lookup_type_in_map, lookup_union_type_per_location)
1316 (lookup_basic_type, lookup_basic_type_per_location)
1317 (lookup_class_type, lookup_class_type_per_location)
1318 (lookup_union_type, lookup_enum_type)
1319 (lookup_enum_type_per_location, lookup_typedef_type)
1320 (lookup_typedef_type_per_location, lookup_qualified_type)
1321 (lookup_pointer_type, lookup_reference_type, lookup_array_type)
1322 (lookup_function_type, maybe_update_types_lookup_map)
1323 (maybe_update_types_lookup_map<class_decl>)
1324 (maybe_update_types_lookup_map<function_type>): Adjust.
1325 (type_base::get_canonical_type_for): When doing type comparison
1326 here, we can now consider that an unresolved class declaration
1327 compares different to an incompatible class definition of the same
1328 name. So no need to look through decl-only classes in that case.
1329 (equals): In the overload for class_or_union, if
1330 environment::decl_only_class_equals_definition() is false, then an
1331 unresolved class declaration of name "N" compares different to a
1332 class definition named "N".
1333 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
1334 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust
1335 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
1336 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
1337 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
1338 Adjust.
1339 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
1340 Adjust.
1341 * tests/data/test-diff-filter/test38/Makefile: New test material.
1342 * tests/data/test-diff-filter/test38/test38-a.c: Likewise.
1343 * tests/data/test-diff-filter/test38/test38-b.c: Likewise.
1344 * tests/data/test-diff-filter/test38/test38-c.c: Likewise.
1345 * tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise.
1346 * tests/data/test-diff-filter/test38/test38-v0: Likewise.
1347 * tests/data/test-diff-filter/test38/test38-v1: Likewise.
1348 * tests/data/test-diff-filter/test38/test38.h: Likewise.
1349 * tests/data/test-diff-filter/test39/Makefile: Likewise.
1350 * tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise.
1351 * tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise.
1352 * tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise.
1353 * tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise.
1354 * tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise.
1355 * tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise.
1356 * tests/data/test-diff-filter/test39/test39-main.c: Likewise.
1357 * tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise.
1358 * tests/data/test-diff-filter/test39/test39-v0: Likewise.
1359 * tests/data/test-diff-filter/test39/test39-v1: Likewise.
1360 * tests/data/test-diff-filter/test39/test39.h: Likewise.
1361 * tests/data/Makefile.am: Add the new test material above to the
1362 source distribution.
1363 * tests/test-diff-filter.cc (in_out_specs): Add the new test
1364 inputs above to the test harness.
1365
13662017-05-04 Dodji Seketeli <dodji@redhat.com>
1367
1368 Avoid de-duplicating different C types that have identical name
1369 * src/abg-dwarf-reader.cc (die_decl_map_type, die_type_map_type):
1370 Remove these typedefs.
1371 (die_artefact_map_type, istring_dwarf_offsets_map_type): New
1372 typedefs.
1373 (die_is_at_class_scope, die_qualified_type_name)
1374 (die_qualified_decl_name, die_qualified_type_name_empty)
1375 (die_return_and_parm_names_from_fn_type_die)
1376 (die_function_type_is_method_type):
1377 Const-ify the read_context& parameter.
1378 (read_context::die_source_dependant_container_set::get_container):
1379 Likewise.
1380 (read_context::{name_artefacts_map_, per_tu_name_artefacts_map_,
1381 die_decl_map_, alternate_die_decl_map_, type_unit_die_decl_map_,
1382 die_type_map_, alternate_die_type_map_, type_unit_die_type_map_}):
1383 Remove data members.
1384 (read_context::{die_decl_map, alternate_die_decl_map,
1385 associate_die_to_decl_primary, associate_die_to_decl_alternate,
1386 associate_die_to_decl_from_type_unit,
1387 lookup_decl_from_die_offset_primary,
1388 lookup_decl_from_die_offset_alternate,
1389 lookup_decl_from_type_unit_die_offset,
1390 lookup_type_artifact_from_die_per_tu,
1391 lookup_artifact_from_per_tu_die_representation,
1392 associate_die_to_artifact_by_repr,
1393 associate_die_to_artifact_by_repr_internal, clear_die_type_maps}):
1394 Remove member functions.
1395 (read_context::{decl_die_repr_die_offsets_maps_,
1396 type_die_repr_die_offsets_maps_, decl_die_artefact_maps_,
1397 type_die_artefact_maps_, dwarf_expr_eval_context_}): Add new data
1398 members.
1399 (read_context::clear_per_translation_unit_data): Don't clear
1400 read_context::per_tu_name_artefacts_map_ data member as it's
1401 removed.
1402 (read_context::clear_per_corpus_data): Don't clear
1403 read_context::name_artefacts_map_ and all the other relevant data
1404 members that got removed.
1405 (read_context::{dwarf_per_die_source,
1406 decl_die_repr_die_offsets_maps, type_die_repr_die_offsets_maps,
1407 get_canonical_die, get_die_from_offset, decl_die_artefact_maps,
1408 type_die_artefact_maps, dwarf_expr_eval_ctxt}): Add new member
1409 functions.
1410 (compare_dies, compare_as_decl_dies)
1411 (compare_as_type_dies, maybe_finish_function_decl_reading)
1412 (die_is_anonymous): Define new functions.
1413 (read_context::associate_die_to_decl): Remove the
1414 do_associate_by_repr_per_tu parameter. Use the new
1415 read_context::{decl_die_artefact_maps_, get_canonical_die} member
1416 functions.
1417 (read_context::lookup_decl_from_die_offset): Use Dwarf_Off rather
1418 than size_t for the type of the die_offset parameter. Use the
1419 lookup_artifact_from_die_offset member function.
1420 (read_context::lookup_type_artifact_from_die): Const-ify. In one
1421 overload, take a new 'die_as_type' parameter. Use the new
1422 get_canonical_die, type_die_artefact_maps and
1423 decl_die_artefact_maps member functions. In the second overload,
1424 use the first overload.
1425 (read_context::odr_is_relevant): Add an overload that takes a DIE.
1426 (read_context::associate_die_to_type): Remove the
1427 do_associate_by_repr and do_associate_per_tu parameters. Use the
1428 new get_canonical_die and type_die_artefact_maps member functions.
1429 (read_context::lookup_type_from_die): Use the new
1430 lookup_artifact_from_die member function.
1431 (read_context::lookup_type_from_die_offset): Use the new
1432 type_die_artefact_maps member function. When the found artifact
1433 is a function_decl, return its type.
1434 (read_context::schedule_type_for_late_canonicalization): Use the
1435 new get_canonical_die and type_die_artefact_maps member functions.
1436 (die_function_signature): Const-ify. Get the scope name right
1437 even for scopes that are not types.
1438 (die_member_offset): Make eval_last_constant_dwarf_sub_expr use
1439 the new cached DWARF expression evalution context.
1440 (get_parent_die): Support where_offset equals to zero. This means
1441 we are looking at a C binary, basically.
1442 (build_enum_type) : Use the new overload of
1443 read_context::odr_is_relevant that takes a DIE. Adjust.
1444 (add_or_update_union_type, add_or_update_class_type): Don't lookup
1445 classes/unions per location anymore. Now that we can compare DIEs
1446 in a fined grain manner, the approximation of the location is not
1447 useful anymore.
1448 (build_pointer_type)
1449 (build_function_type): Associate DIE to type if we reuse an
1450 existing type.
1451 (build_or_get_fn_decl_if_not_suppressed): When re-using a
1452 function decl internal representation from an equivalent DIE that
1453 we've seen before, it can happen that we want to augment that
1454 function decl internal representation with new properties coming
1455 from the DIE we are currently looking at; do that here.
1456 (is_function_for_die_a_member_of_class): Remove the "where_offset"
1457 parameter.
1458 (add_or_update_member_function): Adjust.
1459 * tests/data/test-annotate/libtest23.so.abi: Adjust.
1460 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
1461 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
1462 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
1463 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
1464 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
1465 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
1466 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
1467 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
1468 * 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.
1469 * 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.
1470 * 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.
1471 * 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.
1472 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
1473 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
1474 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
1475 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
1476 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
1477 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
1478 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
1479 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
1480 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
1481 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
1482 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
1483 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
1484 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
1485 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
1486 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
1487
14882017-04-14 Dodji Seketeli <dodji@redhat.com>
1489
1490 Speedup access to unreferenced symbols when loading corpus_group
1491 * src/abg-corpus.cc (corpus_group::unrefed_{fun, var}_symbol_map):
1492 New data members.
1493 (corpus_group::priv::priv): Adjust.
1494 (corpus_group::priv::add_unref_{fun,var}_symbols): Define new
1495 member functions.
1496 (corpus_group::add_corpus): Update the map of unreferenced
1497 symbols.
1498 (corpus_group::get_unreferenced_{function,variable}_symbols)
1499 Adjust logic.
1500
15012017-04-07 Dodji Seketeli <dodji@redhat.com>
1502
1503 Initial support of de-serializing the KMI of a Linux Kernel Tree
1504 * include/abg-libxml-utils.h (advance_to_next_sibling_element):
1505 Declare new function.
1506 * src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay)
1507 (advance_to_next_sibling_element): Define new functions.
1508 * include/abg-reader.h (read_corpus_group_from_input)
1509 (read_corpus_group_from_native_xml)
1510 (read_corpus_group_from_native_xml_file): Declare new functions.
1511 * src/abg-reader.cc (read_context::m_corpus_group): New data
1512 member.
1513 (read_context::{get_corpus_group, set_corpus_group}): Define new
1514 member functions.
1515 (read_translation_unit_from_input): Cleanup logic.
1516 (read_corpus_from_input): Don't assume that the document is
1517 starting with an 'abi-corpus' element. Support the mode where a
1518 caller called the xmlTextReaderExpand function (and so we are
1519 given an expanded xmlNodePtr) and the mode where we need to use
1520 the xmlTextReader API to walk through the 'abi-corpus' element.
1521 Also, if we are building a corpus group, do not clear what used to
1522 be 'per-corpus' data. That data must be shared by all the corpora
1523 of a given abi-corpus-group.
1524 (read_corpus_group_from_input, read_corpus_group_from_native_xml)
1525 (read_corpus_group_from_native_xml_file): Define new functions.
1526 * include/abg-tools-utils.h (FILE_TYPE_XML_CORPUS_GROUP): New
1527 enumerator of the file_type enum.
1528 * src/abg-tools-utils.cc (operator<<): In the overload for
1529 file_type, add a case for the new FILE_TYPE_XML_CORPUS_GROUP.
1530 (guess_file_type): Dectect abi-corpus-group xml element.
1531 * tools/abidiff.cc (adjust_diff_context_for_kmidiff): Define new
1532 static function.
1533 (main): Adjust to handle the new FILE_TYPE_XML_CORPUS_GROUP. That
1534 is, compare two FILE_TYPE_XML_CORPUS_GROUP if they are present.
1535 * tools/abilint.cc (main): Likewise.
1536 * tools/kmidiff.cc (main): Detect that one of two .kmi files are
1537 passed. In that case, load the .kmi file(s), build a corpus_group
1538 of it and use it in the comparison.
1539
15402017-04-06 Dodji Seketeli <dodji@redhat.com>
1541
1542 Initial support of the serialization of the KMI of a Linux Kernel Tree
1543 * include/abg-tools-utils.h (check_dir)
1544 (get_binary_paths_from_kernel_dist)
1545 (build_corpus_group_from_kernel_dist_under): Declare new
1546 functions. The last two functions are being moved from
1547 tools/kmidiff.cc so that they can be re-used.
1548 * include/abg-writer.h (write_corpus): Declare one overload that
1549 takes a write_context parameter.
1550 (write_corpus_group): Declare three overloads of this new function.
1551 * src/abg-tools-utils.cc (check_dir): Define new function.
1552 (load_generate_apply_suppressions, is_vmlinux, is_kernel_module)
1553 (find_vmlinux_and_module_paths)
1554 (get_binary_paths_from_kernel_dist)
1555 (build_corpus_group_from_kernel_dist_under): Define new functions.
1556 * src/abg-writer.cc (write_context::set_annotate): Define new
1557 member function.
1558 (write_corpus): Add an overload that takes a write_context. Adapt
1559 the existing overload to make it use this new one.
1560 (write_corpus_group): Define this new function and two additional
1561 overloads for it.
1562 * tools/kmidiff.cc (set_suppressions, is_vmlinux)
1563 (is_kernel_module, find_vmlinux_and_module_paths)
1564 (get_binary_paths_from_kernel_dist)
1565 (build_corpus_group_from_kernel_dist_under): Remove.
1566 (main): Adjust the call to
1567 build_corpus_group_from_kernel_dist_under as its arguments are now
1568 adapted since it's been factorized out into abg-tools-utils.h.
1569 * tools/abidw.cc (options::corpus_group_for_linux): Define new
1570 data member.
1571 (options::options): Adjust.
1572 (display_usage): Add help strings for the new --linux-tree option.
1573 (load_corpus_and_write_abixml): Factorize this function out of the
1574 main function.
1575 (load_kernel_corpus_group_and_write_abixml): Define new function.
1576 (main): Use the factorized load_corpus_and_write_abixml and the
1577 new load_corpus_and_write_abixml functions.
1578 * tests/test-read-write.cc: Adjust.
1579 * doc/manuals/abidw.rst: Add documentation for the new
1580 --linux-tree option.
1581
15822017-04-06 Dodji Seketeli <dodji@redhat.com>
1583
1584 Adjust test reference outputs after changes in abg-writer.cc
1585 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
1586 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
1587 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
1588 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
1589 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
1590 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
1591 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
1592 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
1593 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
1594 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
1595 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
1596 Adjust.
1597
15982017-04-06 Dodji Seketeli <dodji@redhat.com>
1599
1600 Fix indentation glitch before the </abi-corpus> tag in abixml
1601 * src/abg-writer.cc (write_corpus): Indent before emitting the
1602 closing </abi-corpus> tag.
1603
16042017-04-06 Dodji Seketeli <dodji@redhat.com>
1605
1606 Avoid emitting some empty translation units to abixml
1607 * src/abg-writer.cc (write_corpus): Do not emit a translation
1608 unit that appears empty beforehand.
1609
16102017-04-06 Dodji Seketeli <dodji@redhat.com>
1611
1612 Avoid emitting duplicated decls in abixml
1613 * src/abg-writer.cc (write_context::m_emitted_decls_map): New data
1614 member.
1615 (write_context::{decl_name_is_emitted, record_decl_as_emitted}):
1616 Define new memeber functions.
1617 (write_translation_unit): Do not emit a decl that has already been
1618 emitted.
1619 (write_var_decl, write_function): Record the decl as emitted.
1620
16212017-04-04 Dodji Seketeli <dodji@redhat.com>
1622
1623 Rename write_corpus_to_native_xml into write_corpus
1624 * include/abg-writer.h (write_corpus): Rename
1625 write_corpus_to_native_xml to this.
1626 * src/abg-writer.cc (write_corpus): Rename
1627 write_corpus_to_native_xml to this.
1628 * tests/test-read-dwarf.cc (test_task::perform): Adjust.
1629 * tests/test-read-write.cc: Remove a useless "using
1630 abigail::xml_writer::write_corpus_to_native_xml".
1631 * tools/abidw.cc (main): Adjust.
1632 * tools/abilint.cc (main): Adjust.
1633
16342017-04-04 Dodji Seketeli <dodji@redhat.com>
1635
1636 Update the reference output of regression tests after kabidiff work
1637 * tests/data/test-annotate/test0.abi: Adjust.
1638 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
1639 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
1640 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
1641 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
1642 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
1643 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
1644 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
1645 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
1646 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust.
1647 * 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.
1648 * 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.
1649 * 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.
1650 * 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.
1651 * 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.
1652 * tests/data/test-read-dwarf/test0.abi: Adjust.
1653 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
1654 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
1655 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
1656 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
1657 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
1658 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
1659 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
1660 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
1661 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
1662 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust.
1663 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
1664 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
1665 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
1666 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
1667
16682017-06-12 Dodji Seketeli <dodji@redhat.com>
1669
1670 Introduce the --kmi-whitelist option to abidiff
1671 * doc/manuals/abidiff.rst: Add documentation for the
1672 --kmi-whitelist option.
1673 * tools/abidiff.cc (display_usage): Emit help string for the
1674 --kmi-whitelist option
1675 (parse_command_line): Parse the new --kmi-whitelist option, of the
1676 -w shortcut.
1677
16782017-04-04 Dodji Seketeli <dodji@redhat.com>
1679
1680 Make abidw support the --kmi-whitelist option
1681 * tools/abidw.cc (options::{kabi_whitelist_paths,
1682 kabi_whitelist_supprs}): New data members.
1683 (display_usage): Add a help string for the new --kmi-whitelist
1684 option.
1685 (parse_command_line): Parse the new --kmi-whitelist option.
1686 (maybe_check_suppression_files): Check the presence of the linux
1687 kernel abi white list passed by the option --kmi-whitelist.
1688 (main): Ignore loading the symbol table if the kernel abi white
1689 list is provided.
1690 * doc/manuals/abidw.rst: Add documentation for the new option.
1691
16922017-04-03 Dodji Seketeli <dodji@redhat.com>
1693
1694 Make abipkgdiff compare two kernel packages
1695 * include/abg-suppression.h
1696 (variable_suppression::variable_suppression): Add default arguments
1697 to the parameters.
1698 * include/abg-tools-utils.h (dir_exists, dir_is_empty)
1699 (string_begins_with, get_rpm_name, get_rpm_arch, get_deb_name)
1700 (file_is_kernel_package, file_is_kernel_debuginfo_package):
1701 Declare new functions.
1702 * src/abg-tools-utils.cc (dir_exists, dir_is_empty)
1703 (string_begins_with, get_deb_name, get_rpm_name, get_rpm_arch)
1704 (file_is_kernel_package, file_is_kernel_debuginfo_package): Define
1705 new functions.
1706 (gen_suppr_spec_from_kernel_abi_whitelist): The kernel ABI
1707 whitelist is made of ELF symbols names that ought to match
1708 functions *and* variables that have ELF symbols with those names.
1709 So generate variable suppression specifications as well. Not just
1710 function suppression specifications.
1711 * tools/abipkgdiff.cc (options::{kabi_whitelist_package,
1712 show_symbols_not_referenced_by_debug_info, kabi_whitelist_paths,
1713 kabi_suppressions}): New data members.
1714 (options::options): Adjust.
1715 (package::KIND_KABI_WHITELISTS): New enumerator in the
1716 package::kind enum.
1717 (package::kabi_whitelist_package_): New data member.
1718 (package::{base_name, kabi_whitelist_package, }): New member
1719 functions.
1720 (display_usage): Add a help string to the new
1721 --linux-kernel-abi-whitelist and --no-unreferenced-symbols
1722 options.
1723 (parse_command_line): Parse the new --no-unreferenced-symbols,
1724 --linux-kernel-abi-whitelist and --lkaw-pkg options.
1725 (maybe_check_suppression_files): Check the presence of kabi
1726 whitelist files.
1727 (set_diff_context_from_opts): Consider (not) showing symbols not
1728 referenced by debug info.
1729 (compare): If we are looking at linux kernel packages, take the
1730 kernel abi whitelist into account, apply the suppressions
1731 resulting from the kabi whitelists to the ELF read context.
1732 (maybe_collect_kabi_whitelists)
1733 (get_kabi_whitelists_from_arch_under_dir)
1734 (maybe_handle_kabi_whitelist_pkg, maybe_collect_kabi_whitelists)
1735 (get_interesting_files_under_dir): Define new functions.
1736 (maybe_update_vector_of_package_content): Take a new
1737 file_name_to_look_for parameter.
1738 (create_maps_of_package_content)
1739 (extract_package_and_map_its_content): Consider the case of the
1740 package being a linux kernel package.
1741 (main): Take the potential --lkaw-pkg into account.
1742 * doc/manuals/abipkgdiff.rst: Add documentation for options
1743 --linux-kernel-abi-whitelist, --lkaw-pkg and
1744 --no-unreferenced-symbols.
1745
17462017-04-03 Dodji Seketeli <dodji@redhat.com>
1747
1748 Avoid loading a translation unit twice from abixml
1749 * src/abg-reader.cc (read_translation_unit): Take (in parameter) a
1750 reference as the resulting translation unit.
1751 (get_or_read_and_add_translation_unit): Define new static
1752 function.
1753 (read_context::get_scope_for_node)
1754 (read_translation_unit_from_input): Use the new
1755 get_or_read_and_add_translation_unit.
1756
17572017-04-03 Dodji Seketeli <dodji@redhat.com>
1758
1759 Support loading and comparing two kernel trees
1760 * include/abg-dwarf-reader.h (set_read_context_corpus_group)
1761 (read_and_add_corpus_to_group_from_elf, set_ignore_symbol_table)
1762 (get_ignore_symbol_table): Declare new functions.
1763 * abg-dwarf-reader.cc (read_context::options_type): Define new
1764 type.
1765 (die_dependant_container_set::clear): Define new member function.
1766 (read_context::{bss, tesxt, rodata, data, data1}_section_): Add
1767 new data members.
1768 (read_context::{symbol_versionning_sections_loaded_,
1769 symbol_versionning_sections_found_}): Likewise.
1770 (read_context::corpus_group_): Likewise.
1771 (read_context::{load_in_linux_kernel_mode, load_all_types,
1772 show_stats, do_log_}): Replace these options by ..
1773 (read_context::options_): ... this instance of the new
1774 read_context:options_type.
1775 (read_context::read_context): Adjust.
1776 (read_context::{clear_alt_debug_info_data, clear_per_corpus_data,
1777 env, get_data_section_for_variable_address, load_all_types,
1778 load_in_linux_kernel_mode, show_stats, do_log}): Adjust.
1779 (create_read_context): Adjust.
1780 (read_context::~read_context): Define destructor.
1781 (read_context::{options, bss_section, text_section,
1782 rodata_section, data_section, data1_section, current_corpus_group,
1783 has_corpus_group, main_corpus_from_current_group,
1784 main_corpus_from_current_group,
1785 current_corpus_is_main_corpus_from_current_group,
1786 should_reuse_type_from_corpus_group}): Define new member
1787 functions.
1788 (read_context::get_die_qualified_type_name): Handle the name of
1789 the current translation unit.
1790 (read_context::load_symbol_maps): Really don't load (linux kernel
1791 specific) symbol maps if we were told to ignore the ELF symbol
1792 table.
1793 (set_ignore_symbol_table, get_ignore_symbol_table)
1794 (create_default_var_sym, create_default_fn_sym, add_symbol_to_map)
1795 (set_read_context_corpus_group)
1796 (read_and_add_corpus_to_group_from_elf): Define new functions.
1797 (build_type_decl, build_typedef_type, build_enum_type)
1798 (add_or_update_class_type)
1799 (add_or_update_union_type): Reuse the type being built, from the
1800 main corpus of the corpus group.
1801 (build_qualified_type): Cleanup logic.
1802 (build_var_decl, build_function_decl): Create a default symbol for
1803 the variable or function if we are supposed to ignore the symbol
1804 table of the current binary. Add that symbol to the symbol table
1805 that is created in the read context.
1806 (read_debug_info_into_corpus): Don't load the ELF symbol table
1807 information if we are asked to ignore the symbol table. But set
1808 the symbol table that we built artificially while loading
1809 functions and variables, into the ABI corpus being built.
1810 (read_context::maybe_adjust_var_sym_address): Adjust.
1811 (build_ir_node_from_die): Add ir node to its logical scope. For
1812 the C language, the scope of a type is the global scope.
1813 (read_corpus_from_elf): Don't load ELF properties if we were asked
1814 to avoid the ELF symbol table.
1815 * include/abg-comparison.h (compute_diff): Declare ...
1816 * src/abg-comparison.cc (compute_diff): ... an overload to compare
1817 corpus_group.
1818 * tools/kmidiff.cc: New tool.
1819
18202017-03-31 Dodji Seketeli <dodji@redhat.com>
1821
1822 Initial support to lookup types per location
1823 * include/abg-fwd.h (get_name_of_qualified_type)
1824 (get_name_of_reference_to_type, lookup_basic_type_per_location)
1825 (lookup_class_type_per_location, lookup_union_type_per_location)
1826 (lookup_enum_type_per_location, lookup_typedef_type)
1827 (lookup_typedef_type_per_location, lookup_pointer_type)
1828 (lookup_reference_type, lookup_type_per_location)
1829 (lookup_type_through_translation_units)
1830 (lookup_type_from_translation_unit, odr_is_relevant): Declare new
1831 functions or new function overloads.
1832 * include/abg-ir.h (location::expand): Declare new member
1833 function.
1834 (type_maps::empty): Likewise.
1835 (operator|=): Declare an overload for qualified_type_def::CV.
1836 (get_string_representation_of_cv_quals)
1837 (get_name_of_qualified_type, lookup_qualified_type): Declare new functions.
1838 * src/abg-ir.cc (location::expand): Define new member function.
1839 (type_maps::empty): Likewise.
1840 (odr_is_relevant): Likewise.
1841 (get_string_representation_of_cv_quals)
1842 (get_name_of_reference_to_type, get_name_of_qualified_type)
1843 (lookup_union_type_per_location): Define new functions or overloads.
1844 (lookup_basic_type, lookup_enum_type, lookup_typedef_type)
1845 (lookup_qualified_type, lookup_pointer_type)
1846 (lookup_reference_type, lookup_type_from_translation_unit)
1847 (lookup_basic_type_per_location, lookup_basic_type_per_location)
1848 (lookup_class_type_per_location, lookup_class_type_per_location)
1849 (lookup_enum_type_per_location, lookup_enum_type_per_location)
1850 (lookup_typedef_type_per_location)
1851 (lookup_typedef_type_per_location, lookup_type_per_location):
1852 Define new overloads.
1853 (maybe_update_types_lookup_map)
1854 (maybe_update_types_lookup_map<class_decl>)
1855 (maybe_update_types_lookup_map<function_type>): Add a new
1856 use_type_name_as_key parameter. If it's false, then associates
1857 the type to its location rather than to its name.
1858 (maybe_update_types_lookup_map): In the overloads for type_decl,
1859 class_decl, union_decl, enum_type, typedef_decl, array_type_def,
1860 record the type in the lookup map per location, in addition to the
1861 per-name recording.
1862 (qualified_type_def::build_name): Use the new
1863 get_name_of_qualified_type.
1864 (qualified_type_def::get_cv_quals_string_prefix): Use the new
1865 get_string_representation_of_cv_quals.
1866 (operator|=): Define a new overload for qualified_type_def::CV.
1867 (pointer_type_def::get_qualified_name): Use the new
1868 get_name_of_pointer_to_type.
1869 (reference_type_def::get_qualified_name): Use the new
1870 get_name_of_reference_to_type.
1871
18722017-03-30 Dodji Seketeli <dodji@redhat.com>
1873
1874 Create a Corpus Group API extension
1875 * include/abg-corpus.h (corpus::{find_translation_unit,
1876 get_type_per_loc_map}): Declare new member functions.
1877 (corpus::{get_architecture_name, is_empty}): Make these member functions
1878 const.
1879 (corpus::{get_sorted_fun_symbols, get_functions, get_variables,
1880 get_unreferenced_function_symbols,
1881 get_unreferenced_variable_symbols}): Make these member functions
1882 virtual.
1883 (class corpus_group): Declare a new type.
1884 * include/abg-fwd.h (corpus_sptr, corpus_group_sptr)
1885 (string_tu_map_type, istring_var_decl_ptr_map_type)
1886 (istring_function_decl_ptr_map_type): Define new typedefs.
1887 * src/abg-corpus-priv.h (corpus_priv::{path_tu_map,
1888 type_per_loc_map_}): Add new data members.
1889 * src/abg-corpus.cc (corpus_add): Complete the function comment.
1890 Assert that at most one translation unit of a given path can be
1891 added to the corpus.
1892 (corpus::{find_translation_unit, get_type_per_loc_map}): Define
1893 new member functions.
1894 (corpus::{get_architecture_name}): Make this member function
1895 const.
1896 (struct corpus_group::priv): Define new type.
1897 (corpus_group::{corpus_group, ~corpus_group, add_corpus,
1898 get_corpora, is_empty, get_functions, get_variables,
1899 get_var_symbol_map, get_fun_symbol_map, get_sorted_fun_symbols,
1900 get_sorted_var_symbols, get_unreferenced_function_symbols,
1901 get_unreferenced_variable_symbols}): Define member functions of
1902 the new corpus_group type.
1903
19042017-07-03 Dodji Seketeli <dodji@redhat.com>
1905
1906 Fix some typos in abidiff.cc
1907 * tools/abidiff.cc (main): Fix typos.
1908
19092017-07-03 Dodji Seketeli <dodji@redhat.com>
1910
1911 Avoid comparing kernel.img file from the grub2 package
1912 * default.abignore: Do not compare kernel.img files.
1913
19142017-06-14 Dodji Seketeli <dodji@redhat.com>
1915
1916 Bug 21567 - Fedabipkgdiff matches build distro names too tightly
1917 * tools/fedabipkgdiff (get_distro_from_string): Define new function.
1918 (Brew.get_package_latest_build): Also consider builds which distro
1919 property is less than the expected distro string that we were
1920 given.
1921
19222017-06-14 Sinny Kumari <sinny@redhat.com>
1923
1924 Check if return_codes list is empty in fedabipkgdiff
1925 * tools/fedabipkgdiff (run_abipkgdiff()): Check if
1926 return_codes list is empty
1927
19282017-06-13 Dodji Seketeli <dodji@redhat.com>
1929
1930 Do not forget to erase temporary directories in abipkgdiff
1931 * tools/abipkgdiff.cc (maybe_erase_temp_dirs): Define new static
1932 function.
1933 (compare): Call the new maybe_erase_temp_dirs on all return
1934 points.
1935
19362017-05-11 Ben Woodard <woodard@redhat.com>
1937
1938 Fix more clang build warnings
1939 * include/abg-ini.h (config::section::priv): Make this be a class,
1940 not a struct.
1941 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir)
1942 (build_ir_node_from_die): Add parenthesis around assignment
1943 expressions inside conditional expression.
1944 * src/abg-suppression.cc (read_function_suppression): Likewise.
1945
19462017-05-11 Ben Woodard <woodard@redhat.com>
1947
1948 Fix some clang compile problems
1949 * include/abg-comp-filter.h (class filter_base): Declare this as a
1950 struct.
1951 * include/abg-comparison.h (class filtering::filter_base):
1952 Likewise.
1953 (struct diff_traversable_base): Declare this as a class.
1954 * include/abg-ir.h (function_decl::parameter): Declare this before
1955 using it.
1956 * src/abg-corpus.cc
1957 (corpus::priv::build_unreferenced_symbols_tables): Add missing
1958 parenthesis around assignment expressions inside conditional
1959 expressions.
1960
19612017-05-21 Sinny Kumari <sinny@redhat.com>
1962
1963 Add --self-compare option in fedabipkgdiff
1964 * bash-completion/fedabipkgdiff: Add new option --self-compare
1965 * tests/data/Makefile.am: Add new test file
1966 * tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt:
1967 New reference output for testing ABI comparison on same package
1968 * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
1969 Add test case for --self-compare
1970 * tools/fedabipkgdiff (build_commandline_args_parser()): Add
1971 new option --self-compare
1972 (generate_comparison_halves()): Find second comparision half in same
1973 package list while doing self-compare
1974 (self_compare_rpms_from_distro()): New function to perform ABI
1975 comparision on same pacakge
1976 (main()): Add if condition when --self-compare option is enabled
1977
19782017-03-31 Dodji Seketeli <dodji@redhat.com>
1979
1980 Avoid building DIE -> parent DIE map when analyzing a C binary
1981 * include/abg-ir.h (global_scope_sptr): Make this be a share_ptr
1982 of scope_decl, not of global_scope.
1983 (translation_unit::get_global_scope): Return a reference to
1984 scope_decl_sptr.
1985 * src/abg-ir.cc (translation_unit::get_global_scope): Return a
1986 scope_decl not a global_scope.
1987 * src/abg-dwarf-reader.cc (read_context::nil_scope_): Add new data
1988 member.
1989 (read_context::{global_scope, nil_scope}): Define new member functions.
1990 (read_context::build_die_parent_maps): Do not build the map if we
1991 are looking at a C (or asm) translation unit.
1992 (get_scope_die, get_scope_for_die): If we are looking at a C
1993 translation unit then do return the global scope.
1994
19952017-04-06 Dodji Seketeli <dodji@redhat.com>
1996
1997 Speed up access to the definition of a class declaration-only type
1998 * include/abg-ir.h
1999 (class_or_union::get_naked_definition_of_declaration): Declare a
2000 new member function.
2001 (class_decl::get_naked_definition_of_declaration): Likewise.
2002 * src/abg-ir.cc ({type_decl, qualified_type_def,
2003 array_type_def, enum_type_decl}::operator==): Use the
2004 get_naked_canonical_type and get_naked.
2005 (class_or_union::priv::naked_definition_of_declaration_): Define
2006 new data member.
2007 (class_or_union::priv::priv): Adjust to initialize the new data
2008 member.
2009 (class_or_union::get_naked_definition_of_declaration): Define new
2010 member function.
2011 ({class_or_union, class_decl}::operator==): Use the new
2012 get_naked_definition_of_declaration instead of
2013 get_definition_of_declaration.
2014 (equals): In the overload for class_or_union, do the same.
2015 (class_decl::get_naked_definition_of_declaration): Define new
2016 member function.
2017 (hash_type_or_decl): Likewise.
2018
20192017-04-06 Dodji Seketeli <dodji@redhat.com>
2020
2021 Speedup comparison of decl-only classes
2022 * src/abg-ir.cc (equals): In the overload for class_decl, if we
2023 are looking at a decl-only class, then directly call the equals
2024 function for class_or_union. That one knows how to perform the
2025 comparison without calling the
2026 class_or_union::priv_->comparison_started function, in that case.
2027
20282017-04-04 Dodji Seketeli <dodji@redhat.com>
2029
2030 Update the description of what abipkgdiff does
2031 * tools/abipkgdiff.cc: Update the description of the sequence of
2032 actions performed.
2033
20342017-04-06 Dodji Seketeli <dodji@redhat.com>
2035
2036 Misc cleanups in abg-writer.cc
2037 * src/abg-writer.cc (class write_context): Fix indentation.
2038 (write_location, write_visibility, write_binding)
2039 (write_array_size_and_alignment, write_size_and_alignment): Fix
2040 these declarations to use the *_sptr typedefs rather than the
2041 explicit shared_ptr<*> types.
2042 (write_translation_unit): Fix comment.
2043
20442017-05-10 Dodji Seketeli <dodji@redhat.com>
2045
2046 Don't consider changes to basic types as being redundant
2047 * include/abg-comparison.h (is_diff_of_basic_type)
2048 (has_basic_type_change_only): Declare these functions ...
2049 * src/abg-comparison.cc (is_diff_of_basic_type)
2050 (has_basic_type_change_only): ... and define them.
2051 (redundancy_marking_visitor::visit_begin): Use the new
2052 has_basic_type_change_only.
2053 * tests/data/test-diff-filter/libtest37-v0.so: New binary test input.
2054 * tests/data/test-diff-filter/libtest37-v1.so: Likewise.
2055 * tests/data/test-diff-filter/test37-report-0.txt: New test
2056 reference output.
2057 * tests/data/test-diff-filter/test37-v0.cc: Source code of the new
2058 binary test input.
2059 * tests/data/test-diff-filter/test37-v1.cc: Likewise.
2060 * tests/data/Makefile.am: Update to add the new test material to
2061 the source distribution.
2062 * tests/test-diff-filter.cc (in_out_spec): Add the new test input
2063 to this test harness.
2064
20652017-05-10 Dodji Seketeli <dodji@redhat.com>
2066
2067 Rename fn_parm_diff::get_type_diff into fn_parm_diff::type_diff
2068 * include/abg-comparison.h (fn_parm_diff::type_diff): Renamed
2069 fn_parm_diff::get_type_diff intot his.
2070 * src/abg-comparison.cc (fn_parm_diff::type_diff): Likewise.
2071 (fn_parm_diff::report): Adjust.
2072 (redundancy_marking_visitor::visit_begin): Likewise.
2073 (is_diff_of_variadic_parameter): Likewise.
2074
20752017-05-03 Dodji Seketeli <dodji@redhat.com>
2076
2077 Invalidate function and variable ID cache when invoking ::set_symbol
2078 * src/abg-ir.cc ({function, var}_decl::set_symbol): Invalidate the
2079 ID cache.
2080
20812017-05-03 Dodji Seketeli <dodji@redhat.com>
2082
2083 Remove useless overloads of is_type
2084 * include/abg-fwd.h (is_type): Remove the overloads that take
2085 decl_base and type_base types.
2086 * src/abg-ir.cc (is_type): Likewise.
2087
20882017-05-04 Dodji Seketeli <dodji@redhat.com>
2089
2090 Ensure build_qualified_type can return non-qualified types
2091 * src/abg-dwarf-reader.cc (build_qualified_type): Return a
2092 type_base_sptr.
2093 (build_ir_node_from_die): Adjust the call to build_qualified_type.
2094
20952017-05-04 Dodji Seketeli <dodji@redhat.com>
2096
2097 Fix array subranges (wrongly) having the same lower bound
2098 * src/abg-dwarf-reader.cc (build_subranges_from_array_type_die):
2099 Consider the 'lower_bound' parameter as the default lower bound
2100 for each sub-ranges.
2101
21022017-03-31 Dodji Seketeli <dodji@redhat.com>
2103
2104 Fix buffer overrun in 'equals' function for arrays
2105 * src/abg-ir.cc (equals): In the overload for arrays, check for
2106 the end of the subranges of the two arrays, not just for the first
2107 one.
2108
21092017-04-18 Dodji Seketeli <dodji@redhat.com>
2110
2111 Fix a race condition in queue::priv::do_bring_workers_down
2112 * src/abg-workers.cc (queue::priv::tasks_todo_mutex): Make this
2113 data member mutable.
2114 (more_tasks_to_execute):
2115 (queue::priv::do_bring_workers_down): Update the
2116 queue::priv::bring_workers_down only in the critical section
2117 defined by queue::priv::queue_cond_mutex.
2118 (worker::wait_to_execute_a_task): Testing for
2119 queue::priv::bring_workers_down is done in the critical section
2120 defined by queue::priv::queue_cond_mutex. The loop over waiting
2121 ont the condition is also in the critical section, as it ought to
2122 be.
2123 * tests/test-read-write.cc (struct test_task): New type.
2124 (main): Express in terms of the new test_task type.
2125
21262017-04-12 Ondrej Oprala <ondrej.oprala@gmail.com>
2127
2128 cppcheck: mitigate performance warnings
2129 * include/abg-diff-utils.h (print_snake): pass argument of type
2130 snake by const reference.
2131 * include/abg-ir.h (location::operator{==,<}): Likewise.
2132 * include/abg-viz-dot.h (node_base::{node_base,parent_node,child_node}):
2133 Likewise.
2134 * include/abg-viz-svg.h (svg::svg) Likewise.
2135 * src/abg-config.cc (config::config): Member initialization in ctor body.
2136 * src/abg-dwarf-reader.cc (class_decl_sptr::add_or_update_class_type):
2137 Initial value never used.
2138 * src/abg-ir.cc: (decl_base::priv::priv) Member initialization in ctor body,
2139 pass argument of type location by const reference.
2140 (equals): Variable initial value never used.
2141 * src/abg-reader.cc (read_corpus_from_input): Initial variable
2142 value never used.
2143 (build_elf_symbol_db): Use pre-increment.
2144 * src/abg-suppression-priv.h
2145 (suppression_matches_type_location): Pass argument of type
2146 location by const reference.
2147 * src/abg-suppression.cc: Likewise.
2148
21492017-04-11 Ondrej Oprala <ondrej.oprala@gmail.com>
2150
2151 Fix cppcheck error: "Same iterator is used with different containers"
2152 * src/abg-dwarf-reader.cc
2153 (type_or_decl_base_sptr::lookup_artifact_from_per_tu_die_representation):
2154 Fix an error found by cppcheck.
2155
21562017-04-11 Ondrej Oprala <ondrej.oprala@gmail.com>
2157
2158 Clean up scripts/*
2159 * scripts/dot_to_png.sh: Clean up the script according to
2160 shellcheck warnings and remarks.
2161 * scripts/dot_to_svg.sh: Likewise.
2162 * scripts/svg_to_plain_svg.sh: Likewise.
2163 * scripts/svg_to_png_and_pdf.sh: Likewise.
2164
21652017-04-12 Ondrej Oprala <ondrej.oprala@gmail.com>
2166
2167 Fix comparison used instead of an assignment
2168 * src/abg-ir.cc (parse_integral_type): An attempt at clang
2169 compilation has discovered there to be a comparison with
2170 unused result, that apparently should be an assignment.
2171
21722017-04-12 Dodji Seketeli <dodji@redhat.com>
2173
2174 Fix some random deadlock while running fedabipkgidiff in tests
2175 * tools/fedabipkgdiff (abipkgidff): Do not use Popen.communicate()
2176 as it might hang if the data is large. Rather, busy wait for the
2177 abipkgdiff process to finish and then get its output.
2178
21792017-03-22 Slava Barinov <v.barinov@samsung.com>
2180
2181 Fix types in header to meet sources
2182 * include/abg-fwd.h: Include stdint.h for uint64_t.
2183 (ir::set_data_member_offset): Take uint64_t rather than size_t.
2184 (ir::get_data_member_offset): Return uint64_t rather than size_t.
2185
21862017-03-24 Dodji Seketeli <dodji@redhat.com>
2187
2188 Launch fedabipkgdiff tests first
2189 * tests/Makefile.am: Run the fedabipkgdiff test first.
2190
21912017-03-24 Dodji Seketeli <dodji@redhat.com>
2192
2193 Bug 21296 - Reporting diff of const ref against non-const ref aborts
2194 * include/abg-fwd.h (look_through_no_op_qualified_type): Declare
2195 new function.
2196 * src/abg-ir.cc (look_through_no_op_qualified_type): Define it.
2197 (compute_diff_for_types): Use the new
2198 look_through_no_op_qualified_type here rather than open-coding it.
2199 (equals): In the overload for function_decl::parameter, use the
2200 new look_through_no_op_qualified_type function.
2201 * tests/data/test-diff-dwarf/test40-PR21296-clanggcc.cc: Source
2202 code of the new test inputs.
2203 * tests/data/test-diff-dwarf/test40-PR21296-clanggcc-report0.txt:
2204 New test input.
2205 * tests/data/test-diff-dwarf/test40-PR21296-libgcc.so: New binary
2206 test input.
2207 * tests/data/test-diff-dwarf/test40-PR21296-libclang.so: Likewise.
2208 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs to
2209 the test harness.
2210
22112017-03-05 Chenxiong Qi <cqi@redhat.com>
2212
2213 Bug 20087 - Clean cache before or after ABI comparison
2214 * configure.ac: Require shutil module.
2215 * doc/manuals/fedabipkgdiff.rst: Add document for new option
2216 clean-cache, clean-cache-before, and clean-cache-after.
2217 * tools/fedabipkgdiff (build_commandline_args_parser): Add new
2218 option --clean-cache, --clean-cache-before and
2219 --clean-cache-after.
2220 (diff_local_rpm_with_latest_rpm_from_koji): Delete download
2221 cache directory before or after downloading RPMs.
2222 (diff_latest_rpms_based_on_distros): Likewise.
2223 (diff_two_nvras_from_koji): Likewise.
2224 (diff_from_two_rpm_files): Likewise.
2225 * bash-completion/fedabipkgdiff: Add new options.
2226 * tests/mockfedabipkgdiff.in (get_download_dir): Rewrite to
2227 behave just like the original get_download_dir.
2228 (mock_get_download_dir): Removed.
2229 (DOWNLOAD_CACHE_DIR): New global variable pointing directory
2230 holding packages during tests.
2231 (run_fedabipkgdiff): Mock original get_download_dir with the
2232 rewrite get_download_dir.
2233 * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests):
2234 Add --clean-cache to run tests to ensure no regression.
2235
22362017-03-17 Dodji Seketeli <dodji@redhat.com>
2237
2238 Shut down a helgrind false positive in the "system" libc call
2239 * tests/test-valgrind-suppressions.supp: Add a suppression that
2240 occurs during an internal libc signal handling occasion.
2241
22422017-03-15 Dodji Seketeli <dodji@redhat.com>
2243
2244 Fix data race on worker::queue::priv::bring_workers_down
2245 * src/abg-workers.cc (worker::wait_to_execute_a_task): Protect the
2246 read of the queue::priv::bring_workers_down down variable with the
2247 queue::priv::tasks_todo_mutex.
2248
22492017-03-07 Dodji Seketeli <dodji@redhat.com>
2250
2251 Bug 21228 - Handle cloning union member functions
2252 * include/abg-ir.h (class_or_union::add_member_function): Move the
2253 class_decl::add_member_function overload declaration into the
2254 class class_or_union class.
2255 (class class_decl): Make the class class_or_union be a friend of
2256 class_decl.
2257 * src/abg-ir.cc (class_decl::add_member_function): Transform the
2258 definition of this overload into ...
2259 (class_or_union::add_member_function): ... this one. Make sure
2260 that when setting the virtual-ness attributes of the member
2261 function, we are effectively looking at the a function that is a
2262 member of a class.
2263 (function_decl::clone): Do not assert that a member function is
2264 necessarily a member of a class_decl. It can also a member of a
2265 union_decl!. So, rather, assert that the scope of the member
2266 function is of type class_or_union.
2267 * tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64.rpm:
2268 New test input RPM.
2269 * tests/data/test-diff-pkg/tbb-2017-9.20170118.fc27.x86_64.rpm:
2270 * tests/data/test-diff-pkg/tbb-debuginfo-2017-8.20161128.fc26.x86_64.rpm:
2271 Likewise.
2272 * tests/data/test-diff-pkg/tbb-debuginfo-2017-9.20170118.fc27.x86_64.rpm:
2273 Likewise.
2274 * tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64--tbb-2017-9.20170118.fc27.x86_64.txt:
2275 New reference test output.
2276 * tests/data/Makefile.am: Add the new test input RPMs to the
2277 source distribution.
2278 * tests/test-diff-pkg.cc (in_out_specs): Take the new input tests
2279 above into account.
2280
22812017-03-03 Dodji Seketeli <dodji@redhat.com>
2282
2283 Consider file path when sorting virtual member functions
2284 * src/abg-ir.cc (virtual_member_function_less_than::operator()):
2285 Take the file path into account in the sorting.
2286 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
2287 Adjust.
2288
22892017-03-03 Dodji Seketeli <dodji@redhat.com>
2290
2291 Fix virtual members sorting to unbreak the build on EL6
2292 * src/abg-ir.cc (virtual_member_function_less_than::operator()):
2293 Update comment. When two virtual functions have the same virtual
2294 index and one of them has no ELF symbol, then that function is
2295 less than the one with an ELF symbol.
2296 * tests/data/Makefile.am: Remove
2297 test-annotate/{test9-pr18818-clang.so.abi, test11-pr18828.so.abi,
2298 test12-pr18844.so.abi, test16-pr18904.so.abi,
2299 test22-pr19097-libstdc++.so.6.0.17.so.abi}.
2300 * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Remove.
2301 * tests/data/test-annotate/test11-pr18828.so.abi: Likewise.
2302 * tests/data/test-annotate/test12-pr18844.so.abi: Likewise.
2303 * tests/data/test-annotate/test16-pr18904.so.abi: Likewise.
2304 * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi:
2305 Likewise.
2306 * tests/test-annotate.cc (in_out_specs): Remove those tests above
2307 which input files have been removed.
2308
23092017-03-02 Dodji Seketeli <dodji@redhat.com>
2310
2311 Make Helgrind suppressions less specific to libgcc_s version
2312 * tests/test-valgrind-suppressions.supp: Make Helgrind
2313 suppressions less specific to libgcc_s version.
2314
23152017-03-02 Dodji Seketeli <dodji@redhat.com>
2316
2317 More Helgrind suppressions
2318 * tests/test-valgrind-suppressions.supp: More specific suppressions.
2319
23202017-03-02 Dodji Seketeli <dodji@redhat.com>
2321
2322 Silence Helgrind reports about exception stack unwinding
2323 * tests/test-valgrind-suppressions.supp: Silence Helgrind reports
2324 about exception stack unwinding.
2325
23262017-03-01 Dodji Seketeli <dodji@redhat.com>
2327
2328 Make the helgrind suppressions less specific
2329 * tests/test-valgrind-suppressions.supp: Make the ostream writting
2330 suppressions be less specific so that they can apply to all the
2331 related false positives.
2332
23332017-03-01 Dodji Seketeli <dodji@redhat.com>
2334
2335 Move test-read-dwarf.cc to abigail::workers
2336 * tests/test-read-dwarf.cc (iospec, spec_lock, write_lock)
2337 (out_abi_base, in_elf_base, in_abi_base): Remove these global
2338 variables.
2339 (handle_in_out_spec): Remove this.
2340 (struct test_task): Write this task that does what
2341 handle_in_out_spec was doing.
2342 (test_task_sptr): Define new typedef.
2343 (main): Remove the pthreads artifacts. Use the new test_task type
2344 along with the abigail::workers interface.
2345 * tests/test-valgrind-suppressions.supp: Add more helgrind
2346 suppressions for ostream writting false positives.
2347
23482017-02-28 Dodji Seketeli <dodji@redhat.com>
2349
2350 Display the command that failed the runtestfedabipkgdiff.py test
2351 * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): When
2352 A test fails, display the fedabipkgdiff command that triggered the failure.
2353
23542017-02-24 Dodji Seketeli <dodji@redhat.com>
2355
2356 Make abipkgdiff.cc use the abigail::workers interface
2357 * tools/abipkgdiff.cc: Remove ftw.h, pthread.h, unistd.h, add
2358 fts.h and abg-workers.h.
2359 (verbose, elf_file_paths_tls_key, reports_map, env_map, map_lock)
2360 (arg_lock, prog_options): Remove all these global variables.
2361 (struct package_descriptor): Remove this type.
2362 (pthread_routine_extract_package)
2363 (first_package_tree_walker_callback_fn)
2364 (second_package_tree_walker_callback_fn, pthread_routine_compare)
2365 (pthread_join, pthread_routine_extract_pkg_and_map_its_content):
2366 Remove these functions.
2367 (options::{num_workers, verbose}): Define new data members.
2368 (options::options): Initialize the new verbose and num_workers data members.
2369 (package::erase_extraction_directory)
2370 (erase_created_temporary_directories_parent): Take the program
2371 options in parameter. Don't use the global verbose variable
2372 anymore.
2373 (package::erase_extraction_directories)
2374 (erase_created_temporary_directories, extract_package): Take the
2375 program options in parameter.
2376 (extract_rpm, extract_deb, extract_tar): Likewise. And don't use
2377 the global verbose variable anymore.
2378 (compare): Don't use the global verbose variable anymore. Use the
2379 new compare_task type along with the abigail::workers::queue type.
2380 (pkg_extraction_task, pkg_prepare_task, compare_task)
2381 (comparison_done_notify): Define new classes.
2382 (maybe_update_vector_of_package_content): Define new static
2383 function.
2384 (create_maps_of_package_content): Don't take the ftw_cp_type
2385 anymore. Don't use the global verbose variable anymore. Use the
2386 fts_{open,read,close} functions, rather than the ftw one.
2387 (extract_package_and_map_its_content): Don't use pthreads anymore.
2388 Use the new pkg_extraction_task type created along with the
2389 abigail::workers::queue type.
2390 (prepare_packages): Don't use pthreads anymore. Use the new
2391 pkg_prepare_task type along with the abigail::workers::queue type.
2392 (elf_size_is_greater): Adjust to use
2393 abigail::workers::queue::tasks, rather than the previous
2394 compaer_args_sptr type.
2395 (parse_command_line): Adjust to stop using the global verbose
2396 variable.
2397 (main): Remove use of global variables prog_options and also the
2398 packages variable.
2399 * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
2400 Adjust.
2401 * tests/data/test-diff-pkg/dirpkg-0-report-0.txt: Likewise.
2402 * tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt:
2403 Likewise.
2404 * tests/data/test-diff-pkg/test-rpm-report-0.txt: Likewise.
2405 * tests/data/test-diff-pkg/test-rpm-report-1.txt: Likewise.
2406 * tests/data/test-diff-pkg/test-rpm-report-2.txt: Likewise.
2407 * tests/data/test-diff-pkg/test-rpm-report-3.txt: Likewise.
2408 * tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt:
2409 Likewise.
2410 * tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt:
2411 Likewise.
2412 * tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt:
2413 Likewise.
2414 * tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt:
2415 Likewise.
2416 * 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:
2417 Likewise.
2418
24192017-02-24 Dodji Seketeli <dodji@redhat.com>
2420
2421 Do not ignore valgrind checks returning an error
2422 * autoconf-archive/ax_valgrind_check.m4 (check-valgrind): Don't
2423 ignore errors.
2424
24252017-02-24 Dodji Seketeli <dodji@redhat.com>
2426
2427 Add a "make check-valgrind-helgrind-recursive" target
2428 * tests/Makefile.am (check-valgrind-helgrind-recursive): New
2429 target to run the tests recursively under the control of
2430 Valgrind's Helgrind tool.
2431 * tests/test-valgrind-suppressions.supp: Update this suppression
2432 file with suppressions for Helgrind.
2433
24342017-02-24 Dodji Seketeli <dodji@redhat.com>
2435
2436 Several fixes and enhancements to abigail::workers
2437 * Don't try to schedule a task if the pointer to the task is nil
2438 * Fix a data race when bringing workers (of a queue) down
2439 * Always try to wake up all waiting threads when bringing down queue
2440 workers.
2441 * Fix a data race when accessing the queue condition variable
2442 * Fix a data race when notifying listeners about the end of the job
2443 performed by the task.
2444 Enhancements
2445 ============
2446 * Pass the "task done" notifier by reference, to the worker queue.
2447 Without this, the worker queue needs to copy the "task done" notifier
2448 by value. This implies that user code needs to provide task done
2449 notifier instances that come with potentially complicated copy
2450 constructors. By passing it by reference and by just re-using the
2451 notifier from the user code, we do away with the need for copying
2452 altogether. This also fixes some latent copying bugs.
2453 * Add a workers::queue::schedule_tasks() method
2454 This allows user code to schedule a vector of tasks at once.
2455 * make workers::queue::get_completed_tasks() return a non-const vector
2456 This enables user code to sort the completed tasks as they wish.
2457 * include/abg-workers.h (queue::tasks_type): New typedef.
2458 (queue::queue): Pass task_done_notify by reference.
2459 (queue::schedule_tasks): Declare new member function.
2460 (queue::get_completed_tasks): Return non-const vector.
2461 * src/abg-workers.cc (queue::priv::default_notify): New data
2462 member.
2463 (queue::priv::notify): Make this data member be a reference.
2464 (queue::priv::priv): Initialize the notify data member to either
2465 the new default_notify (if no notifier is provided by the
2466 constructor) or to the notifier provided by the constructor.
2467 (queue::priv::schedule_task): Do not schedule a nil task. Update
2468 comment.
2469 (queue::priv::schedule_tasks): Add a new member function.
2470 (queue::priv::do_bring_workers_down): Update comment. Protect
2471 access to "bring_workers_down" with tasks_todo_mutex to prevent a
2472 data race. Call pthread_cond_broadcast on the queue_cond
2473 unconditionaly to prevent some worker threads to keep waiting for
2474 ever. Also, protect the access to the queue_cond by the
2475 queue_cond_mutex to precent a data race.
2476 (queue::queue): Pass the notifier by reference. Update comment.
2477 (queue::schedule_task): Update comment.
2478 (queue::schedule_tasks): Define new member function.
2479 (queue::wait_for_workers_to_complete): Update comment.
2480 (queue::get_completed_tasks): Return a non-const vector. Update
2481 comment.
2482 (worker::wait_to_execute_a_task): Update several comments. Make
2483 the execution of the notification code to be synchronized (on the
2484 tasks_done_mutex).
2485
24862017-02-14 Dodji Seketeli <dodji@redhat.com>
2487
2488 Fix typo in help string of abipkgdiff
2489 * tools/abipkgdiff.cc (display_usage): Remove erroneous end line.
2490
24912017-01-23 Dodji Seketeli <dodji@redhat.com>
2492
2493 fedabipkgdiff refuses to compare packages with the same release number
2494 * tools/fedabipkgdiff (RPM.is_peer): Update comment. Fix logic.
2495 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-0.39.1-1.fc22.x86_64.rpm:
2496 New test input file.
2497 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-debuginfo-0.39.1-1.fc22.x86_64.rpm: Likewise.
2498 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-devel-0.39.1-1.fc22.x86_64.rpm: Likewise.
2499 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-0.39.90-1.fc22.x86_64.rpm: Likewise.
2500 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-debuginfo-0.39.90-1.fc22.x86_64.rpm: Likewise.
2501 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-devel-0.39.90-1.fc22.x86_64.rpm:
2502 Likewise.
2503 * tests/data/test-fedabipkgdiff/vte291-0.39.1-1.fc22.x86_64--vte291-0.39.90-1.fc22.x86_64-report-0.txt: Likewise.
2504 * tests/data/Makefile.am: Add the new test input data to source
2505 distribution.
2506 * tests/mockfedabipkgdiff.in: Update the package and build
2507 information to add the new vte291-0.39.1-1.fc22.x86_64.rpm and
2508 vte291-0.39.90-1.fc22.x86_64.rpm packages (as well as their devel
2509 and debuginfo packages) into the "mock" Koji build database.
2510 * tests/runtestfedabipkgdiff.py.in: Make this test harness run
2511 over the two aforementioned packages.
2512
25132017-01-24 Dodji Seketeli <dodji@redhat.com>
2514
2515 Add missing tests input files to distribution files
2516 * tests/data/Makefile.am: Add three missing test input files to
2517 the source distribution tarball. Renamed
2518 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
2519 into
2520 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.
2521 * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
2522 Renamed
2523 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
2524 into
2525 test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt.
2526
25272017-01-24 Dodji Seketeli <dodji@redhat.com>
2528
2529 Add missing new line to an error message of runtestfedabipkgdiff.py
2530 * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): Add
2531 missing new line to an error message.
2532
25332017-01-24 Dodji Seketeli <dodji@redhat.com>
2534
2535 Fix silent failure of tests/runtestfedabipkgdiff.py
2536 * tests/mockfedabipkgdiff.in (run_fedabipkgdiff): Patch
2537 fedabipkgdiff.DEFAULT_KOJI_TOPURL instead of
2538 fedabipkgdiff.DEFAULT_KOJI_TOPDIR.
2539 * tests/runtestfedabipkgdiff.py.in (main): Properly return 0 upon
2540 success, 1 otherwise.
2541
25422017-01-14 Dodji Seketeli <dodji@redhat.com>
2543
2544 Misc style fixes
2545 * include/abg-ir.h (class_or_union): Fix indentation.
2546 * src/abg-dwarf-reader.cc (get_die_pretty_representation): Add new
2547 line.
2548 * src/abg-ir.cc (struct class_decl::priv): Fix indentation.
2549 (virtual_member_function_less_than::operator()): Fix a typo in a
2550 comment.
2551
25522017-01-13 Dodji Seketeli <dodji@redhat.com>
2553
2554 Bug 20476 - Compare virtual member functions when comparing classes
2555 * include/abg-ir.h (class_decl::get_biggest_vtable_offset):
2556 Declare new member function.
2557 * src/abg-ir.cc (virtual_member_function_less_than::operator()):
2558 Either compare the symbol id strings if the functions have
2559 symbols or just compare their pretty representations.
2560 (class_decl::get_biggest_vtable_offset): Define new member
2561 function.
2562 (methods_equal_modulo_elf_symbol)
2563 (method_matches_at_least_one_in_vector): New static methods.
2564 (equals): In the overload for classes, compare the virtual member
2565 functions while comparing classes.
2566 * src/abg-comparison.cc (represent): In the overload for
2567 method_decl_sptr, fix the way we compute the highest vtable offset
2568 number for a give class_decl.
2569 (class_decl::ensure_lookup_tables_populated): Don't forget added
2570 and removed virtual member functions in the report for changed
2571 classes.
2572 * tests/data/test-diff-dwarf/libtest41-PR20476-hidden-old.so: New
2573 test binary input file.
2574 * tests/data/test-diff-dwarf/libtest41-PR20476-hidden-new.so: Likewise.
2575 * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt:
2576 New reference output.
2577 * tests/data/Makefile.am: Add the new test material above to the
2578 source distribution.
2579 * tests/test-diff-dwarf.cc (in_out_spec): Add the new tests
2580 here.
2581 * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Adjust.
2582 * tests/data/test-annotate/test11-pr18828.so.abi: Adjust.
2583 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
2584 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust.
2585 * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
2586 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
2587 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
2588 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
2589 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
2590 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
2591 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
2592 Adjust.
2593 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
2594 Adjust.
2595 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
2596 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
2597 Adjust.
2598
25992017-02-14 Dodji Seketeli <dodji@redhat.com>
2600
2601 Fix indentation in src/abg-writer.cc
2602 * src/abg-writer.cc (annotate): Fix indentation.
2603
26042017-02-13 Dodji Seketeli <dodji@redhat.com>
2605
2606 Adjust reference output of test-annotate
2607 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust this
2608 reference output.
2609
26102017-02-13 Dodji Seketeli <dodji@redhat.com>
2611
2612 Fix help string for --header-dirs
2613 * tools/abidw.cc (display_usage): Fix patch -> path typo.
2614
26152017-02-13 Dodji Seketeli <dodji@redhat.com>
2616
2617 Make abidw --headers-dir work with the --out-file option
2618 * tools/abidw.cc (parse_command_line): Don't require an empty
2619 output file when parsing the --headers-dir option. This was a
2620 thinko.
2621
26222017-01-17 Ondrej Oprala <ondrej.oprala@gmail.com>
2623
2624 Bug 20970 - Add a --annotate option to abidw
2625 * doc/manuals/abidiff.rst: Document the '--no-corpus-path'
2626 option.
2627 * doc/manuals/abidw.rst: Document the '--no-corpus-path'
2628 and '--annotate' options.
2629 * include/abg-libxml-utils.h ({un,}escape_xml_comment): Add
2630 new function declarations.
2631 * include/abg-writer.h: Add new annotate functions
2632 (write_{translation_unit,corpus_to_{archive,native_xml_file}}):
2633 Add an optional "annotate" parameter defaulting to "false".
2634 * src/abg-libxml-utils.cc ({un,}escape_xml_comment): Add
2635 new function definitions.
2636 * src/abg-writer.cc (annotate): Define new templatized function
2637 and specialize it for necessary cases.
2638 * tests/Makefile.am: Add runtestannotate as a new test.
2639 * tests/data/Makefile.am: Add paths to below reference test
2640 outputs.
2641 * tests/data/test-annotate/libtest23.so.abi: New reference test
2642 output.
2643 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
2644 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
2645 * tests/data/test-annotate/test0.abi: Likewise.
2646 * tests/data/test-annotate/test1.abi: Likewise.
2647 * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Likewise.
2648 * tests/data/test-annotate/test11-pr18828.so.abi: Likewise.
2649 * tests/data/test-annotate/test12-pr18844.so.abi: Likewise.
2650 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
2651 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
2652 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
2653 * tests/data/test-annotate/test16-pr18904.so.abi: Likewise.
2654 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
2655 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
2656 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
2657 * tests/data/test-annotate/test2.so.abi: Likewise.
2658 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
2659 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
2660 * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
2661 * tests/data/test-annotate/test3.so.abi: Likewise.
2662 * tests/data/test-annotate/test4.so.abi: Likewise.
2663 * tests/data/test-annotate/test5.o.abi: Likewise.
2664 * tests/data/test-annotate/test6.so.abi: Likewise.
2665 * tests/data/test-annotate/test7.so.abi: Likewise.
2666 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
2667 * tests/data/test-annotate/test9-pr18818-clang.so.abi: Likewise.
2668 * tests/test-annotate.cc: New test for ABIXML annotations.
2669 * tools/abidiff.cc: Add the new option '--no-corpus-path'.
2670 * tools/abidw.cc: Likewise. Also add the '--annotate' option.
2671 reviews round 1
2672
26732017-01-20 Dodji Seketeli <dodji@redhat.com>
2674
2675 Fix test-diff-pkg after commit 2dcc606
2676 * tests/test-diff-pkg.cc (in_out_specs): Fix paths to spice-server
2677 packages.
2678
26792017-01-20 Dodji Seketeli <dodji@redhat.com>
2680
2681 Add --harmless option to abipkgdiff
2682 * doc/manuals/abidiff.rst: Fix a typo.
2683 * doc/manuals/abipkgdiff.rst: Document the --harmless option.
2684 * tools/abipkgdiff.cc: Update copyright year.
2685 (options::show_harmless_changes): Add new data member.
2686 (options::options): Initialize the new data member.
2687 (display_usage): Add a help string for the new --harmless option.
2688 (parse_command_line): Parse the new --harmless option.
2689 (set_diff_context_from_opts): Configure the diff context
2690 accordingly, if the user provided the --harmless option.
2691
26922017-01-20 Dodji Seketeli <dodji@redhat.com>
2693
2694 Fix suppression category propagation in diff node graph
2695 * include/abg-comparison.h (diff::get_class_of_equiv_category):
2696 Declare new member function.
2697 * src/abg-comparison.cc: Update copyright year.
2698 (diff::get_class_of_equiv_category): Define new member function.
2699 (suppression_categorization_visitor::visit_end): When considering
2700 children nodes category for propagation, consider the category of
2701 the class of equivalence of children nodes.
2702 * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package.
2703 * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise.
2704 * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise.
2705 * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise.
2706 * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise.
2707 * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise.
2708 * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
2709 New reference test output.
2710 * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise.
2711 * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.
2712 * tests/data/Makefile.am: Add the new test material above to
2713 source distribution.
2714 * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
2715 to the list of packages to test.
2716
27172017-01-18 Dodji Seketeli <dodji@redhat.com>
2718
2719 Bug 21058 - abipkgdiff wrongly drops non-public types
2720 * doc/manuals/abidiff.rst (--dont-drop-private-types): Remove documentation.
2721 (--drop-private-types): Document this new option.
2722 * src/abg-tools-utils.cc: Update copyright notice
2723 (handle_fts_entry): On the generated suppression specification, do
2724 not set the flag to drop matched types. Also, don't match types
2725 defined in files which patch start with "/usr/include/".
2726 * tools/abidiff.cc (options::options): Initialize the
2727 drop_private_types data member to false.
2728 (display_usage): Remove usage string for
2729 --dont-drop-private-types. Add a new one for
2730 --drop-private-types.
2731 (parse_command_line): Don't part --dont-drop-private-types,
2732 rather, parse --drop-private-types.
2733 (set_suppressions): When the suppression for private types is
2734 generated, if --drop-private-types was provided, then instruct the
2735 suppression to drop matched types.
2736 * tools/abipkgdiff.cc (options::drop_private_types): New option.
2737 (options::options): Initialize the new drop_private_types data
2738 member to false.
2739 (display_usage): Add a usage string for --drop-private-types.
2740 (parse_command_line): Parse the new --drop-private-types option.
2741 (maybe_create_private_types_suppressions): Don't take just a
2742 package, but a package_descriptor because the latter carries the
2743 options. So when the user used the --drop-private-types option,
2744 make the generated private types suppression to drop matched
2745 types.
2746 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
2747 Adjust.
2748 * tests/test-diff-suppr.cc (in_out_specs): Likewise.
2749
27502017-01-18 Dodji Seketeli <dodji@redhat.com>
2751
2752 Fix some include logic in abg-suppression.cc
2753 * src/abg-suppression.cc: Update copyright notice. Fix include
2754 files logic.
2755
27562017-01-16 Dodji Seketeli <dodji@redhat.com>
2757
2758 Support virtual member functions with vtable offset not yet set
2759 * include/abg-fwd.h (member_function_has_vtable_offset): Declare
2760 new function.
2761 (get_member_function_vtable_offset): Return a ssize_t, not a
2762 size_t.
2763 (set_member_function_vtable_offset): Take a ssize_t, not a size_t.
2764 * include/abg-ir.h (class_decl::virtual_mem_fn_map_type): Adjust
2765 the map typedef to make it take ssize_t as the type of the key.
2766 (mem_fn_context_rel::vtable_offset_in_bits_): Make this data
2767 member be of ssize_t type, not size_t.
2768 (mem_fn_context_rel::mem_fn_context_rel): Initialize the
2769 vtable_offset_in_bits_ data member to -1.
2770 * src/abg-ir.cc (member_function_has_vtable_offset): Define new
2771 function.
2772 (get_member_function_vtable_offset): Return a ssize_t, not a
2773 size_t.
2774 (set_member_function_vtable_offset): Take a ssize_t, not a size_t.
2775 * src/abg-dwarf-reader.cc (die_virtual_function_index): Take an
2776 int64_t& rather than a uint64_t&.
2777 (finish_member_function_reading): Don't set the vtable offset if
2778 it's -1.
2779 * src/abg-reader.cc (build_class_decl): Likewise.
2780
27812017-01-14 Dodji Seketeli <dodji@redhat.com>
2782
2783 [comparison engine] Don't crash when the context is null
2784 * src/abg-comparison.cc
2785 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER): Guard against
2786 null context.
2787 (diff::is_filtered_out): Likewise.
2788
27892017-01-14 Dodji Seketeli <dodji@redhat.com>
2790
2791 [dwarf reader] Don't abort when trying to canonicalize a non-type
2792 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Don't abort
2793 when trying to canonicalize a decl.
2794
27952017-01-14 Dodji Seketeli <dodji@redhat.com>
2796
2797 [dwarf reader] properly separate function decls and types in lookup
2798 * src/abg-dwarf-reader.cc
2799 (read_context::associate_die_to_artifact_by_repr_internal):
2800 Choose the right type of representation depending on if we are
2801 associating a type or a decl.
2802 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
2803 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
2804 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
2805 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
2806 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
2807 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
2808 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
2809 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
2810 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
2811 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
2812 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
2813 Adjust.
2814 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
2815 Adjust.
2816 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
2817 Adjust.
2818 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
2819 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
2820 Adjust.
2821 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
2822
28232017-01-14 Dodji Seketeli <dodji@redhat.com>
2824
2825 [dwarf reader] Allow updating and de-duplicating member functions
2826 * src/abg-dwarf-reader.cc (add_or_update_class_type): Register
2827 member functions for lookup by member function DIE representation.
2828
28292017-01-14 Dodji Seketeli <dodji@redhat.com>
2830
2831 [dwarf reader] Do not over de-duplicate function *definitions*
2832 * src/abg-dwarf-reader.cc
2833 (build_or_get_fn_decl_if_not_suppressed): Do try to de-duplicate a
2834 function if it's to be completed.
2835
28362017-01-13 Dodji Seketeli <dodji@redhat.com>
2837
2838 [dwarf reader] Fix pretty printing static methods from DWARF
2839 * src/abg-dwarf-reader.cc
2840 (die_return_and_parm_names_from_fn_type_die): Take a new
2841 'is_static' parameter.
2842 (die_qualified_type_name, die_pretty_print_type): Adjust calling
2843 die_return_and_parm_names_from_fn_type_die.
2844 (die_function_signature): Likewise. Also, do not forget to print
2845 the first parameter for a static method.
2846
28472017-01-13 Dodji Seketeli <dodji@redhat.com>
2848
2849 Handle several virtual member functions having the same vtable offset
2850 * include/abg-ir.h (class_or_union::virtual_mem_fn_map_type):
2851 Define new typedef.
2852 (class_decl::get_virtual_mem_fns_map): Declare new accessor.
2853 * src/abg-ir.cc (class_decl::priv::virtual_mem_fns_map_): New data
2854 member.
2855 (class_decl::get_virtual_mem_fns_map): Define new accessor.
2856 (fixup_virtual_member_function): Populate the new virtual member
2857 functions map.
2858 (class_decl::on_canonical_type_set): Sort the virtual member
2859 function vectors stored in the new virtual member functions map.
2860 (class_decl::add_member_function): Call
2861 set_member_function_is_virtual *after* calling
2862 set_member_function_vtable_offset because the former updates the
2863 virtual function map, so it needs the vtable offset.
2864 * src/abg-dwarf-reader.cc (finish_member_function_reading):
2865 Likewise.
2866 * src/abg-reader.cc (build_class_decl): Likewise.
2867
28682017-01-13 Dodji Seketeli <dodji@redhat.com>
2869
2870 Speed up pretty representing (function) types
2871 * include/abg-ir.h (type_base::get_cached_pretty_representation):
2872 Declare new function.
2873 (function_type::get_cached_name): Likewise.
2874 * src/abg-ir.cc (get_method_type_name): Use the new
2875 type_base::get_cached_pretty_representation function.
2876 (type_base::priv::{internal_cached_repr_, cached_repr_}): Add new
2877 data members.
2878 (function_type::priv::{internal_cached_name_, cached_name_}):
2879 Likewise.
2880 (type_base::get_cached_pretty_representation): Define new
2881 function.
2882 (function_type::get_cached_name): Likewise.
2883 (type_base::get_canonical_type_for): Call
2884 type_base::get_cached_pretty_representation here, so the internal
2885 representation is cached right before canonicalization.
2886 (function_type::{mark_as_being_compared, unmark_as_being_compared,
2887 comparison_started}): Uset he new type_base::get_cached_name to
2888 speed up function type name retrieval.
2889
28902017-01-13 Dodji Seketeli <dodji@redhat.com>
2891
2892 Add missing deep comparison operators for {function, method}_decl_sptr
2893 * include/abg-ir.h (operator==): Declare two new overloads for
2894 function_decl_sptr an method_decl_sptr.
2895 * src/abg-ir.cc (operator==): Define two new overloads for
2896 function_decl_sptr an method_decl_sptr.
2897
28982017-01-16 Dodji Seketeli <dodji@redhat.com>
2899
2900 Fix performance regression while analyzing libjvm.so
2901 * include/abg-ir.h ({type_base,
2902 class_decl}::on_canonical_type_set): Declare new virtual member
2903 function.
2904 * src/abg-ir.cc (type_base::on_canonical_type_set): Define new
2905 virtual member function that does nothing.
2906 (class_decl::on_canonical_type_set): Define new virtual member
2907 function that sorts the virtual member functions of class_decl.
2908 (canonicalize): Invoke type_base::on_canonical_type_set when the
2909 canonical type is set.
2910 (fixup_virtual_member_function): Don't sort virtual member
2911 functions here.
2912 * src/abg-dwarf-reader.cc (finish_member_function_reading): Do not
2913 sort virtual member functions here.
2914 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
2915 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
2916 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
2917 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
2918 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust.
2919
29202017-01-14 Dodji Seketeli <dodji@redhat.com>
2921
2922 Update copyright notice for abg-fwd.h, abg-ir.h and test-abidiff.cc
2923 * include/abg-fwd.h: Adjust copyright.
2924 * include/abg-ir.h: Likewise.
2925 * tests/test-abidiff.cc: Likewise.
2926
29272017-01-16 Dodji Seketeli <dodji@redhat.com>
2928
2929 Remove unused functions from abg-ir.cc
2930 * src/abg-ir.cc (convert_node_to_decl): Remove specializations for
2931 class_decl_sptr, type_base_sptr and var_decl_sptr.
2932
29332016-11-10 Dodji Seketeli <dodji@redhat.com>
2934
2935 Support Linux Kernel ABI whitelist files
2936 * include/abg-suppression.h
2937 (function_suppression::function_suppression): Make the declaration
2938 of the default constructor public.
2939 * src/abg-suppression-priv.h (function_suppression::priv::priv):
2940 Declare a default constructor.
2941 * src/abg-suppression.cc
2942 (function_suppression::function_suppression): Define default
2943 constructor.
2944 * include/abg-tools-utils.h
2945 (gen_suppr_spec_from_kernel_abi_whitelist): Declare new function.
2946 * src/abg-tools-utils.cc
2947 (gen_suppr_spec_from_kernel_abi_whitelist): Define new function.
2948 * tools/abidiff.cc (options::kernel_abi_whitelist_paths):
2949 (display_usage): Display a help string for the new
2950 --linux-kernel-abi-whitelist option.
2951 (parse_command_line): Parse the --linux-kernel-abi-whitelist from
2952 the command line.
2953 (maybe_check_suppression_files): Check the presence of the kernel
2954 abi whitelist files.
2955 (set_suppressions): Generate suppression specifications from the
2956 whitelist files.
2957
29582016-10-10 Dodji Seketeli <dodji@redhat.com>
2959
2960 Support Linux Kernel binaries
2961 * include/abg-dwarf-reader.h (create_read_context): Take a new
2962 flag to say if the context is to read an ELF binary in linux
2963 kernel mode.
2964 * src/abg-dwarf-reader.cc (typedef address_set_type)
2965 (address_set_sptr): New typedefs.
2966 (get_binary_load_address): The load address of the binary is
2967 the load address specified by the program header that is at the
2968 smallest offset; not by the program header that is at offset zero.
2969 (read_context::{ksymtab_section_, ksymtab_gpl_section_,
2970 linux_exported_fn_syms_, linux_exported_var_syms_,
2971 linux_exported_gpl_fn_syms_, linux_exported_gpl_var_syms_,
2972 load_in_linux_kernel_mode_}): New data members.
2973 (read_context::read_context): Initialize ksymtab_section_,
2974 ksymtab_gpl_section_ and load_in_linux_kernel_mode_.
2975 (read_context::{find_symbol_table_section, find_opd_section,
2976 lookup_elf_fn_symbol_from_address,
2977 lookup_elf_var_symbol_from_address, get_function_address,
2978 get_variable_address}): Make these const.
2979 (read_context::{find_ksymtab_section, find_ksymtab_gpl_section,
2980 lookup_elf_symbol_from_address, function_symbol_is_exported,
2981 variable_symbol_is_exported, linux_exported_fn_syms,
2982 create_or_get_linux_exported_fn_syms, linux_exported_var_syms,
2983 create_or_get_linux_exported_var_syms, linux_exported_gpl_fn_syms,
2984 linux_exported_gpl_var_syms,
2985 create_or_get_linux_exported_gpl_fn_syms,
2986 linux_exported_gpl_var_syms,
2987 create_or_get_linux_exported_gpl_var_syms, architecture_word_size,
2988 load_kernel_symbol_table, load_ksymtab_symbols,
2989 load_ksymtab_gpl_symbols,
2990 load_linux_specific_exported_symbol_maps,
2991 load_in_linux_kernel_mode}): New member functions.
2992 (read_context::read_int_from_array_of_bytes): Factorize this
2993 new member function out of ...
2994 (read_context::{lookup_ppc64_elf_fn_entry_point_address}):
2995 ... this. Make this function const too.
2996 (read_context::read_uint64_from_array_of_bytes): New function.
2997 Uses read_int_from_array_of_bytes above.
2998 (read_context::{fun_entry_addr_sym_map_sptr}): Try to load symbol
2999 maps only when it's necessary.
3000 (read_context::elf_architecture_is_big_endian): Fix logic.
3001 (read_context::{var_addr_sym_map}): Express the const variant in
3002 terms of the non-const one. In the non-const one, load the map
3003 only when necessary.
3004 (read_context::load_symbol_maps_from_symtab_section): Renamed
3005 load_symbol_maps into this.
3006 (read_context::is_linux_kernel_binary): Define new member
3007 function.
3008 (read_context::{function, variable}_symbol_is_exported): If we are
3009 not prevented from considering loading in linux kernel mode, then
3010 just looking at a linux kernel binary makes us consider the
3011 special kernel sections.
3012 (read_debug_info_into_corpus): Likewise.
3013 (build_ir_node_from_die): Take a new flag that says if the ir node
3014 is a declaration required by another concrete IR node.
3015 (enum read_context::kernel_symbol_table_kind): New enum.
3016 (read_context::load_symbol_maps): Support loading linux kernel
3017 specific sections too.
3018 (build_var_decl): Use the new
3019 read_context::variable_symbol_is_exported.
3020 (function_is_suppressed): Suppress non-member functions or
3021 variables that are not declarations and that have no symbol.
3022 (variable_is_suppressed, build_var_decl_if_not_suppressed): Take a
3023 new flag that says if the variable is a declaration required by a
3024 concrete variable. If non member variable that is a declaration
3025 is not the specification of another concrete variable, then it's
3026 suppressed.
3027 (add_fn_symbols_to_map, add_var_symbols_to_map): New function
3028 definitions.
3029 (read_debug_info_into_corpus): If we are reading linux kernel or
3030 linux kernel modules, only set explicitely exported symbols (in
3031 the linux kernel binary sense) as exported function or variable
3032 symbols.
3033 (create_read_context): Take a new flag to say if the context is to
3034 read an ELF binary in linux kernel mode.
3035 * tools/abidiff.cc (options::options): Initialize
3036 options::linux_kernel_mode to true.
3037 (display_usage): Display usage of the --no-linux-kernel-mode option.
3038 (parse_command_line): Parse the --no-linux-kernel-mode option.
3039 * tools/abidw.cc (options::options): Initialize
3040 options::linux_kernel_mode to true.
3041 (display_usage): Display usage of --no-linux-kernel-mode option.
3042 (parse_command_line): Parse the --no-linux-kernel-mode option.
3043 * doc/manuals/abidiff.rst: Document the new --no-linux-kernel-mode
3044 options.
3045 * doc/manuals/abidw.rst: Likewise.
3046 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
3047 Adjust.
3048 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
3049 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
3050 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
3051 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
3052 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
3053 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
3054 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
3055 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
3056 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
3057 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
3058 Likewise.
3059 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
3060 Likewise.
3061 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
3062 Likewise.
3063 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
3064 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
3065 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
3066 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
3067 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
3068
30692017-01-06 Dodji Seketeli <dodji@redhat.com>
3070
3071 Add debug routines to dump locations to a stream
3072 * src/abg-writer.cc (dump_location): Define new function and one
3073 overload.
3074 (dump_decl_location): Re-write in terms of the new dump_location.
3075
30762017-01-06 Dodji Seketeli <dodji@redhat.com>
3077
3078 Better de-duplicate classes, unions, enums in non-odr contexts
3079 * src/abg-dwarf-reader.cc (build_enum_type)
3080 (add_or_update_class_type, add_or_update_union_type): When the ODR
3081 is not relevant, use the location of the type to detect if two
3082 enum, class or union types of the same name actually represent the
3083 same type.
3084
30852017-01-06 Dodji Seketeli <dodji@redhat.com>
3086
3087 Adjust some reference outputs of the test-read-dwarf test harness
3088 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
3089 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
3090
30912017-01-04 Ondrej Oprala <ondrej.oprala@gmail.com>
3092
3093 Bug 18754 - Add the "--no-added-syms" option to abidiff
3094 * doc/manuals/abidiff.rst: Document the new --no-added-syms
3095 option.
3096 * tools/abidiff.cc (struct options): Add show_added_syms and
3097 set it to true by default.
3098 (display_usage): Document the new options --no-added-syms. If
3099 this is the only suppression option specified, it is equivalent
3100 to specifying --show_{changed,deleted}_{fns,vars} as arguments
3101 to abidiff. If any of those options are specified before
3102 --no-added-syms, then it has no effect.
3103 (parse_command_line): Parse the new option and set
3104 show_added_{fns,vars,syms} and show_all_{fns,vars} to false if
3105 --no-added-syms is specified.
3106 * tests/test-diff-filter.cc: Add a test for the new option.
3107 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
3108 Reference results for the new test.
3109 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
3110 Likewise.
3111 * tests/data/Makefile.am: Add the above test files to the list of
3112 test data.
3113
31142017-01-05 Dodji Seketeli <dodji@redhat.com>
3115
3116 Update copyright year on a bunch of files
3117 * include/abg-corpus.h: Update copyright year to 2017.
3118 * src/abg-dwarf-reader.cc: Likewise.
3119 * src/abg-ir.cc: Likewise.
3120 * src/abg-reader.cc: Likewise.
3121 * src/abg-writer.cc: Likewise.
3122 * tools/abicompat.cc: Likewise.
3123 * tools/abidw.cc: Likewise.
3124
31252017-01-05 Dodji Seketeli <dodji@redhat.com>
3126
3127 [apidoc] Allow brief description at the top of class description pages
3128 * doc/api/libabigail.doxy: Don't disable "brief member desc".
3129
31302017-01-05 Dodji Seketeli <dodji@redhat.com>
3131
3132 Misc style fixes
3133 * include/abg-corpus.h: Remove corpus_sptr typedef. It's in
3134 abg-fwd.h now.
3135 * src/abg-ir.cc: Remove some unnecessary vertical space.
3136 * src/abg-reader.cc (build_function_decl): Cleanup some asserts.
3137 * src/abg-writer.cc (write_function_type): Each the inspection of
3138 the type id from within the debugger.
3139
31402017-01-05 Dodji Seketeli <dodji@redhat.com>
3141
3142 Misc comments and apidoc fixes
3143 * src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Fix
3144 typo in comment.
3145 * tools/abicompat.cc (perform_compat_check_in_weak_mode): Better
3146 comments.
3147 * tools/abidw.cc (dislay_usage): Fix white spaces.
3148 Conflicts:
3149 tools/abidw.cc
3150
31512017-01-05 Dodji Seketeli <dodji@redhat.com>
3152
3153 Speedup set_member_is_static
3154 * src/abg-ir.cc (set_member_is_static): When comparing data
3155 members, consider only their names.
3156
31572017-01-05 Dodji Seketeli <dodji@redhat.com>
3158
3159 Avoid unnecessary updates to type lookup maps
3160 * src/abg-ir.cc (class_or_union::get_is_declaration_only): Try
3161 to update the type maps only when a declaration-only class
3162 type is now defined.
3163
31642017-01-05 Dodji Seketeli <dodji@redhat.com>
3165
3166 Update tests/data/test-read-dwarf/*.abi files
3167 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
3168 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
3169 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
3170 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
3171 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
3172 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
3173 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
3174 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
3175 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
3176 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
3177 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
3178 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
3179 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
3180 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
3181
31822017-01-05 Dodji Seketeli <dodji@redhat.com>
3183
3184 Update tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi
3185 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
3186 Update.
3187
31882017-01-05 Dodji Seketeli <dodji@redhat.com>
3189
3190 [abixml writer] Make sure all function types are emitted
3191 * src/abg-writer.cc (write_translation_unit): Fix logic to avoid
3192 forgetting referenced function types.
3193
31942017-01-05 Dodji Seketeli <dodji@redhat.com>
3195
3196 [abixml writer] Fix comparison of pointer to types
3197 * src/abg-writer.cc (type_ptr_comp::operator()): Do not add an
3198 empty type id string to the type -> type id map when the entry for
3199 a given type is empty.
3200
32012017-01-05 Dodji Seketeli <dodji@redhat.com>
3202
3203 [dwarf-reader] Don't early canonicalize function types
3204 * src/abg-dwarf-reader.cc (maybe_canonicalize_type):
3205 Late-canonicalize function types.
3206 signed-off-by: Dodji Seketeli <dodji@redhat.com>
3207
32082017-01-05 Dodji Seketeli <dodji@redhat.com>
3209
3210 Fix qualified name caching for some types
3211 * src/abg-ir.cc ({qualified, pointer,
3212 array}_type_def::get_qualified_name): Don't cache internal and
3213 non-internal qualified name when the type is not canonicalized.
3214
32152017-01-04 Dodji Seketeli <dodji@redhat.com>
3216
3217 Cleanup ODR-based type canonicalization optimization gating logic
3218 * src/abg-ir.cc (type_base::get_canonical_type_for): Make it clear
3219 that the ODR-based optimization is allowed only on C++ ABI
3220 corpora.
3221
32222017-01-04 Dodji Seketeli <dodji@redhat.com>
3223
3224 Fix a typo in method name computation
3225 * src/abg-ir.cc (get_method_type_name): Really return the method
3226 name.
3227
32282017-01-05 Dodji Seketeli <dodji@redhat.com>
3229
3230 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
3231 * 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.
3232
32332017-01-05 Dodji Seketeli <dodji@redhat.com>
3234
3235 Update tests/data/test-read-write/test27.xml
3236 * tests/data/test-read-write/test27.xml: Adjust.
3237
32382017-01-04 Dodji Seketeli <dodji@redhat.com>
3239
3240 [dwarf-reader] Handle per translation-unit type de-duplication
3241 * src/abg-dwarf-reader.cc
3242 (read_context::per_tu_name_artefacts_map_): New data member.
3243 (read_context::clear_per_translation_unit_data): Clear the new
3244 read_context::per_tu_name_artefacts_map_.
3245 (read_context::associate_die_to_decl): Take a flag to say if we
3246 should associate a DIE to its representation and another one to
3247 say if the association should be done per-tu or per-corpus.
3248 (read_context::lookup_{type_artifact, artifact}_from_die): Update
3249 apidoc.
3250 (read_context::lookup_artifact_from_die_representation): Likewise.
3251 (read_context::{associate_die_to_artifact_by_repr,
3252 associate_die_to_artifact_by_repr_internal,
3253 associate_die_to_type}): Take a flag to say if the associating
3254 should be done on a per-tu basis.
3255 (read_context::lookup_{type_artifact, artifact}_from_die_per_tu):
3256 New member functions.
3257 (read_context::{lookup_artifact_from_per_tu_die_representation,
3258 odr_is_relevant}): Likewise.
3259 (build_enum_type, add_or_update_class_type)
3260 (add_or_update_union_type): If ODR is not relevant, do not perform
3261 per-corpus de-duplication.
3262 (build_pointer_type_def, build_typedef_type): Do not associate the
3263 type to its representation as these kinds of typs are not
3264 de-duplicated.
3265 (build_function_type): If ODR is not relevant, perform per-tu
3266 de-duplication. When ODR is relevant, per-corpus de-duplication
3267 is performed.
3268 (build_or_get_fn_decl_if_not_suppressed): Function decls are
3269 always de-duplicated per-corpus.
3270 (build_ir_node_from_die): For data members, do not update the die
3271 representation map as data members are not de-duplicated. Do not
3272 do it for function decls either.
3273 [1]: https://en.wikipedia.org/wiki/One_Definition_Rule
3274
32752017-01-02 Dodji Seketeli <dodji@redhat.com>
3276
3277 Handle per translation unit and per corpus types maps
3278 * include/abg-fwd.h (lookup_type_in_corpus): Remove. This is to
3279 be replaced by the new lookup_type below.
3280 (lookup_{basic, class, union, enum, typedef, qualified, pointer,
3281 reference, array, function, class_or_typedef,
3282 class_typedef_or_enum}_type):
3283 (lookup_class_type_through_scopes, lookup_type)
3284 (lookup_type_through_scopes, lookup_or_synthesize_fn_type)
3285 * src/abg-ir-priv.h (struct translation_unit::priv): Move this
3286 private type here, from abg-ir.h.
3287 (synthesize_type_from_translation_unit): Declare new functions.
3288 * include/abg-ir.h (class type_maps): Define new type.
3289 (translation_unit::get_function_types): Remove.
3290 (translation_unit::get_types): Now return a type_maps.
3291 (translation_unit::get_live_fn_types): Declare new type.
3292 (class decl_base): Make canonicalize be a friend of this class.
3293 * src/abg-ir.cc (struct translation_unit::priv): Move this to
3294 abg-ir-priv.h
3295 (struct type_maps::priv): Define new type.
3296 (type_maps::{basic, class, union, enum, typedef, qualified,
3297 pointer, reference, array, function}_types): Define new accessors.
3298 (translation_unit::bind_function_type_life_time): Adjust.
3299 (translation_unit::get_function_types): Remove accessor.
3300 (translation_unit::get_types, get_live_fn_types): Define new
3301 accessors.
3302 (lookup_type_in_translation_unit)
3303 (lookup_class_type_in_translation_unit)
3304 (lookup_function_type_in_translation_unit)
3305 (synthesize_type_from_translation_unit)
3306 (synthesize_function_type_from_translation_unit)
3307 (lookup_class_type_in_translation_unit) Remove function
3308 definitions.
3309 (lookup_type_in_map): Define function template.
3310 (lookup_{basic, class, union, typedef, class_or_typedef,
3311 class_typedef_or_enum, qualified, pointer, reference, array,
3312 function}_type): Define functions.
3313 (lookup_function_type, lookup_type_through_scopes)
3314 (lookup_class_type_through_scopes)
3315 (lookup_basic_type_through_translation_units)
3316 (lookup_union_type_through_translation_units)
3317 (lookup_enum_type_through_translation_units)
3318 (lookup_class_type_through_translation_units)
3319 (lookup_typedef_type_through_translation_units)
3320 (lookup_qualified_type_through_translation_units)
3321 (lookup_pointer_type_through_translation_units)
3322 (lookup_reference_type_through_translation_units)
3323 (lookup_array_type_through_translation_units)
3324 (lookup_function_type_through_translation_units)
3325 (lookup_type_through_translation_units)
3326 (lookup_or_synthesize_fn_type, lookup_type): Likewise.
3327 (maybe_update_types_lookup_map)
3328 (maybe_update_types_lookup_map<class_decl>)
3329 (maybe_update_types_lookup_map<function_type>): Define function
3330 template, specilizations and functions.
3331 (synthesize_type_from_translation_unit)
3332 (synthesize_function_type_from_translation_unit): Define
3333 functions.
3334 * include/abg-corpus.h (corpus::get_types): Declare new accessor.
3335 * src/abg-corpus.cc (corpus::priv::get_types): Define new
3336 accessor.
3337 (corpus::get_types): Likewise.
3338 (lookup_type_in_corpus, lookup_class_type_in_corpus)
3339 (lookup_type_in_corpus, lookup_function_type_in_corpus)
3340 (maybe_update_types_lookup_map)
3341 (maybe_update_types_lookup_map<class_decl>)
3342 (maybe_update_types_lookup_map<function_type>): Remove.
3343 (lookup_{basic, class, union, enum, typedef, qualified, pointer,
3344 reference, array, function, class_or_typedef,
3345 class_typedef_or_enum}_type): Likewise.
3346 * src/abg-corpus-priv.h (corpus::priv::{basic, class, union,
3347 typedef, qualified, pointer, reference, array, function}_types):
3348 Remove these data members.
3349 (corpus::priv::get_scopes): Remove member function.
3350 (corpus::priv::get_{basic, class, union, enum, typedef, qualified,
3351 pointer, reference, array, function}_types): Remove member
3352 function declarations.
3353 (corpus::priv::types_): New data member.
3354 (corpus::priv::get_types): Declare new member function.
3355 (lookup_{basic, class, enum, typedef, class_or_typedef, qualified,
3356 pointer, reference, array, function}_type): Declare new functions.
3357 * src/abg-dwarf-reader.cc
3358 (read_context::resolve_declaration_only_classes)
3359 (build_translation_unit_and_add_to_ir): Adjust use of
3360 lookup_class_type.
3361 * src/abg-reader.cc (read_context::type_is_from_translation_unit):
3362 Adjust to the use of lookup_function_type_in_translation_unit that
3363 got renamed into lookup_function_type.
3364 * src/abg-writer.cc (type_ptr_cmp::operator()): New operator
3365 implementation.
3366 (read_context::sort_type): Add new overloads.
3367 (write_translation_unit): Adjust to get the function types from
3368 the new translation_unit::get_live_fn_types and sort them.
3369 * tools/abicompat.cc (perform_compat_check_in_weak_mode): Adjust
3370 to use the new lookup_or_synthesize_fn_type, in lieu of
3371 lookup_function_type_in_corpus. Adjust to use lookup_type in lieu
3372 of lookup_type_in_corpus.
3373
33742016-12-21 Dodji Seketeli <dodji@redhat.com>
3375
3376 Make abg-fwd.h use *_sptr typedefs
3377 * include/abg-ir.h: Move convience typedef declarations and some
3378 necessary forward declarations to ...
3379 * include/abg-fwd.h: ... here.
3380 (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base.
3381 (lookup_type_in_scope): Return a type_base_sptr.
3382 (lookup_type_through_scopes): Introduce this to later replace the
3383 overload of lookup_type_in_translation_unit that takes a list of
3384 strings.
3385 (lookup_type_in_scope): Return a type_base_sptr, not a
3386 decl_base_sptr.
3387 * src/abg-ir.cc (lookup_type_in_scope, lookup_node_in_scope)
3388 (lookup_var_decl_in_scope): Adjust.
3389 (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base.
3390 (lookup_node_in_scope): Return a type_or_decl_base_sptr.
3391 (lookup_type_in_scope): Return a type_base_sptr.
3392 (lookup_node_in_translation_unit): Return a
3393 type_or_decl_base_sptr.
3394 (lookup_type_through_scopes): Replace
3395 lookup_type_in_translation_unit.
3396
33972016-12-18 Chenxiong Qi <cqi@redhat.com>
3398
3399 Fix wrong variable name
3400 * tools/fedabipkgdiff: (diff_latest_rpms_based_on_distros): Fix
3401 wrong variable name distro.
3402
34032016-12-18 Chenxiong Qi <cqi@redhat.com>
3404
3405 Warn properly when cannot find peer RPM
3406 * tools/fedabipkgdiff: (RPMCollection.get_peer_rpm): Return None
3407 when cannot find peer RPM due to nonexistent arch.
3408
34092016-12-19 Chenxiong Qi <cqi@redhat.com>
3410
3411 Read Koji config via Koji API
3412 * tools/fedabipkgdiff: Read DEFAULT_KOJI_TOPURL and
3413 DEFAULT_KOJI_SERVER from Koji config via Koji API read_config.
3414 (build_commandline_args_parser): --topdir is renamed to
3415 --topurl.
3416 * doc/manuals/fedabipkgdiff.rst: Rename --topdir to --topurl.
3417
34182016-12-19 Chenxiong Qi <cqi@redhat.com>
3419
3420 Follow moved packages when download
3421 * tools/fedabipkgdiff: (download_rpm) Add --location to curl
3422 CLI.
3423
34242016-12-13 Chenxiong Qi <cqi@redhat.com>
3425
3426 More document for local RPMs comparison
3427 * doc/manuals/fedabipkgdiff.rst: Add more document for local RPMs
3428 comparison. Also fixed a typo.
3429
34302016-12-15 Ondrej Oprala <ondrej.oprala@gmail.com>
3431
3432 Properly report missing files for abipkgdiff
3433 * tools/abipkgdiff.cc: (class options): Add the "nonexistent_file" flag
3434 (parse_command_line): Check if the files given exist.
3435 (main): Check the nonexistent_file flag. If any of the input
3436 files don't exist, report it and exit. Also, for present and future test
3437 uniformity, only show the base names of the packages when using their
3438 names in error output.
3439 * tests/test-diff-pkg.cc: Add a new regression test.
3440 * tests/data/test-diff-pkg/test-nonexistent-report-0.txt: The
3441 expected output of the above regression test.
3442 * tests/data/Makefile.am: Add the above file to the list.
3443
34442016-12-15 Dodji Seketeli <dodji@redhat.com>
3445
3446 Misc style cleanup
3447 * src/abg-dwarf-reader.cc (build_function_type): Remove
3448 unnecessary new line.
3449
34502016-12-15 Dodji Seketeli <dodji@redhat.com>
3451
3452 make is_anonymous_type work for unions and classes
3453 * src/abg-ir.cc (is_anonymous_type): Make this work for class or
3454 union types, no only classes.
3455
34562016-12-15 Dodji Seketeli <dodji@redhat.com>
3457
3458 Naming typedefs of classes are not read properly from abixml
3459 * src/abg-reader.cc (build_class_decl): Use
3460 read_context::build_or_get_type_decl rather than
3461 read_context::get_type_decl to build the naming typedef referred
3462 to by the class being built. Move the handling of naming typedefs
3463 after the class is marked as WIP and keyed.
3464
34652016-12-15 Dodji Seketeli <dodji@redhat.com>
3466
3467 Don't early-canonicalize function types when reading abixml
3468 * src/abg-reader.cc (read_context::maybe_canonicalize_type):
3469 late-canonicalize function types too.
3470
34712016-12-12 Ondrej Oprala <ondrej.oprala@gmail.com>
3472
3473 Check --enable-rpm dependencies more rigorously
3474 * configure.ac: Check if both rpm2cpio and cpio
3475 exist on the system. If not, disable the option and fail the
3476 configuration if --enable-rpm was specified explicitly.
3477
34782016-12-12 Ondrej Oprala <ondrej.oprala@gmail.com>
3479
3480 abipkgdiff doesn't mention --no-default-suppression in help
3481 * tools/abipkgdiff.cc (display_usage): Mention
3482 --no-default-suppression as one of the options.
3483
34842016-12-12 Ondrej Oprala <ondrej.oprala@gmail.com>
3485
3486 Fix a few remarks made by cppcheck
3487 * src/abg-comparison.cc (types_or_decls_equal::operator()): Pass
3488 arguments by reference.
3489 (class_diff::ensure_lookup_tables_populated): Expression
3490 !A || (A && B) can be reduced to !A || B.
3491 * src/abg-suppression.cc (suppression_matches_type_no_name):
3492 Likewise.
3493
34942016-12-09 Ondrej Oprala <ondrej.oprala@gmail.com>
3495
3496 Bug 19272 - abipkgdiff doesn't report arch change
3497 * src/abg-comparison.cc (corpus_diff::has_incompatible_changes):
3498 The architecture change into account.
3499 (corpus_diff::has_net_changes): Take architecture and soname
3500 changes into account.
3501 * tools/abicompat.cc (perform_compat_check_in_normal_mode): Use
3502 corpus_diff::{has_net_changes, has_incompatible_changes}.
3503 * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.armv7hl.rpm: New
3504 test input.
3505 * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt:
3506 New test reference output.
3507 * tests/data/Makefile.am: Add the new test material above to
3508 source distribution.
3509 * tests/test-diff-pkg.cc (in_out_spec): Compare the new package
3510 above against an x86_64 one.
3511
35122016-08-11 Chenxiong Qi <cqi@redhat.com>
3513
3514 Bug 20380 - Compare two local RPMs
3515 * configure.ac: add dependent mimetype module.
3516 * doc/manuals/fedabipkgdiff.rst: Update to add document for the
3517 new use case of comparing two local RPMs.
3518 * tests/data/Makefile.am: Include new RPMs for tests.
3519 * tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.100.2-2.fc20.x86_64.rpm:
3520 New RPM for running test.
3521 * tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.106-1.fc23.x86_64.rpm:
3522 Likewise.
3523 * tests/data/test-fedabipkgdiff/nss-util/nss-util-3.12.6-1.fc14.x86_64.rpm:
3524 Likewise.
3525 * tests/data/test-fedabipkgdiff/nss-util/nss-util-3.24.0-2.0.fc25.x86_64.rpm:
3526 Likewise.
3527 * tests/data/test-fedabipkgdiff/nss-util/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm:
3528 Likewise.
3529 * 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:
3530 Rename filename by adding .rpm extension.
3531 * 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:
3532 New reference output for testing comparing local RPMs.
3533 * 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:
3534 New reference output for testing comparison without non-existent
3535 debuginfo or development package.
3536 * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
3537 Rename filename for test4. Add two new test cases.
3538 (run_fedabipkgdiff_tests): Remove semicolon and trailing
3539 whitespaces.
3540 (main): Likewise.
3541 (ensure_output_dir_created): Likewise.
3542 * tools/fedabipkgdiff: Require some new modules.
3543 Fix of return code.
3544 (PkgInfo): Renamed to ComparisonHalf.
3545 (match_nvr): New method to determine if a string matches format
3546 of N-V-R.
3547 (match_nvra): New method to determine if a string matches format
3548 of N-V-R.A.
3549 (is_rpm_file): New method to guess if a file is a RPM file.
3550 (RPM.is_peer): New method to determine if current RPM is a peer
3551 of another.
3552 (RPM.filename): Use Koji module API to construct the filename.
3553 (RPM.nvra): Get nvra from filename instead of constructing
3554 manually that is duplicated with Koji module API.
3555 (RPMCollection): New class to represent a set of RPMs.
3556 (generate_pkg_info_pair_for_abipkgdiff): New method working as a
3557 generator to yeild comparison halves for running abipkgdiff.
3558 (Brew.getRPM): Fix string format with incorrect argument.
3559 (Brew.select_rpms_from_a_build): Return instance of
3560 RPMCollection.
3561 (abipkgdiff): If there is no debuginfo or development package,
3562 just ignore it and leave a warning. If --error-on-warning is
3563 specified, raise an exception instead. Arguments are modified
3564 to represent the new name ComparisonHalf, and relative docstring
3565 is also updated.
3566 (magic_construct): Removed.
3567 (run_abipkgdiff): Rewrite.
3568 (make_rpms_usable_for_abipkgdiff): Removed.
3569 (diff_local_rpm_with_latest_rpm_from_koji): Rewrite by using
3570 RPMCollection.
3571 (diff_latest_rpms_based_on_distros): Likewise.
3572 (diff_two_nvras_from_koji): Likewise.
3573 (diff_from_two_rpm_files): New method to compare two local RPMs.
3574 (build_commandline_args_parser): Add new option
3575 --error-on-warning.
3576 (main): Add support to compare local RPMs.
3577
35782016-12-12 Dodji Seketeli <dodji@redhat.com>
3579
3580 Fix template_decl::hash::operator()
3581 * src/abg-hash.cc (template_decl::hash::operator()): Combine the
3582 contribution of the qualified name to the contribution of the type
3583 name to the hash.
3584
35852016-12-09 Dodji Seketeli <dodji@redhat.com>
3586
3587 Fix aborting when reading .foo symbols from a ppc64 binary
3588 * abg-dwarf-reader.cc (read_context::find_opd_section): Fix
3589 comment.
3590 (read_context::load_symbol_maps): If for a given function entry
3591 point (that we got by looking at the ".opd" section for a given
3592 function pointer value) we already had an entry in the
3593 function_entry_address -> symbol, maybe it means that the previous
3594 entry that we had was from an entry in the symbol table which
3595 value was directly the entry point address of a function. In that
3596 case, if the name of the symbol is "foo", the name of the symbol
3597 which value is directly the entry point address is ".foo". What
3598 we do in this case is that we just keep the reference to the "foo"
3599 symbol in the function_entry_address -> symbol map.
3600 (read_context::address_is_in_opd_section): Define new member
3601 function.
3602 * tests/data/test-diff-pkg/gmp-4.3.1-10.el6.ppc64.rpm: New test input.
3603 * tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64.rpm: Likewise.
3604 * tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-10.el6.ppc64.rpm: Likewise.
3605 * tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-7.el6_2.2.ppc64.rpm: Likewise.
3606 * tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64--gmp-4.3.1-10.el6.ppc64-report-0.txt:
3607 New test reference output.
3608 * tests/data/Makefile.am: Add the new test input and reference
3609 output to source distribution.
3610 * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
3611 and reference output to the set of inputs that are compared.
3612
36132016-12-05 Dodji Seketeli <dodji@redhat.com>
3614
3615 Bug 20927 - Segfault when $HOME is not set
3616 * src/abg-tools-utils.cc
3617 (get_default_user_suppression_file_path): Handle the case where
3618 the HOME environment variable is not set.
3619 * tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
3620 Likewise. When $HOME is empty set then use $TMPDIR. If it's
3621 empty too then use "/tmp".
3622
36232016-12-02 Dodji Seketeli <dodji@redhat.com>
3624
3625 Bug 20887 - Show relative change of offsets
3626 * doc/manuals/abidiff.rst: Document the new
3627 --no-show-relative-offset-changes.
3628 * doc/manuals/abipkgdiff.rst: Likewise.
3629 * include/abg-comparison.h
3630 (diff_context::show_relative_offset_changes): New accessors.
3631 * include/abg-ir.h ({set,get}_data_member_offset): Return uint64_t
3632 instead of the less portable size_t.
3633 * src/abg-comparison.cc
3634 (diff_context::priv::show_relative_offset_changes_): New data
3635 member.
3636 (dif_context::show_relative_offset_changes): Define accessor.
3637 (maybe_show_relative_offset_change): Define new function.
3638 (represent): In the overload for var_diff, call the new
3639 maybe_show_relative_offset_change.
3640 (report_size_and_alignment_changes): If the size of the type
3641 didn't change then say it now.
3642 * src/abg-ir.cc (set_data_member_offset, get_data_member_offset):
3643 Take or return a uint64_t instead of a size_t.
3644 * tools/abidiff.cc (options::show_relative_offset_changes): New
3645 data member.
3646 (options::options): Initialize it.
3647 (display_usage): Display help string for the new
3648 --no-show-relative-offset-changes.
3649 (parse_command_line): Parse the new
3650 --no-show-relative-offset-changes options.
3651 (set_diff_context_from_opts): Set the
3652 "show-relative-offset-changes" flag according to the new option.n
3653 * tools/abipkgdiff.cc (options::show_relative_offset_changes): New
3654 data member.
3655 (options::options): Initialize it.
3656 (display_usage): Add help string for the new
3657 --no-show-relative-offset-changes option.
3658 (set_diff_context_from_opts): Set the
3659 "show-relative-offset-changes" flag according to the new option.
3660 (parse_command_line): Parse the new command line option.
3661 * tests/data/test-diff-dwarf/test40-report-0.txt: Add new
3662 reference output.
3663 * tests/data/test-diff-dwarf/test40-v0.c: Source code of the first
3664 test binary.
3665 * tests/data/test-diff-dwarf/test40-v1.c: Source code of the
3666 second test binay.
3667 * tests/data/test-diff-dwarf/libtest40-v0.so: New first test binary.
3668 * tests/data/test-diff-dwarf/libtest40-v1.so: New second test binary.
3669 * tests/test-diff-dwarf.cc (in_out_spec): Add the new test
3670 binaries above to the set of binaries that are compared.
3671 * tests/data/Makefile.am: Add the new test material to source
3672 distribution.
3673 * tests/data/test-abicompat/test7-fn-changed-report-0.txt: Adjust.
3674 * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise.
3675 * tests/data/test-abidiff/test-enum0-report.txt: Likewise.
3676 * tests/data/test-abidiff/test-enum1-report.txt: Likewise.
3677 * tests/data/test-abidiff/test-struct1-report.txt: Likewise.
3678 * tests/data/test-diff-dwarf/test0-report.txt: Likewise.
3679 * tests/data/test-diff-dwarf/test1-report.txt: Likewise.
3680 * tests/data/test-diff-dwarf/test10-report.txt: Likewise.
3681 * tests/data/test-diff-dwarf/test11-report.txt: Likewise.
3682 * tests/data/test-diff-dwarf/test13-report.txt: Likewise.
3683 * tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise.
3684 * tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: Likewise.
3685 * tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise.
3686 * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise.
3687 * tests/data/test-diff-dwarf/test38-union-report-0.txt: Likewise.
3688 * tests/data/test-diff-dwarf/test4-report.txt: Likewise.
3689 * tests/data/test-diff-dwarf/test5-report.txt: Likewise.
3690 * tests/data/test-diff-dwarf/test6-report.txt: Likewise.
3691 * tests/data/test-diff-dwarf/test8-report.txt: Likewise.
3692 * tests/data/test-diff-filter/test0-report.txt: Likewise.
3693 * tests/data/test-diff-filter/test01-report.txt: Likewise.
3694 * tests/data/test-diff-filter/test1-report.txt: Likewise.
3695 * tests/data/test-diff-filter/test13-report.txt: Likewise.
3696 * tests/data/test-diff-filter/test16-report-2.txt: Likewise.
3697 * tests/data/test-diff-filter/test16-report.txt: Likewise.
3698 * tests/data/test-diff-filter/test17-0-report.txt: Likewise.
3699 * tests/data/test-diff-filter/test17-1-report.txt: Likewise.
3700 * tests/data/test-diff-filter/test18-report.txt: Likewise.
3701 * tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
3702 * tests/data/test-diff-filter/test2-report.txt: Likewise.
3703 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt:
3704 Likewise.
3705 * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
3706 Likewise.
3707 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt:
3708 Likewise.
3709 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt:
3710 Likewise.
3711 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.t:
3712 Likewise.xt
3713 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt:
3714 Likewise.
3715 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt:
3716 Likewise.
3717 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt:
3718 Likewise.
3719 * tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt:
3720 Likewise.
3721 * tests/data/test-diff-filter/test3-report.txt: Likewise.
3722 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
3723 Likewise.
3724 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
3725 Likewise.
3726 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
3727 Likewise.
3728 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
3729 Likewise.
3730 * 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.
3731 * 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.
3732 * 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.
3733 * 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.
3734 * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise.
3735 * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise.
3736 * tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise.
3737 * tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise.
3738 * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
3739 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
3740 * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise.
3741 * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
3742 * tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
3743 * tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise.
3744 * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
3745 * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
3746 * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
3747 * tests/data/test-diff-suppr/test30-report-0.txt: Likewise.
3748 * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise.
3749 * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise.
3750 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise.
3751 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
3752 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
3753 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
3754 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
3755 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
3756 * tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise.
3757 * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise.
3758 * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise.
3759 * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise.
3760 * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise.
3761 * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
3762 * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
3763 * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
3764 * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
3765 * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
3766 * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
3767 * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise.
3768
37692016-12-02 Dodji Seketeli <dodji@redhat.com>
3770
3771 Rename tests/update-test-read-dwarf-output.py
3772 * tests/update-test-output.py: renamed
3773 tests/update-test-read-dwarf-output.py into this. Update its
3774 comments. Make this script executable.
3775
37762016-11-30 Dodji Seketeli <dodji@redhat.com>
3777
3778 Add tests/data/test-diff-suppr/test33-report-0.txt to tarball
3779 * tests/data/Makefile.am: Add test-diff-suppr/test33-report-0.txt.
3780
37812016-11-30 Dodji Seketeli <dodji@redhat.com>
3782
3783 Bug 20670 - abipkgdiff aborts if $XDG_CACHE_HOME does not exist
3784 * tools/abipkgdiff.cc (package::extracted_packages_parent_dir):
3785 Ensure that the cache directory is created, even when
3786 XDG_CACHE_HOME is set. Also, remove the now useless "using
3787 abigail::tools_utils::get_random_number_as_string" statement.
3788
37892016-11-09 Dodji Seketeli <dodji@redhat.com>
3790
3791 Very light speed improvements
3792 * include/abg-comp-filter.h (has_harmless_name_change): Pass smart
3793 pointers by reference.
3794 * src/abg-comp-filter.cc (access_changed)
3795 (function_name_changed_but_not_symbol)
3796 (non_static_data_member_type_size_changed)
3797 (static_data_member_type_size_changed, is_compatible_change)
3798 (decl_name_changed, has_harmless_name_change): Pass smart
3799 pointers by reference.
3800 * include/abg-ir.h (decl_base::set_context_rel): Take a bare
3801 pointer, not a smart pointer.
3802 * src/abg-ir.cc (decl_base::priv::context_): Make this data member
3803 be a naked pointer, not a smart pointer.
3804 (decl_base::priv::priv): Initialize it.
3805 (decl_base::priv::~priv): New constructor.
3806 (decl_base::{get_context_rel, set_scope}): Adjust.
3807 (class_decl::method_decl::{method_decl, set_scope}): Likewise.
3808 (equals): In the overload for var_decl, compare the type of the
3809 var first as that might be faster (to detect var_decls with
3810 different types) in the general case where types are
3811 canonicalized.
3812
38132016-11-08 Dodji Seketeli <dodji@redhat.com>
3814
3815 Introduce on-the-fly type canonicalization
3816 * include/abg-ir.h (environment::do_on_the_fly_canonicalization):
3817 Declare new member functions.
3818 ({type_base, function_type}::priv_): Make this public so that
3819 static non-member functions defined in abg-ir.cc can access it.
3820 * src/abg-ir.cc
3821 (environment::priv::do_on_the_fly_canonicalization_): New data
3822 member.
3823 (environment::priv::priv): Initialize it.
3824 (environment::do_on_the_fly_canonicalization): Define new member
3825 functions.
3826 (type_base::get_canonical_type_for): Trigger on-the-fly
3827 canonicalization during comparison of the type being canonicalized
3828 and an already canonicalized type.
3829 (types_are_being_compared, maybe_propagate_canonical_type): Define
3830 new static functions.
3831 (equals): In overloads for class_decl and function_type, call
3832 maybe_propagate_canonical_type when the two types compare equal.
3833 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
3834 Adjust.
3835 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
3836
38372016-11-06 Dodji Seketeli <dodji@redhat.com>
3838
3839 Fix pretty representation of array types
3840 * include/abg-ir.h (array_type_def::is_infinite): Fix indentation.
3841 * src/abg-ir.cc (qualified_type_def::build_name): An empty set of
3842 sub-ranges for a vector is represented by "[]".
3843 (array_type_def::is_infinite): If a vector has no sub-range, that
3844 means it has an infinite size. Adjust comment.
3845 * tests/data/test-diff-filter/test33-report-0.txt: Adjust.
3846 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
3847 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust.
3848 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
3849 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust.
3850 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
3851 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust.
3852 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
3853 Adjust.
3854 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
3855 Adjust.
3856 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
3857
38582016-10-11 Dodji Seketeli <dodji@redhat.com>
3859
3860 Support naming typedef and use them to speed up type canonicalization
3861 * include/abg-ir.h (typedef_decl_wptr): New typedef.
3862 (class_decl::{g,s}et_naming_typedef): Declare new member
3863 functions.
3864 * src/abg-dwarf-reader.cc (build_typedef_type): When the
3865 underlying type of a typedef is an anonymous class, the class type
3866 is said to have a naming typedef.
3867 * src/abg-ir.cc (is_anonymous_type): An anonymous class that has
3868 a naming typedef is said to not be anonymous anymore.
3869 (class_decl::priv::naming_typedef): New data member.
3870 (class_decl::{g,s}et_naming_typedef): Define new member functions.
3871 (class_decl::get_pretty_representation): When called for internal
3872 purposes (e.g, for type canonicalization) compute the pretty
3873 representation of the class by using its typedef name, when class
3874 is anonymous and has a naming typedef.
3875 * src/abg-reader.cc (build_class_decl): Read the new
3876 "naming-typedef-id" attribute.
3877 * src/abg-writer.cc (write_naming_typedef): New function.
3878 (write_class_decl_opening_tag): Use the new write_naming_typedef
3879 function.
3880 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
3881 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
3882 Likewise.
3883 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
3884 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
3885 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
3886 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
3887 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
3888 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
3889 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
3890 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
3891 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
3892 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
3893 Likewise.
3894 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
3895
38962016-11-02 Dodji Seketeli <dodji@redhat.com>
3897
3898 Implement de-duplication for types and decls at DWARF loading time
3899 * include/abg-ir.h (method_type::priv_): Introduce new pimpl
3900 pointer here.
3901 (method_type::class_type_): Move this into the pimpl idiom.
3902 (method_type::method_type): Take a new is_const flag.
3903 (method_type::get_class_type): Make this method out-of-line.
3904 (method_type::{s,g}et_is_const): Declare new member functions.
3905 (get_method_type_name): Declare this function as a friend of
3906 the method_type type.
3907 * src/abg-dwarf-reader.cc: Include the new abg-ir-priv.h and
3908 abg-corpus-priv.h.
3909 (typedef die_tu_map_type): Fix comment.
3910 (typedef die_istring_map_type): New typedef.
3911 (class read_context::die_source_dependant_container_set): New
3912 class template.
3913 (read_context::{die_qualified_name_maps_, die_pretty_repr_maps_,
3914 die_pretty_type_repr_maps_}): Define new data members.
3915 (read_context::{get_die_qualified_name, get_die_qualified_name,
3916 get_die_qualified_type_name, get_die_pretty_type_representation,
3917 get_die_pretty_representation, lookup_type_artifact_from_die,
3918 lookup_artifact_from_die, lookup_artifact_from_die_representation,
3919 associate_die_to_artifact_by_repr,
3920 associate_die_to_artifact_by_repr_internal,
3921 lookup_type_from_die}): Define new member functions.
3922 (read_context::lookup_type_from_die_offset): Fix comment.
3923 (get_parent_die, get_scope_die, die_is_decl)
3924 (die_is_namespace, die_is_unspecified, die_is_void_type)
3925 (die_is_pointer_type, die_is_reference_type)
3926 (die_is_pointer_or_reference_type, die_is_class_type)
3927 (die_has_object_pointer, die_this_pointer_from_object_pointer)
3928 (die_this_pointer_is_const, is_decl_tag)
3929 (die_object_pointer_is_for_const_method, die_is_at_class_scope)
3930 (die_name, die_qualified_type_name, die_qualified_decl_name)
3931 (die_qualified_name, die_qualified_type_name_empty)
3932 (die_return_and_parm_names_from_fn_type_die)
3933 (die_function_signature, die_peel_qual_ptr)
3934 (die_function_type_is_method_type, die_pretty_print_type)
3935 (die_pretty_print_decl, die_pretty_print)
3936 (build_subranges_from_array_type_die)
3937 (build_or_get_fn_decl_if_not_suppressed)
3938 (lookup_class_or_typedef_type)
3939 (lookup_class_typedef_or_enum_type_from_corpus)
3940 (is_function_for_die_a_member_of_class)
3941 (add_or_update_member_function): Define new static functions.
3942 (read_context::associate_die_to_decl): Call
3943 associate_die_to_artifact_by_repr.
3944 (read_context::{associate_die_to_type,
3945 schedule_type_for_late_canonicalization}): Take just one "die"
3946 parameter rather than taking a die offset and a die source; adjust
3947 accordingly.
3948 (maybe_canonicalize_type): Likewise.
3949 (finish_member_function_reading): Take a const reference to
3950 function_decl_sptr.
3951 (die_loc_and_name): Use the new die_name function.
3952 (die_is_type): Rename is_type_die into this.
3953 (build_type_decl): Take a new "where_offset" parameter. Adjust.
3954 If a type of the same name as the one for the current DIE is is
3955 already present, do not create a new type; just return the
3956 already-existing one.