From 20dd9d0aa6b2704f5a8bd93dd1d5ec160f28dc7f Mon Sep 17 00:00:00 2001 From: Dodji Seketeli Date: Sun, 25 Sep 2022 06:11:19 +0200 Subject: [PATCH] Update ChangeLog for 2.1 release. * ChangeLog: Update by running "make update-changelog". Signed-off-by: Dodji Seketeli --- ChangeLog | 3648 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3648 insertions(+) diff --git a/ChangeLog b/ChangeLog index 30918b49..33944561 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,3651 @@ +2022-09-24 Dodji Seketeli + + ir: Avoid cancelling a "confirmed" propagated canonical type + * src/abg-ir-priv.h + (type_base::priv::propagated_canonical_type_confirmed_): Define + new data member. + (type_base::priv::priv): Initialize it. + (type_base::priv::{propagated_canonical_type_confirmed, + set_propagated_canonical_type_confirmed}): Define new member + functions. + (type_base::priv::clear_propagated_canonical_type): Do not clear + the propagated canonical type if it has been confirmed already. + (type_base::priv::confirm_ct_propagation_for_types_dependant_on): Rename + type_base::confirm_ct into this. Mark the confirmed propagated + types as being confirmed. + (type_base::priv::confirm_ct_propagation): This is now a new member + function that calls + type_base::confirm_ct_propagation_for_types_dependant_on and that + does the book-keeping that was being done in + return_comparison_result. + (type_base::priv::cancel_ct_propagation_for_types_dependant_on): + Renamed type_base::priv::cancel_ct_propagation in this. + (type_base::priv::cancel_ct_propagation): In this new one, call + type_base::priv::cancel_ct_propagation_for_types_dependant_on. Perform here + the book-keeping that was being done in return_comparison_result. + Also, do not cancel a confirmed propagated canonical type. + (type_base::priv::add_to_types_with_non_confirmed_propagated_ct): + Define new member function. + * src/abg-ir.cc (return_comparison_result): Consider only types + with non-confirmed propagated canonical types for the + non-confirmed type queue. Also, only sub-types can be considered + non-confirmed. Split out some of the book-keeping into + type_base::priv::{confirm_ct_propagation, cancel_ct_propagation} + and call these instead. Confirm the propagated canonical types of + all types that remain after the comparison is fully done and is + successful. + (canonicalize): Assert the rule "The result of canonicalizing must + always been a confirmed canonical type". + +2022-09-22 Dodji Seketeli + + dwarf-reader: Accept SHT_PROGBITS sections in .dynamic segment + * src/abg-dwarf-reader.cc (get_soname_of_elf_file): Accept + SHT_PROGBITS sections in the dynamic segment. + +2022-09-22 Dodji Seketeli + + ir: Support cloning data members of unions + * src/abg-ir.cc (var_decl::clone): Support cloning data members + for unions. + +2022-09-22 Dodji Seketeli + + Better support for golang programs + * src/abg-dwarf-reader.cc (die_qualified_type_name): Don't look at + the underlying type unnecessarily. + (build_function_type): Look for the WIP type first to avoid + infinite recursion. + * src/abg-ir.cc + (function_decl::get_pretty_representation_of_declarator): A + parameter can have a function type. + * src/abg-writer.cc (write_elf_symbol_reference) + (write_function_decl): Escape symbol names, function names and + symbol references. + +2022-07-19 Dodji Seketeli + + comparison: Ensure that fn parms with basic types can't be redundant + * include/abg-comparison.h (peel_fn_parm_diff) + (peel_typedef_qualified_type_or_parameter_diff): Declare ... + * src/abg-comparison.cc (peel_fn_parm_diff) + (peel_typedef_qualified_type_or_parameter_diff): ... new + functions. + (has_basic_type_change_only): Look through function parameters, + typedefs and qualified types. + * src/abg-default-reporter.cc (default_reporter::report): Remove + the temporary removal of the redundant categorisation. + Redundant-ness should have been handled by the + redundancy_marking_visitor pass. + * tests/data/test-diff-filter/test-PR29387-report.txt: Reference + test output. + * tests/data/test-diff-filter/test-PR29387-v{0,1}.c: Source of the + input tests. + * tests/data/test-diff-filter/test-PR29387-v{0,1}.o: Input test + binaries. + * tests/data/Makefile.am: Add the new test material above to the + source distribution. + * tests/test-diff-filter.cc (in_out_specs): Add the test binaries + above to the test harness. + +2022-09-21 Dodji Seketeli + + test-read-ctf: Update test output files after typedef canonicalization + * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: + Adjust. + * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-linux-module.abi: Likewise. + * tests/data/test-read-ctf/test1.so.abi: Likewise. + * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. + * tests/data/test-read-ctf/test2.so.abi: Likewise. + * tests/data/test-read-ctf/test2.so.hash.abi: Likewise. + * tests/data/test-read-ctf/test5.o.abi: Likewise. + * tests/data/test-read-ctf/test7.o.abi: Likewise. + +2022-09-13 Dodji Seketeli + + ir, writer: Go back to canonicalizing typedefs in the IR + * include/abg-fwd.h (lookup_decl_only_class_types): Declare new + function. + * src/abg-ir-priv.h (class_or_union::priv::member_types_): Move + this data member into scope_decl::priv. + (class_or_union::priv::priv): Do not take member types. + * include/abg-ir.h (sort_type): Likewise. + (namespaces_type): Add new typedefs. + (scope_decl::insert_member_decl): Make this be non-virtual. + (scope_decl::{insert_member_type, add_member_type, + remove_member_type, get_member_types, get_sorted_member_types, + find_member_type}): Move these methods here from ... + (class_or_union::{insert_member_type, add_member_type, + remove_member_type, get_member_types, get_sorted_member_types, + find_member_type}): ... here. + (class_or_union::insert_member_decl): Make this be non-virtual. + (class_decl::insert_member_decl): Make this be non-virtual. + (class_or_union::get_sorted_member_types): Declare ... + * src/abg-dwarf-reader.cc (add_or_update_class_type): Do not add a + member type to the class type being built if it already exists + there. + (build_ir_node_from_die): If a scope (namespace, union or class) + already has a typedef, do not create a new one to add it there + again. + * src/abg-ir.cc (equals): In the overload for typedefs take into + account the name of typedefs again. + (lookup_decl_only_class_types): Define new function. + (compare_using_locations): Define new static function that has + been factorized out of ... + (decl_topo_comp::operator()): ... here. Also, two decls originate + from an abixml corpus, compare them only using their artificial + locations, meaning make them keep the same order as the order of + the original abixml file. + (type_top_comp::operator()): Likewise. + (sort_types): Define new function. + (scope_decl::priv::member_types_): Move this here from + class_or_union::priv. + (scope_decl::priv::sorted_member_types_): Define new data member. + (scope_decl::{get_member_types, find_member_type, + insert_member_type, add_member_type, remove_member_type}): Move + these methods here from class_or_union. + (scope_decl::get_sorted_member_types): Define new method. + (is_non_canonicalized_type): Canonicalize typedefs. + (lookup_type_in_map): Allow this to look through decl-only types + to get their definition. Otherwise, if only a decl-only was + found, return it. + (maybe_update_types_lookup_map): Allow adding + decl-only class types to the map of classes held per TU and per + corpus. + (class_or_union::{class_or_union, add_member_decl, + has_no_member}): Adjust. + (class_or_union::{insert_member_type, add_member_type, + add_member_type, remove_member_type, get_member_types, + get_sorted_member_types, find_member_type}): Move these methods to + scope_decl. + ({class_decl, class_or_union}::insert_member_decl): Remove the + "before" parameter as it was not used anymore due to the re-use of + the scope_decl::add_member that handles member types. + * src/abg-reader.cc (read_corpus_group_from_input) + (create_native_xml_read_context): Set the corpus origin. + * src/abg-writer.cc (write_context::{m_nc_type_id_map, + m_emitted_non_canonicalized_type_set, + m_referenced_non_canonicalized_types_set}): Remove these maps that + hold stuff for non-canonicalized types. + (write_context::{type_has_existing_id, get_id_for_type, + clear_type_id_map, has_non_emitted_referenced_types, + record_type_as_referenced, type_is_referenced, + record_type_as_emitted, type_is_emitted, clear_referenced_types, + write_referenced_types, write_canonical_type_ids}): Adjust these + as the maps for non-canonicalized types are gone. + (write_context::{get_referenced_non_canonicalized_types, + get_emitted_non_canonicalized_type_set}): Remove these methods. + (write_decl_in_scope) + (write_class_decl_opening_tag, write_union_decl_opening_tag) + (write_union_decl): Adjust comments. + (write_class_decl): Sort member types. Also, When emitting a + decl-only class, get all of the decl-only classes of the same name + declared in several other TUs and emit all their member types into + this decl-only class just once. This reduces redundancies and + sorting instabilities because for libabigail, all decl-only + classes of a given name are equal, even if they have member types. + * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. + * tests/data/test-annotate/libtest23.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test-anonymous-members-0.o.abi: + Likewise. + * tests/data/test-annotate/test0.abi: Likewise. + * tests/data/test-annotate/test1.abi: Likewise. + * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. + * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-annotate/test2.so.abi: Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: + Likewise. + * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: + Likewise. + * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: + Likewise. + * tests/data/test-diff-filter/test41-report-0.txt: Likewise. + * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: + Likewise. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: + Likewise. + * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. + * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: + Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test0.abi: Likewise. + * tests/data/test-read-dwarf/test0.hash.abi: Likewise. + * tests/data/test-read-dwarf/test1.abi: Likewise. + * tests/data/test-read-dwarf/test1.hash.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-read-dwarf/test2.so.abi: Likewise. + * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + * tests/data/test-read-write/test18.xml: Likewise. + * tests/data/test-read-write/test28-without-std-fns-ref.xml: + Likewise. + * tests/data/test-read-write/test28-without-std-vars-ref.xml: + Likewise. + +2022-09-08 Dodji Seketeli + + Fix IR comparison result caching and canonical type propagation tracking + * src/abg-ir-priv.h (environment::priv::recursive_types_): Define + new data member. + (environment::priv::cache_type_comparison_result): Cache results + only non-recursive and not dependant types, or when the result is + "false". In all these cases, the result, once cached, will not + change. + (environment::priv::mark_dependant_types_compared_until): Mark + types as recursive at the same time others are marked as + dependant. + (environment::priv::{is_recursive_type, set_is_not_recursive}): + Define new member functions. + (environment::priv::{confirm_ct_propagation, + cancel_ct_propagation}): Confirming canonical type propagation + should happen for recursive types as well as their dependant + types. + * src/abg-ir.cc (return_comparison_result): Keep up with the + book-keeping at all time when type canonicalization process is + on-going. Whenever we expect types that depends on recursive + types, expect recursive types too, obviously. + (type_base::get_canonical_type_for): Do not erase the comparison + result cache between the canonicalization of two different types. + (is_comparison_cycle_detected) + (mark_types_as_being_compared, unmark_types_as_being_compared): + Define new overloads for class_decl; + (equals): In the overloads for class_decl and union_decl, use + RETURN_COMPARISON_RESULT and mark_types_as_being_compared without + casting it to class_or_union. + * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. + * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: + Adjust. + * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: + Adjust. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: + Adjust. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: + Adjust. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: + Adjust. + +2022-09-02 Dodji Seketeli + + Allow restricting analyzed decls to exported symbols + * doc/manuals/tools-use-libabigail.txt: New doc text. + * doc/manuals/Makefile.am: Add the new tools-use-libabigail.rst + tool to the source distribution. + * doc/manuals/abidiff.rst: Include the new + tools-use-libabigail.rst. Document the --exported-interfaces-only + and --allow-non-exported-interfaces. + * doc/manuals/abidw.rst: Likewise. + * doc/manuals/abipkgdiff.rst: Likewise. + * doc/manuals/kmidiff.rst: Likewise. + * include/abg-ir.h + (environment::{user_set_analyze_exported_interfaces_only, + analyze_exported_interfaces_only}): Declare new accessors. + * src/abg-ir.cc + (environment::{user_set_analyze_exported_interfaces_only, + analyze_exported_interfaces_only}): Define new accessors. + * src/abg-dwarf-reader.cc (die_is_variable_decl) + (die_is_function_decl): Define new static functions. + (read_context::is_decl_die_with_exported_symbol): Define new + member function. + (read_context::get_{function,variable}_address): Const-ify the + Dwarf_Die* parameter. + (build_translation_unit_and_add_to_ir): If the user asks to + analyze exported interfaces only, the analyze only interfaces + that have exported ELF symbols. + (read_debug_info_into_corpus): If we are looking at the Linux + Kernel, then only analyze exported interfaces unless the user asks + otherwise. + * src/abg-ir-priv.h + (environment::priv::analyze_exported_interfaces_only_): Define new + data member. + * tools/abidiff.cc (options::exported_interfaces_only): Define new + data member. + (display_usage): Add new help strings for + --exported-interfaces-only and --allow-non-exported-interfaces. + (parse_command_line): Parse the new options + --exported-interfaces-only and --allow-non-exported-interfaces. + (main): Pass the value of opts.exported_interfaces_only to the + environment. + * tools/abidw.cc (options::exported_interfaces_only): Define new + data member. + (display_usage): Add new help strings for + --exported-interfaces-only and --allow-non-exported-interfaces. + (parse_command_line): Parse the new options + (load_corpus_and_write_abixml) + (load_kernel_corpus_group_and_write_abixml): Pass the value of + opts.exported_interfaces_only onto the environment. + * tools/abipkgdiff.cc (options::exported_interfaces_only): Define new + data member. + (display_usage): Add new help strings for + --exported-interfaces-only and --allow-non-exported-interfaces. + (parse_command_line): Parse the new options + (compare_task::perform, self_compare_task::perform): Pass the + value of opts.exported_interfaces_only onto the environment. + (compare_prepared_linux_kernel_packages): Likewise. + * tools/kmidiff.cc(options::exported_interfaces_only): Define new + data member. + (display_usage): Add new help strings for + --exported-interfaces-only and --allow-non-exported-interfaces. + (parse_command_line): Parse the new options + (main): Pass the value of opts.exported_interfaces_only onto the + environment. + +2022-09-01 Dodji Seketeli + + dwarf-reader: Revamp the canonical type DIE propagation algorithm + * src/abg-ir-priv.h (enum comparison_result): Define new enum. + * src/abg-dwarf-reader.cc (type_comparison_result_to_be_cached) + (maybe_cache_type_comparison_result) + (get_cached_type_comparison_result) + (maybe_get_cached_type_comparison_result) + (maybe_propagate_canonical_type, propagate_canonical_type) + (return_comparison_result): Define new static functions. + (has_offset_pair, insert_offset_pair, erase_offset_pair) + (have_offset_pair_in_common): Remove static functions. + (read_context::die_comparison_visits_): Remove data member. The + concept supported by this data member is now replaced by caching + the results of comparing aggregate types, especially those that + are not yet canonicalized. This essentially prevents the same + aggregate type pair to be compared again and again. + (read_context::{die_comparison_results_, compare_count_, + canonical_propagated_count_, cancelled_propagation_count_}): New + data members. + (read_context::initialize): Initialize the new data members + compare_count_, canonical_propagated_count_, + cancelled_propagation_count_ of integral type. + (read_context::{erase_canonical_die_offset}): New member + functions. + (struct offset_pairs_stack_type): Define new type. + (die_offset): Remove. + (is_canon_type_to_be_propagated_tag): Add union types to the set + of types for which canonical type propagation might occur. + (is_type_die_to_be_canonicalized): Add function types and array + types to the types to be canonicalized. + (ABG_RETURN): Change this macro to consider + COMPARISON_RESULT_DIFFERENT rather than the "false" boolean. + Also, it uses the new return_comparison_result function. + (ABG_RETURN_FALSE): Likewise, use the new return_comparison_result + function. + (SET_RESULT_TO_FALSE): Make this return + COMPARISON_RESULT_DIFFERENT. + (SET_RESULT_TO, RETURN_IF_COMPARISON_CYCLE_DETECTED): Define new + macros. + (compare_dies): Make this return comparison_result rather than + just a bool. This is also the core of the overhaul of the + canonical DIE propagation algorithm. The algorithm is now similar + to the one implemented in the equals function for class_or_union + types in abg-ir.cc. It's described in the comment that starts + with '@defgroup OnTheFlyCanonicalization' in abg-ir.cc. The type + of the aggregates_being_compared parameter is now + offset_pairs_stack_type in parameter. No more need for the + redundant_aggregates_being_compared parameter. The new + offset_type that also encapsulates the source of the offset is now + used in lieu of the Dwarf_Off type. Results of comparing + aggregates being compared are now cached. When comparing + aggregates, use the RETURN_IF_COMPARISON_CYCLE_DETECTED to return + early if a cycle is detected. The invocation of the ABG_RETURN + macro (especially the call to return_comparison_result) is where + the book keeping for canonical types propagation takes place, so + remove the explicit code that was handling that from the end of + this function. + (read_debug_info_into_corpus): Print statistics about the number + of aggregates compared and canonical-type-propagated. + * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + +2022-07-20 Mark Wielaard + + Handle zero sh_entsize in get_soname_of_elf_file + * src/abg-dwarf-reader.cc (get_soname_of_elf_file): + Make sure entsize is non-zero before use. + https://sourceware.org/bugzilla/show_bug.cgi?id=29346 + +2022-09-19 Xiaole He via Libabigail + + abg-reader: fix comment of function + * src/abg-reader.cc (walk_xml_node_to_map_type_ids): fix comment + +2022-09-20 Dodji Seketeli + + Fix butchered tests/data/Makefile.am + * tests/data/Makefile.am: Fix test file paths. + +2022-09-19 Dodji Seketeli + + test-annotate: Don't emit architecture data + * tests/test-annotate.cc (main): Add the --no-architecture option + to abidw. + * tests/data/test-annotate/PR29443-missing-xx.o.annotated.abi: + Adjust. + * tests/data/test-annotate/libtest23.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test-anonymous-members-0.o.abi: + Likewise. + * tests/data/test-annotate/test0.abi: Likewise. + * tests/data/test-annotate/test1.abi: Likewise. + * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. + * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-annotate/test2.so.abi: Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-annotate/test3.so.abi: Likewise. + * tests/data/test-annotate/test4.so.abi: Likewise. + * tests/data/test-annotate/test5.o.abi: Likewise. + * tests/data/test-annotate/test6.so.abi: Likewise. + * tests/data/test-annotate/test7.so.abi: Likewise. + * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: + Likewise. + +2022-09-19 Dodji Seketeli + + Bug PR29443 - Global variables not emitted to abixml in some cases + * src/abg-ir.cc (var_decl::get_pretty_representation): Always use + qualified name of vars in an anonymous scope for internal + purposes. + * tests/data/test-annotate/PR29443-missing-xx.o.annotated.abi: New + reference test output. + * tests/test-annotate.cc (in_out_specs): Add the above to the test + harness. + * tests/data/test-read-dwarf/PR29443-missing-xx.cc: New source + code for the test. + * tests/data/test-read-dwarf/PR29443-missing-xx.o: New test input + binary. + * tests/data/test-read-dwarf/PR29443-missing-xx.o.abi: New test + reference output. + * tests/data/Makefile.am: Add the new test material to source + distribution. + * tests/test-read-dwarf.cc (in_out_specs): Add the above to the + test harness. + +2022-09-07 Guillermo E. Martinez via Libabigail + + ctf-reader: Lookup debug info for symbols in a non default archive member + * src/abg-ctf-reader.cc (lookup_symbol_in_ctf_archive): New function. + (process_ctf_archive): Use `lookup_symbol_in_ctf_archive'. + +2022-06-28 Ben Woodard via Libabigail + + Bug 28669 - Increment Library version + * configure.ac: Define the variables libabigail_so_{current, + revision, age}. These are to be adjusted after each releases + depending on how the compatibility status of the libabigail's + code. + * src/Makefile.am: Add -version-info + $(LIBABIGAIL_SO_CURRENT):$(LIBABIGAIL_SO_REVISION):$(LIBABIGAIL_SO_AGE) + to LDFLAGS. + +2022-09-01 Dodji Seketeli + + dwarf-reader: Simplify the canonicalization decision of types added to IR + * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Remove + the overload that takes a Dwarf_Die* parameter. + (operator++(die_source& source)): Likewise. + (read_context::{types_to_canonicalize_, + alt_types_to_canonicalize_, + type_unit_types_to_canonicalize_}): Remove these data members + of type vector. (read_context::initialize): Remove + invocations to alt_types_to_canonicalize_.clear(), + type_unit_types_to_canonicalize_.clear(), and + extra_types_to_canonicalize_.clear(). + (read_context::extra_types_to_canonicalize_): Rename this into + read_context::types_to_canonicalize_, of type + vector. + (read_context::types_to_canonicalize): Remove these member + functions that take a parameter of type die_source. + (read_context::extra_types_to_canonicalize): Rename this + function into types_to_canonicalize. It returns a type const + vector&. + (read_context::schedule_type_for_late_canonicalization): + Remove this overload that takes a type const Dwarf_Die*. In + the overload that takes a parameter const type_base_sptr + however, rename the invocation to + extra_types_to_canonicalize_.push_back(t) into + types_to_canonicalize_.push_back(t). + (read_context::canonicalize_types_scheduled): This doesn't + take a die_source parameter anymore. It now only cycles + through the types retrieved by types_to_canonicalize() to + canonicalize them. + (read_context::add_late_canonicalized_types_stats): Remove the + die_source parameter. Use types_to_canonicalize(). + (read_context::perform_late_type_canonicalizing): Just call + read_context::canonicalize_types_scheduled(). + (build_ir_node_from_die): Adjust calls to maybe_canonicalize_type. + Also, really canonicalize the function type when a function decl is + constructed. + * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + +2022-09-02 Dodji Seketeli + + ir: translation_unit::is_empty should work without environment. + * src/abg-ir.cc (translation_unit::is_empty): If there is no + global scope, then we know its empty. No need to create one. + +2022-09-01 Dodji Seketeli + + ir: Don't overdo canonical type propagation control when comparing classes + * src/abg-ir.cc (equals): In the overload for const class_decl&, + do not cancel the propagated canonical type if the propagation is + not the result of invoking the equals overload for class_or_union. + +2022-09-05 Dodji Seketeli + + Add test-abidiff-exit/ld-2.28-21{0,1}.so to source distribution + * tests/data/Makefile.am: Add the new files to source + distribution. Also, add the new + test-abidiff-exit/ld-2.28-21x.so.sources.txt. + * tests/data/test-abidiff-exit/ld-2.28-21x.so.sources.txt: New + file describing where the sources are. + +2022-08-25 Giuliano Procida + + abidw: resolve declaration-only enums the same as classes + * src/abg-dwarf-reader.cc + (read_context::resolve_declaration_only_enums): Use an ordered + map to ensure TUs are always considered in the same order and + so improve ABI XML stability. Given multiple possible + definitions for a enum declaration, check to see if they are + equal and resolve the declaration to the first definition if + so. + +2022-08-25 Giuliano Procida + + abidw: remove always true test in resolve_declaration_only_classes + * src/abg-dwarf-reader.cc + (read_context::resolve_declaration_only_classes): Remove + tautological conditional. + +2022-08-25 Giuliano Procida + + abidw: fix --stats output for resolved classes and enums + * src/abg-dwarf-reader.cc + (read_context::resolve_declaration_only_classes): Fix + conditional logic so that showing stats includes the first + unresolved type. + (read_context::resolve_declaration_only_enums): Likewise. + +2022-08-15 Guillermo E. Martinez via Libabigail + + ctf-reader: looks for debug information in out-of-tree modules + * src/abg-ctf-reader.cc (process_ctf_archive, read_corpus + slurp_elf_info): Avoid looking for `vmlinux.ctfa' when we aren't + processing a `cur_corpus_group_'. So CTF info is embedded in the + `.ko' file. + * tests/data/Makefile.am: Add test inputs and expected files. + * tests/data/test-read-ctf/test-linux-module.{ko,c,abi}: Add new + test input and reference kABI. + * tests/test-read-ctf.cc: Add new testcase. + +2022-08-26 Dodji Seketeli + + dwarf-reader: Better handle the absence of a die->parent map + * src/abg-dwarf-reader.cc (get_scope_for_die): Consider that in + the absence of the DIE->PARENT map, all decls are in the global. + namespace. + * tests/data/test-abidiff-exit/ld-2.28-210.so: New test. + * tests/data/test-abidiff-exit/ld-2.28-211.so: Likewise. + * tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt: New reference test output. + * tests/test-abidiff-exit.cc (in_out_specs): Add the test above to + the harness. + +2022-08-29 Dodji Seketeli + + Update test-read-ctf reference output + * tests/data/test-read-ctf/test-PR26568-1.o.abi: Adjust. + * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. + * tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise. + * tests/data/test-read-ctf/test-callback2.abi: Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-list-struct.abi: Likewise. + * tests/data/test-read-ctf/test0.abi: Likewise. + * tests/data/test-read-ctf/test0.hash.abi: Likewise. + * tests/data/test-read-ctf/test1.so.abi: Likewise. + * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. + * tests/data/test-read-ctf/test7.o.abi: Likewise. + * tests/data/test-read-ctf/test9.o.abi: Likewise. + +2022-08-19 Dodji Seketeli + + ir: Don't consider different int types of same kind and size as equivalent + * src/abg-ir.cc (equals): In the overload for type_decl, do not + consider int types of the same type as being equivalent by + overlooking their long and short modifiers. + * tests/data/test-annotate/libtest23.so.abi: Adjust. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test0.abi: Likewise. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: + Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: + Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test0.abi: Likewise. + * tests/data/test-read-dwarf/test0.hash.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + * tests/data/test-read-write/test28-without-std-fns-ref.xml: + Likewise. + * tests/data/test-read-write/test28-without-std-vars-ref.xml: + Likewise. + +2022-07-24 Dodji Seketeli + + writer: Make sorting referenced typedefs types stable in abixml + * src/abg-writer.cc (read_context::type_ptr_cmp::operator()): In + the less-than operator the type pointer comparison functor, use + the non-internal pretty representation of types for sorting + purposes. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Adjust + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + +2022-07-22 Dodji Seketeli + + ir: Consider integral types of same kind and size as equivalent + * include/abg-fwd.h (is_integral_type): Declare new function. + * include/abg-ir.h (type_decl::get_qualified_name): Add a + declaration of an implementation of the virtual interface + get_qualified_name. + * src/abg-ir-priv.h (integral_type::set_modifiers): Define a new + setter. + (integral_type::to_string): Add an "internal" flag. + * src/abg-ir.cc (operator~, operator&=): Declare + new operators. + (get_internal_integral_type_name): Define new static function. + (decl_base::priv::{temporary_internal_qualified_name_, + internal_qualified_name_}): Define two new data members. + (get_type_name): For internal name of integral types, use the new + get_internal_integral_type_name function. + (is_integral_type): Define new function. + (integral_type::set_modifiers): Define new member function. + (operator|, operator&): Fix some indentation. + (operator~, operator&=): Define new operators. + (parse_integral_type): Fix the logic of this function. Namely, it + wasn't handling parsing "long long" correctly. + (integral_type::to_string): Add an "internal" flag. + (equals): In the overload for type_decl, do not take the short, + long and long long into account when comparing integral types of + the same size. + (type_decl::get_qualified_name): Define new method. + (type_decl::get_pretty_representation): For internal name of + integral types, use the new get_internal_integral_type_name + function. + ({decl,type}_topo_comp::operator()): Use the non-internal pretty + representation of decls/types for sorting purpose. + * src/abg-reader.cc (build_type_decl): We don't expect the + integral type name from abixml to the same as the name of the + parsed integral type, as the abixml file can be old and have an + old format. + * tests/data/test-annotate/libtest23.so.abi: Adjust. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust. + * tests/data/test-annotate/test0.abi: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. + * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Adjust. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Adjust. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Adjust. + * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. + * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: + Adjust. + * tests/data/test-diff-filter/test41-report-0.txt: Adjust. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: + Adjust. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: + Adjust. + * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: + Adjust. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: + Adjust. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: + Adjust. + * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. + * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Adjust. + * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Adjust. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Adjust. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust. + * tests/data/test-read-dwarf/test0.abi: Adjust. + * tests/data/test-read-dwarf/test0.hash.abi: Adjust. + * tests/data/test-read-dwarf/test1.hash.abi: Adjust. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Adjust. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Adjust. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Adjust. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Adjust. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. + * tests/data/test-read-write/test22.xml: Adjust. + * tests/data/test-read-write/test23.xml: Adjust. + * tests/data/test-read-write/test28-without-std-fns-ref.xml: Adjust. + * tests/data/test-read-write/test28-without-std-vars-ref.xml: Adjust. + +2022-07-22 Dodji Seketeli + + dwarf-reader: Remove redundant qualifiers from qualified types + * include/abg-fwd.h (strip_redundant_quals_from_underyling_types): + Declare new function. + * include/abg-ir.h (operator&=): Declare new binary operator for + qualified_type_def::CV and ... + * src/abg-ir.cc (+operator&=): ... define it here. + (strip_redundant_quals_from_underyling_types): Define new function + and ... + * src/abg-dwarf-reader.cc (maybe_strip_qualification): ... Use it + here. + * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: + Adjust. + +2022-07-22 Dodji Seketeli + + ir: Disambiguate sorting of array element types + * src/abg-ir.cc (get_type_representation): In the overload for + array_type_def, use qualified names for element types. + * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. + * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Adjust. + * tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Adjust. + +2022-07-19 Dodji Seketeli + + ir: Make pointers name stable wrt decl-only-ness of pointed-to types + * src/abg-ir.cc (look_through_decl_only): New overload for + type_base. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. + +2022-07-18 Dodji Seketeli + + tests-diff-{filter,pkg,pkg-ctf}: Fix tests broken by the previous commit + * tests/data/test-diff-filter/test41-report-0.txt: Adjust. + * tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: + Adjust. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: + Adjust. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: + Adjust. + +2022-07-18 Dodji Seketeli + + dwarf-reader: Support DWARF incomplete class types + * src/abg-dwarf-reader.cc + (read_context::resolve_declaration_only_classes): Do not avoid + comparing ODR-relevant classes. + (add_or_update_class_type): Detect incomplete classes and treat + them as decl-only types. They'll be resolved to their proper + complete types later, by + read_context::resolve_declaration_only_classes. + * tests/data/test-annotate/libtest23.so.abi: Adjust. + * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. + * tests/data/test-diff-filter/test41-report-0.txt: Likewise. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + +2022-07-14 Dodji Seketeli + + Better Handle naming typedefs on anonymous enums + * src/abg-dwarf-reader.cc (build_typedef_type): Do not re-use + typedefs. + * src/abg-ir.cc (get_function_type_name, get_method_type_name) + (function_decl::get_pretty_representation_of_declarator): Strip + typedefs when the function name is computed for internal purposes. + (equals): In the overload for function_decl::parameter, strip + typedefs when comparing parameter types. + * tests/data/test-annotate/libtest23.so.abi: Adjust. + * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-diff-dwarf/test2-report.txt: Likewise. + * tests/data/test-diff-filter/test3-report.txt: Likewise. + * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: + Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + +2022-07-14 Dodji Seketeli + + dwarf-reader: Fix a thinko when building vars + * src/abg-dwarf-reader.cc (build_ir_node_from_die): Don't get out + early when building vars. + +2022-07-11 Dodji Seketeli + + Bug 29302 - Don't edit fn linkage name when not appropriate + * src/abg-dwarf-reader.cc (build_function_decl): If the linkage + name is properly set in the DWARF, do not change it. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. + +2022-07-08 Guillermo E. Martinez + + ctf-reader: add support to looks for debug information to extract kABI + * src/abg-ctf-reader.cc (find_ctfa_file): Add new function + meant to locate the Linux Kernel debug information file + `vmlinux.ctfa'. + (ctf_reader::read_corpus): Use `find_ctfa_file' function. + +2022-07-08 Guillermo E. Martinez via Libabigail + + Add regression tests for abipkgdiff using ctf info + * doc/manuals/abipkgdiff.rst: Document the fact that abipkgdiff + now supports the CTF format. + * tests/data/test-diff-pkg-ctf/cracklib-2.9.6-15-ol8.x86_64-report-0.txt: + New test input. + * tests/data/test-diff-pkg-ctf/cracklib-2.9.6-15-ol8u0.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/cracklib-2.9.6-15-ol8u6.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-0-dir1/dir.abignore: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-0-dir1/libobj-v0.so: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-0-dir1/obj-v0.c: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-0-dir2/libobj-v0.so: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-0-dir2/obj-v0.c: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-0-report-0.txt: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-1-dir1/libobj-v0.so: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-1-dir1/obj-v0.c: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-1-dir2/dir.abignore: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-1-dir2/libobj-v0.so: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-1-dir2/obj-v0.c: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-1-report-0.txt: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-1-report-1.txt: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-2-dir1/libobj-v0.so: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-2-dir1/obj-v0.c: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/.abignore: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/dir.abignore: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/libobj-v0.so: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/obj-v0.c: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-2-report-0.txt: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-dir1/libobj-v0.so: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-dir1/obj-v0.c: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-dir2/.abignore: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-dir2/libobj-v0.so: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-dir2/obj-v0.c: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-report-0.txt: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-report-1.txt: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-report-2.txt: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3.suppr: Likewise. + * tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-1.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-2.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-report-0.txt: + Likewise. + * tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-report-1.txt: + Likewise. + * tests/data/test-diff-pkg-ctf/gmp-6.1.2-8-ol8u0.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/gmp-6.2.0-10-ol9u0.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg-ctf/isl-0.16.1-6.x86_64.rpm: Likewise. + * tests/data/test-diff-pkg-ctf/isl-0.16.1-7.x86_64.rpm: Likewise. + * tests/data/test-diff-pkg-ctf/isl-0.16.1-report-0.txt: Likewise. + * tests/data/test-diff-pkg-ctf/isl-debuginfo-0.16.1-6.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/isl-debuginfo-0.16.1-7.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/libdwarf-20180129-4-no-ctf.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/libdwarf-20180129-4.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/libdwarf-20180129-5-no-ctf.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/libdwarf-20180129-5.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1-report0.txt: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/symlinks/foo.o: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/symlinks/libfoo.so: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/targets/foo.c: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/targets/foo.o: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/targets/libfoo.so: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/symlinks/foo.o: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/symlinks/libfoo.so: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/targets/foo.c: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/targets/foo.o: + Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/targets/libfoo.so: + Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.ta: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.tar: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.tar.bz2: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.tar.gz: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.ta: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.tar: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.tar.bz2: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.tar.gz: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-report-0.txt: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-1-dir1.tar.gz: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-1-dir2.tar.gz: Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-1-report-0.txt: Likewise. + * tests/data/test-diff-pkg-ctf/test-rpm-report-0.txt: Likewise. + * tests/data/test-diff-pkg-ctf/test-rpm-report-1.txt: Likewise. + * tests/data/test-diff-pkg-ctf/test-rpm-report-2.txt: Likewise. + * tests/data/test-diff-pkg-ctf/test-rpm-report-3.txt: Likewise. + * tests/data/test-diff-pkg-ctf/test-rpm-report-4.txt: Likewise. + * tests/data/test-diff-pkg-ctf/test-rpm-report-5.txt: Likewise. + * tests/data/Makefile.am: Add the test material above to source + distribution. + * tests/test-diff-pkg.cc (in_out_spec): Add the test inputs above + to this harness. + +2022-07-08 Matthias Maennich + + tests: Update Catch2 library to v2.13.9 + * tests/lib/catch.hpp: Update to v2.13.9 + +2022-07-04 Guillermo E. Martinez via Libabigail + + kmidiff: Add CTF support to comparing Kernel trees + * doc/manuals/kmidiff.rst: Add documentation for the new --ctf option. + * tools/kmidiff.cc (options::use_ctf): Define new data member. + (display_usage): Add a help string for the --ctf option. + (main): Adjust call to pass + build_corpus_group_from_kernel_dist_under with origin being + corpus::CTF_ORIGIN when the user provides the --ctf option. + +2022-07-04 Dodji Seketeli + + dwarf-reader,ir: Don't canonicalize enums too early & too naively + * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Delay enum + type canonicalization. + * src/abg-ir.cc (type_base::get_canonical_type_for): Look through + all decl-only types, not just decl-only classes. + (equals): In the overload for enums, look through decl-only + enums. Also, fix redundant enumerators detection to make it more + robust, otherwise, some regression tests break. + +2022-06-13 Giuliano Procida + + add Linux kernel symbol namespace support + * include/abg-ir.h (elf_symbol::elf_symbol): Add ns argument. + (elf_symbol::create): Add ns argument. + (elf_symbol::get_namespace): Declare new function. + (elf_symbol::set_namespace): Declare new function. + and set_namespace. + * src/abg-comp-filter.cc (namespace_changed): Define new + helper functions. + (categorize_harmful_diff_node): Also call namespace_changed(). + * src/abg-ir.cc (elf_symbol::priv): Add namespace_ member. + (elf_symbol::priv::priv): Add namespace_ to initialisers. + (elf_symbol::elf_symbol): Take new ns argument and pass it to + priv constructor. + (elf_symbol::create): Take new ns argument and pass it to + elf_symbol constructor. + (elf_symbol::get_namespace): Define new function. + (elf_symbol::set_namespace): Define new function. + * src/abg-reader.cc (build_elf_symbol): If namespace + attribute is present, set symbol namespace. + * src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): If + symbol namespaces differ, report this. + * src/abg-symtab-reader.cc (symtab::load): Get ELF header to + distinguish vmlinux from .ko. Try to get __ksymtab_strings + metadata and data. Use these to look up __kstrtabns_FOO + namespace entries. Set symbol namespace where found. + * src/abg-writer.cc (write_elf_symbol): Emit namespace + attribute, if symbol has a namespace. + * tests/data/Makefile.am: Add new test files. + * tests/data/test-abidiff/test-namespace-0.xml: New test file. + * tests/data/test-abidiff/test-namespace-1.xml: Likewise + * tests/data/test-abidiff/test-namespace-report.txt: Likewise. + * tests/test-abidiff.cc: Add new test case. + Reviewed-by: Matthias Maennich + +2022-06-13 Giuliano Procida + + Linux symbol CRCs: support 0 and report presence changes + * include/abg-ir.h (elf_symbol::elf_symbol): Argument crc is + now an optional defaulted to absent. + (elf_symbol::create): Likewise. + (elf_symbol::get_crc): Now returns an optional uint64_t. + (elf_symbol::set_src): Now takes an optional uint64_t. + * src/abg-comp-filter.cc (crc_changed): Simplify comparison. + * src/abg-ir.cc (elf_symbol::priv): Member crc_ is now an + optional uint64_t. + (elf_symbol::priv::priv): Argument crc is now an optional + uint64_t. + (elf_symbol::elf_symbol): Likewise. + (elf_symbol::create): Argument crc is now an optional uint64_t + and defaults to absent. + (textually_equals): Simplify comparison. + (elf_symbol::get_crc): Now returns an optional uint64_t. + (elf_symbol::set_crc): Now takes an optional uint64_t. + * src/abg-reader.cc (build_elf_symbol): Treat CRC 0 the same + as other CRC values. + * src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): + Treat CRC 0 the same as other CRC values and also report + changes to CRC presence. + * src/abg-writer.cc (write_elf_symbol): Treat CRC 0 the same + as other CRC values. + * tests/data/Makefile: Remove test-abidiff/test-crc-report.txt + and add test-abidiff/test-crc-report-{0-1,1-0,1-2}.txt. + * tests/data/test-abidiff/test-crc-report-0-1.txt: Report + showing additional of CRCs. + * tests/data/test-abidiff/test-crc-report-1-0.txt: Report + showing removal of CRCs. + * tests/data/test-abidiff/test-crc-report-1-2.txt: Renamed + from tests/data/test-abidiff/test-crc-report.txt. + * tests/test-abidiff.cc: Update test cases that no longer + generate empty reports. + * tests/test-symtab.cc: Update KernelSymtabsWithCRC test. + Reviewed-by: Matthias Maennich + +2022-06-13 Giuliano Procida + + optional: minor improvements + * include/abg-cxx-compat.h (optional): Add operator== and + operator!=. Add noexcept decorations. Tweak operator bool. + Reviewed-by: Matthias Maennich + +2022-06-13 Giuliano Procida + + crc_changed: eliminate copying of shared_ptr values + * src/abg-comp-filter.cc (crc_changed): Take references to + avoid std::shared_ptr copying. Split declarations into one per + line. Remove unnecessary return expression parentheses. + Reviewed-by: Matthias Maennich + +2022-06-30 Dodji Seketeli + + ir: Add some debugging facilities for the comparison machinery + * src/abg-ir-priv.h: Include iostream to access std::cerr. + (environment::priv::{dump_classes_being_compared, + dump_fn_types_being_compared}): Define new member functions. + * src/abg-ir.cc (dump_classes_being_compared) + (dump_fn_types_being_compared): Define new functions. + +2022-06-30 Dodji Seketeli + + Bug 29303 - Cache the result of structural aggregate comparison + * src/abg-ir-priv.h (struct uint64_t_pair_hash): Define new type. + (uint64_t_pair_type, uint64_t_pairs_set_type) + (type_comparison_result_type): Define new typedefs. + (environment::priv::{classes_being_compared_, + fn_types_being_compared_}): Use the new uint64_t_pairs_set_type + type for these. + (environment::priv::{type_comparison_results_cache_, + allow_type_comparison_results_caching_}): Define new data members. + (environment::priv::priv): Initialize the new + allow_type_comparison_results_caching_ scalar data member. + (environment::priv::{allow_type_comparison_results_caching, + cache_type_comparison_result, is_type_comparison_cached, + clear_type_comparison_results_cache}): Define new member + functions. + (environment::priv::{mark_as_being_compared, + unmark_as_being_compared, comparison_started}): Take a pair of + types. + (struct function_type::priv): Move this here, from ... + * src/abg-ir.cc (struct function_type::priv): ... here. + (is_comparison_cycle_detected, mark_types_as_being_compared) + (unmark_types_as_being_compared): Adjust call to the new + environment::priv::{comparison_started, mark_as_being_compared, + unmark_as_being_compared}. + (type_base::get_canonical_type_for): Use aggregate types + comparison result caching when doing type comparison. + (equals): In the overload for function_type, class_or_union and + class_decl, cache the result of aggregate type comparison and + re-use that cached result when it's available. + * src/abg-dwarf-reader.cc + (read_context::compare_before_canonicalisation): Use aggregate + types comparison result caching when doing type comparison. + +2022-06-28 Dodji Seketeli + + dwarf-reader: Don't consider top-level types as private + * src/abg-dwarf-reader.cc (die_is_public_decl): Only function and + variable decls having the DW_AT_external, as well as non-anonymous + namespaces are considered public decls. The rest is considered + private. + (build_namespace_decl_and_add_to_ir): If the current namespace is + private (anonymous), then its content is also private. Otherwise, + use die_is_public_decl to know if its content is public or not. + +2022-06-24 Dodji Seketeli + + dwarf-reader: Avoid long comparisons when resolving C++ decl-only classes + * src/abg-dwarf-reader.cc + (read_context::resolve_declaration_only_classes): Don't compare + same-name-types of a binary if the ODR is relevant. + * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + +2022-06-23 Dodji Seketeli + + test-alt-dwarf: Add missing dwz alt-debug file + * tests/data/test-alt-dwarf-file/libstdc++/libstdc++-report-1.txt: + New reference test output. + * tests/data/test-alt-dwarf-file/libstdc++/usr/lib/debug/.dwz/gcc-12.1.1-1.fc37.x86_64: + New dwz alt-debug info file. + * tests/data/Makefile.am: Add the test material above to source + distribution. + +2022-06-23 Dodji Seketeli + + ir: Make canonicalization stable wrt typedefs in fn return types + * src/abg-ir.cc (get_function_type_name, get_method_type_name): + When the function type name is for internal purposes, strip + potential typedefs off. + (equal): In the overload for function_type, strip potential + typedefs off of return types before comparing them. + (decl_base::set_naming_typedef): Properly adjust the qualified + name of the type to which a naming typedef is being set. + * tests/data/test-alt-dwarf-file/libstdc++/libstdc++-report.txt: + New reference test output. + * tests/data/test-alt-dwarf-file/libstdc++/usr/lib/debug/usr/lib64/libstdc++.so.6.0.30-12.1.1-1.fc37.x86_64.debug: + New binary test input. + * tests/data/test-alt-dwarf-file/libstdc++/usr/lib64/libstdc++.so.6.0.30: + New binary test input. + * tests/data/Makefile.am: Add the new test material to source + distribution. + * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + +2022-06-21 Dodji Seketeli + + Update year in copyright notice + * include/abg-comp-filter.h: Update year in copyright notice. + * include/abg-comparison.h: Likewise. + * include/abg-config.h: Likewise. + * include/abg-corpus.h: Likewise. + * include/abg-ctf-reader.h: Likewise. + * include/abg-cxx-compat.h: Likewise. + * include/abg-diff-utils.h: Likewise. + * include/abg-dwarf-reader.h: Likewise. + * include/abg-elf-reader-common.h: Likewise. + * include/abg-fwd.h: Likewise. + * include/abg-hash.h: Likewise. + * include/abg-ini.h: Likewise. + * include/abg-interned-str.h: Likewise. + * include/abg-ir.h: Likewise. + * include/abg-libxml-utils.h: Likewise. + * include/abg-reader.h: Likewise. + * include/abg-regex.h: Likewise. + * include/abg-reporter.h: Likewise. + * include/abg-sptr-utils.h: Likewise. + * include/abg-suppression.h: Likewise. + * include/abg-tools-utils.h: Likewise. + * include/abg-traverse.h: Likewise. + * include/abg-viz-common.h: Likewise. + * include/abg-viz-dot.h: Likewise. + * include/abg-viz-svg.h: Likewise. + * include/abg-workers.h: Likewise. + * include/abg-writer.h: Likewise. + * src/abg-comp-filter.cc: Likewise. + * src/abg-comparison-priv.h: Likewise. + * src/abg-comparison.cc: Likewise. + * src/abg-config.cc: Likewise. + * src/abg-corpus-priv.h: Likewise. + * src/abg-corpus.cc: Likewise. + * src/abg-ctf-reader.cc: Likewise. + * src/abg-default-reporter.cc: Likewise. + * src/abg-diff-utils.cc: Likewise. + * src/abg-dwarf-reader.cc: Likewise. + * src/abg-elf-helpers.cc: Likewise. + * src/abg-elf-helpers.h: Likewise. + * src/abg-elf-reader-common.cc: Likewise. + * src/abg-hash.cc: Likewise. + * src/abg-ini.cc: Likewise. + * src/abg-internal.h: Likewise. + * src/abg-ir-priv.h: Likewise. + * src/abg-ir.cc: Likewise. + * src/abg-leaf-reporter.cc: Likewise. + * src/abg-libxml-utils.cc: Likewise. + * src/abg-reader.cc: Likewise. + * src/abg-regex.cc: Likewise. + * src/abg-reporter-priv.cc: Likewise. + * src/abg-reporter-priv.h: Likewise. + * src/abg-suppression-priv.h: Likewise. + * src/abg-suppression.cc: Likewise. + * src/abg-symtab-reader.cc: Likewise. + * src/abg-symtab-reader.h: Likewise. + * src/abg-tools-utils.cc: Likewise. + * src/abg-traverse.cc: Likewise. + * src/abg-viz-common.cc: Likewise. + * src/abg-viz-dot.cc: Likewise. + * src/abg-viz-svg.cc: Likewise. + * src/abg-workers.cc: Likewise. + * src/abg-writer.cc: Likewise. + * tests/print-diff-tree.cc: Likewise. + * tests/test-abicompat.cc: Likewise. + * tests/test-abidiff-exit.cc: Likewise. + * tests/test-abidiff.cc: Likewise. + * tests/test-alt-dwarf-file.cc: Likewise. + * tests/test-core-diff.cc: Likewise. + * tests/test-cxx-compat.cc: Likewise. + * tests/test-diff-dwarf-abixml.cc: Likewise. + * tests/test-diff-dwarf.cc: Likewise. + * tests/test-diff-filter.cc: Likewise. + * tests/test-diff-pkg.cc: Likewise. + * tests/test-diff-suppr.cc: Likewise. + * tests/test-diff2.cc: Likewise. + * tests/test-elf-helpers.cc: Likewise. + * tests/test-ini.cc: Likewise. + * tests/test-ir-walker.cc: Likewise. + * tests/test-kmi-whitelist.cc: Likewise. + * tests/test-lookup-syms.cc: Likewise. + * tests/test-read-ctf.cc: Likewise. + * tests/test-read-dwarf.cc: Likewise. + * tests/test-read-write.cc: Likewise. + * tests/test-symtab-reader.cc: Likewise. + * tests/test-symtab.cc: Likewise. + * tests/test-tools-utils.cc: Likewise. + * tests/test-types-stability.cc: Likewise. + * tests/test-utils.cc: Likewise. + * tests/test-utils.h: Likewise. + * tools/abicompat.cc: Likewise. + * tools/abidiff.cc: Likewise. + * tools/abidw.cc: Likewise. + * tools/abilint.cc: Likewise. + * tools/abipkgdiff.cc: Likewise. + * tools/abisym.cc: Likewise. + * tools/binilint.cc: Likewise. + * tools/kmidiff.cc: Likewise. + * update-copyright.sh: Likewise. + +2022-06-21 Dodji Seketeli + + reporter-priv: Passing a string parm by reference + * src/abg-reporter-priv.h + (maybe_report_data_members_replaced_by_anon_dm): Pass the string parm by ... + * src/abg-reporter-priv.cc + (maybe_report_data_members_replaced_by_anon_dm): ... reference. + +2022-04-11 Dodji Seketeli + + dwarf-reader: Fix DWARF string comparison optimization + * src/abg-dwarf-reader.cc (slowly_compare_strings) + (die_char_str_attribute): Define new static functions. + (compare_dies_string_attribute_value): Use the new + slowly_compare_strings here. + * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. + +2022-04-04 Dodji Seketeli + + Canonicalize DIEs w/o assuming ODR & handle typedefs transparently + * include/abg-fwd.h (peel_typedef_pointer_or_reference_type): + Declare new function. + * src/abg-dwarf-reader.cc (read_context::{compute_canonical_die, + get_canonical_die, get_or_compute_canonical_die}): Don't + special-case ODR-relevant cases. + (is_canon_type_to_be_propagated_tag): Rename + is_canonicalizeable_type_tag into this. + (erase_offset_pair): Make this return a bool, not void. + (have_offset_pair_in_common, try_canonical_die_comparison) + (notify_die_comparison_failed): Define new static functions. + (ABG_RETURN, ABG_RETURN_FALSE): Define new macros. + (compare_dies): Handle DW_TAG_{class,unspecified}_type DIES. Also + if a comparing a DIE kind is not supported, assume the comparison + yields "false" for the purpose of canonicalization. Add a new + parameter for redundant aggregates being compared. Use the + redundant aggregate set to detect if a redundant aggregate has + been detected and is still being "explored"; if that's the case, + then canonical DIE propagation is de-activated. This might incur + a performance hit. Use the new ABG_RETURN and ABG_RETURN_FALSE + macros. Use the new try_canonical_die_comparison to compare + canonical DIEs rather than doing it by hand. + (build_typedef_type): Don't try to rely on canonical typedefs + DIEs. + * src/abg-ir.cc + (type_topo_comp::has_artificial_or_natural_location): Define new + method. + (type_topo_comp::operator(const type_base*, const type_base*)): In + this topological comparison operator of types, when two types have + the same textual representation, if they don't have any location, + if they are pointer/reference/typedef types, use the textual + representation of their ultimate underlying type for sorting + order. + (peel_typedef_pointer_or_reference_type): Define new function. + (compare_types_during_canonicalization): Perform the structural + canonical comparison first. + (equals): In the overload for array_type_def::subrange_type&, + remove unused code. In the overload for typedef_decl& don't + compare typedef names. In the overload for class_or_union, make + the RETURN macro *NOT* propagate canonical type because this equal + function is used as a subroutine by overloads for class and union. + That means that the class_or_union equal function can return true, + and still, the caller (overload for class_decl or union_decl) can + later return false; in that case, we don't want canonical type to + be propagated. In the overload for class_decl::base_spec, use the + ABG_RETURN macro when returning comparing decl-bases. In the + overload for class_decl, use ABG_RETURN when returning the result + of comparing class_or_union artifacts. + (maybe_propagate_canonical_type): If we are using canonical type + comparison, then do not propagate the type, if + WITH_DEBUG_TYPE_CANONICALIZATION is defined. + (is_non_canonicalized_type): Add typedefs to the set of + non-canonicalized types. + * src/abg-writer.cc (struct non_canonicalized_type_hash, struct + non_canonicalized_type_equal): Define new functors. + (typedef nc_type_ptr_set_type): Define a new non-canonicalized set + type. + (typedef nc_type_ptr_istr_map_type): Define a new map of + non-canonicalized types/interned string map. + (write_context::{m_nc_type_id_map, + m_emitted_non_canonicalized_type_set, + m_referenced_non_canonicalized_types_set}): New data members. + (write_context::type_has_existing_id): Look for non-canonicalized + types in the m_nc_type_id_map map. + (write_context::get_id_for_type): Use m_nc_type_id_map for + non-canonicalized types. + (write_context::clear_type_id_map): Clear m_nc_type_id_map too. + (write_context::get_referenced_non_canonicalized_types): Renamed + write_context::get_referenced_non_canonical_types into this. Make + it return the new + write_context::m_referenced_non_canonicalized_types_set. + (write_context::has_non_emitted_referenced_types): Just use + write_context::type_is_emitted as it knows where to look up for + non-canonicalized types. + (write_context::record_type_as_referenced): Use + m_referenced_non_canonicalized_types_set to store referenced + non-canonicalized types. The other types are stored in + m_emitted_set as previously. + (write_context::type_is_emitted): Look into + m_emitted_non_canonicalized_type_set for non-canonicalized types. + Other types are still in m_emitted_type_set. + (write_context::{record_decl_only_type_as_emitted, + decl_only_type_is_emitted, get_emitted_decl_only_types_set}): + Remove methods. + (write_context::get_emitted_non_canonicalized_type_set): Define + new method. + (write_context::clear_referenced_types): Clear + m_referenced_non_canonicalized_types_set too, as + m_referenced_non_canonical_types_set is no more. + (write_context::referenced_type_should_be_emitted): Use only + write_context::type_is_emitted as it knows how to check it all + now. + (write_referenced_types): Use the more compact ranged-base for + loops. + (write_translation_unit): Write the non-canonicalized types that + are not yet emitted. + (write_class_decl, write_union_decl): Adjust recording type as + emitted. + (write_canonical_type_ids): Adjust. + * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. + * tests/data/test-annotate/libtest23.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. + * tests/data/test-annotate/test0.abi: Likewise. + * tests/data/test-annotate/test1.abi: Likewise. + * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. + * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-annotate/test2.so.abi: Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-annotate/test3.so.abi: Likewise. + * tests/data/test-annotate/test5.o.abi: Likewise. + * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Likewise. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: + Likewise. + * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise. + * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise. + * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. + * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. + * tests/data/test-diff-filter/test41-report-0.txt: Likewise. + * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64: + Likewise. + * tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64-self-check-report-0.txt: + Likewise + * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: + Likewise. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: + Likewise. + * tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: + Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-functions-declaration.abi: + Likewise. + * tests/data/test-read-ctf/test1.so.abi: Likewise. + * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. + * tests/data/test-read-ctf/test2.so.abi: Likewise. + * tests/data/test-read-ctf/test2.so.hash.abi: Likewise. + * tests/data/test-read-ctf/test5.o.abi: Likewise. + * tests/data/test-read-ctf/test7.o.abi: Likewise. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: + Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: + Likewise. + * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. + * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: + Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test-suppressed-alias.o.abi: + Likewise. + * tests/data/test-read-dwarf/test0.abi: Likewise. + * tests/data/test-read-dwarf/test0.hash.abi: Likewise. + * tests/data/test-read-dwarf/test1.abi: Likewise. + * tests/data/test-read-dwarf/test1.hash.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-read-dwarf/test2.so.abi: Likewise. + * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3.so.abi: Likewise. + * tests/data/test-read-dwarf/test3.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test5.o.abi: Likewise. + * tests/data/test-read-dwarf/test5.o.hash.abi: Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + * tests/data/test-read-write/test18.xml: Likewise. + * tests/data/test-read-write/test28-without-std-fns-ref.xml: + Likewise. + * tests/data/test-read-write/test28-without-std-vars-ref.xml: + Likewise. + +2022-04-14 Dodji Seketeli + + dwarf-reader: compare_dies sometimes compares empty formal parms + * src/abg-dwarf-reader.cc (compare_dies): Don't try to compare + formal parameters if there is none. + +2022-03-31 Dodji Seketeli + + abidw, dwarf-reader: Add an option to debug DIE canonicalization + * include/abg-ir.h + (environment::debug_die_canonicalization_is_on): Declare new methods. + * src/abg-ir.cc (environment::debug_die_canonicalization_is_on): + Define them. + * src/abg-dwarf-reader.cc + (compare_dies_during_canonicalization): Define new static + function. + (read_context::{debug_die_canonicalization_is_on_, + use_canonical_die_comparison_}): Declare these data members. + (read_context::read_context): Initialize them. + (read_context::get_canonical_die): When ODR is considered, if DIE + canonicalization debugging is on, use the new + compare_dies_during_canonicalization for the type comparison to be + done both structurally and canonically; both comparison should + yield the same result. Also, make this method function non-const. + * src/abg-ir-priv.h + (environment::priv::debug_die_canonicalization_): Define new data + member. + (environment::priv::priv): Initialize it. + * tools/abidw.cc (options::debug_die_canonicalization_): Define + new data member. + (options::options): Initialize it. + (display_usage): Add a description for the --debug-dc option. + (parse_command): Parse the new --debug-dc option. + (load_corpus_and_write_abixml): Use the new + environment::debug_die_canonicalization_is_on. + +2022-03-31 Dodji Seketeli + + test-read-dwarf: Use abidw rather than using the library + * tests/test-read-dwarf.cc (set_suppressions) + (set_suppressions_from_headers): Remove these static functions. + (test_task_dwarf::perform): Use abidw rather than using the + library. Remove the path and architecture from the abixml files. + Also, when the test fails, display the actual command that failed. + +2022-03-31 Dodji Seketeli + + Add better error messaging to several tests + * tests/test-diff-filter.cc (test_task::perform): Display the + failing command. + * tests/test-read-common.cc (test_task::run_abidw): Likewise. + * tests/test-read-common.h (test_task::run_diff): Likewise. + +2022-06-13 Dodji Seketeli + + ir, test-read-ctf: Remove uncertainty in sorting anonymous types + * src/abg-ir.cc ({class_decl, + union_decl}::get_pretty_representation): If the anonymous class + has no internal name, use its flat representation as internal + representation. + * tests/data/test-read-ctf/test-PR26568-1.o.abi: Likewise. + * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. + * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. + * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. + * tests/data/test-read-ctf/test0.hash.abi: Likewise. + +2022-06-09 Giuliano Procida + + limit repeated DIE comparisons + * src/abg-dwarf-reader.cc (read_context): Add mutable + die_comparison_visits_ member. + (compare_dies): Return true if this is a self-comparison. + Return true if we have visited this comparison 10000 times. + +2022-06-09 Dodji Seketeli + + abicompat: Properly guard inclusion of abg-ctf-reader.h + * tools/abicompat.cc: Guard inclusion of abg-ctf-reader.h with + #ifdef WITH_CTF. + +2022-06-03 Dodji Seketeli + + Bug 29144 - abidiff doesn't report base class re-ordering + * include/abg-comparison.h (class_diff::moved_bases): Declare new + method. + * src/abg-comparison-priv.h (class_diff::priv::moved_bases_): + Define new data member. + * src/abg-reporter-priv.h (maybe_report_base_class_reordering): + Declare new function. + * src/abg-reporter-priv.cc (maybe_report_base_class_reordering): + Define new function. + * src/abg-comparison.cc + (class_diff::ensure_lookup_tables_populated): Detect that a base + class moved position and record it into + class_diff::priv::moved_bases_ data member. + * src/abg-default-reporter.cc (default_reporter::report): Use the + new maybe_report_base_class_reordering. + * src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise. + * tests/data/test-abidiff-exit/test-PR29144-report-2.txt: New + testing input file. + * tests/data/test-abidiff-exit/test-PR29144-report.txt: Likewise. + * tests/data/test-abidiff-exit/test-PR29144-v0.cc: Likewise. + * tests/data/test-abidiff-exit/test-PR29144-v0.o: Likewise. + * tests/data/test-abidiff-exit/test-PR29144-v1.cc: Likewise. + * tests/data/test-abidiff-exit/test-PR29144-v1.o: Likewise. + * tests/data/Makefile.am: Add the new files to source + distribution. + * tests/test-abidiff-exit.cc (in_out_specs): Add the new tests to + this harness. + +2022-06-03 Ben Woodard via Libabigail + + abicompat: Support reading CTF and abixml + * tools/abicompat.cc (options::{fail_no_debug_info, use_ctf}): New + data members. + (options::options): Initialize them. + (display_usage): Add a help string for the new options + --fail-no-debug-info and --ctf. + (parse_command_line): Support parsing the new options + --fail-no-debug-info and --ctf. + (read_corpus): New static function. + (main): Use the new read_corpus in lieu of using + dwarf_reader::read_corpus_from_elf and/or ctf_reader::read_corpus + and/or xml::reader::read_corpus_from_input. + * doc/manuals/abicompat.rst: add documentation for new options. + +2022-06-03 Ben Woodard + + abidiff: Remove redundant code + * tools/abidiff.cc (main): Remove redundant code. + +2022-06-03 Giuliano Procida + + XML writer: unify type emission tracking + * src/abg-writer.cc (write_context): Remove the + m_emitted_decl_only_set member. + (write_context::has_non_emitted_referenced_types): Remove the + calls to decl_only_type_is_emitted. + (write_context::record_decl_only_type_as_emitted): Removed. + (write_context::decl_only_type_is_emitted): Ditto. + (write_context::get_emitted_decl_only_types_set): Ditto. + (referenced_type_should_be_emitted): Remove the calls to + decl_only_type_is_emitted. + (write_class_decl): Just call record_type_as_emitted. + (write_union_decl): Ditto. + (write_enum_type_decl): Not changed, but now all 3 functions + have the same behaviour. + (write_canonical_type_ids): Remove the call to + get_emitted_decl_only_types_set. + +2022-06-03 Ben Woodard + + abicompat: Add missing space + * tools/abicompat.cc (main): Add missing space in expression. + +2022-06-01 Dodji Seketeli + + comparison: Fix leaf report summary + * src/abg-comparison.cc (corpus_diff::priv::emit_diff_stats): In + the "leaf change summary" section, add the number of removed/added + symbols not described by debug info. + +2022-05-30 Giuliano Procida + + test-annotate.cc: ignore whitespace during diff + * tests/test-annotate.cc (main): Pass diff -w option. + Suggested-by: Bogdan Graur + +2022-05-16 Mark Wielaard + + symtab-reader: Setup aliases before checking ppc64 opd function entries + * src/abg-elf-helpers.h (architecture_is_ppc32): Declare new + function. + * src/abg-elf-helpers.cc (architecture_is_ppc32): Define it. + * src/abg-symtab-reader.cc + (symtab::setup_symbol_lookup_tables): Rename + symtab::get_symbol_value into this. Setup symbol aliases before + setting up function entry address maps for ppc{32,64} ELFv1 and + after fixing up arm32/64 addresses. + (symtab::load_): Invoke the new setup_symbol_lookup_tables. + update_function_entry_address_symbol_map after setting up aliases. + No need to setup symbol aliases anymore. + (symtab::add_alternative_address_lookups): Invoke the new + setup_symbol_lookup_tables. + +2022-05-16 Guillermo E. Martinez + + ctf-reader: add support to looking debug information in external path + * include/abg-ctf-reader.h (ctf_reader::create_read_context): + Add `debug_info_root_paths' argument. + (ctf_reader::reset_read_context): Likewise. + * src/abg-ctf-reader.cc: Add `read_context::elf_{handler,fd}_dbg', + data members. + (read_context::read_context): Add new `debug_info_root_paths' + argument. + (read_context::initialize): Likewise. + (ctf_reader::create_read_context): Likewise. + (ctf_reader::close_elf_handler): Release + `read_context::elf_{handler,fd}_dbg' members. + (ctf_reader::find_alt_debuginfo): Add new function. + (ctf_reader::slurp_elf_info): Add new argument `status'. Use + `find_alt_debuginfo' and `elf_helpers::find_section_by_name' + to read the symtab and ctf information from an external .debug + file, the `status' reference is updated. + (ctf_reader::read_corpus): Verify `status' after `slurp_elf_info'. + (ctf_reader::reset_read_context): Add new `debug_info_root_path' + argument. + * src/abg-elf-helpers.cc (elf_helpers::find_section_by_name): Update + comment. + * src/abg-tools-utils.cc (maybe_load_vmlinux_ctf_corpus): + Adjust `ctf_reader::{create,reset}_read_context'. + * tests/test-read-ctf.cc: Likewise. + * tools/abidiff.cc (display_usage): Add `--ctf' command line + option. + (main): Adjust `ctf_reader::create_read_context'. + Likewise. + * tools/abidw.cc (load_corpus_and_write_abixml): Adjust + `ctf_reader::create_read_context'. + * tools/abilint.cc (main): Likewise. + * tools/abipkgdiff.cc (compare, compare_to_self): Likewise. + +2022-05-16 Vanessa Sochat + + Adding missing newline to build-container workflow + * .github/workflows/build-container.yaml: Add missing newline. + Reviewed-by: Ben Woodard + +2022-05-16 Ben Woodard + + Add github actions to support workflows + * .github/workflows/build-container.yaml: New file. + * .github/workflows/libabigail.yaml: Likewise. + * .github/workflows/test.yaml: Likewise. + * .github/workflows/test-fedora.yaml: Likewise. + * .github/README.md: Likewise. + * docker/Dockerfile.fedora: Likewise. + * docker/Dockerfile.ubuntu: Likewise. + * docker/Dockerfile.fedora-base: Likewise. + * docker/Dockerfile.test: Likewise. + * README-DOCKER.md: Likewise. + Reviewed-by: Ben Woodard + +2022-05-06 Guillermo E. Martinez + + abipkgdiff: Add support to compare packages with CTF debug format + * tools/abipkgdiff.cc: Include `abg-ctf-reader.h'. + (options::use_ctf): Add new data member. + (display_usage): Add `--ctf' usage. + (compare): Add condition to use ctf-reader to extract + (parse_command_line): Set `options::use_ctf' when --ctf + option is provided. + and build CTF corpora when `options::use_ctf' is set. + (compare_to_self): Likewise. + +2022-05-06 Guillermo E. Martinez + + ctf-reader: CTF debug info for some symbols is not found + * src/abg-ctf-reader.cc (read_context::is_elf_exec): Remove + data member. + (ctf_reader::process_ctf_qualified_type): Add condition to avoid + use qualifier in functions. + (ctf_reader::process_ctf_archive): Use `ctf_lookup_by_symbol_name' + to find debug information when `ctf_lookup_variable' was not + lucky iff `corpus::CTF_ORIGIN'. + (ctf_reader::slurp_elf_info): Use `elf_helpers::find_section_by_name' + to read .dynsym and .dynstr when {EXEC,DYN}. + * src/abg-elf-helpers.h (elf_helpers::find_section_by_name): Add new + declaration. + * src/abg-elf-helpers.cc (elf_helpers::find_section_by_name): Add new + definition. + +2022-05-06 Guillermo E. Martinez + + ctf-reader: shows incomplete summary changes + * src/abg-ctf-reader.cc (read_context::exported_decls_builder_): + Add new data member. + (read_context::exported_decls_builder): Add new get/set member functions. + (read_context::maybe_add_{fn,var}_to_exported_decls): Likewise. + (read_context::initialize): Initialize exported_decls_builder_ member. + (read_context::build_ir_node_for_variadic_parameter_type): Add new function. + (read_context::process_ctf_function_type): Add additional code to handle + function's variadic parameter. + (read_context::process_ctf_archive): Rename variable for clarity + from `ctf_var_type' to `ctf_sym_type', using new member functions + `maybe_add_{fn,var}_to_exported_decls'. + (read_context::read_corpus): Set `exported_decls_builder'. + * tests/test-read-common.cc (test_task::run_abidw): Fix error message. + * tests/data/test-read-ctf/test-PR26568-1.o.abi: Adjust test case. + * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. + * tests/data/test-read-ctf/test-anonymous-fields.o.abi Likewise. + * tests/data/test-read-ctf/test5.o.abi: Likewise. + * tests/data/test-read-ctf/test7.o.abi: Likewise. + +2022-05-06 Frederic Cambus + + Fix numbering error in the abidiff manual. + * doc/manuals/abidiff.rst: Fix numbering error for the + --headers-dir2 option. + +2022-05-04 Guillermo E. Martinez + + ctf-reader: Add support to read CTF information from the Linux Kernel + * abg-elf-reader-common.h: Include ctf-api.h file. + (read_and_add_corpus_to_group_from_elf, set_read_context_corpus_group) + (reset_read_context, dic_type_key): Declare new member functions. + * include/abg-ir.cc (types_defined_same_linux_kernel_corpus_public): Use + bitwise to know the corpus `origin'. + * src/abg-ctf-reader.cc: Include map, algorithms header files. + (read_context::type_map): Change from unordered_map to std::map storing + ctf dictionary name as part of the key. + (read_context::is_elf_exec): Add new member variable. + (read_context::{cur_corpus_, cur_corpus_group_}): Likewise. + (read_context::unknown_types_set): Likewise. + (read_context::{current_corpus_group, main_corpus_from_current_group, + has_corpus_group, current_corpus_is_main_corpus_from_current_group, + should_reuse_type_from_corpus_group}): Add new member functions. + (read_context::{add_unknown_type, lookup_unknown_type, initialize}): + Likewise. + (read_context::{add_type, lookup_type}): Add new `ctf_dict_t' type + argument. + (ctf_reader::{process_ctf_typedef, process_ctf_base_type, + process_ctf_function_type, process_ctf_forward_type, + process_ctf_struct_type, process_ctf_union_type, process_ctf_array_type, + process_ctf_qualified_type, process_ctf_enum_type}): Add code to `reuse' + types already registered in main corpus `should_reuse_type_from_corpus_group'. + Use new `lookup_type' and `add_type' operations on `read_context::types_map'. + Replace function calls to the new ctf interface. Add verifier to not build + types duplicated by recursive calling chain. + (ctf_reader::process_ctf_type): Add code to return immediately if the + ctf type is unknown. Add unknown types to `unknown_types_set'. + (ctf_reader::process_ctf_archive): Change comment. + Add code to iterate over global symbols, searching by symbol name in the + ctf dictionary using `ctf_lookup_{variable,by_symbol_name}' depending of + the ELF file type and corpus type, creating a `{var,fuc}_decl' using the + return type of `ctf_type_kind'. Also close the ctf dict and call + `canonicalize_all_types'. + (slurp_elf_info): Set `is_elf_exec' depending of ELF type. Also return + success if corpus origin is Linux and symbol table was read. + (ctf_reader::read_corpus): Add current corpus. Set corpus origin to + `LINUX_KERNEL_BINARY_ORIGIN' if `is_linux_kernel' returns true. Verify + the ctf reader status, now the ctf archive is 'opened' using + `ctf_arc{open,bufopen}' depending if the corpus origin has + `corpus::LINUX_KERNEL_BINARY_ORIGIN' bit set. Use + `sort_{function,variables}' calls after extract ctf information. + `ctf_close' is called from `read_context' destructor. + (read:context::{set_read_context_corpus_group, reset_read_context, + read_and_add_corpus_to_group_from_elf, dic_type_key): Add new member + function implementation. + * include/abg-tools-utils.h (build_corpus_group_from_kernel_dist_under): + Add `origin' parameter with default `corpus::DWARF_ORIGIN'. + * src/abg-tools-utils.cc: Use `abg-ctf-reader.h' file. + (maybe_load_vmlinux_dwarf_corpus): Add new function. + (maybe_load_vmlinux_ctf_corpus): Likewise. + (build_corpus_group_from_kernel_dist_under): Update comments. + Add new `origin' argument. Use `maybe_load_vmlinux_dwarf_corpus' + or `maybe_load_vmlinux_ctf_corpus' according to `origin' value. + * src/abg-corpus.h (corpus::origin): Update `origin' type + values in enum. + * src/abg-corpus-priv.h (corpus::priv): Replace `origin' type + from `corpus::origin' to `uint32_t'. + * src/abg-corpus.cc (corpus::{get,set}_origin): Replace data + type from `corpus::origin' to `uint32_t'. + * tools/abidw.cc (main): Use of --ctf argument to set format debug. + * tests/test-read-ctf.cc: Add new tests to harness. + * tests/data/test-read-ctf/test-PR27700.abi: New test expected + result. + * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. + * tests/data/test-read-ctf/test-enum-many-ctf.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-enum-many.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-enum-symbol-ctf.o.hash.abi: Likewise. + * tests/data/test-read-common/test-PR26568-2.o: Adjust. + * tests/data/test-read-ctf/test-PR26568-1.o.abi: Likewise. + * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-B.c: Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-B.o: Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise. + * tests/data/test-read-ctf/test-callback.abi: Likewise. + * tests/data/test-read-ctf/test-callback2.abi: Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: + Likewise. + * tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise. + * tests/data/test-read-ctf/test-enum-ctf.o.abi: Likewise. + * tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-enum.o.abi: Likewise. + * tests/data/test-read-ctf/test-forward-type-decl.abi: Likewise. + * tests/data/test-read-ctf/test-functions-declaration.abi: Likewise. + * tests/data/test-read-ctf/test-list-struct.abi: Likewise. + * tests/data/test-read-ctf/test0: Likewise. + * tests/data/test-read-ctf/test0.abi: Likewise. + * tests/data/test-read-ctf/test0.c: Likewise. + * tests/data/test-read-ctf/test0.hash.abi: Likewise. + * tests/data/test-read-ctf/test1.so.abi: Likewise. + * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. + * tests/data/test-read-ctf/test2.so.abi: Likewise. + * tests/data/test-read-ctf/test2.so.hash.abi: Likewise. + * tests/data/test-read-ctf/test3.so.abi: Likewise. + * tests/data/test-read-ctf/test3.so.hash.abi: Likewise. + * tests/data/test-read-ctf/test4.so.abi: Likewise. + * tests/data/test-read-ctf/test4.so.hash.abi: Likewise. + * tests/data/test-read-ctf/test5.o.abi: Likewise. + * tests/data/test-read-ctf/test7.o.abi: Likewise. + * tests/data/test-read-ctf/test8.o.abi: Likewise. + * tests/data/test-read-ctf/test9.o.abi: Likewise. + +2022-05-04 vsoch + + Add Logic to detect file type by extension + * tools/fedabipkgdiff - add logic to detect file type by extension + Reviewed-by: Ben Woodard + +2022-05-04 Ben Woodard + + Add an option ignore SONAME differences in libraries + * doc/manuals/abicompat.rst - added new option + * doc/manuals/abidiff.rst - added new option to manpage + * src/abg-comparison.cc (compute_diff): don't bother comparing the + sonames if you aren't going to print them. + * tools/abicompat.cc (options::ignore_soname): Add new data + member. + (parse_command_line): Support the new --ignore-soname command line + option. + (display_usage): Add a description string for the new + --ignore-soname command line option. + (create_diff_context): Set the diff_context::show_soname_change + from the new options::ignore_soname data member. + * tools/abidiff.cc (options::ignore_soname): Add new data member. + (display_usage): Add a description string for the new + --ignore-soname command line option. + (parse_command_line): Support the new --ignore-soname command line + option. + (set_diff_context_from_opts): Set the + diff_context::show_soname_change from the new + options::ignore_soname. + +2022-04-07 Giuliano Procida + + symtab: fix up 64-bit ARM address which may contain tags + * src/abg-elf-helpers.cc: (architecture_is_arm64): Add helper. + * src/abg-elf-helpers.h: Likewise. + * src/abg-symtab-reader.cc: (get_symbol_value): Adjust 64-bit + ARM symbol values by extending bit 55 into bits 56 to 63. + +2022-04-07 Giuliano Procida + + symtab: refactor ELF symbol value tweaks + * src/abg-symtab-reader.cc (symtab::load_): Replace address + tweaking logic with a call to get_symbol_value. + (symtab::add_alternative_address_lookups): Likewise. + (symtab::get_symbol_value): New function containing address + tweaking logic for PPC and ARM. + +2022-04-29 Guillermo E. Martinez + + ctf-reader: Fix multiple var-decl in anonymous struct/uninons + * src/abg-ctf-reader.cc (process_ctf_sou_members): Remove + CTF_MN_RECURSE flag. + * tests/data/Makefile.am: Add new input test files. + * tests/data/test-read-ctf/test-anonymous-fields.c: New + test file. + * tests/data/test-read-ctf/test-anonymous-fields.o: New + expected test output. + * tests/data/test-read-ctf/test-anonymous-fields.o.abi: + Likewise. + * tests/test-read-ctf.cc: Add new test. + +2022-04-25 Guillermo E. Martinez via Libabigail + + tools-utils: `entry_of_file_with_name' returns incorrect result + * src/abg-tools-utils.cc (entry_of_file_with_name): Replace + call `string_ends_with' by `basename'. + +2022-04-19 Ben Woodard + + Fix typo in abipkgdiff manpage + * doc/manuals/abipkgdiff.rst: add missing `--` + +2022-03-17 Guillermo E. Martinez via Libabigail + + ctf-reader: Add support to undefined forward declaration types + * src/abg-ctf-reader.cc (process_ctf_forward_type): New + function. + (process_ctf_type): New CTF_K_FORWARD case. + * tests/data/test-read-ctf/test-forward-undefine-type-decl.c: + New testcase. + * tests/data/test-read-ctf/test-forward-undefine-type-decl.abi: + New expected result. + * tests/data/test-read-ctf/test-forward-undefine-type-decl.o + New test input. + * tests/test-read-ctf.cc: Add new testcase to test harness. + * tests/data/Makefile.am: Add new test input files to test harness. + +2022-03-07 Dodji Seketeli + + comparison: Avoid sorting diff nodes with wrong criteria + * src/abg-comparison.cc (diff::append_child_node): Do not sort + children nodes here because they must have been sorted already. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. + * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. + * tests/data/test-diff-filter/test41-report-0.txt: Likewise. + * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: + Likewise. + +2022-03-07 Dodji Seketeli + + comparison: Factorize the code that inserts diff nodes to the graph + * include/abg-comparison.h ({distinct, var, pointer, reference, + array, qualified_type, enum, class_or_union, class, union, base, + scope, fn_parm, function_type, function_decl, type_decl, + typedef}_diff::finish_diff_type): Remove these declarations. + * src/abg-comparison.cc ({distinct, var, pointer, reference, + array, qualified_type, enum, class_or_union, class, union, base, + scope, fn_parm, function_type, function_decl, type_decl, + typedef}_diff::finish_diff_type): Remove these definitions. + (diff::finish_diff_type): Add the code to connect the children + nodes to the current node, making the generic view of the diff + node usable to walk the graph. + +2022-03-07 Dodji Seketeli + + comparison: Describe the "generic view" of a diff node + * include/abg-comparison.h (class diff): Add comments to this class. + (diff::chain_into_hierarchy): Add comment to this method. + * src/abg-comparison-priv.h (diff::priv): Add comment to this class. + * src/abg-comparison.cc (diff::finish_diff_type): Add comment to + this method. + (diff::traverse): Add comment. + +2022-03-03 Dodji Seketeli + + Bug 28013 - Acknowledge variadic parameter type is not canonicalized + * src/abg-ir.cc (is_non_canonicalized_type): Recognize variadic + parameter types. + * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.{0,1}.abi: New test inputs. + * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.report.txt: Likewise. + * tests/data/Makefile.am: Add the new test files to source distribution. + * tests/test-diff-filter.cc (in_out_specs): Add the new tests to + this harness. + * tests/data/test-annotate/libtest23.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test0.abi: Likewise. + * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.0.abi: Likewise. + * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.1.abi: Likewise. + * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.report.txt: Likewise. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test0.abi: Likewise. + * tests/data/test-read-dwarf/test0.hash.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + +2022-02-24 Dodji Seketeli + + dwarf-reader: Don't propagate canonical type upon aggregate redundancy + * src/abg-dwarf-reader.cc (compare_dies): Do not propagate + canonical type when aggregate redundancy is detected. + +2022-02-10 Dodji Seketeli + + Bug 26646 - unexpected declaration-only types (part 2) + * src/abg-dwarf-reader.cc (struct dwarf_offset_pair_hash) + (dwarf_offset_pair_set_type): Define new type. + (die_offset, has_offset_pair, insert_offset_pair) + (erase_offset_pair): Define new static helper functions. + (compare_dies): Use a set of DWARF offsets for the + 'aggregates_being_compared' data structure, rather than a set of + string representation of the DIEs. Always look at the size of the + types being compared first so that we can get out quickly if they + differ. For DIEs of DW_TAG_{union,struct}_type kind, don't limit + the depth of the stack of DIEs being compared to 5; so we don't + consider two types as being equal just because the depth of the + stack being compared is 5 and the two types have the same size and + are equal. Hopefully things don't take too long. + +2022-03-01 Dodji Seketeli + + ir: Remove obsolete comment from enumerator equal operator + * src/abg-ir.cc (enum_type_decl::enumerator::operator==): Remove + the obsolete parts from the comment. + +2022-03-01 Dodji Seketeli + + reader: Fix a compilation warning + * src/abg-reader.cc (build_var_decl): Add braces to an 'if' + statement. + +2022-02-28 Dodji Seketeli + + abilint --show-type-use: Show results for global decls that have no symbols + * include/abg-fwd.h (is_at_global_scope): Declare ... + * src/abg-ir.cc (is_at_global_scope): ... new overload. + * tools/abilint.cc (emit_artifact_use_trace): Emit the trace also + when the decl is at global scope or has a linkage name. + +2022-02-17 Dodji Seketeli + + abilint: add the --show-type-use option + * configure.ac: Define the --enable-show-type-use-in-abilint + configure option. It defines the WITH_SHOW_TYPE_USE_IN_ABILINT + macro. + * include/abg-reader.h (read_translation_unit): Add an overload + that takes the read context. + (get_types_from_type_id, get_artifact_used_by_relation_map): + Declare new functions. + * src/abg-reader.cc (get_types_from_type_id) + (get_artifact_used_by_relation_map): Declare these functions as + friend of the read_context type. + (read_context::m_artifact_used_by_map): + (read_context::key_type_decl): Replace the shared_ptr + type of the first parm by the equivalent type_base_sptr type. + (read_context::{record_artifact_as_used_by, + record_artifacts_as_used_in_fn_decl, + record_artifacts_as_used_in_fn_type}): Add new methods guarded by + the WITH_SHOW_TYPE_USE_IN_ABILINT macro. + (get_types_from_type_id, get_artifact_used_by_relation_map): Define + new functions guarded by the WITH_SHOW_TYPE_USE_IN_ABILINT macro. + (read_translation_unit): Define new overload. + (RECORD_ARTIFACT_AS_USED_BY, RECORD_ARTIFACTS_AS_USED_IN_FN_DECL) + (RECORD_ARTIFACTS_AS_USED_IN_FN_TYPE): Define new macros. + (build_function_decl, build_var_decl, build_qualified_type_decl) + (build_pointer_type_def, build_reference_type_def) + (build_function_type, build_array_type_def, build_enum_type_decl) + (build_typedef_decl, build_class_decl, build_union_decl): Use the + macros above to mark the relevant sub-types as used by the + artifact being built. + * tools/abilint.cc (struct artifact_use_relation_tree): Define new + type, guarded by the WITH_SHOW_TYPE_USE_IN_ABILINT macro. + (fill_artifact_use_tree, build_type_use_tree, emit_trace) + (emit_artifact_use_trace, emit_artifact_use_trace) + (show_how_type_is_used): Define static functions guarded by the + WITH_SHOW_TYPE_USE_IN_ABILINT macro. + (display_usage): Add doc string for the --show-type-use option, + guarded by the WITH_SHOW_TYPE_USE_IN_ABILINT macro. + (parse_command_line): Parse the --show-type-use option, guarded by + the WITH_SHOW_TYPE_USE_IN_ABILINT macro. + (main): Slight re-organisation to make the abixml file reading use + a read_context. That read context is then used to analyze how a + given type is used whenever the --show-type-use option is used. + +2022-02-17 Dodji Seketeli + + configure: Remove use of obsolete AC_CONFIG_HEADER + * configure.ac: Replace the use of the obsolete AC_CONFIG_HEADER + by AC_CONFIG_HEADERS. + +2022-02-08 Randy MacLeod + + Improve some grammar + * COMPILING: Improve grammar + * CONTRIBUTING: Improve grammar + * README: Improve grammar + * VISIBILITY: Improve grammar + +2022-01-21 Giuliano Procida + + XML writer: do not create extra temporary referenced type shared_ptr + * src/abg-writer.cc (write_referenced_types): Create temporary + shared_ptr objects within each conditional branch instead of + outside the conditionals and within one of the branches. + Reviewed-by: Matthias Maennich + +2022-01-21 Giuliano Procida + + XML writer: improve slightly emission of top-level declarations + * src/abg-writer.cc (decl_is_emitted): Make decl_base_sptr + argument a const reference. + (write_translation_unit): Eliminate a typedef and just use a + range-for loop without the extra dynamic cast for the non-type + case. Use else instead of continue to make it clear there are + only two possibilities. + Reviewed-by: Matthias Maennich + +2022-01-21 Giuliano Procida + + XML writer: drop write_elf_symbols_table variable emitted_syms + * src/abg-writer.cc (write_elf_symbols_table): Drop unused + local variable emitted_syms. + Reviewed-by: Matthias Maennich + +2022-01-21 Giuliano Procida + + XML writer: remove type_hasher and remaining comment + * src/abg-writer.cc (type_hasher): Remove this unused functor. + Remove a following comment referencing it. + Reviewed-by: Matthias Maennich + +2022-02-07 Dodji Seketeli + + Bug 26646 - unexpected declaration-only types + * src/abg-dwarf-reader.cc (add_or_update_class_type): Do not reuse + the IR for a DIE with the same textual representation as the one + we are seeing now. + * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + +2022-02-07 Dodji Seketeli + + symtab-reader: Remove an over-agressive assertion + * src/abg-symtab-reader.cc + (symtab::add_alternative_address_lookups): Remove over-aggressive + assert. + Reviewed-by: Giuliano Procida + +2022-01-29 David Seifert + + Find fts-standalone on musl + * configure.ac: Invoke AC_CANONICAL_HOST to compute the host_cpu, + host_vendor, host_os parts of the 'host" variable. Then if the + host_os ends up with "musl" then, check for the fts-standalone + pkgconfig module and record the fts library into + FTS_{LIBS,CFLAGS}. + * src/Makefile.am: Link to $FTS_LIBS and use $FTS_CFLAGS for + compilation. + * tools/Makefile.am: Likewise. + * tools/abisym.cc: Include libgen.h + * tools/kmidiff.cc: Remove useless fts.h header file. + +2022-02-07 Dodji Seketeli + + symtab-reader: Fix typo in comment + * src/abg-symtab-reader.cc + (symtab::update_function_entry_address_symbol_map): Fix typo in + comment. + +2022-01-20 Dodji Seketeli + + writer: small compilation error fix + * abg-writer.cc (write_type_record): Fix const-ness in argument + passing. + +2021-11-26 Matthias Maennich + + abidiff: improve whitespace generation in symbol diff report + * src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): + Make return void. Simplify and fix new-line emission. Remove + comma emission. Tweak CRC wording. + * src/abg-reporter-priv.h (maybe_report_diff_for_symbol): + Return void. + * tests/data/test-abidiff-exit/test-crc-report.txt: Shorten CRC + wording. + * tests/data/test-abidiff/test-crc-report.txt: Likewise. + * tests/data/test-diff-filter/test-PR27569-report-0.txt: + Likewise. + Reviewed-by: Giuliano Procida + +2022-01-19 George Rawlinson + + Bug 28663 - generate man page for kmidiff + * doc/manuals/conf.py: Update copyright year. Generate man page + for the kmidiff tool. + +2021-12-03 Matthias Maennich + + XML writer: resolve declaration-only enum definitions + * src/abg-writer.cc (write_enum_type_decl): Look through + declaration-only types the same as for structs and unions. + Reviewed-by: Giuliano Procida + +2021-12-03 Matthias Maennich + + XML writer: map type ids by bare pointer + * src/abg-writer.cc (type_ptr_map): use default equality on + type_base pointer. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Refresh + test case, as described above. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + Reviewed-by: Giuliano Procida + +2021-12-03 Matthias Maennich + + XML writer: track emitted types by bare pointer + * src/abg-writer.cc (type_ptr_set_type): Change typedef + container type to use default equality and hashing for pointer + keys. + (fn_type_ptr_set_type): Likewise. + Reviewed-by: Giuliano Procida + +2022-01-18 Giuliano Procida + + abidiff: include ABI XML versions when reporting a mismatch cont. + * tools/abidiff.cc + (emit_incompatible_format_version_error_message): Fix + parameter documentation. + Fixes: b251bc611eb6 ("abidiff: include ABI XML versions when reporting a mismatch") + +2022-01-18 Giuliano Procida + + abidiff: include ABI XML versions when reporting a mismatch + * tools/abidiff.cc + (emit_incompatible_format_version_error_message): Add version1 + and version2 arguments. Add versions to error message. + (main): Pass emit_incompatible_format_version_error_message + mismatching versions. + +2022-01-18 Mark Wielaard + + DWARF reader: use size_t for DWARF expression length cont. + * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr): + Change expr_len argument type to size_t. + (op_pushes_constant_value): Update ops_len and index argument + types to size_t. Update next_index argument type to size_t&. + (op_pushes_non_constant_value): Likewise. + (op_is_arith_logic): Update expr_len and index argument types + to size_t. Update next_index argument type to size_t&. + (op_is_control_flow): Likewise. + Fixes: 16207c4af7bc ("Bug 28191 - Interpret DWARF 5 addrx locations") + +2022-01-17 Giuliano Procida + + DWARF reader: use size_t for DWARF expression length + * src/abg-dwarf-reader.cc (die_location_expr): Change expr_len + argument type to size_t*. + (op_manipulates_stack): Change expr_len and index argument + types to size_t; change next_index argument type to size_t&. + (eval_last_constant_dwarf_sub_expr): Change expr_len argument + and local variables index and next_index types to size_t. + (die_member_offset): Change local variable expr_len type to + size_t. + (die_location_address): Likewise. + (die_virtual_function_index): Likewise. + Fixes: 16207c4af7bc ("Bug 28191 - Interpret DWARF 5 addrx locations") + +2022-01-11 Giuliano Procida + + symtab reader: fix up alternative addresses + * src/abg-symtab-reader.cc + (symtab::add_alternative_address_lookups): Tweak function + addresses in the same manner as done in symtab::load_. + +2022-01-14 David Cantrell + + Include in tools/abisym.cc for basename(3) + * tools/abisym.cc: + +2022-01-13 Giuliano Procida + + Bug 28191 - Interpret DWARF 5 addrx locations + * src/abg-dwarf-reader.cc (die_location_address): Use + dwarf_attr_integrate, dwarf_getlocation and + dwarf_getlocation_attr to decode addreses, instead of + die_location_expr and eval_last_constant_dwarf_sub_expr. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: + Refresh test reference output; two more symbols have types. + +2022-01-14 Dodji Seketeli + + Bug 28319 - re-fix of rhbz1951526 - SELF CHECK FAILED for 'gimp-2.10' + * include/abg-ir.h (environment::use_enum_binary_only_equality): + Remove. + * src/abg-comparison.cc (compute_diff): In the overload for + enum_type_decl, stop using binary-only-equality for enums. + * src/abg-dwarf-reader.cc + (read_context::compare_before_canonicalisation): Likewise. + * src/abg-ir.cc (environment::use_enum_binary_only_equality): + Remove. + (enumerators_values_are_equal) + (is_enumerator_value_present_in_enum) + (is_enumerator_value_redundant): Define new static functions. + (equals): In the overload for enum_type_decl, use the new + is_enumerator_value_redundant to detect if two enums are equal + modulo a redundant enumerator value. In that case, consider they + are equal. + * tests/data/test-abidiff/test-enum0-report.txt: Adjust. + * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. + +2022-01-05 Thomas Schwinge + + Handle several variants of Python 'imp', 'importlib' modules + * tests/mockfedabipkgdiff.in: Handle several variants of Python + 'imp', 'importlib' modules. + Tested-by: Mark Wielaard (CentOS 7) + +2021-12-21 Dodji Seketeli + + suppression: Fix compilation warning on el7 + * src/abg-suppression.cc (type_suppression::suppresses_diff): + Remove the unused variable second_type_decl. + +2021-12-21 Guillermo E. Martinez via Libabigail + + ctf-reader: Assert on ir::hash_as_canonical_type_or_constant + * src/abg-ctf-reader.cc (process_ctf_base_type): Add new + `translation_unit_sptr' parameter. Add condition to validate + success 'base_type' construction and register type object. + (process_ctf_typedef): Add `lookup_type' to get a `type_base' + object when this was previously created, if this is not the + case, register ctf type. Add condition to validate success + 'base_type' construction and register type object. + (process_ctf_function_type): Likewise. + (process_ctf_array_type): Likewise. + (process_ctf_qualified_type): Likewise. + (process_ctf_pointer_type): Likewise. + (process_ctf_struct_type): Add `add_decl_to_scope'. + (process_ctf_union_type): Likewise. + (process_ctf_type): Add `lookup_type' to get a `type_base' + object when this was previously created. Delegate register + type object to `process_ctf_*'. + * tests/data/Makefile.am: Add tests I/O and expected files. + * tests/data/test-read-ctf/test-array-of-pointers.[co]: New + testcase. + * tests/data/test-read-ctf/test-list-struct.[co]: Likewise. + * tests/data/test-read-ctf/test-callback.[co]: Likewise. + * tests/data/test-read-ctf/test-callback2.[co]: Likewise. + * tests/data/test-read-ctf/test-functions-declaration.[co]: Likewise. + * tests/data/test-read-ctf/test-forward-type-decl.[co]: Likewise. + * tests/data/test-read-ctf/test-array-of-pointers.abi: + Expected test output. + * tests/data/test-read-ctf/test-callback.abi: Likewise. + * tests/data/test-read-ctf/test-callback2.abi: Likewise. + * tests/data/test-read-ctf/test-forward-type-decl.abi: Likewise. + * tests/data/test-read-ctf/test-functions-declaration.abi: Likewise. + * tests/data/test-read-ctf/test-list-struct.abi: Likewise. + * tests/test-read-ctf.cc: Add testcases to CTF test harness. + +2021-12-21 Thomas Schwinge + + Replace Python 'import importlib' with 'import importlib.machinery' + * tests/mockfedabipkgdiff.in: Replace Python 'import importlib' + with 'import importlib.machinery'. + +2021-12-17 Thomas Schwinge + + fedabipkgdiff: Also accept MIME type 'application/x-redhat-package-manager' for RPM files + *** 4.0.0 900 + 900 http://ftp.de.debian.org/debian testing/main amd64 Packages + 900 http://ftp.de.debian.org/debian testing/main i386 Packages + 800 http://ftp.de.debian.org/debian unstable/main amd64 Packages + 800 http://ftp.de.debian.org/debian unstable/main i386 Packages + 100 /var/lib/dpkg/status + $ awk '$2 ~ /rpm/' < /etc/mime.types + application/x-redhat-package-manager rpm + $ dpkg -S /etc/mime.types + mime-support: /etc/mime.types + $ apt policy mime-support + mime-support: + Installed: 3.64ubuntu1 + Candidate: 3.64ubuntu1 + Version table: + *** 3.64ubuntu1 500 + 500 http://de.archive.ubuntu.com/ubuntu focal/main amd64 Packages + 500 http://de.archive.ubuntu.com/ubuntu focal/main i386 Packages + 100 /var/lib/dpkg/status + $ awk '$2 ~ /rpm/' < /etc/mime.types + application/x-redhat-package-manager rpm + $ dpkg -S /etc/mime.types + mime-support: /etc/mime.types + $ apt-cache policy mime-support + mime-support: + Installed: 3.54ubuntu1.1 + Candidate: 3.54ubuntu1.1 + Version table: + *** 3.54ubuntu1.1 0 + 500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages + 500 http://us.archive.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages + 100 /var/lib/dpkg/status + 3.54ubuntu1 0 + 500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages + Otherwise, 'is_rpm_file' fails, resulting in a few test cases failing with an + unhelpful 'Unknown arguments. Please refer to --help.' message (similar to what + had been observed in PR22077 "runtestfedabipkgdiff.py fails on centos-x86_64"). + * tools/fedabipkgdiff (is_rpm_file): Also accept MIME type + 'application/x-redhat-package-manager' for RPM files. + CC: Chenxiong Qi + +2021-12-17 Thomas Schwinge + + Replace use of deprecated Python 'imp' module with 'importlib' + * tests/mockfedabipkgdiff.in: Replace use of deprecated Python + 'imp' module with 'importlib'. + CC: Chenxiong Qi + +2021-12-17 Thomas Schwinge + + fedabipkgdiff: Enable testing without proper Koji installation + * tools/fedabipkgdiff: Handle 'koji.ConfigurationError'. + * configure.ac: Likewise. + * CONTRIBUTING: Document "fedabipkgdiff testing". + Documenting/providing a way to enable such testing, this commit can be + considered a sequel to commit 90d236a03343d75ea504d53c73270e50b9000e75 + "Bug 22076 - Disable fedabipkgdiff for old koji clients", for Mark Wielaard's + PR22076 "runtestfedabipkgdiff.py fails on debian-amd64". + +2021-12-10 Thomas Schwinge + + abipkgdiff: Use 'convert_path_to_relative' in 'create_abi_file_path' + * tools/abipkgdiff.cc (create_abi_file_path): Use + 'convert_path_to_relative'. + +2021-12-10 Thomas Schwinge + + abipkgdiff: Respect 'create_abi_file_path' interface + * tools/abipkgdiff.cc (compare_to_self): Respect + 'create_abi_file_path' interface. + +2021-12-10 Thomas Schwinge + + configure: Instead of for rpm 4.15+ version, test actual rpm/zstd support + * configure.ac: Instead of for rpm 4.15+ version, test actual + rpm/zstd support. + * tests/test-diff-pkg.cc: Adjust. + +2021-12-14 Thomas Schwinge + + Further update 'make distcheck-fast' + * CONTRIBUTING: Further update 'make distcheck-fast'. + Suggested-by: Matthias Maennich + +2021-12-14 Thomas Schwinge + + Add '.mailmap' + * .mailmap: New. + CC: Ben Woodard + CC: Guillermo E. Martinez + CC: Jose E. Marchesi + CC: Matthias Maennich + CC: Xiao Jia + +2021-12-11 Thomas Schwinge + + configure: Tune fedabipkgdiff dependencies detection + * configure.ac: Tune fedabipkgdiff dependencies detection. + +2021-12-11 Thomas Schwinge + + CONTRIBUTING: Move "Coding language and style" section + * CONTRIBUTING: Move "Coding language and style" section. + +2021-12-15 Mark Wielaard + + dwarf-reader: Workaround libdw dwarf_location_expression bug + * src/abg-dwarf-reader.cc (die_constant_data_member_location): + New function. + (die_member_offset): Use die_constant_data_member_location + before calling die_location_expr and eval_quickly. + +2021-12-14 Guillermo E. Martinez via Libabigail + + Add regression tests for ctf reading + * tests/test-read-ctf.cc: New ctf reading regression test. + * tests/test-read-common.cc: New library to be used with + test-read-{ctf,dwarf}.cc. + * tests/test-read-common.h: Likewise. + * tests/test-annotate.cc (in_out_specs): Adjust path for input files. + * tests/Makefile.am: Build new tests/test-read-ctf.cc file. + * tests/data/Makefile.am: Add test inputs and expected files. + Add libtestreadcommon.a test library and use it for test-read-{ctf,dwarf}. + * tests/test-read-dwarf.cc: Adapt test to use libtestreadcommon.a in + test-read-common.{cc,h}. + * tests/data/test-annotate/test3.so.abi: Adjust ELF input path file + location to ./tests/data/test-read-common. + * tests/data/test-annotate/test4.so.abi: Likewise. + * tests/data/test-read-common/PR26261: Move test harness to + test-read-common directory. + * tests/data/test-read-common/PR27700: Likewise. + * tests/data/test-read-common/test-PR26568-*: Likewise. + * tests/data/test-read-common/test3.{c,so}: Likewise. + * tests/data/test-read-common/test4.{c,so}: Likewise. + * tests/data/test-read-common/crti*: Helper object to export + _init and _fini sysmbols. + * tests/data/test-read-ctf/test-ambiguous-struct-A.c: New testcase. + * tests/data/test-read-ctf/test-ambiguous-struct-B.c: Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-a.c: Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-b.c: Likewise. + * tests/data/test-read-ctf/test-enum.c: Likewise. + * tests/data/test-read-ctf/test-enum-many.c: Likewise. + * tests/data/test-read-ctf/test-enum-symbol.c: Likewise. + * tests/data/test-read-ctf/test-struct-iteration.c: Likewise. + * tests/data/test-read-ctf/test-dynamic-array.c: Likewise. + * tests/data/test-read-ctf/test0.c: Likewise. + * tests/data/test-read-ctf/test1.c: Likewise. + * tests/data/test-read-ctf/test2.c: Likewise. + * tests/data/test-read-ctf/test5.c: Likewise. + * tests/data/test-read-ctf/test7.{c,h}: Likewise. + * tests/data/test-read-ctf/test8.c: Likewise. + * tests/data/test-read-ctf/test9.c: Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Testcase + expected result. + * tests/data/test-read-ctf/PR26261/PR26261-exe.abi: Likewise. + * tests/data/test-read-ctf/PR27700/test-PR27700.abi: Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-enum.o.abi: Likewise. + * tests/data/test-read-ctf/test-enum-many.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise. + * tests/data/test-read-ctf/test-struct-iteration.o.abi: Likewise. + * tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise. + * tests/data/test-read-ctf/test0: Likewise. + * tests/data/test-read-ctf/test0*.abi: Likewise. + * tests/data/test-read-ctf/test1.so: Likewise. + * tests/data/test-read-ctf/test1*.abi: Likewise. + * tests/data/test-read-ctf/test2.so: Likewise. + * tests/data/test-read-ctf/test2*.abi: Likewise. + * tests/data/test-read-ctf/test3.so.abi: Likewise. + * tests/data/test-read-ctf/test4*.abi: Likewise. + * tests/data/test-read-ctf/test5.o.abi: Likewise. + * tests/data/test-read-ctf/test7.o.abi: Likewise. + * tests/data/test-read-ctf/test8.o.abi: Likewise. + * tests/data/test-read-ctf/test9.o.abi: Likewise. + * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Update + expected abixml file. + * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-1.*.abi: Likewise. + * tests/data/test-read-dwarf/test3*.abi: Likewise. + * tests/data/test-read-dwarf/test4*.abi: Likewise. + * doc/api/libabigail.doxy: Add tests/test-read-common.{cc,h} to + doxygen. + +2021-11-27 Guillermo E. Martinez via Libabigail + + ctf-reader: Fix length in dynamic array definition + * src/abg-ctf-reader.cc (process_ctf_array_type): + set subrange_type::is_infinite when `upper_bound' value + is equal to `0'. + +2021-12-09 Thomas Schwinge + + Better highlight 'make distcheck-fast' + * CONTRIBUTING: Better highlight 'make distcheck-fast'. + +2021-12-03 Matthias Maennich + + XML writer: use exemplar types for tracking referenced types + * src/abg-writer.cc (record_type_as_referenced): Use exemplar + type with referenced type sets. + (type_is_referenced): Likewise. + (tests/data/test-annotate/test14-pr18893.so.abi): Duplicate + type(s) removed, as described above. + (tests/data/test-read-dwarf/test14-pr18893.so.abi): Likewise. + (tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi): + Likewise. + (tests/data/test-read-dwarf/test16-pr18904.so.abi): Likewise. + (tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi): + Likewise. + (tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi): + Likewise. + (tests/data/test-read-dwarf/PR25007-sdhci.ko.abi): Some + function type(s) reordered, as described above. + (tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi): + Likewise. + (tests/data/test-annotate/test15-pr18892.so.abi):: Duplicate + type(s) removed and some function type(s) reordered, as + described above. + (tests/data/test-read-dwarf/test15-pr18892.so.abi): Likewise. + (tests/data/test-annotate/test21-pr19092.so.abi): Likewise. + (tests/data/test-read-dwarf/test21-pr19092.so.abi): Likewise + Reviewed-by: Giuliano Procida + +2021-12-03 Matthias Maennich + + XML writer: use consistent type pointers for type ids and emission tracking + * include/abg-fwd.h (get_exemplar_type): Declare new function. + * src/abg-ir.cc (get_exemplar_type): Define new function. + * src/abg-writer.cc (type_has_existing_id): use get_exemplar_type + for resolution. + (get_id_for_type): Likewise. + (record_type_as_emitted): Likewise. + (type_is_emitted): Likewise. + Reviewed-by: Giuliano Procida + +2021-12-06 Dodji Seketeli + + reader: Build array types with their element type "a priori" + * src/abg-ir.cc (var_decl::get_pretty_representation): Assert that + array element types are not empty. + * src/abg-reader.cc (build_array_type_def): Set array element + types a priori. + +2021-12-02 Dodji Seketeli + + suppression: Fix has_data_member_inserted_between = {offset_of(), offset_of()} + * doc/manuals/libabigail-concepts.rst: Update the documentation to + reflect that has_data_member* properties will never suppress any + type change if the change carries a data member suppression or a + type size reduction. + * include/abg-fwd.h (get_last_data_member) + (get_next_data_member_offset): Declare new functions. + * include/abg-suppression.h + (insertion_range::boundary_value_is_end): Declare new static + member function. + (type_supression::insertion_range::eval_boundary): Make this + static function take an uint64_t rather than ssize_t. + (type_suppression::insertion_range::integer_boundary::{integer_boundary, + as_integer, operator int}): Make these member functions and + operator take or return uint64_t rather than int. + * src/abg-ir.cc (get_last_data_member) + (get_next_data_member_offset): Define new functions. + * src/abg-suppression.cc + (type_suppression::suppresses_diff): Rework logic to better handle + "has_data_member_inserted_*" properties in the context of class + diffs. If the diff object carries data member removal or size + reduction, the diff object is not suppressed by the current type + suppression. Also, the property "has_data_member_inserted_at = + end", is now represented by an insertion range where the beginning + and the end of the range are both the max possible value of + insertion range boundaries; the code is made to recognize that. + (type_suppression::insertion_range::eval_boundary): Make this + static function take an uint64_t rather than ssize_t. If the + boundary is expressed as a "offset_after" expression, make sure + the offset of the next data member is considered if it's present. + (type_suppression::insertion_range::integer_boundary::{integer_boundary, + as_integer, operator int}): Make these take or return uint64_t + rather than int. + (type_suppression::insertion_range::boundary_value_is_end): Define + new member function. + (type_suppression::insertion_range::integer_boundary::priv::value_): + Turn the type of this into uint64_t, from int. + (type_suppression::insertion_range::integer_boundary::priv::priv): + The parameter of this is now uint64_t, from int. + * tests/data/test-diff-suppr/PR28073/PR28073-bitfield-removed.c: + New test source code. + * tests/data/test-diff-suppr/PR28073/PR28073-bitfield-removed.o: + New test binary. + * tests/data/test-diff-suppr/PR28073/PR28073-bitfield-removed.o.abi: + New test input. + * tests/data/test-diff-suppr/PR28073/PR28073-output-{1,2}.txt: New + test reference output. + * tests/data/test-diff-suppr/PR28073/PR28073.after.o: New test + binary. + * tests/data/test-diff-suppr/PR28073/PR28073.after.o.abi: New test + input. + * tests/data/test-diff-suppr/PR28073/PR28073.before.o: New test + binary. + * tests/data/test-diff-suppr/PR28073/PR28073.before.o.abi: New + test input. + * tests/data/test-diff-suppr/PR28073/PR28073.c: New test source + code. + * tests/data/test-diff-suppr/PR28073/bitfield.suppr: New test + input. + * tests/data/Makefile.am: Add the new test material to source + distribution. + * tests/test-diff-suppr.cc: Add the new test input to this test + harness. + +2021-11-24 Matthias Maennich + + XML writer: adjust tracking of emitted declarations + * abg-writer.cc (write_context): Replace mutable + m_emitted_decls_map with plain m_emitted_decls_set. + (decl_name_is_emitted): Inlined into decl_is_emitted; dropped. + (decl_is_emitted): Turn the is_type check into an assert and + inline decl_name_is_emitted. Look up in set instead of map. + (record_decl_as_emitted): Make non-const. Insert into set + instead of map. + Reviewed-by: Giuliano Procida + +2021-11-22 Guillermo E. Martinez via Libabigail + + ctf-reader: Fix memory leak reported by valgrind + * src/abg-ctf-reader.cc (process_ctf_archive): Add + ctf_dict_close + +2021-11-18 Guillermo E. Martinez via Libabigail + + ctf-reader: Use ABG_ASSERT instead of assert + * tools/abidiff.cc (main): Use ABG_ASSERT instead of assert. + * tools/abilint.cc: Likewise. + +2021-11-18 Guillermo E. Martinez via Libabigail + + ctf-reader: Make create_read_context return a smart pointer. + * include/abg-ctf-reader.h (read_context_sptr): New typedef. + (create_read_context): Use read_context_sptr as return value. + (read_corpus): New overload that takes a read_context_sptr. + * src/abg-ctf-reader.cc (create_read_context): Use + read_context_sptr as return value. + (read_corpus): New overload that takes a read_context_sptr. + * tools/abidiff.cc (main): Use read_context_sptr. + * tools/abidw.cc (load_corpus_and_write_abixml): Adjust call to + create_read_context. + * tools/abilint.cc: Likewise. + +2021-11-22 Dodji Seketeli + + ctf-reader: Remove useless parameter from fill_ctf_section + * src/abg-ctf-reader.cc (fill_ctf_section): Remove the now useless + context parameter. Adjust the comment accordingly. + (slurp_elf_info): Adjust the invocation of fill_ctf_section. + +2021-11-17 Guillermo E. Martinez via Libabigail + + ctf-reader: Use argument by reference reading the context + * include/abg-ctf-reader.h (create_read_context): Pass the string + by reference. + * src/abg-ctf-reader.cc (ctf_reader::read_context): Likewise. + (create_read_context): Likewise. + +2021-11-17 Jose E. Marchesi via Libabigail + + abidw: add support for CTF + * tools/abidw.cc: Conditionally include abg-ctf-reader.h. + (load_corpus_and_write_abixml): Do not get a + dwarf_reader::read_context as an argument. + (main): Adjust call to load_corpus_and_write_abixml accordingly. + (struct options): New option use_ctf. + (options): ... and initialize it. + (display_usage): Document --ctf. + (parse_command_line): Handle --ctf. + * doc/manuals/abidw.rst: Document --ctf. + +2021-11-16 Jose E. Marchesi via Libabigail + + ctf: ctf_reader::read_corpus now sets a status + * include/abg-ctf-reader.h: Include abg-elf-reader-common.h. + read_corpus now gets an extra argument `status'. + * src/abg-ctf-reader.cc (read_corpus): Likewise, and set `status' + accordingly when the debug info is not found. + * tools/abilint.cc (main): Pass a status argument to + ctf_reader::read_corpus. + * tools/abidiff.cc (main): Likewise. + +2021-11-11 tangmeng + + Standardize and improve the output of several tests + * tests/test-abidiff-exit.cc (main): Use + abigail::tests::emit_test_{summary, status_and_update_counters} + functions to ameliorate and standardize test output. + * tests/test-alt-dwarf-file.cc (main): Likewise. + * tests/test-annotate.cc (main): Likewise. + * tests/test-diff-dwarf-abixml.cc (main): Likewise. + * tests/test-ini.cc (main): Likewise. + * tests/test-lookup-syms.cc (main): Likewise. + +2021-11-17 Dodji Seketeli + + test-utils: Define test status reporting functions + * tests/test-utils.h (emit_test_status_and_update_counters) + (emit_test_summary): Declare ... + * tests/test-utils.cc (emit_test_status_and_update_counters) + (emit_test_summary): ... new functions. + +2021-11-17 Dodji Seketeli + + test-utils: Define colors for test status messages + * tests/test-utils.h (TEST_FAILURE_COLOR, TEST_SUCCESS_COLOR): + Define macros. + +2021-11-15 Dodji Seketeli + + Bug 28584 - Don't drop global variables that lack DW_AT_external + * src/abg-dwarf-reader.cc (die_is_effectively_public_decl): Define + new static function. + (die_flag_attribute, die_is_public_decl): Adjust const-ness. + (build_ir_node_from_die): When building an IR for a variable, + consider the variable as being external if the variable is at + namespace scope, even if its DIE doesn't have the DW_AT_external + attribute. + * tests/data/test-read-dwarf/PR28584/PR28584-smv.cc: New source + code for a new clang-built binary. + * tests/data/test-read-dwarf/PR28584/PR28584-smv.clang.o: New + clang-built input binary for testing purposes. + * tests/data/test-read-dwarf/PR28584/PR28584-smv.clang.o.abi: The + reference output abixml. + * tests/data/Makefile.am: Add the new test material above to + source distribution. + * tests/test-read-dwarf.cc (in_out_specs): Add the new test input + to this test harness. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + +2021-11-12 Jose E. Marchesi via Libabigail + + Move dwarf_reader::status facilities to an abigail::elf_reader namespace + * include/abg-reader-common.h: New file. + * include/abg-dwarf-reader.h (enum status): Move to + abg-reader-status.h. + (status_to_diagnostic_string): Likewise. + (operator|): Likewise. + (operator&): Likewise. + (operator|=): Likewise. + (operator&=): Likewise. + Include abg-reader-common.h. + * include/Makefile.am (pkginclude_HEADERS): Add + abg-elf-reader-common.h. + * src/abg-elf-reader-status.cc: New file. + * src/abg-dwarf-reader.cc (operator|): Move to + abg-elf-reader-common.cc. + (operator&): Likewise. + (operator|): Likewise. + (operator|=): Likewise. + (operator&=): Likewise. + (status_to_diagnostic_string): Likewise. + * src/Makefile.am (libabigail_la_SOURCES): Add + elf-reader-common.cc. + * src/abg-tools-utils.cc: Use abigail::elf_reader instead of + abigail::dwarf_reader for the status definitions. + * tools/abicompat.cc: Likewise. + * tools/abidiff.cc: Likewise. + * tools/abidw.cc: Likewise. + * tools/abilint.cc: Likewise. + * tools/abipkgdiff.cc: Likewise. + * tests/print-diff-tree.cc: Likewise. + * tests/test-diff-dwarf.cc: Likewise. + * tests/test-read-dwarf.cc: Likewise. + * tests/test-symtab.cc: Likewise. + * tests/test-ir-walker.cc: Likewise. + +2021-11-12 Dodji Seketeli + + abg-config.{cc,h}: Misc comment cleanups + * include/abg-config.h (abigail_get_library_version): Remove the + comment from the header file ... + * src/abg-config.cc (abigail_get_library_version): ... to put it + in the definition. + +2021-11-12 Dodji Seketeli + + abidw: Add --abixml-version + * doc/manuals/abidw.rst: Document the --abixml-version command + line option. + * configure.ac (ABIXML_VERSION_MAJOR, ABIXML_VERSION_MINOR): + Define these two new autoconf variables. + * include/abg-config.h (abigail_get_abixml_version): Declare new + function. + * include/abg-tools-utils.h (get_abixml_version_string): Declare + new function. + * include/abg-version.h.in (ABIGAIL_ABIXML_VERSION_MAJOR) + (ABIGAIL_ABIXML_VERSION_MINOR): Define new preprocessor macros. + * src/abg-config.cc (config::config): Initialize + config::m_format_{minor,major} using the newly defined + preprocessor macros ABIGAIL_ABIXML_VERSION_M{IN,AJ}OR. + * src/abg-tools-utils.cc (get_abixml_version_string): Define new + function. + * tools/abidw.cc (options::display_abixml_version): Define new + data member. + (options::options): Initialize it. + (display_usage): Emit a help string for the new --abixml-version + option. + (parse_command_line): Parse the --abixml-version string. + (main): Emit the abixml version when asked. + +2021-11-04 Dodji Seketeli + + Bug 28450 - Fix cloned member function handling in DWARF + * ABIXML-FORMAT-VERSIONS: New file that documents the version + changes of the ABIXML-FORMAT-VERSIONS. + * include/abg-fwd.h (look_through_no_op_qualified_type): Remove + this function declaration. + (strip_useless_const_qualification): Declare new function + declaration. + * src/abg-comparison.cc (compute_diff_for_types): Avoid stripping + off no-op-qualified types as these beasts don't exist anymore. + (redundancy_marking_visitor::visit_end): Allow a variable which + type has local changes to be considered redundant if its type is + itself redundant. + * src/abg-config.cc (config::config): Bump the abixml version from + 2.0 to 2.1. + * src/abg-dwarf-reader.cc (maybe_strip_qualification): Factorize + out the new strip_useless_const_qualification function from here. + (build_or_get_fn_decl_if_not_suppressed): If the function is + created but doesn't have an ELF symbol associated to it, then + update it so that the ELF symbol can be associated. Otherwise, + potential_member_fn_should_be_dropped might later drop that + function on the floor because it doesn't have any ELF symbol + associated. + * src/abg-ir.cc (strip_useless_const_qualification): Define this, + which is has been factorized out of maybe_strip_qualification. + (look_through_no_op_qualified_type): Remove this definition. + (equals): In the overload for reference_type_def, do not peel + typedefs off from the reference before comparison. This is now + useless as the comparison infrastructure got a lot better. In the + overload for references, stop using + look_through_no_op_qualified_type as this function doesn't exist + anymore. + * src/abg-tools-utils.cc (abidiff_status_has_error): Detect when + there is a usage error as well. + * tests/data/test-types-stability/PR28450-libepetra.so.13.0: Add + new testing binary to the repository. + * tests/data/Makefile.am: Add the new testing binary above to + source distribution. + * tests/test-types-stability.cc (elf_paths): Add the new test to + this test harness. + * tests/test-diff-dwarf-abixml.cc (main): Add better error messages. + * tests/data/test-abidiff-exit/test-member-size-report0.txt: Adjust. + * tests/data/test-annotate/libtest23.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. + * tests/data/test-annotate/test0.abi: Likewise. + * tests/data/test-annotate/test1.abi: Likewise. + * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. + * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. + * tests/data/test-annotate/test6.so.abi: Likewise. + * tests/data/test-annotate/test7.so.abi: Likewise. + * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Likewise. + * tests/data/test-diff-dwarf/test0-report.txt: Likewise. + * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise. + * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise. + * tests/data/test-diff-filter/test0-report.txt: Likewise. + * tests/data/test-diff-filter/test01-report.txt: Likewise. + * tests/data/test-diff-filter/test10-report.txt: Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. + * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. + * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. + * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. + * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. + * tests/data/test-diff-filter/test41-report-0.txt: Likewise. + * tests/data/test-diff-filter/test9-report.txt: Likewise. + * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: + Likewise. + * tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise. + * tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise. + * tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise. + * tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise. + * tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise. + * tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise. + * tests/data/test-diff-suppr/test31-report-1.txt: Likewise. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test0.abi: Likewise. + * tests/data/test-read-dwarf/test0.hash.abi: Likewise. + * tests/data/test-read-dwarf/test1.abi: Likewise. + * tests/data/test-read-dwarf/test1.hash.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-read-dwarf/test2.so.abi: Likewise. + * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3.so.abi: Likewise. + * tests/data/test-read-dwarf/test3.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test4.so.abi: Likewise. + * tests/data/test-read-dwarf/test4.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test5.o.abi: Likewise. + * tests/data/test-read-dwarf/test5.o.hash.abi: Likewise. + * tests/data/test-read-dwarf/test6.so.abi: Likewise. + * tests/data/test-read-dwarf/test6.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test7.so.abi: Likewise. + * tests/data/test-read-dwarf/test7.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise. + * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + * tests/data/test-read-write/test-crc.xml: Likewise. + * tests/data/test-read-write/test26.xml: Likewise. + * tests/data/test-read-write/test27.xml: Likewise. + * tests/data/test-read-write/test28-without-std-fns-ref.xml: Likewise. + * tests/data/test-read-write/test28-without-std-vars-ref.xml: Likewise. + +2021-11-10 Jose E. Marchesi via Libabigail + + abg-ctf-reader: use the right string table for CTF data + * src/abg-ctf-reader.cc (slurp_elf_info): Use + find_strtab_for_symtab_section. + +2021-11-10 Jose E. Marchesi via Libabigail + + elf_helpers: new utility function find_strtab_for_symtab_section + * src/abg-elf-helpers.h: Prototype for find_strtab_for_symtab_section. + * src/abg-elf-helpers.cc (find_strtab_for_symtab_section): New function. + +2021-11-09 tangmeng + + test-abicompat: Make the test output more pleasant + * test/test-abicompat.cc (main): make test output more pleasant. + +2021-11-05 tangmeng + + abicompat: Add prompt message for abnormal operation + * tools/abicompat.cc (parse_command_line): Notify the user + when --redundant and --no-redundant are used at the same time + +2021-11-05 tangmeng + + abilint: Add prompt message for abnormal operation + * tools/abilint.cc (parse_command_line): Notify the user when the + path to the file is ignored because the --stdin option was + provided. + +2021-11-03 Jose E. Marchesi via Libabigail + + ctf: make libabigail::ctf_reader::read_corpus reentrant + * src/abg-ctf-reader.cc (class read_context): New attributes + elf_handler, elf_fd, ctf_sect, symtab_sec and strtab_sect. + (read_context): Do not read the CTF archive here. + (slurp_elf_info): Adjust to use attributes instead of locals, and + fetch the raw ELF section contents for libctf. + (close_elf_handler): New function. + (fill_ctf_section): Likewise. + (read_corpus): Call open_elf_handler, close_elf_handler and build + the CTF archive using ctf_arc_bufopen instead of ctf_open. + Signed-by: Jose E. Marchesi + +2021-11-03 tangmeng + + Fix trivial typo when printing message + * tools/abilint.cc (main): End the 'FILE_TYPE_UNKNOWN' tips with a + newline. + * tools/abisym.cc (main): Add a newline after version string. + +2021-10-29 Jose E. Marchesi via Libabigail + + Add support for the CTF debug format to libabigail. + * configure.ac: Check for libctf. + * src/abg-ctf-reader.cc: New file. + * include/abg-ctf-reader.h: Likewise. + * src/Makefile.am (libabigail_la_SOURCES): Add abg-ctf-reader.cc + conditionally. + * include/Makefile.am (pkginclude_HEADERS): Add abg-ctf-reader.h + conditionally. + * tools/abilint.cc (struct options): New option `use_ctf'. + (display_usage): Documentation for --ctf. + (parse_command_line): Handle --ctf. + (main): Honour --ctf. + * tools/abidiff.cc (struct options): New option `use_ctf'. + (display_usage): Documentation for --ctf. + (parse_command_line): Handle --ctf. + (main): Honour --ctf. + * doc/manuals/abidiff.rst: Document --ctf. + * doc/manuals/abilint.rst: Likewise. + +2021-10-29 tangmeng + + abicompat: Add prompt message for abnormal operation + * tools/abicompat.cc (main): Notify the user when the path to + the second library is ignored because the --weak-mode option + was provided. Also, fix comment. + +2021-10-29 tangmeng + + abilint: fix trivial typo when using abilint + * tools/abilint.cc (display_usage): Correct the errors and + redundant content in the help information. + (main): Add a newline after version string. + +2021-10-27 tangmeng + + Fix trivial typo when printing help information + * tools/abicompat.cc (display_usage): End the usage message with a + newline and properly indent it. + +2021-10-20 Dodji Seketeli + + PR28365 - Assert on empty typedef on webkit2gtk3-jsc-2.32.3-1.fc34.x86_64 + * src/abg-reader.cc (build_enum_type_decl): Set the naming typedef + only after the enum is created and keyed. + (build_typedef_decl): Build the underlying type of the typedef + first. + +2021-10-11 Giuliano Procida + + Tweak clang-format configuration + * .clang-format: Various tweaks to Clang format configuration. + +2021-10-15 Vanessa Sochat + + Fixing incorrect symbol + * include/abg-ir.h (translation_unit::language<>LANG_PLI): Rename + LANG_PL1 into this. + * src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Rename + DW_LANG_PL1 into DW_LANG_PLI. + (get_default_array_lower_bound): Rename translation_unit::LANG_PL1 + into translation_unit::LANG_PLI. + * src/abg-ir.cc (translation_unit_language_to_string): Rename + translation_unit::LANG_PL1 into case translation_unit::LANG_PLI. + (string_to_translation_unit_language): Rename + translation_unit::LANG_PL1 into translation_unit::LANG_PLI. + +2021-10-18 Dodji Seketeli + + Update licensing information on the web page after 2.0 + * doc/website/mainpage.txt: Libabigail is now Apache V2 + LLVM + exception. + +2021-10-18 Dodji Seketeli + + Add debug info package for wireshark-cli-3.4.9-1.fc36.x86_64.rpm + * tests/data/test-diff-pkg/wireshark/wireshark-debuginfo-3.4.9-1.fc36.x86_64.rpm: + Add new debug info package. + * tests/data/Makefile.am: Add it to the source distribution. + * tests/test-diff-pkg.cc: Use the new debug info package in the + test harness. + +2021-10-14 Dodji Seketeli + + Bug 28364 - libwiretap fails self comparison + * src/abg-dwarf-reader.cc (build_function_type): Associate the DIE + representation to the constructed type once it's fully built. + * src/abg-reader.cc (build_function_type): Support member function of unions. + * tests/data/Makefile.am: Add the new test input files to the + source distribution. + * tests/data/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64-self-check-report.txt: + Add new test input file. + * tests/data/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64.rpm: + Likewise. + * tests/data/test-diff-pkg/wireshark/wireshark-cli-debuginfo-3.4.9-1.fc36.x86_64.rpm: + Likewise. + * tests/test-diff-pkg.cc (in_out_specs): Add these new test input + files to this test harness. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust. + +2021-10-14 Dodji Seketeli + + writer: Don't forget that a naming typedef is referenced + * src/abg-writer.cc (write_naming_typedef): Notice that the naming + typedef is referenced. + +2021-10-14 Dodji Seketeli + + writer: Don't forget when emitting array subrange types + * src/abg-writer.cc (write_array_subrange_type): Record the type + as emitted. + +2021-10-14 Dodji Seketeli + + writer: Don't forget to emit types referenced by function types + * src/abg-writer.cc (write_referenced_types): Factorize out of ... + (write_translation_unit): ... here. Also, use it to write the + types referenced by emitted function types. + +2021-10-14 Dodji Seketeli + + ir: Avoid canonicalizing types that are not meant to + * src/abg-ir.cc (type_base::get_canonical_type_for): Do not + canonicalize types that are not meant to. + (maybe_adjust_canonical_type): Do not crash when dealing with a + nil canonical type. + * tests/data/test-annotate/libtest23.so.abi: Adjust. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. + * tests/data/test-annotate/test0.abi: Likewise. + * tests/data/test-annotate/test1.abi: Likewise. + * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. + * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-annotate/test2.so.abi: Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-annotate/test3.so.abi: Likewise. + * tests/data/test-annotate/test5.o.abi: Likewise. + * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise. + * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. + * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test-suppressed-alias.o.abi: Likewise. + * tests/data/test-read-dwarf/test0.abi: Likewise. + * tests/data/test-read-dwarf/test0.hash.abi: Likewise. + * tests/data/test-read-dwarf/test1.abi: Likewise. + * tests/data/test-read-dwarf/test1.hash.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. + * tests/data/test-read-dwarf/test2.so.abi: Likewise. + * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test3.so.abi: Likewise. + * tests/data/test-read-dwarf/test3.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test5.o.abi: Likewise. + * tests/data/test-read-dwarf/test5.o.hash.abi: Likewise. + * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise. + * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + +2021-10-14 Dodji Seketeli + + tests/Makefile.am: Fix warning + * tests/Makefile.am: Stop referring to test-dot.cc which is no + more. + +2021-10-14 Dodji Seketeli + + Add --enable-debug-type-canonicalization to configure + * configure.ac: Support the new + --enable-debug-type-canonicalization option. Define macro + WITH_DEBUG_TYPE_CANONICALIZATION accordingly. + * doc/manuals/abidw.rst: Update documentation. + * include/abg-ir.h + (environment::debug_type_canonicalization_is_on): Declare new + member function if WITH_DEBUG_TYPE_CANONICALIZATION is defined. + * src/abg-ir-priv.h + (environment::priv::{use_canonical_type_comparison_, + debug_type_canonicalization_}): Define new data members if + WITH_DEBUG_TYPE_CANONICALIZATION is defined. + (environment::priv::priv): Initialize them. + * src/abg-ir.cc (try_canonical_compare): When + WITH_DEBUG_TYPE_CANONICALIZATION is defined, perform comparison + using either structural or canonical equality depending on the + environment::priv::use_canonical_type_comparison_ flag. + (environment::debug_type_canonicalization_is_on): Define member + function when WITH_DEBUG_TYPE_CANONICALIZATION is defined. + (compare_types_during_canonicalization): Define new function. + (type_base::get_canonical_type_for): Use the new function + compare_types_during_canonicalization. + * tools/abidw.cc (options::debug_type_canonicalization): Define + new data member. + (option::option): Initialize it. + (display_usage): Add help string for --debug-tc. + (parse_command_line): Support new option --debug-tc or + --debug-type-canonicalization. + (load_corpus_and_write_abixml): Turn type canonicalization + debugging on if --enable-tc is provided. + +2021-10-13 Dodji Seketeli + + Improve type (de)serialization instability debugging + * include/abg-fwd.h (is_non_canonicalized_type): Declare new + function. + * src/abg-ir-priv.h: Include abg-corpus.h + (environment::priv::pointer_type_id_map_): Fix comment. + (environment::priv::check_canonical_type_from_abixml_during_self_comp): + Define new member function. + * src/abg-ir.cc (unmark_types_as_being_compared): Factorize this + from ... + (return_comparison_result): ... here. Also, add a parameter to + control whether this function should perform the "canonical type + propagation optimization" or not. By default the optimization is + performed. This can be changed for debugging purposes later. + (type_base::get_canonical_type_for): Re-organise the self + comparison debugging process to invoke the new function + environment::priv::check_canonical_type_from_abixml_during_self_comp + each time a canonical type is computed, in addition to doing the + previous verification that was done when no canonical type was + found. Emit better error messages. + (is_non_canonicalized_type): Rename the static function + is_allowed_non_canonicalized_type into this and make it + non-static. + (hash_as_canonical_type_or_constant): Adjust. + * src/abg-reader.cc (maybe_map_type_with_type_id): Define new + static function. + (read_context::maybe_check_abixml_canonical_type_stability): + Ignore types that were not canonicalized. + (read_corpus_from_input): Set the origin of the corpus early + enough so that it's available to the canonicalizer even for types + being canonicalized early. + (MAYBE_MAP_TYPE_WITH_TYPE_ID): Factorize this macro out of ... + (build_type): ... this. That macro is defined only when debugging + self comparison. + (build_array_type_def): Map the read subrange type with its + type-id. + (handle_{type_decl, qualified_type, pointer_type_def, + reference_type_def, function_type, array_type_def,enum_type_decl, + typedef_decl, class_decl, union_decl}): Map the read type with its + type-id. + (load_canonical_type_ids): Ignore non-canonicalized types that + which ids were saved in the type-id file. + * src/abg-writer.cc (write_type_record): Factorize from ... + (write_canonical_type_ids): ... here. Don't forget to write the + type-ids of decl-only types. This can be useful for eye + inspection. + * tools/abidw.cc (load_corpus_and_write_abixml): Wait until the + end of the function before removing the type-id file. This can be + useful for eye inspection. + +2021-10-05 Dodji Seketeli + + Bump to 2.1 version + * configure.ac: Bump to 2.1 version. + +2021-10-04 Dodji Seketeli + + Update libabigail web page for 2.0 release + * doc/website/mainpage.txt: Update. + +2021-10-04 Dodji Seketeli + + Fix tarball upload directory + * Makefile.am: The tarball upload director is really /var/ftp. + +2021-10-04 Dodji Seketeli + + Update ChangeLog for 2.0 + * ChangeLog: Update automatically with make update-changelog. + 2021-10-04 Dodji Seketeli Update NEWS file for 2.0 -- 2.34.1