From patchwork Thu Apr 18 16:17:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 88672 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5B1E5384403E for ; Thu, 18 Apr 2024 16:18:16 +0000 (GMT) X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 518FA3858C78 for ; Thu, 18 Apr 2024 16:18:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 518FA3858C78 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 518FA3858C78 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713457089; cv=none; b=V3NYUSkU2t4SOF3Uxl3rv3JbFJ2s78oZoCwFtBCVF7wxvJGnoMF+QA2XjEpw/UdnsFsa1Zwz6iezDyWkJQ6x3nQfP6EfT1fS21eTXdPZaH57Ox4tOSJcuc7KSik59hRVj+aEYRo3Z/3x3p9tCAcvWY4b2MIVHF7olsMIUcPagZI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713457089; c=relaxed/simple; bh=/XAeI7G/AFcC0y7OegTQXvWQONiDXRaomu5/eLAixgI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=NGs7sRw8XnzUgNt6DUum8eBCsqsvtKovgwSQXl6Ud8rjS98wAIRBL1OZys7y96XSo52GG1xVSaU3+kCaiICteeCUVZJI7KR7M7rLCFV9rhbQpGzFZrd0n09+eN2W/7aLu6Wx/LPuZTX/qUi0JjdrsCbLyrUyd43zgBauIKHhQVI= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1713457083; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=h3IhBYCWteLdWDLd1jDXEeY9EFPLNF47KL0+UlZ6u2Y=; b=cP2WH0+zx1l658my7btTxS9c8HUiGIvthTYab67Aj9T2hEcGxLVyx517/2ELupCRkkNIoR gi1kOHvpX9Jr+uXfCDsBB+FG3aUBbOhm1V6V++Gkwdqy/gxllNbweFN45ah4ofTDp4ngPQ V07n+yoCOy8G8beLXKEGvFatKlZFs0I= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-538-gONvS5iZOF-paFYNagb9zg-1; Thu, 18 Apr 2024 12:17:58 -0400 X-MC-Unique: gONvS5iZOF-paFYNagb9zg-1 Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-78edbede4b7so397769285a.0 for ; Thu, 18 Apr 2024 09:17:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713457078; x=1714061878; h=mime-version:user-agent:message-id:date:organization:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=h3IhBYCWteLdWDLd1jDXEeY9EFPLNF47KL0+UlZ6u2Y=; b=GkgK2HCYoZzXr0t8aGeTVa1g4tHHI7RP3M5uuzYzPlybB/pMWcqvdhE6W7KgSQPuH9 seKrmugU6Vz0HYuxkRQbkeiJ3jIx/DiQjK/vUjbokwHPWZZy0O8ckKVbDKtx/OXYEndL 1QPdiABl+/2+DcvFbyutwaKmP/6RzRzjaHlFutmN3/PpnERIZva04ytHEk5XmT1LUJc6 Fz7D04HVBTcQqX7puDj6C5c8u52TbCJk8/wn7knSrcpIla2M22qcev5rmj7IQx2V9wuA VQcWBBk28RtnY+XeFvBVErytZ34eC3gjlt1w5bLO7lKU8v7PfaOw7sBiMkTPoibfQ3vj RsRA== X-Gm-Message-State: AOJu0YzH5lAa1AdS1KU1Ay73/OsBR+Neq3od53Hqxdv9ufw5zb5uRohy znHRESDj1BXnOcxtPeVTAP017eyGmA8U5fM5DfGqws4j4N/FSoN6QLPGYuhF/43wZf6wWoWsqVS zJDWja1rozH5WXeA2++GaHzKL7dkbFd5tmgYvG0h5p+VyAPwCFiq/IPCdmWIPbO2xIAPayt1N63 P3AwRL2sWHm7mV74VoFQyIcS+0JR+Ia2rjn2QsUQ== X-Received: by 2002:a05:620a:c53:b0:78b:ea82:5eb4 with SMTP id u19-20020a05620a0c5300b0078bea825eb4mr4256470qki.25.1713457075180; Thu, 18 Apr 2024 09:17:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFrO/P64146SAKlUa9wAVavamc/V3q8/N8jCWOU9Lfij9lCo3+7tt5n2fhKDqOsf1jnEsm9Qw== X-Received: by 2002:a05:620a:c53:b0:78b:ea82:5eb4 with SMTP id u19-20020a05620a0c5300b0078bea825eb4mr4256281qki.25.1713457072460; Thu, 18 Apr 2024 09:17:52 -0700 (PDT) Received: from localhost (88-120-130-27.subs.proxad.net. [88.120.130.27]) by smtp.gmail.com with ESMTPSA id bp6-20020a05620a458600b0078d63baf516sm752130qkb.129.2024.04.18.09.17.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Apr 2024 09:17:51 -0700 (PDT) Received: by localhost (Postfix, from userid 1000) id 09DD05077C43; Thu, 18 Apr 2024 18:17:50 +0200 (CEST) From: Dodji Seketeli To: libabigail@sourceware.org Subject: [PATCH, applied] ChangeLog: Update for 2.5 release Organization: Red Hat / France X-Operating-System: AlmaLinux 9.3 X-URL: http://www.redhat.com Date: Thu, 18 Apr 2024 18:17:50 +0200 Message-ID: <877cguir0x.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_WEB, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libabigail-bounces+patchwork=sourceware.org@sourceware.org Hello, In preparation of the 2.5 release, this patch updates the ChangeLog file shipped in the source distribution. * ChangeLog: Update for 2.5 release by running the "make update-changelog" command. Signed-off-by: Dodji Seketeli Applied to the master branch. --- ChangeLog | 1938 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1938 insertions(+) diff --git a/ChangeLog b/ChangeLog index 8272e1af..9d59c546 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,1946 @@ +2024-04-17 Dodji Seketeli + + ChangeLog: Update for 2.5 release + * ChangeLog: Update for 2.5 release by running the "make + update-changelog" command. + +2024-04-17 Dodji Seketeli + + NEWS: Update for 2.5 release + * NEWS: Update for the 2.5 release with the command git + shortlog libabigail-2.4..HEAD. + +2024-04-18 Dodji Seketeli + + configure: Add option to disable abidb + * configure.ac: Add a --disable-abidb option to configure to + disable the abidb tool and related tests. + +2024-04-17 Dodji Seketeli + + tests/runtestabidb?.sh.in: Fix git initialization + * tests/runtestabidb[1-2].sh.in: Initialize email & user name + for the local git repository. + +2024-04-15 Dodji Seketeli + + Bug 31646: Fix type suppression tactics for webkit2gtk3 + * default.abignore: Split the libwebkit2gtk suppression + specification for types whose names match the regexp + ^std::.*|WebCore::.*|WebKit::.* into two. One that drops type + with names being ^std::.* and another one that turns type being + WebCore::.*|WebKit::.* into opaque types. + * doc/manuals/libabigail-concepts.rst: Add documentation for the + new special label libabigail::OPAQUE_TYPE_LABEL that transforms + types matching a [suppress_type] into opaque types. + * include/abg-suppression.h (is_opaque_type_suppr_spec): Renamed + is_private_type_suppr_spec into this. + (get_opaque_types_suppr_spec_label): Renamed + get_private_types_suppr_spec_label. + * src/abg-comparison.cc (diff::is_suppressed): Adjust. + * src/abg-dwarf-reader.cc (type_is_suppressed): Adjust. Change the + name of the type_is_private parameter into type_is_opaque. + (get_opaque_version_of_type): Do not return early if the type has + no associated location. What was I thinking. + (build_ir_node_from_die): For enums, struct and classes adjust + call to type_is_suppressed. + * src/abg-suppression.cc (type_suppression::suppresses_diff): + Adjust to using is_opaque_type_suppr_spec and + get_opaque_version_of_type in lieu of is_private_type_suppr_spec + and get_private_types_suppr_spec_label. + (get_opaque_types_suppr_spec_label): Rename + get_private_types_suppr_spec_label into this. Also, rename the + name of the special label that specifies opaque types from + "Artificial private types suppression specification" to + "libabigail::OPAQUE_TYPE_LABEL". + (is_opaque_type_suppr_spec): Rename is_private_type_suppr_spec + into this. + (is_type_suppressed): Rename the "type_is_private" parameter into + "type_is_opaque". + * src/abg-tools-utils.cc (handle_file_entry): Adjust to using + get_opaque_types_suppr_spec_label rather than + get_private_types_suppr_spec_label. + * tools/abipkgdiff.cc (compare): Use the supprs variable where all + the suppression specifications got accumulated, not just the + priv_types_supprs1. + (compare_to_self): Add a suppression specifications variable for + private types. Add those private types specs to the user-provided + ones. + * tools/fedabipkgdiff (abipkgdiff): In the self comparison mode, + take into account devel packages and suppression specifications. + Pass those to the abipkgdiff tool's invocation. + * tests/data/test-diff-suppr/PR31646/test-PR31646-result-[1-3].txt: + New reference test output files. + * tests/data/test-diff-suppr/PR31646/test-PR31646-v{0,1}.cc: + Source code of binary inputs below. + * tests/data/test-diff-suppr/PR31646/test-PR31646-v{0,1}.o: Binary + input files. + * tests/data/test-diff-suppr/PR31646/test-PR31646.2.abignore: + Suppression specification file. + * tests/data/test-diff-suppr/PR31646/test-PR31646.abignore: + Likewise. + * tests/data/Makefile.am: Add the new test material above to + source distribution. + * tests/test-diff-suppr.cc (in_out_specs): Add the new test input + to this harness. + +2024-04-03 Dodji Seketeli + + Bug 29160 - support fn symbol aliasing a var symbol + * src/abg-reader.cc (typedef string_strings_map_type): Define new + typedef. + (resolve_symbol_aliases): Define new function. + (build_elf_symbol_db): Add two new parameters to carry unresolved + function and variable symbol aliases. When a symbol alias can't + resolve to any of the symbols of its kind (function or variable) + then stage the alias away in the set of unresolved aliases. That + set is then going to be resolved later. + (read_symbol_db_from_input): Add two new parameters to carry + unresolved function and variable symbol aliases. Pass them down + to build_elf_symbol_db. + (reader::read_corpus): Adjust the invocation of + read_symbol_db_from_input to get the sets of unresolved function & + variable symbol aliases. Invoke the new resolve_symbol_aliases + the unresolved function & variable aliases. + * tests/data/test-diff-pkg/PR29610/guestfs-tools-1.51.6-2.el9.s390x-self-check-report.txt: + New test reference output. + * tests/data/test-diff-pkg/PR29610/guestfs-tools-1.51.6-2.el9.s390x.rpm: + New binary test input. + * tests/data/test-diff-pkg/PR29610/guestfs-tools-debuginfo-1.51.6-2.el9.s390x.rpm: + Likewise. + * tests/data/Makefile.am: Add this new test material to source + distribution. + * tests/test-diff-pkg.cc (in_out_specs): Add the new test input to + this test harness. + +2024-04-03 Dodji Seketeli + + Bug 31513 - Fix fallout of initial patch + * src/abg-comp-filter.cc (has_subtype_changes): Reset s_member in + the loop, just like f_member. + * tests/data/test-abidiff-exit/PR31513/non-regr/report1.txt: Adjust. + * tests/data/test-abidiff-exit/PR31513/non-regr/report2.txt: Adjust. + * tests/test-abidiff-exit.cc (in_out_specs): Adjust. + +2024-03-29 Dodji Seketeli + + comparison: Fix erroneous detection of deleted anonymous data members + * src/abg-comparison.cc + (class_or_union_diff::ensure_lookup_tables_populated): If leaf + data members of an anonymous data member are still present in the + new version of the class, then the anonymous data member cannot be + considered as being removed from the second version of the class. + * tests/data/test-abidiff-exit/non-del-anon-dm/non-regr/report0.txt: + Reference test output. + * tests/data/test-abidiff-exit/non-del-anon-dm/non-regr/test0-v{0,1}.c: + Source code of the binary input below. + * tests/data/test-abidiff-exit/non-del-anon-dm/non-regr/test0-v{0,1}.o: + New binary test input. + * tests/data/test-abidiff-exit/non-del-anon-dm/reported/binaries-origin.txt: + File mentioning the origin of the reported binary. + * tests/data/test-abidiff-exit/non-del-anon-dm/reported/librte_graph.so.24.{0,1}: + Binary test input. + * tests/data/test-abidiff-exit/non-del-anon-dm/reported/report0.txt: + Reference test output. + * tests/data/Makefile.am: Add the test material above to source + distribution. + * tests/test-abidiff-exit.cc (in_out_specs): Add test material + above to this harness. + +2024-03-28 Dodji Seketeli + + Bug 31513 - abidiff considers data members moved to base class as harmful + * include/abg-comparison.h (typedef string_decl_base_sptr_map): + Move this typedef to include/abg-fwd.h: + (HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY): Inside the enum + diff_category, rename the enumerator + HARMLESS_UNION_CHANGE_CATEGORY into this. + (EVERYTHING_CATEGORY): Adjust this enum to refer to + HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY, no more HARMLESS_UNION_CHANGE_CATEGORY + * include/abg-fwd.h (typedef string_decl_base_sptr_map): Move this + typedef here from abg-comparison.h + (collect_non_anonymous_data_members): Declare new function. + * src/abg-comp-filter.cc (has_offset_changes) + (type_has_offset_changes, has_offset_changes) + (has_subtype_changes, class_diff_has_only_harmless_changes): + Define new static functions. + (base_classes_removed): Rename base_classes_added_or_removed into + this and update comment. + (categorize_harmless_diff_node): Changes that were categorized as + HARMLESS_UNION_CHANGE_CATEGORY is now categorized as + HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY. Also, a diff that + satisfies either union_diff_has_harmless_changes or + class_diff_has_only_harmless_changes is categorized as + HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY. + (categorize_harmful_diff_node): Adjust to invoke + base_classes_removed instead of base_classes_added_or_removed. An + added base class doesn't necessarily qualifies as a harmful change + anymore. Rather, a diff node that carries an offset change as + detected by type_has_offset_changes is categorized as + SIZE_OR_OFFSET_CHANGE_CATEGORY. + * src/abg-comparison.cc (get_default_harmless_categories_bitmap): + Adjust to use + abigail::comparison::HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY + rather than abigail::comparison::HARMLESS_UNION_CHANGE_CATEGORY. + (operator<<(ostream& o, diff_category c)): Likewise. + (class_diff::ensure_lookup_tables_populated): Detect data members + that are moved into base classes to avoid considering those data + members as being removed from the class. + * src/abg-default-reporter.cc (default_reporter::report): Adjust + to use HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY rather than + HARMLESS_UNION_CHANGE_CATEGORY. + * src/abg-ir.cc (collect_non_anonymous_data_members): Define + function overloads. + * tests/data/test-abidiff-exit/PR31513/non-regr/libtest[1-4]-v{0,1}.so: + New binary test input files. + * tests/data/test-abidiff-exit/PR31513/non-regr/report[1-4.txt: + New reference output files. + * tests/data/test-abidiff-exit/PR31513/non-regr/test[1-4]-v{0,1}.cc: + Source code of the binary input files above. + * tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-{1,2}.txt: + New reference output files. + * tests/data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc{7,11}.so: + New binary test input files. + * tests/data/test-abidiff-exit/PR31513/reported/libstdcpp.suppr: + New test suppression file. + * tests/data/Makefile.am: Add new test files above to source + distribution. + * tests/test-abidiff-exit.cc (in_out_specs): Add the new input + test files to this test harness. + * 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. + +2024-03-28 Dodji Seketeli + + abidiff: Fix indentation of help string + * tools/abidiff.cc (display_usage): Fix indentation of help string + +2024-03-29 Dodji Seketeli + + suppression: Fix indentation + * src/abg-suppression.cc + (function_suppression::suppresses_function_symbol): Fix + indentation. + +2024-03-28 Dodji Seketeli + + comparison: Fix typo + * src/abg-comparison.cc + (class_or_union_diff::ensure_lookup_tables_populated): Fix a + comment typo. + +2024-03-28 Dodji Seketeli + + ir: Fix Emacs C++ mode header + * src/abg-ir.cc: Fix the Emacs C++ mode header. + +2024-03-22 Frank Ch. Eigler + + abidb: drop the TODO items from the python script + * tools/abidb: + +2023-12-05 Frank Ch. Eigler + + abidb: Introduce a tool to manage the ABI of a Linux distribution + * configure.ac: Condition building abidb on the presence of python + and the required modules. + * doc/manuals/Makefile.am: Add the abidb.rst documentation to + source distribution. Distribute the abidb.1 manpage file as well. + * doc/manuals/abidb.rst: New documentation file. + * doc/manuals/conf.py: Configure the generation of the abidb.1 + manage from the abidb.rst file above. + * doc/manuals/libabigail-tools.rst: Add a reference to the new + abidb tool. + * tests/Makefile.am: Register runabidb1.sh and runabidb2.sh as + tests for abidb. Register runabidb1.sh.in and runabidb2.sh.in as + input files for autoconf generated runabidb1.sh and runabidb2.sh. + * tests/data/Makefile.am: Add abidb2client.c, abidb2so.c and + abidb2soBAD.c to source distribution. + * tests/data/abidb2client.c: New source file for test input binaries. + * tests/data/abidb2so.c: Likewise. + * tests/data/abidb2soBAD.c: Likewise. + * tests/runtestabidb1.sh.in: New test script input for autoconf generation. + * tests/runtestabidb2.sh.in: Likewise. + * tools/Makefile.am: Add the new abidb tool to the set of tools. + * tools/abidb: The New Tool, ladies and gentlemen! + +2024-03-15 Dodji Seketeli + + abicompat: Fix exit code in weak mode + * tools/abicompat.cc (perform_compat_check_in_weak_mode): Do not + override the status code when doing the comparison in the reverse + direction. + (compare_expected_against_provided_functions) + (compare_expected_against_provided_variables): Set the status code + close to the detected diff. In the future, this might help us + provide finer grained status. + * tests/test-abicompat.cc (InOutSpec::status): Add a new data + member to represent the expected exit code. + (in_out_specs): Adjust the array of tests. + (main): If the actual exit code is different from the expected + one, then the test failed so let's report it. + +2024-03-08 Dodji Seketeli + + Emit & read undefined interfaces to & from ABIXML + * include/abg-writer.h (set_write_undefined_symbols): Declare new + function. + (set_common_options): Use the new set_write_undefined_symbols in + this function template. + * src/abg-dwarf-reader.cc (reader::{get_die_language, die_is_in_c, + die_is_in_cplus_plus, die_is_in_c_or_cplusplus}): Move these + member functions into ... + (get_die_language, die_is_in_c, die_is_in_cplus_plus) + (die_is_in_c_or_cplusplus): ... these static non-member functions. + (fn_die_equal_by_linkage_name): Adjust and remove the now useless + reader parameter. + (compare_dies, get_scope_die, function_is_suppressed) + (variable_is_suppressed): Adjust. + (build_translation_unit_and_add_to_ir): When we are asked to load + undefined symbol, make sure to also analyze top-level class types + and if we are in C++, also analyze top-level unions and structs as + these might also have some undefined interfaces. + * src/abg-reader.cc (build_elf_symbol_db): Let's not construct and + return the symbol DB anymore. Rather, let's let the caller + construct it, so we can just update it with the input gathered. + (read_symbol_db_from_input): Support getting undefined function + and variable symbols from the new undefined-elf-function-symbols + and undefined-elf-variable-symbols elements. Note that undefined + and defined function symbols go into the same symbol DB whereas + undefined and defined variable symbols go into another symbol DB. + Now, we suppose that the variable & symbol DBs are allocated by + the caller. We pass it down to build_elf_symbol_db that populates + it. Maybe we should rename build_elf_symbol_db into + populate_elf_symbol_db. + (reader::read_corpus): Allocate the function + and variable symbol DB and let read_symbol_db_from_input populate + it. Sort functions and variables after reading the whole ABIXML. + * src/abg-writer.cc (write_context::write_context): Define new + data member. + (write_context::write_context): Initialize it. + (write_context::{get,set}::write_undefined_symbols): Define + accessors. + (set_write_undefined_symbols): Define a new function. + (write_context::decl_is_emitted): Add a new overload. + (write_elf_symbol_reference): Add a writer context and a corpus + parameter. If the symbol is not in the corpus or if the symbol is + undefined and we were not asked to emit undefined symbols then do + not emit any reference to it. + (write_translation_unit): Emit the undefined functions and + variables that belong to the current translation unit, along with + their reference to the undefined ELF symbol they are associated + to. + (write_var_decl, write_function_decl): Let + write_elf_symbol_reference decide whether it should emit the + reference to ELF symbol or not, as it now know how to make that + decision. + (write_corpus): Write the undefined function & variable ELF symbol + data bases. These in the new 'undefined-elf-function-symbols' and + 'undefined-elf-variable-symbols' elements. + * tools/abidw.cc (options::load_undefined_interfaces): Define new + data member. + (options:options): Initialize it. + (display_usage): Add a help string for the + --no-load-undefined-interfaces option. + (parse_command_line): Parse the --no-load-undefined-interfaces + option. + (set_generic_options): Set the + fe_iface::option_type::load_undefined_interfaces option. + * doc/manuals/abidw.rst: Document the new + --no-load-undefined-interfaces of abidw. + * tests/data/test-abicompat/test10/libtest10-with-exported-symbols.so: + New binary input file. + * tests/data/test-abicompat/test10/libtest10-with-incompatible-exported-symbols.so: + New binary input file. + * tests/data/test-abicompat/test10/libtest10-with-incompatible-exported-symbols.so.abi: + New abixml input file. + * tests/data/test-abicompat/test10/test10-app-with-undefined-symbols: + New binary input file. + * tests/data/test-abicompat/test10/test10-app-with-undefined-symbols.abi: + New abixml input file. + * tests/data/test-abicompat/test10/test10-app-with-undefined-symbols.cc: + New source file for binary test input + * tests/data/test-abicompat/test10/test10-fn-changed-report-0.txt: + New source file for binary test input + * tests/data/test-abicompat/test10/test10-fn-changed-report-1.txt: + New source file for binary test input + * tests/data/test-abicompat/test10/test10-fn-changed-report-2.txt: + New source file for binary test input + * tests/data/test-abicompat/test10/test10-fn-changed-report-3.txt: + New source file for binary test input + * tests/data/test-abicompat/test10/test10-fn-changed-report-4.txt: + New source file for binary test input + * tests/data/test-abicompat/test10/test10-with-exported-symbols.cc: + New source file for binary test input + * tests/data/test-abicompat/test10/test10-with-exported-symbols.h: + New source file for binary test input + * tests/data/test-abicompat/test10/test10-with-incompatible-exported-symbols.cc: + New source file for binary test input + * tests/data/test-abicompat/test10/test10-with-incompatible-exported-symbols.h: + New source file for binary test input. + * tests/data/Makefile.am: Add new test input files to source + distribution. + * tests/test-abicompat.cc (in_out_specs): Add the new test inputs + to this test harness. + * tests/test-annotate.cc (main): Use the new + --no-load-undefined-interfaces option of abidw to keep the old + behavior. + * tests/test-read-common.cc (test_task::serialize_corpus): Do not + emit undefined symbols. + * tests/test-read-dwarf.cc (test_task_dwarf::perform): Likewise. + +2024-03-12 Dodji Seketeli + + Add support for undefined symbols in the BTF reader + * doc/manuals/abicompat.rst: Update documentation for the --btf + option of abicompat. + * include/abg-elf-reader.h + (elf::reader::{function,variable}_symbol_is_undefined): Declare + new member functions. + * src/abg-btf-reader.cc + (reader::read_debug_info_into_corpus): Sort functions & + variables after canonicalization. + (reader::build_ir_node_from_btf_type): Always call + fe_iface::add_{fn,var}_to_exported_or_undefined_decls with the + decl that was constructed. + (reader::build_function_decl): Support setting an undefined symbol + to the function decl. + (reader::build_var_decl): Likewise, support setting undefined + symbol the variable decl. + * src/abg-elf-reader.cc + ((elf::reader::{function,variable}_symbol_is_undefined): Declare + new member functions.): Define new member functions. + * src/abg-symtab-reader.cc + (symtab::{function,variable}_symbol_is_undefined): Return the + undefined symbol that was found. + * src/abg-symtab-reader.h + (symtab::{function,variable}_symbol_is_undefined): Return an + undefined symbol rather than just a boolean value. + * tools/abicompat.cc: Add support for BTF here. + (options::use_btf): Define new data member ... + (options::options): ... and initialize it. + (display_usage): Add a help string for the --btf option. + (parse_command_line): Parse the --btf option. + * tests/data/test-abicompat/test7-fn-changed-report-0.1.txt: New + reference test output file. + * tests/data/test-abicompat/test7-fn-changed-report-2.1.txt: + Likewise. + * tests/data/test-abicompat/libtest7-fn-changed-libapp-btf-v0.so: + New binary input file. + * tests/data/test-abicompat/libtest7-fn-changed-libapp-btf-v1.so: + Likewise. + * tests/data/test-abicompat/test7-fn-changed-app.btf: Likewise. + * tests/data/Makefile.am: Add the new test material to source + distribution. + * tests/test-abicompat.cc (in_out_specs): Add the new test input + to the test harness. + * tests/data/test-abicompat/test7-fn-changed-app.c: Adjust. + * tests/data/test-abicompat/test7-fn-changed-libapp-v0.c: + Likewise. + * tests/data/test-abicompat/test7-fn-changed-libapp-v1.c: Likewise + +2024-03-12 Dodji Seketeli + + Factorize elf-reader::{variable,function}_symbol_is_exported into symtab + * src/abg-elf-reader.cc (reader::function_symbol_is_exported): Use + the new symtab::function_symbol_is_exported. + (reader::variable_symbol_is_exported): Use the new + symtab::variable_symbol_is_exported. + * src/abg-symtab-reader.cc + (symtab::{function,variable}_symbol_is_exported): Factorize + elf::reader::{function,variable}_symbol_is_exported into this. + * src/abg-symtab-reader.h + (symtab::{function,variable}_symbol_is_exported): Declare new + member functions. + +2024-02-21 Dodji Seketeli + + Represent undefined corpus interfaces to analyze app compatibility + * include/abg-corpus.h (corpus::{lookup_variable, + get_undefined_functions, get_undefined_variables}): Declare new + member functions. + (corpus::exported_decls_builder::maybe_add_{fn,var}_to_exported_fns): + Make this return a boolean. + * include/abg-fe-iface.h (fe_iface::options_type): Add a new + load_undefined_interfaces enumerator. + (fe_iface::add_fn_to_exported_or_undefined_decls): Rename + maybe_add_fn_to_exported_decls into this. + (fe_iface::add_var_to_exported_or_undefined_decls): Rename + maybe_add_var_to_exported_decls into this. + * src/abg-btf-reader.cc (reader::build_ir_node_from_btf_type): + Adjust call to maybe_add_fn_to_exported_decls as + add_fn_to_exported_or_undefined_decls. Similarly, adjust call to + maybe_add_var_to_exported_decls as + add_var_to_exported_or_undefined_decls. + * src/abg-corpus-priv.h (corpus::priv::undefined_{fns,vars}): Add + new member variables. + * src/abg-corpus.cc + (corpus::exported_decls_builder::maybe_add_{fn,var}_to_exported_fns): + Return a bool iff the decl was added to the set of exported decls. + (corpus::{lookup_variable, get_undefined_functions, + get_undefined_variables}): Define new member functions. + (corpus::sort_{functions,variables}): Sort the undefined decls + too. + * (corpus::lookup_{function,variable}_symbol): Lookup the symbol + also among undefined symbols, not just among defined symbols. + * src/abg-ctf-reader.cc (reader::process_ctf_archive): Adjust call + to maybe_add_fn_to_exported_decls as + add_fn_to_exported_or_undefined_decls. Similarly, adjust call to + maybe_add_var_to_exported_decls as + add_var_to_exported_or_undefined_decls. Also, sort functions & + variables in the corpus. + * src/abg-dwarf-reader.cc (die_name_and_linkage_name): Define new + static function. + (reader::fixup_functions_with_no_symbols): Adjust call to + maybe_add_fn_to_exported_decls as + add_fn_to_exported_or_undefined_decls. + (reader::{is_decl_die_with_undefined_symbol, + load_undefined_interfaces}): Define new member functions. + (build_translation_unit_and_add_to_ir): Analyze DIEs of interfaces + that have undefined symbols if we were asked to load undefined + interfaces. + (variable_is_suppressed): Add a boolean parameter to tell if the + var is decl-only. Use that decl-only flag to determine if the + variable is suppressed. A non-member decl-only variable won't be + suppressed if we were asked to load undefined interfaces. + (build_or_get_var_decl_if_not_suppressed): Add a boolean parameter + to tell if the var is decl-only. + (potential_member_fn_should_be_dropped): A potential non-virtual + member function with no symbol is now dropped on the floor + regardless of it has a mangled name or not. + (build_var_decl): If the var has an undefined symbol, then set + that symbol. + (build_function_decl): If the function has an undefined symbol, + then set that symbol. + (build_ir_node_from_die): Add a var or function with undefined + symbol to the set of undefined vars or functions of the current + corpus. + * src/abg-fe-iface.cc + (fe_iface::add_fn_to_exported_or_undefined_decls): Renamed + fe_iface::maybe_add_fn_to_exported_decls into this. If the + function has an undefined symbol then add the function to the set + of undefined functions. + (fe_iface::add_var_to_exported_or_undefined_decls): Renamed + fe_iface::maybe_add_var_to_exported_decls into this. If the + variable has an undefined symbol then add the variable to the set + of undefined variables. + * src/abg-ir.cc (elf_symbol::is_variable): Undefined symbol with + type STT_NOTYPE are actually for undefined variables. + (maybe_adjust_canonical_type): It's here, after type + canonicalization that a member function is added to either the set + of defined & exported functions, or to the set of functions with + undefined symbols. + * src/abg-reader.cc (build_function_decl, build_class_decl) + (build_union_decl, handle_var_decl): Adjust. + * src/abg-symtab-reader.cc + (symtab::{lookup_undefined_function_symbol, + lookup_undefined_variable_symbol, function_symbol_is_undefined, + variable_symbol_is_undefined, + collect_undefined_fns_and_vars_linkage_names}): Define new member + functions. + (symtab::symtab): Initialize the new + cached_undefined_symbol_names_ data member. + * src/abg-symtab-reader.h + (symtab::{lookup_undefined_function_symbol, + lookup_undefined_variable_symbol, function_symbol_is_undefined, + variable_symbol_is_undefined, + collect_undefined_fns_and_vars_linkage_names}): Declare new member + functions. + (symtab::{undefined_variable_linkage_names_, + cached_undefined_symbol_names_}): Define new data members. + (symtab::load_): Consider undefined symbol of type STT_NOTYPE as + being undefined global variables. It's what I am seeing in ELF + binaries. + * src/abg-symtab-reader.h + (symtab::{lookup_undefined_function_symbol, + lookup_undefined_variable_symbol, function_symbol_is_undefined, + variable_symbol_is_undefined}): Declare new member functions. + (symtab::{undefined_function_linkage_names_, + undefined_variable_linkage_names_}): Define new member variables. + * src/abg-writer.cc (write_var_decl, write_function_decl): Emit a + reference to a symbol only when the symbol is defined. + * tools/abicompat.cc (report_function_changes) + (report_variable_changes) + (compare_expected_against_provided_functions) + (compare_expected_against_provided_variables): Define new static + functions. + (perform_compat_check_in_weak_mode): Use the new static functions + above. Compare interfaces expected by the application corpus + against interfaces provided by the library. Report the changes. + Do that in the reverse direction as well. + (read_corpus): Instruct the corpus reader to load the set of + undefined interfaces too. + * tests/data/test-abicompat/test6-var-changed-app: Remove file. + * tests/data/test-abicompat/test6-var-changed-app.cc: Likewise. + * tests/data/test-abicompat/libtest6-undefined-var.so: Add new + binary input file. + * tests/data/test-abicompat/test6-undefined-var.cc: Add sourcefile + for the binary input file above. + * tests/data/test-abicompat/test6-var-changed-report-2.txt: New + reference output file. + * tests/data/Makefile.am: Update the list of distributed files + accordingly. + * tests/data/test-abicompat/libtest5-fn-changed-libapp-v0.so: + Adjust. + * tests/data/test-abicompat/libtest5-fn-changed-libapp-v1.so: + Likewise. + * tests/data/test-abicompat/libtest6-var-changed-libapp-v0.so: + Likewise. + * tests/data/test-abicompat/libtest6-var-changed-libapp-v1.so: + Likewise. + * tests/data/test-abicompat/libtest7-fn-changed-libapp-v0.so: + Likewise. + * tests/data/test-abicompat/libtest7-fn-changed-libapp-v1.so: + Likewise. + * tests/data/test-abicompat/libtest8-fn-changed-libapp-v0.so: + Likewise. + * tests/data/test-abicompat/libtest8-fn-changed-libapp-v1.so: + Likewise. + * tests/data/test-abicompat/libtest9-fn-changed-v0.so: Likewise. + * tests/data/test-abicompat/libtest9-fn-changed-v1.so: Likewise. + * tests/data/test-abicompat/test5-fn-changed-app: Likewise. + * tests/data/test-abicompat/test6-var-changed-libapp-v0.cc: + Likewise. + * tests/data/test-abicompat/test6-var-changed-libapp-v1.cc: + Likewise. + * tests/data/test-abicompat/test6-var-changed-report-0.txt: + Likewise. + * tests/data/test-abicompat/test6-var-changed-report-1.txt: + Likewise. + * tests/data/test-abicompat/test7-fn-changed-app: Likewise. + * tests/data/test-abicompat/test7-fn-changed-report-1.txt: + Likewise. + * tests/data/test-abicompat/test7-fn-changed-report-2.txt: + Likewise. + * tests/data/test-abicompat/test8-fn-changed-app: Likewise. + * tests/data/test-abicompat/test8-fn-changed-libapp-v1.c: + Likewise. + * tests/data/test-abicompat/test9-fn-changed-app: Likewise. + * tests/data/test-abicompat/test9-fn-changed-app.cc: Likewise. + * 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/test1.abi: Likewise. + * tests/data/test-annotate/test14-pr18893.so.ab: Likewise.i + * 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/test8-qualified-this-pointer.so.abi: + Likewise. + * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-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. + * tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt: + Likewise. + * tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt: + Likewise. + * tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt: + Likewise. + * tests/data/test-fedabipkgdiff/vte291-0.39.1-1.fc22.x86_64--vte291-0.39.90-1.fc22.x86_64-report-0.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/PR26261/PR26261-exe.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/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/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/test-abicompat.cc (in_out_specs): Adjust. + * tests/test-read-ctf.cc (test_task_ctf::perform): Do not load + undefined interfaces, by default. + * tests/test-symtab.cc (Symtab::SimpleSymtabs) + (Symtab::SymtabWithWhitelist, Symtab::AliasedFunctionSymbols): + Adjust the expected undefined variable symbols counts. + +2024-03-13 Dodji Seketeli + + tools-utils.cc: Fix potential crash when testing for CTF debug info + * src/abg-tools-utils.cc (file_has_ctf_debug_info): Do not crash + on empty debug info paths. + +2024-03-08 Dodji Seketeli + + abidw: Add a -o short option for --out-file + * doc/manuals/abidw.rst: Document the -o option. + * tools/abidw.cc (display_usage): Update doc string for the + --out-file|-o option. + (parse_command): Support the -o short option. + +2024-03-08 Dodji Seketeli + + dwarf-reader: Support creating functions from DW_TAG_inlined_subroutine + * src/abg-dwarf-reader.cc (build_function_decl): Loosen the assert + to accept DW_TAG_inlined_subroutine DIEs. + +2024-03-05 Dodji Seketeli + + ir,dwarf-reader: Peel const-qualifier from const this pointers + * include/abg-fwd.h (is_const_qualified_type) + (peel_const_qualified_type): Declare ... + * src/abg-ir.cc (is_const_qualified_type) + (peel_const_qualified_type): ... new functions. + * src/abg-dwarf-reader.cc (build_function_type): Trim the const + qualifier off of the this pointer representation if present. + * tests/data/test-annotate/test1.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/test2.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/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/test29-vtable-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: + Likewise. + * tests/data/test-diff-dwarf/test5-report.txt: Likewise. + * tests/data/test-diff-dwarf/test8-report.txt: Likewise. + * tests/data/test-diff-filter/test0-report.txt: Likewise. + * tests/data/test-diff-filter/test01-report.txt: Likewise. + * tests/data/test-diff-filter/test10-report.txt: Likewise. + * tests/data/test-diff-filter/test13-report.txt: Likewise. + * tests/data/test-diff-filter/test2-report.txt: Likewise. + * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.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/test35-pr18754-no-added-syms-report-0.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/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/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/test22-pr19097-libstdc++.so.6.0.17.so.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/test8-qualified-this-pointer.so.abi: + Likewise. + * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: + Likewise. + +2024-03-04 Dodji Seketeli + + comparison: Better sort function difference report + * src/abg-comparison-priv.h (is_less_than): Declare new helper + function. + (function_decl_diff_comp::operator(const function_decl_diff&, + const function_decl_diff&)): + Use it here. + (virtual_member_function_diff_comp::operator(const function_decl_diff&, + const function_decl_diff&)): + Likewise. + * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. + * tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt: + Adjust. + * tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt: + Adjust. + * tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt: + Adjust. + * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: + Adjust. + +2024-03-04 Dodji Seketeli + + ir,dwarf-reader: Better handle inline-ness setting or detection + * include/abg-ir.h (function_decl::is_declared_inline): Add a + setter overload. + * src/abg-dwarf-reader.cc (die_is_declared_inline): Take into the + account values DW_INL_declared_inlined and + DW_INL_declared_not_inlined of DW_AT_inline attribute. Not just + DW_INL_declared_inlined. + (finish_member_function_reading): Set the inline-ness declaration + here. + (build_ir_node_from_die): Handle DW_TAG_inlined_subroutine just as + DW_TAG_subprogram. + * src/abg-ir.cc (function_decl::is_declared_inline): Add a setter + overload. + * tests/data/test-annotate/test1.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-diff-dwarf/test42-PR21296-clanggcc-report0.txt: + Likewise. + * tests/data/test-diff-filter/test41-report-0.txt: 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/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/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + +2024-03-02 Dodji Seketeli + + tests/data/test-diff-pkg: Update dpkg related reference output + * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: + Adjust. + +2024-02-28 Dodji Seketeli + + dwarf-reader: Fix DIE origin handling & scope getting + * src/abg-dwarf-reader.cc (die_origin_die): New static function. + (get_scope_die, get_scope_for_die): Use the new die_origin_die + above. + (build_ir_node_from_die): Don't handle DW_AT_abstract_origin and + DW_AT_specification here. In general, do not handle getting the + scope. Rather, just rely on get_scope_for_die. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test1.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/test6.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/test29-vtable-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: + Likewise. + * tests/data/test-diff-dwarf/test5-report.txt: Likewise. + * tests/data/test-diff-dwarf/test8-report.txt: Likewise. + * tests/data/test-diff-filter/test0-report.txt: Likewise. + * tests/data/test-diff-filter/test01-report.txt: Likewise. + * tests/data/test-diff-filter/test10-report.txt: Likewise. + * tests/data/test-diff-filter/test13-report.txt: Likewise. + * tests/data/test-diff-filter/test2-report.txt: Likewise. + * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.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/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/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/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/test22-pr19097-libstdc++.so.6.0.17.so.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/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. + +2024-02-27 Dodji Seketeli + + dwarf-reader, ir: Add member fns to exported corpus fns after c14n + * src/abg-dwarf-reader.cc + (reader::fixup_functions_with_no_symbols): Do not export the + virtual member function here. + (build_ir_node_from_die): For DW_TAG_subprogram DIEs, likewise. + * src/abg-ir.cc (maybe_adjust_canonical_type): Walk the member + functions of the canonical type and export them in the ABI corpus + if they have a defined and exported elf symbol. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. + +2024-02-27 Dodji Seketeli + + ir: Use linkage name to sort virtual function members + * src/abg-ir.cc (virtual_member_function_less_than::operator()): + Take the linkage name into account during sorting before taking + into account the presence of elf symbols. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. + +2024-02-21 Dodji Seketeli + + abicompat: Port this to the multi-front-end architecture + * tools/abicompat.cc (read_corpus): Use + abigail::tools_utils::create_best_elf_based_reader to create the + right reader depending on the debug information at hand. + +2024-02-20 Dodji Seketeli + + ir,corpus,comparison: Const-iffy the access to corpus interfaces + * include/abg-comparison.h (typedef string_function_ptr_map): Make + this typedef use a const function_decl*, not just a + function_decl*. + (typedef string_var_ptr_map): Make this typedef use a const + var_decl*, not just a var_decl*. + * include/abg-corpus.h (typedef corpus::functions): Make this + typedef be a vector, not just a + vector. + (corpus::exported_decls_builder::fn_id_maps_to_several_fns): + Adjust declaration to const function_decl*. + * include/abg-fwd.h (typedef istring_var_decl_ptr_map_type) + (typedef istring_function_decl_ptr_map_type): Move these typedefs to + abg-ir.h. + (get_function_id_or_pretty_representation): Use const function_decl*. + * include/abg-ir.h (typedef istring_var_decl_ptr_map_type) + (typedef istring_function_decl_ptr_map_type): Move these here from + abg-fwd.h. Also make these use const var_decl* and const. + function_decl. + * src/abg-comparison-priv.h (sort_string_function_ptr_map) + (sort_string_var_ptr_map): Use vector and + vector rather than their non-const variants. + * src/abg-comparison.cc (sort_string_function_ptr_map) + (sort_string_var_ptr_map): Likewise. + (corpus_diff::priv::{ensure_lookup_tables_populated, + apply_supprs_to_added_removed_fns_vars_unreachable_types}): + Adjust. + * src/abg-corpus-priv.h (corpus::priv::{fns,vars}): Make these + data members use vector and vector types. + * src/abg-corpus.cc + (corpus::exported_decls_builder::fn_id_maps_to_several_fns) + (corpus::maybe_drop_some_exported_decls): Adjust. + (corpus_group::priv::{fns,vars}): Make these data members use + vector and vector types. + * src/abg-default-reporter.cc (default_reporter::report): In the + overload for const corpus_diff&, adjust. + * src/abg-ir.cc (get_function_id_or_pretty_representation): + Adjust. + * src/abg-leaf-reporter.cc (leaf_reporter::report): In the + overload for const corpus_diff&, adjust. + * tools/abicompat.cc (perform_compat_check_in_normal_mode): + Adjust. + +2024-02-28 Dodji Seketeli + + ir: Fix indentation + * src/abg-ir.cc (function_decl::clone): Fix indentation. + +2024-02-28 Dodji Seketeli + + test-abicomat.cc: Don't show details about PASSing tests. + * tests/test-abicompat.cc (main): Don,'t emit details for PASSed + tests. + +2024-02-28 Dodji Seketeli + + test-alt-dwarf-file.cc: Fix test result accounting + * tests/test-alt-dwarf-file.cc (main): Re-set the is_ok variable + to true in the loop. + +2024-02-16 Dodji Seketeli + + ir,{btf,ctf,dwarf}-reader: Rename {subrange_type,array_type_def}::is_infinite. + * include/abg-ir.h + ({array_type_def,subrange_type}::is_non_finite): Rename + {array_type_def,subrange_type}::is_infinite into this. + * src/abg-btf-reader.cc (reader::build_array_type): Add a missing + call to subrange_type::is_non_finite. + * src/abg-comp-filter.cc + (is_var_1_dim_unknown_size_array_change):Rename + subrange_type::is_infinite into subrange_type::is_non_finite. + * src/abg-ctf-reader.cc (build_array_ctf_range): Likewise. + * src/abg-dwarf-reader.cc (build_subrange_type): Likewise. + * src/abg-ir.cc (clone_array, has_flexible_array_data_member) + (array_type_def::subrange_type::as_string): Likewise. + ({array_type_def,subrange_type}::is_non_finite): Rename + {array_type_def,subrange_type}::is_infinite into this. + * src/abg-reader.cc (build_subrange_type): Rename + subrange_type::is_infinite into subrange_type::is_non_finite. + * src/abg-reporter-priv.cc (report_size_and_alignment_changes): + Likewise. + * src/abg-writer.cc (write_array_size_and_alignment): Likewise. + +2024-02-15 Dodji Seketeli + + btr-reader: Fix wording typo + * src/abg-btf-reader.cc (reader::build_array_type): It's + lower_bound, not lower_boud. Duh. + +2024-02-15 Dodji Seketeli + + PR25409-librte_bus_dpaa.so.20.0.abi: Update to 2.3 + * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Bump ABIXML version to 2.3. + +2024-02-15 Dodji Seketeli + + dwarf-reader: Bug 31377 - Fix the IR for zero length arrays + * src/abg-dwarf-reader.cc (build_subrange_type): In the absence of + DW_AT_upper_bound and DW_AT_lower_bound, make DW_AT_count being + zero the same as if no DW_AT_count is present. + * src/abg-reader.cc (build_subrange_type): Add a comment about how + things were in the past (before this patch) and document the fact + that we want to stay compatible with ABIXML from before this + patch. + * tests/data/test-abidiff-exit/PR31377/flex/include/rte_pipeline.h: + New header file input for this test. + * tests/data/test-abidiff-exit/PR31377/flex/lib64/librte_pipeline.so.24.1: + New binary input for this test. + * tests/data/test-abidiff-exit/PR31377/reference/include/rte_pipeline.h: + New header file input for this test. + * tests/data/test-abidiff-exit/PR31377/reference/lib64/librte_pipeline.so.24.0: + New binary input for this test. + * tests/data/test-abidiff-exit/PR31377/test-PR31377-report-1.txt: + New reference test output. + * tests/data/Makefile.am: Add the + * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Adjust. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/test-abidiff-exit.cc + +2024-01-12 Dodji Seketeli + + dwarf-reader,corpus: Use interned string to lookup corpus interfaces by ID. + * include/abg-corpus.h (corpus::lookup_functions): Take an + interned_string instead of an std::string. Add an overload for + const char* string too, for debugging purposes. + * src/abg-corpus-priv.h (istr_fn_ptr_set_map_type) + (istr_var_ptr_map_type): Define new typedefs. + (corpus::exported_decls_builder::priv::{id_fns_map_, + id_var_map_}): Use the new istr_fn_ptr_set_map_type and + istr_var_ptr_map_type types for these data members. + (corpus::exported_decls_builder::priv::{id_fns_map, id_var_map, + add_fn_to_id_fns_map, var_id_is_in_id_var_map, add_var_to_map, + add_var_to_exported}): Adjust. + (corpus::priv::lookup_functions): Declare new member function. + * src/abg-corpus.cc + (corpus::exported_decls_builder::maybe_add_var_to_exported_vars): Adjust. + (corpus::priv::lookup_functions): Define new member function. The + code here comes from the code that was in + corpus::lookup_functions. This is a factorization of + corpus::lookup_functions. + (corpus::lookup_functions): Take an interned_string instead of the + previous. Factorize the code that was here into the new + corpus::priv::lookup_functions. + * src/abg-dwarf-reader.cc + (reader::symbol_already_belongs_to_a_function): Adjust the call to + corpus::lookup_functions to use an interned_string. + +2024-02-01 Dodji Seketeli + + ir: Cache internal name for several types + * src/abg-ir.cc ({qualified_type_def, pointer_type_def, + reference_type_def}::get_qualified_name): Cache the internal + qualified type name for non-canonicalized types. + (function_type::get_cached_name): Cache the internal function type + name. + +2024-02-08 Dodji Seketeli + + ir: Introduce a missing IR kind for subrange types + * include/abg-ir.h (type_or_decl_kind::SUBRANGE_TYPE): Add a new + enumerator to enum type_or_decl_kind::type_or_decl_kind. + * src/abg-ir.cc (array_type_def::subrange_type::subrange_type): + Use the new type_or_decl_kind::SUBRANGE_TYPE to flag the IR node + representing array_type_def::subrange_type. + +2024-02-08 Dodji Seketeli + + writer: Don't forget data members when emitting referenced types + * src/abg-writer.cc (write_decl_in_scope): If the scope of the + decl to write is a type that was not yet emitted, then emit it in + full. Otherwise, just do things as we were doing previously. + +2024-01-06 Dodji Seketeli + + writer: Avoid emitting a canonical type twice + * src/abg-writer.cc (write_canonical_types_of_scope): Don't emit a + canonical type if it's already been emitted. + * tests/data/test-annotate/test13-pr18894.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-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.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/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. + +2024-01-12 Dodji Seketeli + + dwarf-reader: Fix detection of C language DIEs + * src/abg-dwarf-reader.cc (build_ir_node_from_die): Use + reader::die_is_in_c rather than looking at the language of the + current translation unit. + +2024-01-12 Dodji Seketeli + + dwarf-reader: Avoid duplicating union members + * src/abg-dwarf-reader.cc (add_or_update_union_type): Do not add + an union member that already exists in the union. + +2023-12-22 Dodji Seketeli + + ir: Avoid duplicates when reading member functions + * src/abg-ir.cc (fixup_virtual_member_function): Check if a + virtual member function with the same linkage name exists already + before adding it in. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Adjust. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Adjust. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Adjust. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.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. + +2024-01-06 Dodji Seketeli + + ir: Fix wording of several comments + * src/abg-ir.cc: (get_decl_name_for_comparison) + (class_or_union::add_data_member) Fix comment wording. + +2023-12-22 Dodji Seketeli + + abidw: Fix indentation + * tools/abidw.cc (load_corpus_and_write_abixml): Fix indentation. + +2024-01-26 Dodji Seketeli + + Remove python3-mock dependency and use unittest.mock instead + * configure.ac: Do not require python-mock anymore. + * tests/mockfedabipkgdiff.in: Use unittest.mock, not mock from + python-mock. + +2024-01-25 Dodji Seketeli + + Bug 31279 - Acknowledge that opaque types are always decl-only + * src/abg-dwarf-reader.cc + (reader::maybe_schedule_declaration_only_{class,enum}_for_resolution): + Do not schedule anonymous decl-only types for resolution to their + definition. + (build_typedef_type): When an anonymous decl-only type has just + been named by a typedef, schedule it for resolution to its + definition. + (add_or_update_class_type): Do not assert that /anonymous/ + decl-only types are scheduled for resolution to their definition. + +2024-01-15 Dodji Seketeli + + Bug 31236 - Fix removing a member declaration from its scope + * src/abg-ir.cc (scope_decl::remove_member_decl): Reset the + translation unit and the scope of the removed decl. + (remove_decl_from_scope): Do not reset the scope of the removed + decl here as it's now done above. + +2023-12-29 Mark Wielaard + + Recognize EM_RISCV in e_machine_to_string + * configure.ac: Defining HAVE_EM_RISCV_MACRO if EM_RISCV + is defined in elf.h. + * src/abg-dwarf-reader.cc (e_machine_to_string): Handle + EM_RISCV if HAVE_EM_RISCV_MACRO is defined. + +2023-12-29 Mark Wielaard + + Fix ABG_ASSERT in build_ir_node_from_die for DW_TAG_member + * src/abg-dwarf-reader.cc (build_ir_node_from_die): ABG_ASSERT + !rdr.die_is_in_c(), not rdr.cur_transl_unit(). + +2024-01-04 Giuliano Procida + + website: doxygen: set PROJECT_NAME to libabigail + * doc/website/libabigail-website.doxy: Set PROJECT_NAME to + libabigail. + +2023-11-29 Dodji Seketeli + + Bump LIBABIGAIL_SO_CURRENT version to 4 + * configure.ac: Set LIBABIGAIL_SO_CURRENT to 4. + +2023-12-01 Dodji Seketeli + + Bump abixml version to 2.3 + * configure.ac: Bump ABIXML_VERSION_MINOR to 3. + * 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/test-pointer-to-member-1.o.annotated.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 + * tests/data/test-read-btf/test0.o.abi: Likewise + * tests/data/test-read-btf/test1.o.abi: Likewise + * tests/data/test-read-ctf/PR27700/test-PR27700.abi: Likewise + * 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-alias.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-mdimension.abi: Likewise + * tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise + * tests/data/test-read-ctf/test-array-size.abi: Likewise + * tests/data/test-read-ctf/test-bitfield-enum.abi: Likewise + * tests/data/test-read-ctf/test-bitfield.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-const-array.abi: Likewise + * tests/data/test-read-ctf/test-dynamic-array.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-enum.o.abi: Likewise + * tests/data/test-read-ctf/test-fallback.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-linux-module.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/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 + * 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/PR28584/PR28584-smv.clang.o.abi: + Likewise + * tests/data/test-read-dwarf/PR29443-missing-xx.o.abi: Likewise + * tests/data/test-read-dwarf/PR29692-kdelibs3-libkjava.so.1.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-PR26568-1.o.abi: Likewise + * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise + * tests/data/test-read-dwarf/test-fallback.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-pointer-to-member-1.o.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/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 + +2023-11-30 Dodji Seketeli + + Bug 30260 - Support pointer-to-member type + * include/abg-comparison.h (class ptr_to_mbr_diff): Declare new + class. + (ptr_to_mbr_diff_sptr): Declare new typedef. + (compute_diff): Declare new overload for ptr_to_mbr_diff. + (ptr_to_mbr_type_sptr): Declare new typedef. + * src/abg-comparison-priv.h (struct ptr_to_mbr_diff::priv): Define + * src/abg-comparison.cc (compute_diff_for_types): Support new + ptr_to_mbr_type type. + (ptr_to_mbr_diff::{ptr_to_mbr_diff, first_ptr_to_mbr_type, + second_ptr_to_mbr_type, member_type_diff, containing_type_diff, + has_changes, has_local_changes, get_pretty_representation, report, + chain_into_hierarchy, ~ptr_to_mbr_diff}): Define member functions + of class ptr_to_mbr_diff. + (compute_diff): Define overload for ptr_to_mbr_type_sptr. + * include/abg-fwd.h (ptr_to_mbr_type_sptr): Declare new typedef. + (is_ptr_to_mbr_type, is_pointer_to_ptr_to_mbr_type) + (is_typedef_of_maybe_qualified_class_or_union_type): Declare new + functions. + * include/abg-ir.h (type_maps::ptr_to_mbr_types): Declare new + accessor. + (POINTER_TO_MEMBER_TYPE): Add new enumerator to enum + type_or_decl_base::type_or_decl_kind. + (class ptr_to_mbr_type): Declare new class. + (equals): Declare new overload for ptr_to_mbr_type. + (ir_node_visitor::visit_{begin,end}): Declare new member + functions. + * src/abg-ir.cc (ptr_to_mbr_declaration_name) + (ptr_to_mbr_declaration_name, add_outer_ptr_to_mbr_type_expr) + (add_outer_pointer_to_ptr_to_mbr_type_expr): Define new static + functions. + (type_maps::priv::ptr_to_mbr_types_): Define new + data member. + (type_maps::ptr_to_mbr_types): Define new accessor. + (is_ptr_to_mbr_type, is_pointer_to_ptr_to_mbr_type) + (is_typedef_of_maybe_qualified_class_or_union_type): Define new + functions. + (maybe_update_types_lookup_map, equals): Define new overloads for + ptr_to_mbr_type_sptr. + (is_npaf_type): Use is_ptr_to_mbr_type. + (maybe_update_types_lookup_map): In the overload for + decl_base_sptr, call the new overload for ptr_to_mbr_type_sptr + above. + (struct ptr_to_mbr_type::priv): Define new struct. + (ptr_to_mbr_type::{ptr_to_mbr_type, get_member_type, + get_containing_type, operator==, get_qualified_name, traverse, + ~ptr_to_mbr_type}): Define member functions of ptr_to_mbr_type. + (types_have_similar_structure): Support the new ptr_to_mbr_type + type. + (ir_node_visitor::visit_{begin,end}): Add new member functions. + (var_decl::get_pretty_representation): Support pretty-printing + pointer-to-member types. + (pointer_declaration_name, array_declaration_name): Likewise. + * include/abg-reporter.h ({reporter_base, default_reporter, + leaf_reporter}::report): Add an overload for ptr_to_mbr_diff. + (default_reporter::report_local_ptr_to_mbr_type_changes): Declare + a member function. + private data class of ptr_to_mbr_diff. + * src/abg-default-reporter.cc + (default_reporter::report_local_ptr_to_mbr_type_changes): Define + member functions. + (default_reporter::report): Define an overload for + ptr_to_mbr_diff. + * src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise. + * src/abg-dwarf-reader.cc (build_ptr_to_mbr_type): Define new + function. + (build_ir_node_from_die): Use the new build_ptr_to_mbr_type + function. + * src/abg-reader.cc (build_ptr_to_mbr_type): Define new function. + (build_type): Use the new build_ptr_to_mbr_type above. + * src/abg-writer.cc (write_ptr_to_mbr_type): Define new function. + (write_type, write_decl, write_member_type): Use the new + write_ptr_to_mbr_type above. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-output-1.txt: + Add new test material. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-v0.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-v0.o: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-v1.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-v1.o: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-output-1.txt: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-v0.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-v0.o: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-v1.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-v1.o: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-output-1.txt: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-v0.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-v0.o: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-v1.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-v1.o: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-output-1.txt: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-v0.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-v0.o: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-v1.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-v1.o: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-output-1.txt: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-v0.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-v0.o: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-v1.cc: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-v1.o: + Likewise. + * tests/data/test-read-dwarf/test-pointer-to-member-1.cc: + Likewise. + * tests/data/test-read-dwarf/test-pointer-to-member-1.o: Likewise. + * tests/data/test-read-dwarf/test-pointer-to-member-1.o.abi: + Likewise. + * tests/data/Makefile.am: Add the new test material above to + source distribution. + * tests/test-abidiff-exit.cc (in_out_specs): Add the test material + above to this test harness. + * tests/test-annotate.cc (in_out_specs): Likewise. + * tests/test-read-dwarf.cc: Likewise. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Adjust. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + +2023-11-30 Dodji Seketeli + + Improve type naming + * include/abg-fwd.h (is_npaf_type, is_pointer_to_function_type) + (is_pointer_to_array_type, is_pointer_to_npaf_type): Declare new + functions. + (is_pointer_type, is_reference_type, is_array_type): Take a + boolean parameter to look through qualifiers. + * include/abg-ir.h (is_pointer_type): Do not make this function a + friend of the type_or_decl_base class anymore. + * src/abg-ir.cc (pointer_declaration_name, array_declaration_name) + (stream_pretty_representation_of_fn_parms) + (add_outer_pointer_to_fn_type_expr) + (add_outer_pointer_to_array_type_expr): Define new static + functions. + (is_npaf_type, is_pointer_to_function_type) + (is_pointer_to_array_type, is_pointer_to_npaf_type): Define new + functions. + (get_type_representation): Remove the overload for array_type_def. + (get_function_type_name, get_method_type_name) + (function_decl::get_pretty_representation_of_declarator): Use the + new stream_pretty_representation_of_fn_parms. This actually + factorizes parameters pretty-printing by reusing + stream_pretty_representation_of_fn_parms. + (is_pointer_type, is_reference_type, is_array_type): Take a + boolean parameter to look through qualifiers. + (is_void_pointer_type): Use const where it's due. + (pointer_type_def::get_qualified_name): Use the new + pointer_declaration_name in lieu of the old and removed + get_name_of_pointer_to_type. + (array_type_def::{get_pretty_representation, get_qualified_name}): + Use the new array_declaration_name instead of the old and removed + get_type_representation. + (var_decl::get_pretty_representation): Use the new + array_declaration_name and pointer_declaration_name. + (function_decl::get_pretty_representation): Use the new + add_outer_pointer_to_array_type_expr, and + add_outer_pointer_to_array_type_expr function to support the + proper syntax for function returning pointers and arrays. + (function_decl::parameter::get_pretty_representation): Fix the + pretty-printing of each function parameter. + * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust. + * tests/data/test-abicompat/test0-fn-changed-report-2.txt: + Likewise. + * tests/data/test-abicompat/test1-fn-removed-report-0.txt: + Likewise. + * tests/data/test-abicompat/test3-fn-removed-report-0.txt: + Likewise. + * tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt: Likewise. + * tests/data/test-abidiff-exit/PR30048-test-report-0.txt: Likewise. + * tests/data/test-abidiff-exit/PR30329/PR30329-report-1.txt: Likewise. + * tests/data/test-abidiff-exit/PR30503/libsdl/libsdl-1.2.60-1.2.64-report.txt: Likewise. + * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt: Likewise. + * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt: Likewise. + * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/test-fun-param-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt: + Likewise. + * tests/data/test-abidiff-exit/test-leaf-fun-type-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-leaf-more-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-leaf-stats-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-net-change-report0.txt: + Likewise. + * tests/data/test-abidiff-exit/test-net-change-report2.txt: + Likewise. + * tests/data/test-abidiff-exit/test2-filtered-removed-fns-report0.txt: + Likewise. + * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. + * tests/data/test-abidiff/test-crc-report-0-1.txt: Likewise. + * tests/data/test-abidiff/test-crc-report-1-0.txt: Likewise. + * tests/data/test-abidiff/test-crc-report-1-2.txt: 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/test21-pr19092.so.abi: Likewise. + * tests/data/test-annotate/test7.so.abi: Likewise. + * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: + Likewise. + * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test19-soname-report-0.txt: Likewise. + * tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test5-report.txt: Likewise. + * tests/data/test-diff-filter/test-PR26739-2-report-0.txt: + Likewise. + * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: + Likewise. + * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.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/test6-report.txt: Likewise. + * tests/data/test-diff-filter/test7-report.txt: 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-diff-pkg/PR24690/PR24690-report-0.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/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.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/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.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-pkg-ctf/gmp-6.x.x86_64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg-ctf/test-rpm-report-0.txt: Likewise. + * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: + Likewise. + * tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: + Likewise. + * tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: + Likewise. + * tests/data/test-diff-suppr/test15-suppr-added-fn-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: + Likewise. + * tests/data/test-diff-suppr/test15-suppr-added-fn-report-5.txt: + Likewise. + * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: + Likewise. + * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-5.txt: + Likewise. + * tests/data/test-diff-suppr/test27-add-aliased-function-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test27-add-aliased-function-report-3.txt: + Likewise. + * tests/data/test-diff-suppr/test27-add-aliased-function-report-4.txt: + Likewise. + * tests/data/test-diff-suppr/test28-add-aliased-function-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test28-add-aliased-function-report-1.txt: + Likewise. + * tests/data/test-diff-suppr/test28-add-aliased-function-report-2.txt: + Likewise. + * tests/data/test-diff-suppr/test28-add-aliased-function-report-4.txt: + Likewise. + * tests/data/test-diff-suppr/test28-add-aliased-function-report-5.txt: + Likewise. + * tests/data/test-diff-suppr/test30-report-0.txt: Likewise. + * tests/data/test-diff-suppr/test32-report-0.txt: Likewise. + * tests/data/test-diff-suppr/test32-report-1.txt: Likewise. + * tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-1.txt: + Likewise. + * tests/data/test-fedabipkgdiff/vte291-0.39.1-1.fc22.x86_64--vte291-0.39.90-1.fc22.x86_64-report-0.txt: + Likewise. + * tests/data/test-read-ctf/test9.o.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/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/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/test19-pr19023-libtcmalloc_and_profiler.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/test7.so.abi: Likewise. + * tests/data/test-read-dwarf/test7.so.hash.abi: Likewise. + +2023-11-30 Dodji Seketeli + + abilint: Alphabetically sort programs options + * doc/manuals/abilint.rst: Alphabetically sort options in the + manual. + * tools/abilint.cc (display_usage): Likewise for the help strings. + +2023-10-31 Dodji Seketeli + + abilint: Support --annotate + * tools/abilint.cc (options::annotate): Define new data member. + (options::options): Initialize. + (display_usage): Add help string. + (parse_command): Support the --annotate command options. + (main): Set the annotate option on the context. + +2023-11-03 Dodji Seketeli + + suppression: Add "has_strict_flexible_array_data_member_conversion" property + * include/abg-comp-filter.h (has_strict_fam_conversion): Declare + new functions. + * include/abg-fwd.h + (ir::has_fake_flexible_array_data_member): Declare new accessor + functions. + * include/abg-suppression.h + (type_suppression::{,set_}has_strict_fam_conversion): Declare new + accessor functions. + * src/abg-comp-filter.cc (has_strict_fam_conversion): Define new + functions. + * src/abg-ir.cc + (ir::has_fake_flexible_array_data_member): Define new accessor + functions. + * src/abg-suppression-priv.h + (type_suppression::priv::has_strict_fam_conv_): Define new + data member. + * src/abg-suppression.cc + (type_suppression::{,set_}has_strict_fam_conversion): Define new + accessor functions. + (type_suppression::suppresses_diff): For a type suppression to + match a fake flex array conversion, either the size of the type + hasn't change or has_size_change must be true and then the type + must change from a fake flex array to a real flex array. + (read_type_suppression): Parse the new + 'has_strict_flexible_array_data_member_conversion' property to + set the type_suppression::set_has_strict_fam_conversion property. + * doc/manuals/libabigail-concepts.rst: Add an entry for the new + 'has_strict_flexible_array_data_member_conversion' property. + * tests/data/test-diff-suppr/test-has-strict-flexible-array-data-member-conversion-{1,2}.suppr: + Add new test suppression files. + * tests/data/test-diff-suppr/test-has-strict-flexible-array-data-member-conversion-report-{1,2}.txt: + Add new test reference output files. + * tests/data/test-diff-suppr/test-has-strict-flexible-array-data-member-conversion-v{0,1}.c: + Add source code for new binary test input files. + * tests/data/test-diff-suppr/test-has-strict-flexible-array-data-member-conversion-v{0,1}.o: + Add new binary test input files. + * tests/data/Makefile.am: Add the new test files to the source + distribution. + * tests/test-diff-suppr.cc (in_out_specs): Add the new test input + files to this test harness. + +2023-11-08 Dodji Seketeli + + Bug 31045 - Don't try setting translation unit for unique types + * src/abg-ir.cc (maybe_set_translation_unit): Define new static + function. + (scope_decl::{add,insert}_member_decl): Use it. + * tests/data/test-abidiff-exit/PR31045/zfs-abigail-2.4/libnvpair.{abi,so,suppr}: + New test input files. + * tests/data/test-abidiff-exit/PR31045/zfs-abigail-2.4/test-PR31045-report-1.txt: + New reference test output. + * tests/data/Makefile.am: Add the new test material above to + source distribution. + * tests/test-abidiff-exit.cc (in_out_specs): Add the input above + to this test harness. + Tested-by: Paolo Pisati + +2023-10-21 Dodji Seketeli + + configure: Bump development version to 2.5 + * configure.ac: Bump version to 2.5 + +2023-10-20 Dodji Seketeli + + ChangeLog: Update for 2.4 release + * ChangeLog: Update automatically with make update-changelog. + 2023-10-20 Dodji Seketeli Update NEWS file for 2.4 release * NEWS: Update for 2.4 release. +2023-10-20 Dodji Seketeli + + doc/website/mainpage.txt: Update for 2.4 release + * doc/website/mainpage.txt: Update download link for 2.4 release. + Use the .xz tarball. + +2023-10-20 Dodji Seketeli + + gen-changelog.py: Remove long standing debugging output + * gen-changelog.py (gen-changelog.py): Remove debugging output. + 2023-10-20 Dodji Seketeli gen-changelog.py: Fix a long standing typo