From a506c1d1863d565e3f49e563d42bf88f442ae07d Mon Sep 17 00:00:00 2001 From: lizhenlin Date: Tue, 11 Nov 2025 10:34:43 +0800 Subject: [PATCH] update version to 2.8 Signed-off-by: lizhenlin --- BUILD.gn | 3 + ChangeLog | 6797 ++++++++++++++++++++ Makefile.am | 13 +- NEWS | 312 + README.OpenSource | 2 +- SECURITY | 34 + config.h | 120 +- config.h.in | 114 +- configure.ac | 605 +- default.abignore | 32 +- doc/api/libabigail.doxy | 2675 +++++--- doc/manuals/Makefile.am | 6 +- doc/manuals/abi-artifacts.rst | 31 + doc/manuals/abi-changes.rst | 101 + doc/manuals/abicompat.rst | 5 + doc/manuals/abidb.rst | 174 + doc/manuals/abidiff.rst | 898 +-- doc/manuals/abidw.rst | 570 +- doc/manuals/abilint.rst | 59 +- doc/manuals/abipkgdiff.rst | 552 +- doc/manuals/conf.py | 3 +- doc/manuals/fedabipkgdiff.rst | 114 +- doc/manuals/index.rst | 5 +- doc/manuals/libabigail-concepts.rst | 1857 +----- doc/manuals/libabigail-tools.rst | 1 + doc/manuals/suppression-specifications.rst | 1871 ++++++ doc/website/libabigail-website.doxy | 2 +- include/abg-btf-reader.h | 47 +- include/abg-comp-filter.h | 76 +- include/abg-comparison.h | 202 +- include/abg-config.h | 2 +- include/abg-corpus.h | 51 +- include/abg-ctf-reader.h | 8 +- include/abg-cxx-compat.h | 2 +- include/abg-diff-utils.h | 2 +- include/abg-dwarf-reader.h | 8 +- include/abg-elf-based-reader.h | 8 +- include/abg-elf-reader.h | 14 +- include/abg-fe-iface.h | 10 +- include/abg-fwd.h | 160 +- include/abg-hash.h | 277 +- include/abg-ini.h | 2 +- include/abg-interned-str.h | 2 +- include/abg-ir.h | 630 +- include/abg-libxml-utils.h | 3 +- include/abg-reader.h | 2 +- include/abg-regex.h | 2 +- include/abg-reporter.h | 20 +- include/abg-sptr-utils.h | 2 +- include/abg-suppression.h | 14 +- include/abg-tools-utils.h | 86 +- include/abg-traverse.h | 2 +- include/abg-version.h | 4 +- include/abg-viz-common.h | 2 +- include/abg-viz-dot.h | 2 +- include/abg-viz-svg.h | 2 +- include/abg-workers.h | 2 +- include/abg-writer.h | 6 +- include/xxhash.h | 6773 +++++++++++++++++++ src/BUILD.gn | 1 + src/Makefile.am | 4 +- src/abg-btf-reader.cc | 408 +- src/abg-comp-filter.cc | 1409 +++- src/abg-comparison-priv.h | 108 +- src/abg-comparison.cc | 1114 +++- src/abg-config.cc | 2 +- src/abg-corpus-priv.h | 231 +- src/abg-corpus.cc | 279 +- src/abg-ctf-reader.cc | 314 +- src/abg-default-reporter.cc | 361 +- src/abg-diff-utils.cc | 2 +- src/abg-dwarf-reader.cc | 3534 +++++++--- src/abg-elf-based-reader.cc | 10 +- src/abg-elf-helpers.cc | 7 +- src/abg-elf-helpers.h | 3 +- src/abg-elf-reader.cc | 359 +- src/abg-fe-iface.cc | 46 +- src/abg-hash.cc | 1760 ++--- src/abg-ini.cc | 2 +- src/abg-internal.h | 2 +- src/abg-ir-priv.h | 1643 +++-- src/abg-ir.cc | 5321 ++++++++++----- src/abg-leaf-reporter.cc | 241 +- src/abg-libxml-utils.cc | 135 +- src/abg-reader.cc | 1080 +++- src/abg-regex.cc | 2 +- src/abg-reporter-priv.cc | 165 +- src/abg-reporter-priv.h | 15 +- src/abg-suppression-priv.h | 8 +- src/abg-suppression.cc | 88 +- src/abg-symtab-reader.cc | 250 +- src/abg-symtab-reader.h | 37 +- src/abg-tools-utils.cc | 516 +- src/abg-traverse.cc | 2 +- src/abg-viz-common.cc | 2 +- src/abg-viz-dot.cc | 2 +- src/abg-viz-svg.cc | 2 +- src/abg-workers.cc | 2 +- src/abg-writer.cc | 907 +-- src/xxhash.c | 43 + tools/BUILD.gn | 10 +- tools/Makefile.am | 15 +- tools/abicompat.cc | 659 +- tools/abidb | 438 ++ tools/abidiff.cc | 75 +- tools/abidw.cc | 377 +- tools/abilint.cc | 85 +- tools/abipkgdiff.cc | 1241 ++-- tools/abisym.cc | 2 +- tools/binilint.cc | 2 +- tools/fedabipkgdiff | 93 +- tools/kmidiff.cc | 2 +- 112 files changed, 37834 insertions(+), 10961 deletions(-) create mode 100644 SECURITY create mode 100644 doc/manuals/abi-artifacts.rst create mode 100644 doc/manuals/abi-changes.rst create mode 100644 doc/manuals/abidb.rst create mode 100644 doc/manuals/suppression-specifications.rst create mode 100644 include/xxhash.h create mode 100644 src/xxhash.c create mode 100644 tools/abidb diff --git a/BUILD.gn b/BUILD.gn index 812e6fd9..74291b08 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -20,6 +20,9 @@ config("libabigail_defaults") { "-Wno-unused-variable", "-Wno-unused-value", "-Wno-overloaded-virtual", + "-Wno-defaulted-function-deleted", + "-Wno-parentheses", + "-Wno-infinite-recursion", ] } diff --git a/ChangeLog b/ChangeLog index 8272e1af..829543d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,6805 @@ +2025-07-04 Dodji Seketeli + + NEWS: Update for 2.8 release + * NEWS: Update for 2.8 release. + +2025-07-04 Dodji Seketeli + + configure: Bump libabigail_so_current to 7 + * configure.ac: bump libabigail_so_current to 7. + +2025-07-02 Dodji Seketeli + + Bug 26021 - Upgrade the C++ standard to C++14 + * configure.ac: Upgrade the code base to c++14. This is the + default in GCC 8.5, used in EL8, the oldest platform that we + currently support. + +2025-06-30 Dodji Seketeli + + tests/data/test-read-dwarf/PR33090: Add missing test material + * tests/data/test-read-dwarf/PR33090/bug{1,2}.c: Really add this. + * tests/data/test-read-dwarf/PR33090/impl{1,2}.so: Likewise. + * tests/data/test-read-dwarf/PR33090/impl{1,2}.so.abi: Likewise. + * tests/data/test-read-dwarf/PR33090/interface.h: Likewise. + * tests/data/test-read-dwarf/PR33090/private.suppr: Likewise. + +2025-06-30 Dodji Seketeli + + Bug 33090 - Implement abidw --force-early-suppression + * doc/manuals/abidw.rst: Add documentation for the new + --force-early-suppression. Adjust the docs for the + --drop-private-types, --headers-dir, --headers-file and + --suppressions. + * doc/manuals/suppression-specifications.rst: Adjust + documentation for early suppression mode. + * tools/abidw.cc (options::force_early_suppression): Define new + data member. + (options::options): Initialize the new + options::force_early_suppression. + (display_usage): Document the new --force-early-suppression. + (parse_command_line): Support the new --force-early-suppression. + Also, if --header-dirs or --header-file is set, then set + --drop-private-types. + (set_suppressions): If --force-early-suppression is provided, then + force suppressed IR node to be dropped from memory. + * tests/test-read-common.h + (test_task::set_in_public_headers_path): Reset the + in_public_headers_path by default. + (test_task::set_in_options): Define new member function. + * tests/test-read-dwarf.cc (in_out_specs): Add the new test input + binaries below to the test harness. + (test_task_dwarf::perform): Take the additional command line + options into account. + * tests/data/test-read-dwarf/PR33090/bug[12].c: Source code + for new test input binary. + * tests/data/test-read-dwarf/PR33090/impl{1,2}.so: Add new binary + test input. + * tests/data/test-read-dwarf/PR33090/impl{1,2}.so.abi: Add new + expected ABIXML output. + * tests/data/test-read-dwarf/PR33090/interface.h: Source code for + new test input binary. + * tests/data/test-read-dwarf/PR33090/private.suppr: Suppression + specification for new input test. + +2025-06-30 Dodji Seketeli + + elf-reader,symtab-reader: Fix suppression of aliased symbols + * src/abg-elf-reader.cc (reader::symtab): Rewrite the closure that + determines if a symbol is suppressed. Make it so that all aliases + of a symbol has to be suppressed for the symbol to be suppressed. + * src/abg-symtab-reader.cc (symtab::load_): Wait until all symbols + aliases are constructed before determining if they are suppressed. + This is because aliases are now necessary to determine if a symbol + is suppressed. + * tests/test-read-common.h (test_task::set_in_suppr_spec_path): + Empty suppression specification shouldn't trigger us. + * tests/test-read-dwarf.cc (test_task_dwarf::perform): Take the + suppression specifications into account on the command line. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. + * tests/data/test-read-dwarf/test-suppressed-alias.o.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. + +2025-06-30 Dodji Seketeli + + abidw: Sort options documentation alphabetically + * doc/manuals/abidw.rst: Sort items of options documentation + alphabetically. + * tools/abidw.cc (display_usage): Likewise. + +2025-06-30 Dodji Seketeli + + symtab-reader: Add missing space + * src/abg-symtab-reader.cc (symtab::setup_symbol_lookup_tables): + Add a missing space to the comment. + +2025-06-23 Dodji Seketeli + + abg-comparison: Fix indentation + * src/abg-comparison.cc + (corpus_diff::priv::ensure_lookup_tables_populated): Fix + indentation. + +2025-06-23 Dodji Seketeli + + abg-comparison: Do not abort when a static data member is deleted + * src/abg-comparison.cc + (corpus_diff::priv::ensure_lookup_tables_populated): Do not choke + if a static data member is removed. + +2025-06-16 Dodji Seketeli + + Bug 33055 - classes_have_same_layout & types_are_compatible enter in endless loop + * src/abg-ir-priv.h (class_or_union::priv): Add a set of + type_base* to record the classes which layouts are being compared + against this one. + * src/abg-ir.cc (classes_have_same_layout): If this type is + already involved in comparing class layouts using + classes_have_same_layout then do get out early to avoid calling + types_are_compatible. + * tests/data/test-abidiff-exit/PR33055/Makefile: New Makefile to + build the test input binaries. + * tests/data/test-abidiff-exit/PR33055/PR33055-report-[12].txt: + New expected reference test output. + * tests/data/test-abidiff-exit/PR33055/file.cpp: Source code of + the test binaries. + * tests/data/test-abidiff-exit/PR33055/{new,old}-lib.so: New test + input binaries. + * tests/data/Makefile.am: Add the new test material to source + distribution. + * tests/test-abidiff-exit.cc (in_out_specs): Add the new test + binary inputs to this harness. + +2025-06-19 Dodji Seketeli + + Improve harmless integral type change filtering + * src/abg-comparison.cc (distinct_diff::compatible_child_diff): + Simplify and fix logic. If the diff subjects are entities are of + distinct kind and if they are compatible types then make this node + describe the actual changes between the peeled down subjects. + * src/abg-default-reporter.cc (default_reporter::report): In the + overload for const distinct_diff, do not report the child diff + node describing the peeled down changes to avoid endless + recursion. + * src/abg-ir.cc (classes_have_same_layout): Fix a thinko in the + detection of compatible method types. + (integral_type_has_harmless_name_change): Simplify and fix + logic. Two integral types of the same size/alignment but with + different names are considered as a harmless change. Note that + for types with empty names, for now, detecting if they are + integral types is broken. So let's consider them as integral for + now. This will have to be changed when the DWARF reader is fixed + for better handling the case of integral types detection. + * tests/data/test-abidiff-exit/PR30048-test-report-0.txt: Adjust. + * tests/data/test-abidiff-exit/btf/test0-report-2.txt: Likewise. + * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: + Likewise + * tests/data/test-abidiff-exit/test-allow-type-region-v0--v1-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/test-allow-type-region-v0--v4-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/test-allow-type-region-v0--v5-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/test-allow-type-region-v0--v5-report-2.txt: + Likewise. + * tests/data/test-abidiff-exit/test-changed-var-1-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/test-loc-with-locs-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-loc-without-locs-report.txt: + Likewise. + * tests/data/test-diff-dwarf/test2-report.txt: Likewise. + * tests/data/test-diff-dwarf/test4-report.txt: Likewise. + * tests/data/test-diff-dwarf/test5-report.txt: Likewise. + * tests/data/test-diff-filter/test18-report.txt: Likewise. + * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: + Likewise. + * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: + Likewise. + * tests/data/test-diff-filter/test36-report-0.txt: Likewise. + * tests/data/test-diff-filter/test5-2-report.txt: Likewise. + * tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: Likewise. + * tests/data/test-diff-suppr/test-has-data-member-inserted-at-2-report.1.txt: + Likewise. + * tests/data/test-diff-suppr/test-has-data-member-inserted-at-2-report.txt: + Likewise. + * tests/test-abidiff-exit.cc (in_out_specs): Now that several + benign integral type changes are considered harmless, adjust the + expected result of the tests. + +2025-06-12 Dodji Seketeli + + test-abicompat: Fix color setting + * tests/test-abicompat.cc (main): Set the terminal default back. + +2025-06-12 Dodji Seketeli + + Bug 33076 - abicompat doesn't filter out harmless diff nodes + * include/abg-comparison.h (is_diff): Add a new template function. + (apply_filters_and_categorize_diff_node_tree): Rename + apply_filters into this new function. + * src/abg-comparison.cc + (apply_filters_and_categorize_diff_node_tree): Rename + apply_filters into this. Make it apply suppression + specifications and all categorization filters. + * tests/data/test-abicompat/test-diff-ptr-to-void-ptr/0/libtest-diff-ptr-to-void-ptr-fn.so: + New binary test input. + * tests/data/test-abicompat/test-diff-ptr-to-void-ptr/0/test-diff-ptr-to-void-ptr-fn-v0.c: + Source code of binary test input. + * tests/data/test-abicompat/test-diff-ptr-to-void-ptr/1/libtest-diff-ptr-to-void-ptr-fn.so: + New binary test input. + * tests/data/test-abicompat/test-diff-ptr-to-void-ptr/1/test-diff-ptr-to-void-ptr-fn-v1.c: + Source code of binary test input. + * tests/data/test-abicompat/test-diff-ptr-to-void-ptr/test-diff-ptr-to-void-ptr-app: + New binary test input. + * tests/data/test-abicompat/test-diff-ptr-to-void-ptr/test-diff-ptr-to-void-ptr-app.c: + Source code of binary test input. + * tests/data/test-abicompat/test-diff-ptr-to-void-ptr/test-diff-ptr-to-void-ptr-report-[01].txt: + New reference test output. + * tests/data/Makefile.am: Add new test material to source + distribution. + * tests/test-abicompat.cc: Add new test input to this harness. + * tests/print-diff-tree.cc (main): Adjust. + * tools/abicompat.cc (create_diff_context): Filter out harmless + change categories by default. + (compare_expected_against_provided_{function,variable}s): Use the + new apply_filters_and_categorize_diff_node_tree. + +2025-06-06 Dodji Seketeli + + Bug 30329 - Fix regression in support for absolute path to alt DWARF + * src/abg-elf-reader.cc (find_alt_dwarf_debug_info_path) + (find_alt_dwarf_debug_info): Remove static functions. + (reader::priv::find_alt_dwarf_debug_info): Remove member function.h + (reader::priv::{formated_di_root_paths, + raw_formated_di_root_paths}): Add new data members. + (reader::priv::initialize): Initialize the new data members. + (reader::priv::initialize_debug_info_root_paths): Define new + member function. + (reader::priv::crack_open_elf_file): Invoke the new + initialize_debug_info_root_paths above. Adjust the call to + elf_helpers::initialize_dwfl_callbacks to pass the new + raw_formated_di_root_paths. + (reader::priv::locate_dwarf_debug_info): Remove all the + unnecessary cruft. Just rely on elfutils finding the debug info, + now that it's been properly initialized. Use the dwarf_getalt + function that is now always present in the versions of elfutils + that we use. + That later fix actually temporarily broke the initial fix for "Bug + 30329". + This patch handles the case of a DWZ-produced alternate DWARF being + referenced by an absolute path which happens to be under the root + debug info dir (e.g, + "/usr/lib/debug/dwz/components/sqlite.bst/x86_64-unknown-linux-gnu", + under the root dir "/usr/lib/debug"). + The idea of the fix is to automatically add a + "/usr/lib/debug/dwz/components/sqlite.bst" as a debuginfo dir because + it is under the root dir /usr/lib/debug and because it contains a + file. + * include/abg-tools-utils.h (get_file_path_dirs_under_dir): + Declare ... + * src/abg-tools-utils.cc (get_file_path_dirs_under_dir): ... new + function. + (is_file): Define new static function. + * src/abg-elf-reader.cc + (reader::priv::initialize_debug_info_root_paths): Add + sub-directories (that contain files) of root debuginfo dirs to the + set of debug info root paths to be considered by elfutils. + * tests/test-abidiff-exit.cc (in_out_specs): Add a new test case + for + data/test-abidiff-exit/PR30329/old-image/usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6 + where two debuginfo root dirs are added. + (main): Support adding several comma-separated debuginfo root + dirs to InOutSpec::in_elfv[01]_debug_dir. + +2025-06-06 Dodji Seketeli + + Change debuginfo root paths type from vector to vector + * include/abg-btf-reader.h (btf::create_reader): Take + vector& instead of vector& for + debug_info_root_paths. + * include/abg-ctf-reader.h (ctf::{create,reset}_reader): + Likewise. + * include/abg-dwarf-reader.h (dwarf::{create,reset}_reader) + (read_corpus_from_elf): Likewise. + * include/abg-elf-based-reader.h (elf_based_reader::initialize): + Likewise. + * include/abg-elf-reader.h (elf::reader::{reader, initialize, + debug_info_root_paths}): Likewise. + * include/abg-tools-utils.h (file_has_{dwarf,ctf,btf}_debug_info) + (create_best_elf_based_reader): Likewise. + (get_file_path_dirs_under_dir): Declare new function. + (make_path_absolute): Add an overload for string. + * src/abg-btf-reader.cc (btf::reader::{initialize, reader, create, + create_reader}): Take vector& instead of vector& + for debug_info_root_paths. + * src/abg-ctf-reader.cc (ctf::reader::{reader, initialize, + create_reader, reset_reader}): Likewise. + * src/abg-dwarf-reader.cc (dwarf::reader::{reader, initialize, + create, create_reader, read_corpus_from_elf}): Likewise. + * src/abg-elf-based-reader.cc + (elf_based_reader::{elf_based_reader, initialize}): Likewise. + * src/abg-elf-reader.cc + (elf::reader::priv::debug_info_root_paths): Change the type of + this data member from vector to vector. + (elf::reader::priv::{priv, initialize}): Take vector& + instead of vector& for debug_info_root_paths and adjust + the body accordingly. + (elf::reader::{reader, initialize, debug_info_root_paths}): Take + or return vector& instead of vector& + * src/abg-tools-utils.cc (file_has_{dwarf,ctf,btf}_debug_info) + (load_vmlinux_corpus, create_best_elf_based_reader): Likewise. + (make_path_absolute): New overload for const string&. + (build_corpus_group_from_kernel_dist_under): Adjust to using + vector instead of vector. + * tests/print-diff-tree.cc (main): Likewise. + * tests/test-diff-dwarf.cc (main): Likewise. + * tests/test-ir-walker.cc (main): Likewise. + * tests/test-read-btf.cc (test_task_btf::perform(): Likewise. + * tests/test-read-ctf.cc (test_task_ctf::perform): Likewise. + * tests/test-symtab.cc (read_corpus): Likewise. + * tools/abicompat.cc (options::{app_di_root_path, + lib1_di_root_path, lib2_di_root_path}): Switch types of these data + member from shared_ptr to string. + (parse_command_line): Adjust to using the string overload of + tools_utils::make_path_absolute. + (read_corpus): Take a vector instead of vector for + debuginfo root dirs. + (main): Adjust to using string & vector for debuginfo root + directories instead of char* and vector. + * tools/abidiff.cc (options::{di_root_paths[12]}): Change the + types of these data members from vector to vector. + (options::prepared_di_root_paths[12]): Remove these data members. + (options::~options): Remove. + (parse_command_line): Adjust to using the string overload of + tools_utils::make_path_absolute. + (prepare_di_root_paths): Remove. + (handle_error): Adjust. + (main): Remove call to prepare_di_root_paths & adjust. + * tools/abidw.cc (options::di_root_paths): Adjust type to + vector from vector + (options::prepared_di_root_paths1): Remove data member. + (options::~options): Remove. + (load_corpus_and_write_abixml): Adjust. + (prepare_di_root_paths): Remove. + * tools/abilint.cc (options::di_root_path): Change type from + shared_ptr to string. + (parse_command_line): Adjust. + (main): Adjust. + * tools/abipkgdiff.cc (compare, compare_to_self): Adjust. + +2025-06-06 Dodji Seketeli + + fedabipkgdiff: Fix getting the latest RPM version of a given Fedora distro + * tools/fedabipkgdiff (get_distro_from_string): Make this properly + get the distro sub-string from the release string, even for + release strings like "1.eln123" and '1.2.fc40app2'. The distro + sub-strings returned for these two examples are 'eln123' and None. + None is returned in the later case because it doesn't follow the + "proper" Fedora scheme for distro sub-strings of the Release + string. + +2025-06-06 Dodji Seketeli + + configure: Remove the unnecessary FOUND_DWARF_GETALT_IN_LIBDW variable + * configure.ac: Remove the FOUND_DWARF_GETALT_IN_LIBDW variable + and the LIBDW_HAS_DWARF_GETALT configuration C macro. + +2025-06-06 Dodji Seketeli + + elf-reader: Fix elfutils initialization of debuginfo lookup paths + * src/abg-elf-reader.cc (find_alt_dwarf_debug_info_path) + (find_alt_dwarf_debug_info): Remove static functions. + (reader::priv::find_alt_dwarf_debug_info): Remove member function. + (reader::priv::{formated_di_root_paths, + raw_formated_di_root_paths}): Add new data members. + (reader::priv::initialize): Initialize the new data members. + (reader::priv::initialize_debug_info_root_paths): Define new + member function. + (reader::priv::crack_open_elf_file): Invoke the new + initialize_debug_info_root_paths above. Adjust the call to + elf_helpers::initialize_dwfl_callbacks to pass the new + raw_formated_di_root_paths. + (reader::priv::locate_dwarf_debug_info): Remove all the + unnecessary cruft. Just rely on elfutils finding the debug info, + now that it's been properly initialized. Use the dwarf_getalt + function that is now always present in the versions of elfutils + that we use. + +2025-05-19 Dodji Seketeli + + Bug 32975 - Filter out replacing a data member with a compatible union + * include/abg-comp-filter.h + (is_type_to_compatible_anonymous_type_change) + (is_data_member_to_compatible_anonymous_dm_change): Declare ... + * src/abg-comp-filter.cc + (is_type_to_compatible_anonymous_type_change) + (is_data_member_to_compatible_anonymous_dm_change): ... new + functions. + (is_non_compatible_distinct_change): Use the new + is_type_to_compatible_anonymous_type_change. + (has_harmless_name_change): Use the new + is_type_to_compatible_anonymous_type_change and + is_data_member_to_compatible_anonymous_dm_change. + (has_anonymous_data_member_change): Tighten this up by making the + test more precise. + * tests/data/test-abidiff-exit/replace-dm-with-compatible-anon-dm-1-report-1.txt: + Add new reference test output. + * tests/data/test-abidiff-exit/replace-dm-with-compatible-anon-dm-1-v{0,1}.{c,o}: + Add new test binary output as well as its source code. + * tests/data/Makefile.am: Add the new test input material to + source distribution. + * tests/test-abidiff-exit.cc (in_out_specs): Add the new test to + this harness. + +2025-05-16 Mark Wielaard + + tests/runtestfedabipkgdiffpy3.sh.in: Don't use which to find python3 + * tests/runtestfedabipkgdiffpy3.sh.in: Replace which with + command -v. + +2025-05-14 Dodji Seketeli + + libxml-utils,tools-utils: Add an I/O handler for XZ input in libxml2 + * include/abg-libxml-utils.h (xml::initialize): Declare ... + * src/abg-libxml-utils.cc (xml::initialize): ... new function. + (xz_io_match_cb, xz_io_open_cb, xz_io_read_cb, xz_io_close_cb): + New static functions. + (struct xz_ctxt_type): New type. + * include/abg-tools-utils.h (tools_utils::guess_file_type): Add a + new look_through_compression parameter with a default argument. + * src/abg-tools-utils.cc (initialize): Call the new + xml::initialize instead of xmlInitParser. + (guess_file_type): Add a new look_through_compression parameter. + If that parameter is set to false, return FILE_TYPE_XZ compression + for an XZ-compressed file. + (xz_decompressor_type::priv::inbuf): Set the size of the input + buffer to 100K bytes instead of 10K. This reduces the number of + reads when looking at files that are bigger than 10k bytes. + (xz_decompressor_type::priv::outbuf): Likewise. + * tools/abicompat.cc (main): Call tools_utils::initialize here. + * tools/abidiff.cc (main): Likewise. + * tools/abidw.cc (main): Likewise. + * tools/abilint.cc (main): Likewise. + * tools/abipkgdiff.cc (main): Call tools_utils::initialize near + the beginning of the function. + +2025-05-14 Dodji Seketeli + + tools-utils: Fix XZ decompression after all compression data is read + * src/abg-tools-utils.cc (xz_decompressor_type::underflow): Fix + comment. Decouple reading the compressed input and decompressing + it. Once all the compressed data is read, cycle over it to + decompress it in chunk. + +2025-05-14 Dodji Seketeli + + tools-utils: Fix a comment + * include/abg-tools-utils.h (class xz_decompressor_type): Fix the + comment. + +2025-05-09 Dodji Seketeli + + configure: Add --with-libxml2 option + * configure.ac: Add the --with-libxml2 option. Emit $XML_LIBS and + $XML_CFLAGS in the package configuration summary. + +2025-04-30 Dodji Seketeli + + Bug 32902 - Recognize harmless type size increase + * include/abg-fwd.h (is_compatible_with_enum_type) + (is_compatible_with_class_type): Declare ... + * src/abg-ir.cc (is_compatible_with_enum_type) + (is_compatible_with_class_type): new functions. + (collect_non_anonymous_data_members): Fix comment. + * src/abg-comp-filter.cc (type_size_changed_with_impact) + (has_type_size_change_with_impact): Define static functions. + (there_is_a_decl_only_class): Add an overload for class_decl* and + make the overload for class_decl_sptr use it. + (there_is_a_decl_only_enum, type_size_changed) + (type_has_offset_changes): Likewise. + (non_static_data_member_type_size_changed_with_impact): Renamed + non_static_data_member_type_size_changed into this. Use the new + type_size_changed_with_impact instead of the old + type_size_changed. + (non_static_data_member_added_or_removed_with_impact): + non_static_data_member_added_or_removed renamed into this. If the + containing type is anonymous then adding a new non-static data + member to it might not have an impact outside on the declaration + that currently has that anonymous type as a type. + (has_harmful_change): Replace the use of type_size_changed with + has_type_size_change_with_impact. Adjust for the renaming of + non_static_data_member_added_or_removed, into + non_static_data_member_added_or_removed_with_impact as well as + non_static_data_member_added_or_removed into + non_static_data_member_type_size_changed_with_impact. + * tests/data/test-abicompat/test7-fn-changed-report-0.1.txt: + Adjust. + * tests/data/test-abicompat/test7-fn-changed-report-0.txt: + Likewise. + * tests/data/test-abidiff-exit/test-leaf-redundant-report.txt: + Likewise. + * tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: + Likewise. + * tests/data/test-diff-filter/test-PR26309-report-0.txt: Likewise. + * tests/data/test-diff-filter/test-PR29387-report.txt: Likewise. + * tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt: + Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-1-report-1.txt: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-report-1.txt: Likewise. + * tests/data/test-diff-pkg-ctf/dirpkg-3-report-2.txt: Likewise. + * tests/data/test-diff-pkg-ctf/symlink-dir-test1-report0.txt: + Likewise. + * tests/data/test-diff-pkg-ctf/tarpkg-0-report-0.txt: Likewise. + * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.1.txt: + Likewise. + * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: + Likewise. + * tests/data/test-diff-suppr/test42-negative-suppr-type-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test42-negative-suppr-type-report-1.txt: + Likewise. + * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: + Likewise. + * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: + Likewise. + * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: + Likewise. + * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: + Likewise. + * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: + Likewise. + * tests/test-diff-suppr.cc: Likewise. + * tests/data/test-abidiff-exit/test-PR32902/test-PR32902-{1,2}-report-1.txt: + New reference output files. + * tests/data/test-abidiff-exit/test-PR32902/test-PR32902-{1,2}.v{0,1}.{c,o}: + New binaries and their source code. + * tests/data/Makefile.am: Add the new test material above to + source distribution. + * tests/test-abidiff-exit.cc (in_out_specs): Add the new input + test binaries to this test harness. + +2025-04-30 Dodji Seketeli + + {default,leaf}-reporter: Add incompatible changes to leaf reporter + * include/abg-comparison.h + (corpus_diff::diff_stats::{num_leaf_func_with_incompatible_changes, + net_num_leaf_func_non_incompatible_changes, + num_leaf_var_with_incompatible_changes, + net_num_leaf_var_non_incompatible_changes}): Declare new member + functions. + * src/abg-comparison-priv.h + (corpus_diff::diff_stats::priv::{num_leaf_func_with_incompatible_changes, + num_leaf_var_with_incompatible_changes}): Define new data members. + (corpus_diff::diff_stats::priv::priv): Initialize the new data + members. + * src/abg-comparison.cc + (corpus_diff::diff_stats::{num_leaf_func_with_incompatible_changes, + net_num_leaf_func_non_incompatible_changes, + num_leaf_var_with_incompatible_changes, + net_num_leaf_var_non_incompatible_changes}): Define new member + functions. + (corpus_diff::priv::apply_filters_and_compute_diff_stats): Set the + diff_stats::{num_leaf_func_with_incompatible_changes, + num_leaf_var_with_incompatible_changes} properties. + * src/abg-default-reporter.cc (emit_changed_fn_report) + (emit_changed_var_report): Moved these static functions ... + * src/abg-reporter-priv.cc (emit_changed_fn_report) + (emit_changed_var_report): ... here. + * src/abg-reporter-priv.h (emit_changed_fn_report) + (emit_changed_var_report): Declare them here. + * src/abg-leaf-reporter.cc (emit_changed_var_report): Remove this + static function. + (leaf_reporter::report): In the overload for corpus_diff, emit a + report for leaf functions with incompatible changes using the new + emit_changed_fn_report declared in src/abg-reporter-priv.h. + Likewise, use the emit_changed_var_report declared in + src/abg-reporter-priv.h to emit a report for leaf variables with + incompatible changes. Use + diff_stats::net_num_leaf_func_non_incompatible_changes to emit + changes to leaf functions that are not necessarily incompatible, + with the emit_changed_fn_report declared in + src/abg-reporter-priv.h. Similarly, use + diff_stats::net_num_leaf_var_non_incompatible_changes to emit + changes to leaf variables that are not necessarily incompatible. + * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt: + Adjust. + * tests/data/test-abidiff-exit/ada-subrange/test2-ada-subrange-redundant/test2-ada-subrange-redundant-report-2.txt: + Likewise. + * tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-leaf-more-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-leaf-redundant-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-leaf-stats-report.txt: + Likewise. + * tests/data/test-abidiff-exit/test-net-change-report2.txt: + Likewise. + * tests/data/test-diff-filter/libtest45-basic-type-change-report-1.txt: + Likewise. + * tests/data/test-diff-filter/test-PR26309-report-0.txt: Likewise. + +2025-04-30 Dodji Seketeli + + comparison: Emit local diff node category in tree dump + * src/abg-comparison.cc (diff_node_printer::visit): Emit a dump of + the local category of the current diff node. + +2025-04-22 Frank Ch. Eigler + + tests/runtestabidb2.sh.in: Take more care while doing cleanup + * tests/runtestabidb2.sh.in (clean_env): Clean more carefully. + +2024-07-18 Frank Ch. Eigler + + PR31533: abidb: drop debuginfod-client verbosity env variables + * tools/abidb: del os.environment(stuff) + +2025-04-11 Dodji Seketeli + + configure: Bump libabigail version to 2.8 + * configure.ac: Now that 2.7 is out of the door, bump version + number to 2.8. + +2025-04-11 Dodji Seketeli + + doc/website/mainpage.txt: Update to 2.7 + * doc/website/mainpage.txt: Update to 2.7 + +2025-04-10 Dodji Seketeli + + NEWS: Update for 2.7 release + * NEWS: Update for 2.7 release. + +2025-04-10 Dodji Seketeli + + ChangeLog: Update for 2.7 release + * ChangeLog: Update automatically by running "make + update-changelog". + +2025-04-10 Dodji Seketeli + + configure: Bump libabigail_so_current to 6 + * configure.ac: Bump libabigail_so_current version number to 6. + +2025-04-09 Dodji Seketeli + + Bug 32794 - ir: avoid asserting in get_type_name + * src/abg-ir.cc (get_type_name): Be prepared for a type with nullptr + value and for types with no declaration. + +2025-04-09 Dodji Seketeli + + manuals: Fix broken links + * doc/manuals/abi-artifacts.rst: Add forgotten link definition + for `ELF`_. + * doc/manuals/libabigail-concepts.rst: Remove unused link + definitions for `ELF_`, `Ini File Syntax`_ and `GNU C Library`_. + * doc/manuals/suppression-specifications.rst: Add forgotten link + definition for `Ini File Syntax`_, `GNU C Library`_. + +2025-04-09 Dodji Seketeli + + abg-comp-filter: Fix some documentation thinko + * src/abg-comp-filter.cc (class_diff_has_only_harmless_changes) + (has_var_harmful_local_change, has_incompatible_fn_or_var_change): + Fix thinkos. + +2025-04-09 Dodji Seketeli + + abg-comp-filter: Fix declaration of has_harmful_name_change + * include/abg-comp-filter.h (has_harmful_name_change): Add the + missing diff_context_sptr& parameter. + +2025-03-31 Dodji Seketeli + + libabigail-concepts: Document the incompatible changes concept + * doc/manuals/abi-artifacts.rst: New file. Move the ABI artifacts + section in here. + * doc/manuals/abi-changes.rst: New file. Introduce the concept of + ABI change. Polish and move the section about harmless and + harmful changes here. Introduce a section about incompatible + changes. + * doc/manuals/suppression-specifications.rst: New file. Move the + content about suppression specifications in here. + * doc/manuals/Makefile.am: Add the new files above to source + distribution. + * doc/manuals/libabigail-concepts.rst: This file now only contains + a table of content linking to the three new files introduced + above. + * doc/manuals/abidiff.rst: Amend the documentation to include + examples showing incompatible changes being reported by abidiff. + * doc/manuals/index.rst: Change the depth of the table of content + to 3. + Thanks-to: Sam James + +2025-04-07 Dodji Seketeli + + abidiff.rst: Sort option documentation bullets in lexicographic order + * doc/manuals/abidiff.rst: Sort option documentation bullets in + lexicographic order. + +2025-04-07 Dodji Seketeli + + manuals/conf.py: Update copyright years in the manuals + * doc/manuals/conf.py: Update copyright years. + +2025-04-04 Dodji Seketeli + + rhbz2355363 - abipkgdiff: Don't abort when alternate debug info is not found + * tools/abipkgdiff.cc (emit_alt_debug_info_not_found_error): Avoid + asserting here. + +2025-04-03 Dodji Seketeli + + default.abignore: Improve default suppression for krb5 libraries + * default.abignore: Recognize more SONAMEs for the different krb5 + shared libraries, namely libk5crypto.so, libgssrpc.so, libkdb5.so, + libkrb5support.so and libgssapi_krb5.so. Suppress all function + changes to libraries with these sonames. Suppress functions (and + their symbols) starting with names k5_, in addition to krb5int_. + +2025-04-01 Dodji Seketeli + + big-test: Update to e772c1e67aba14141dd16735ecdf19368b0cb29e + * include/abg-comparison.h (diff::is_categorized_as_suppressed): + Declare ... + * src/abg-comparison.cc (diff::is_categorized_as_suppressed): + ... new member function. + (corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the + new diff::is_categorized_as_suppressed. Look for incompatible fns + and vars changes among filtered-out (and non-suppressed) diff + nodes. + * tests/data/test-abidiff-exit/test1-voffset-change-report0.txt: + Adjust. + +2025-03-31 Dodji Seketeli + + Bug 28505 - Fix a case of pointer to void* change filtering + * include/abg-comparison.h (print_category): Declare ... + * src/abg-comparison.cc (print_category): ... new debugging + function. + (category_propagation_visitor::visit_end): Clear + NON_COMPATIBLE_DISTINCT_CHANGE_CATEGORY + NON_COMPATIBLE_NAME_CHANGE_CATEGORY from the local category of + pointer/reference diff nodes when propagating those categorizing + bits from the underlying diff nodes of pointer/reference diff + nodes. + * tests/data/test-abidiff-exit/PR28505-test-report.txt: New test + reference output file. + * tests/data/test-abidiff-exit/PR28505-test-report-2.txt: + Likewise. + * tests/data/test-abidiff-exit/PR28505-test-v{0,1}.{c,o}: Source + code and binary test input files. + * tests/data/Makefile.am: Add the new test material above to + source distribution. + * tests/test-abidiff-exit.cc (in_out_specs): Add the new input + tests to this test harness. + +2025-03-27 Dodji Seketeli + + Bug 31642 - Don't forget filtered-out incompatible fns and var changes + * include/abg-comparison.h (diff::is_categorized_as_suppressed): + Declare ... + * src/abg-comparison.cc (diff::is_categorized_as_suppressed): + ... new member function. + (corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the + new diff::is_categorized_as_suppressed. Look for incompatible fns + and vars changes among filtered-out (and non-suppressed) diff + nodes. + * tests/data/test-abidiff-exit/test1-voffset-change-report0.txt: + Adjust. + +2025-03-24 Dodji Seketeli + + Bug 31642 - Categorize incompatible changes on functions and variables + * include/abg-comp-filter.h (has_void_to_non_void_change) + (has_fn_return_or_parm_harmful_change) + (has_var_harmful_local_change, has_fn_with_virtual_offset_change) + (has_incompatible_fn_or_var_change): Declared new functions. + * include/abg-comparison.h (is_harmful_category): Declare new + function. + (corpus_diff::{changed_functions, changed_function_sorted}): + Consitify declarations. + (corpus_diff::{incompatible_changed_functions, + incompatible_changed_variables}): Declare new member functions. + (corpus_diff::diff_stats::{num_func_with_local_harmful_changes, + num_func_with_incompatible_changes, void + num_var_with_local_harmful_changes, void + num_var_with_incompatible_changes, + net_num_non_incompatible_var_changed}): Declare new accessors. + * include/abg-ir.h (change_kind::LOCAL_TYPE_CHANGE_KIND): Fix the + value of this enumerator. + (change_kind::{LOCAL_NON_TYPE_CHANGE,SUBTYPE_CHANGE_KIND}_KIND): + Adjust values of these enumerator as a consequence. + * src/abg-comp-filter.cc + (has_harmful_change, has_harmful_enum_change) + (has_harmless_enum_change, is_void_to_non_void): Define new static + functions. + (is_1_dim_unknown_size_array_change): Factorize this function out + of ... + (is_var_1_dim_unknown_size_array_change): ... this. + (has_fn_parm_type_cv_qual_change): Adjust to the use of + type_diff_has_typedef_cv_qual_change_only. + (has_added_or_removed_function_parameters): Fix indentation. + (has_fn_return_or_parm_harmful_change) + (has_fn_with_virtual_offset_change, has_var_harmful_local_change) + (has_var_harmful_local_change, has_incompatible_fn_or_var_change) + (has_void_to_non_void_change): Define new functions. + (categorize_harmful_diff_node): Improve documentation. Use the + new has_harmful_change which is a factorization of this function. + * src/abg-comparison-priv.h (is_less_than): Declare new function + that takes a pair of decl_diff_base. Remove the previous one that was + taking a pair of function_decl_diff. + (corpus_diff::priv::{incompatible_changed_fns_, + incompatible_changed_vars_}): Define new member variables. + (var_diff_sptr_comp::operator()): Adjust, make this use + is_less_than. + (corpus_diff::diff_stats::priv::{num_func_with_local_harmful_changes, + num_func_with_incompatible_changes, + num_var_with_local_harmful_changes, + num_var_with_incompatible_changes}): Define new member variables. + (corpus_diff::diff_stats::priv::priv): Initialize these new + member variables. + (sort_function_decl_diffs, sort_var_diffs): Declare new functions. + * src/abg-comparison.cc (get_symbol): Define new static function. + (is_less_than): Take decl_diff_base instead of function_decl_diff. + Adjust to use the new get_symbol function. Update comments. Add + a new overload. + (sort_function_decl_diffs, sort_var_diffs, is_harmful_category): + Define new functions. + (corpus_diff::diff_stats::{num_func_with_local_harmful_changes, + num_var_with_local_harmful_changes, + num_func_with_incompatible_changes, + num_var_with_incompatible_changes, + net_num_non_incompatible_func_changed, + net_num_non_incompatible_var_changed}): Define new member + functions. + (corpus_diff::{changed_functions, changed_functions_sorted}): + Constify this member function. + (corpus_diff::{incompatible_changed_functions, + incompatible_changed_variables}): Likewise. + (corpus_diff::priv::apply_filters_and_compute_diff_stats): Count + function diff node carrying virtual member changes and return or + parameter types harmful changes as functions with incompatible + changes. Likewise, count variable diff node carrying local + harmful changes as variables with incompatible changes. + (corpus_diff::has_incompatible_changes): Take into account + functions with virtual offset changes or with local harmful + changes, as well as variables with incompatible changes. + (redundancy_marking_visitor::visit_end): If the diff node has + local /harmful/ changes then it won't inherit redundancy from its + children nodes. + * src/abg-default-reporter.cc (emit_changed_fn_report) + (emit_changed_var_report): Define new static functions. + (default_reporter::report): In the overload for enum_diff, support + emitting a report about changed enumerator name. In the overload + for corpus_diff, emit a new section for incompatible changes to + functions and variables. Use the new emit_changed_fn_report and + emit_changed_var_report which have been factorized out of this + function anyway. + * src/abg-ir.cc (textually_equals): Add a change_kind* parameter + to tell the kind of change there are between two ELF symbols if + they are different. + (var_equals_modulo_types): Adjust to use textually_equals for a + more fined grained change_kind when it comes to ELF symbol + changes. + (decl_name_changed, integral_type_has_harmless_name_change): + Define new functions. + * src/abg-leaf-reporter.cc (emit_changed_var_report): Define new + static function. + (leaf_reporter::report): In the overload for corpus_diff, use the + new emit_changed_var_report as it's was factorized from there. + * src/abg-reporter-priv.cc (represent): In the overload for + var_diff, adjust the call to filtering::has_harmless_name_change. + (report_name_size_and_alignment_changes): Likewise. + * tests/data/test-abidiff-exit/incompatible-changes/1/report0.txt: + New test input. + * tests/data/test-abidiff-exit/incompatible-changes/1/test-1-v{0,1}.{cc,o}: + Likewise. + * tests/data/test-abidiff-exit/test-changed-var-1-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/test-changed-var-1-v{0,1}.cc: + Likewise. + * tests/data/test-abidiff-exit/test-changed-var-1-v{0,1}.o: + Likewise. + * tests/data/test-abidiff-exit/test-enumerator-changes{2,3,4,5,6}-report-{1,2}.txt: + Likewise. + * tests/data/test-abidiff-exit/test-enumerator-changes{2,3,4,5,6}-v{0,1}.cc: + Likewise. + * tests/data/test-abidiff-exit/test-enumerator-changes{2,3,4,5,6}-v{0,1}.o: + Likewise. + * tests/data/Makefile.am: Add the new test material above to + source distribution. + * tests/data/test-abicompat/test7-fn-changed-report-0.1.txt: + Adjust. + * tests/data/test-abicompat/test7-fn-changed-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/PR31513/reported/PR31513-reported-report-1.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/test2-ada-subrange-redundant/test2-ada-subrange-redundant-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/btf/test0-report-1.txt: Likewise. + * tests/data/test-abidiff-exit/btf/test0-report-2.txt: Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-output-1.txt: + 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-mbr3-output-1.txt: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-output-1.txt: + Likewise. + * tests/data/test-abidiff-exit/test-crc-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-more-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/test1-voffset-change-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-abidiff/test-namespace-report.txt: 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/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test25-removed-fn-parms-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: + Likewise. + * tests/data/test-diff-dwarf/test28-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/test32-fnptr-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: + Likewise. + * tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise. + * tests/data/test-diff-dwarf/test9-report.txt: Likewise. + * tests/data/test-diff-filter/libtest45-basic-type-change-report-0.txt: + Likewise. + * tests/data/test-diff-filter/test-PR27569-report-0.txt: Likewise. + * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.report.txt: + Likewise. + * tests/data/test-diff-filter/test15-0-report.txt: Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: + Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: + Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: + Likewise. + * tests/data/test-diff-filter/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/test5-2-report.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/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: + Likewise. + * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg/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/PR31646/test-PR31646-result-1.txt: + Likewise. + * tests/data/test-diff-suppr/PR31646/test-PR31646-result-3.txt: + Likewise. + * tests/data/test-diff-suppr/test-has-data-member-inserted-between-1-report-2.txt: + Likewise. + * tests/data/test-diff-suppr/test-has-data-member-inserted-between-1-report-3.txt: + Likewise. + * tests/data/test-diff-suppr/test-has-data-member-inserted-between-1-report-4.txt: + Likewise. + * tests/data/test-diff-suppr/test-has-strict-flexible-array-data-member-conversion-report-1.txt: + Likewise. + * tests/data/test-diff-suppr/test-has-strict-flexible-array-data-member-conversion-report-2.txt: + Likewise. + * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: + Likewise. + * tests/data/test-diff-suppr/test30-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/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-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + * tests/test-abicompat.cc: Likewise. + * tests/test-abidiff-exit.cc: Likewise. + * tests/data/test-diff-suppr/test-has-strict-flexible-array-data-member-conversion-v{0,1}.o: + Recompile these using gcc -g -c. + +2025-03-19 Dodji Seketeli + + Bug 21296 - Normalize declaration names read from DWARF + * include/abg-tools-utils.h (remove_white_spaces) + (normalize_litterals): Declare new functions. + * src/abg-tools-utils.cc (remove_white_spaces) + (normalize_litterals): Define new functions. + (get_litteral_regex): Define new static function. + * src/abg-dwarf-reader.cc (cleanup_decl_name): Define new static + function. + (add_or_update_class_type, add_or_update_union_type) + (build_function_decl): Use the new cleanup_decl_name. + * tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt: + Adjust. + * tests/data/test-annotate/libtest23.so.abi: Adjust. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. + * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Adjust. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Adjust. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Adjust. + * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: + Adjust. + * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: + Adjust. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: + Adjust. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: + Adjust. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: + Adjust. + * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: + Adjust. + * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: + Adjust. + * tests/data/test-diff-filter/test41-report-0.txt: Adjust. + * 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. + * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: + Adjust. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: + Adjust. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: + Adjust. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: + Adjust. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. + * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Adjust. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Adjust. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Adjust. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Adjust. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. + +2025-03-24 Dodji Seketeli + + ir: Recognize classes of same layout as being compatible + * include/abg-fwd.h (classes_have_same_layout): Declare ... + * src/abg-ir.cc (classes_have_same_layout): ... new function. + (types_are_compatible): Use the new classes_have_same_layout. + * tests/data/test-diff-filter/test5-report.txt: Adjust. + * tests/data/test-diff-filter/test5-{2,3}-report.txt: Add new + reference test output. + * tests/data/test-diff-filter/test5-{2,3}-v{0,1}.{cc,o}: Add new + source code and binary test input. + * tests/test-diff-filter.cc (in_out_specs): Add the binary test + inputs to the test harness. + +2025-03-24 Dodji Seketeli + + comp-filter,ir: Simplify logic of has_harmless_name_change + * include/abg-fwd.h (decl_name_changed) + (integral_type_has_harmless_name_change): Declare new functions. + * include/abg-ir.h (equals_modulo_cv_qualifier): Declare new + overloads for array_type_def_pstr and pointer_type_def_sptr. + * src/abg-comp-filter.cc + (type_diff_has_typedef_cv_qual_change_only): Rename + type_diff_has_cv_qual_change_only into this for better legibility. + Use equals_modulo_cv_qualifier rather than poorly open-coding its + functionality. + (has_fn_parm_type_cv_qual_change) + (has_fn_return_type_cv_qual_change, has_var_type_cv_qual_change): + Adjust the call to the new + type_diff_has_typedef_cv_qual_change_only. + (is_compatible_type_change): Declare new static function. + (is_non_compatible_distinct_change): Remove + type_diff_has_cv_qual_change_only and use the more generic + is_compatible_type_change. + (has_harmless_name_change): Remove the redundant and too much low + level messing up with typedefs, CV qualifiers and harmless + integral name changes. types_are_compatible should now take care + of that minutiae. + (decl_name_changed, integral_type_has_harmless_name_change): Move + these static function ... + * src/abg-ir.cc (decl_name_changed) + (integral_type_has_harmless_name_change): ... here and make them + non-static. + (types_are_compatible): Simplify logic. Look through qualified, + typedef, pointers, reference and array types. + (equals_modulo_cv_qualifier): Define new overloads for + array_type_def_sptr and pointer_type_def_sptr. + +2025-03-24 Dodji Seketeli + + ir: Better handle int[5][2] changed into int[2][5] + * src/abg-ir.cc (types_have_similar_structure): Arrays of + dimensions of different sizes should not be considered as having a + similar structure. + * tests/data/test-diff-filter/test-multi-array1-v{0,1}.cc: Add new + source files for binary test input. + * tests/data/test-diff-filter/test-multi-array1-v{0,1}.o: Add new + binaries. + * tests/data/test-diff-filter/test-multi-array1.txt: Add new + reference output. + * tests/data/Makefile.am: Add the new test material above to + source distribution. + * tests/test-diff-filter.cc (in_out_specs): Add the new test input + above to the test harness. + +2025-03-20 Dodji Seketeli + + comp-filter: Better detection of harmless/harmful enum changes + * include/abg-comp-filter.h (has_harmless_name_change): Take an + additional diff_context_sptr parameter. + * include/abg-ir.h (enum_type_decl::find_enumerator_by_{value, + name}): Declare new member functions. + * src/abg-comp-filter.cc (has_harmful_enum_change) + (has_harmless_enum_change) + (has_enumerator_change): Define new static functions. + (has_harmless_name_change): Take an + additional diff_context_sptr parameter. Use the new + has_harmless_enum_change instead of getting deep into minutiae + concerning enums. The diff_context_sptr argument is passed to + has_harmless_enum_change. Adjust the other overload. + (has_harmful_name_change): Take an additional diff_context_sptr + parameter and pass it to has_harmless_name_change. Adjust + comment. Adjust the overload for diff node. + (has_enumerator_removal_or_value_change): Rename + has_enumerator_removal_or_change into this. Walk the changed + enumerators to see if any of their value changed. + (has_harmful_enum_change): Adjust to use + has_enumerator_removal_or_value_change. + (categorize_harmless_diff_node): Adjust the use of + has_harmless_name_change. Also, use the new + has_harmless_enum_change instead of diving into minutiae to handle + enum changes. + * src/abg-comparison.cc + (enum_diff::ensure_lookup_tables_populated): Use the new + enum_type_decl::find_enumerator_by_{value,name} to populate + enum_diff::priv::changed_enumerators_ and remove the changed + enumerators from enum_diff::priv::{deleted, + inserted}_enumerators_. + * src/abg-default-reporter.cc (default_reporter::report): In the + overload for enum_diff, report change of enumerator value or + change of enumerator name. + (default_reporter::report_non_type_typedef_changes): Adjust the + use of filtering::has_harmless_name_change. + * src/abg-ir.cc (enum_type_decl::find_enumerator_by_{value, + name}): Define new member functions. + * src/abg-reporter-priv.cc (represent): In the overload for + var_diff_sptr, adjust the use of + filtering::has_harmless_name_change. + (report_name_size_and_alignment_changes): Likewise. + * tests/data/test-abidiff/test-enum0-report.txt: Adjust. + * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: + Adjust. + * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: + Adjust. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: + Adjust. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: + Adjust. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: + Adjust. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: + Adjust. + +2025-03-25 Dodji Seketeli + + reporter-priv: Fix a thinko in sub-range change report + * src/abg-reporter-priv.cc (represent): In the overload for + subranges, fix a thinko. We need to refer to the old subrange in + the change report. + * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt: + Adjust. + * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt: + Likewise. + * tests/data/test-abidiff-exit/ada-subrange/test2-ada-subrange-redundant/test2-ada-subrange-redundant-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/ada-subrange/test2-ada-subrange-redundant/test2-ada-subrange-redundant-report-2.txt: + Likewise. + * tests/data/test-abidiff-exit/test-allow-type-array-v0--v1-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/test-allow-type-array-v0--v3-report-1.txt: + Likewise. + * tests/data/test-abidiff/test-PR27985-report.txt: Likewise. + * tests/data/test-diff-dwarf/test10-report.txt: Likewise. + * tests/data/test-diff-dwarf/test11-report.txt: Likewise. + * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc-report-0.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-pkg/nss-3.23.0-1.0.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-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/test-has-data-member-inserted-at-1-report-1.txt: + Likewise. + +2025-03-13 Dodji Seketeli + + abipkgdiff: Avoid wrongly considering binaries being added/removed + * tools/abipkgdiff.cc (create_maps_of_package_set_content): Use + the SONAME when present as the key of the binary. + * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt: Adjust. + +2025-02-18 Dodji Seketeli + + big-tests: Sync with libabigail hashe 229682 + * tools/abipkgdiff.cc + (compare_prepared_linux_kernel_package_sets): Use the base name of + input RPMs in the output message. + +2025-02-17 Dodji Seketeli + + abipkgdiff: Don't use full Linux kernel pkg path in change reports + * tools/abipkgdiff.cc + (compare_prepared_linux_kernel_package_sets): Use the base name of + input RPMs in the output message. + +2025-02-13 Dodji Seketeli + + configure.ac: Add a new --enable-inlined-xxhash option + * configure.ac: Recognize the --enable-inlined-xxhash option, + define the ENABLE_INLINED_XXHASH variable accordingly and use it to + determine when to set the -DXXH_INLINE_ALL=1 macro or when to link + against the xxhash shared library. Also, update the package + configuration report to reflect the status of the + --enable-inlined-xxhash option. + +2025-02-12 Sam James + + configure.ac: fix typos for XXHASH_LIBS, LZMA_LIBS + * configure.ac: Fix typos for $XXHASH_LIBS and $LZMA_LIBS. + +2025-02-12 Dodji Seketeli + + {ctf,dwarf}-reader.cc: Fix a virtual method name conflict in elf_base_reader + * src/abg-ctf-reader.cc (ctf::reader::initialize): Adjust. + (ctf::reader::reset): Rename ctf::reader::initialize into this. + * src/abg-dwarf-reader.cc (reader::initialize): Adjust. + (dwarf::reader::reset): Rename dwarf::reader::initialize into + this. + +2025-02-06 Dodji Seketeli + + big-tests: Update to latest commit 2afebc4 + * big-tests: + +2025-01-30 Dodji Seketeli + + Bug PR32476 - abipkgdiff: Support comparing sets of packages + * doc/manuals/abipkgdiff.rst: Add documentation for the new + --set{1,2} options. Update the documentation to describe + abipkgdiff as a tool to compare sets of packages. + * tools/abipkgdiff.cc (options::{package_set_paths1, + package_set_paths2, pkg_set1, pkg_set2}): New data members. + (options::{package1, package2, pkg1, pkg2}): Remove these data + members. + (get_interesting_files_under): Rename + get_interesting_files_under_dir into this. Add a new overload + that takes a package_set instead of a directory path. + (package::package): Make this destructor virtual, so that we can + RTTI to the package class. + (package::load_elf_file_paths): Adjust to calling + get_interesting_files_under. + (class package_set): Define new class. + (package_set_sptr): Define new typedef. + (class pkg_set_prepare_task): Rename pkg_prepare_task into this. + (pkg_set_prepare_task_sptr): Renamed pkg_prepare_task_sptr into + this. + (create_maps_of_package_set_content): Renamed + create_maps_of_package_content into this and adjust to make it + take a package_set_sptr. + (extract_package_set_and_map_its_content): Renamed + extract_package_and_map_its_content into this and adjust to make + it take a package_set_sptr. + (prepare_package_sets): Renamed prepare_packages into this and + adjust to make it take a package_set_sptr. + (compare_prepared_userspace_package_sets): Renamed + compare_prepared_userspace_packages into this and adjust to make + it take a package_set_sptr. + (self_compare_prepared_userspace_package_set) + (self_compare_prepared_package_set): Renamed + self_compare_prepared_userspace_package and + self_compare_prepared_package into these* and adjust to make it + take a package_set_sptr. + (compare_prepared_linux_kernel_package_sets): Renamed + compare_prepared_linux_kernel_packages into this and adjust to + make it take a package_set_sptr. + (compare_prepared_package_set): Renamed compare_prepared_package + into this and adjust to make it take a package_set_sptr. + (pkg_set_prepare_task::perform): Adjust. + (is_kernel_package, get_core_kernel_package, is_package_set): + Define new static functions. + (extract_package, maybe_erase_temp_dirs): Take a package_sptr + rather than a reference to a package. + (extract_package_set_and_map_its_content) + (erase_created_temporary_directories) + (create_private_types_suppressions) + (maybe_create_public_dso_sonames_set) + (must_compare_public_dso_only, maybe_handle_kabi_stablelist_pkg) + (compare, compare_to_self): Make these functions take a + package_set_sptr rather than a reference to a package. + (compare_to_self): Adjust. + (parse_command_line): Make this take --set{1,2} options and adjust + accordingly. Fix detection of non-existent file input by using + options::wrong_arg instead options::wrong_option. + (main): Adjust to using options::wrong_args to detect non-existing + or wrong input files. Adjust to consider only package sets to be + compared now. + +2025-02-07 Dodji Seketeli + + configure: Disable abidb on python version < 3.9 + * configure.ac: Disable abidb on systems that have python version + less than 3.9. + +2025-01-16 Dodji Seketeli + + abipkgdiff: Rename whitelist into stablelist + * tools/abipkgdiff.cc (options::kabi_stablelist_{packages,paths}): + Renamed kabi_whitelist_* into these. + (package::KIND_KABI_STABLELIST): Renamed the KIND_KABI_WHITELIST + enumerator into this. + (package::kabi_stablelist_package_): Renamed + kabi_whitelist_package_ into this. + (package::kabi_stablelist_package): Likewise for the getter/setter + pair. + (package::erase_extraction_directories): Renamed whitelist into + stablelist here. + (maybe_check_suppression_files, maybe_collect_kabi_stablelists) + (get_kabi_stablelists_from_arch_under_dir) + (maybe_handle_kabi_stablelist_pkg) + (extract_package_and_map_its_content) + (compare_prepared_linux_kernel_packages): Likewise. + (parse_command_line): Adjust. + +2025-01-29 Dodji Seketeli + + Add support for reading XZ-compressed files + * configure.ac: Detect the liblzma library. + * include/abg-tools-utils.h (enum file_type): Add a new + FILE_TYPE_XZ enumerator. + (class xz_decompressor_type): Declare a new custom std::streambuf + class. + * src/abg-elf-helpers.h: Include elfutils/libdwelf.h. + * src/abg-elf-reader.cc (get_type_of_elf_file): Use + dwelf_elf_begin instead of elf_begin to transparently handle + compressed input file. + * src/abg-tools-util*s.cc (struct xz_decompressor_type::priv): + Define private type. + (xz_decompressor_type::{xz_decompressor_type, + ~xz_decompressor_type, underflow}): Define new methods for + xz_decompressor_type. + (operator<<(ostream&, file_type)): Add + support for the new FILE_TYPE_XZ enumerator. + (enum compression_kind): Define new enum. + (is_compressed_file_type, get_decompressed_streambuf): Define new + static functions. + (guess_file_type): In the overload for std::istream, detect the XZ file + type. In the overload for std::string, use the new + is_compressed_file_type and get_decompressed_streambuf to + decompress a compressed file on the fly and handing the resulting + decompressed istream to the overload for std::istream. + * tests/data/test-read-dwarf/test0.xz: New input binary test. + * tests/data/test-read-dwarf/test0.xzbinary: Likewise. + * tests/data/test-read-write/test28.xml.xz: Likewise. + * tests/data/test-read-write/test28.xml.xzed: Likewise. + * tests/data/Makefile.am: Add the new test input to source + distribution. + * tests/test-read-dwarf.cc (in_out_specs): Add the new test input + to this test harness. + * tests/test-read-write.cc (in_out_specs): Likewise. + * tools/abicompat.cc (read_corpus): Add support for the new + abigail::tools_utils::FILE_TYPE_XZ. + * tools/abidiff.cc (main): Likewise. + * tools/abilint.cc (main): Likewise. + +2025-01-29 Dodji Seketeli + + configure: Add $ELF_CFLAGS and $DW_CFLAGS to DEPS_CPPFLAGS + * configure.ac: Add $ELF_CFLAGS and $DW_CFLAGS to DEPS_CPPFLAGS. + +2025-01-28 Dodji Seketeli + + configure: Fix xxhash detection code + * configure.ac: Substitute XXHASH_CFLAGS and XXHASH_LIBS in the + Makefiles. Add XXHASH_CFLAGS to DEPS_CPPFLAGS and XXHASH_LIBS to + DEPS_LIBS. + +2025-01-16 Dodji Seketeli + + abipkgdiff: Recognize stablelist files in their package + * tools/abipkgdiff.cc (maybe_collect_kabi_whitelists): Recognize + files with prefix "kabi_stablelist_" as being a stablelist file, + in addition to the old kabi_whitelist_ prefix. + +2025-01-31 Dodji Seketeli + + abipkgdiff.rst: Sort options documentation items alphabetically + * abipkgdiff.rst: Sort the options alphabetically. + +2025-01-16 Dodji Seketeli + + abipkgdiff: Add new --verbose-diff option + * doc/manuals/abipkgdiff.rst: Document the new --verbose-diff + option. + * tools/abipkgdiff.cc (options::verbose_diff): New data member. + (options::options): Initialize the new data member. + (set_diff_context_from_opts): Activate logging of the diffing + process when the user issues the --verbose-diff option. + (parse_command_line): Parse --verbose-diff. Activate --verbose + when --verbose-diff is given. + +2025-01-15 Dodji Seketeli + + abipkgdiff: Add more verbose logging + * src/abg-tools-utils.cc (load_vmlinux_corpus): Log stable list + loading. + * tools/abipkgdiff.cc (compare_prepared_linux_kernel_packages): + Log building of corpora for Linux kernels and diffing them. + +2025-01-30 Dodji Seketeli + + tools-utils: Add missing comment + * src/abg-tools-utils.cc (guess_file_type): Add comment for RPM + format magic number. + +2025-01-30 Dodji Seketeli + + tools-utils: Fix indentation + * src/abg-tools-utils.cc (rpm_contains_file): Fix indentation. + +2025-01-15 Dodji Seketeli + + abipkgdiff: Fix indentation + * tools/abipkgdiff.cc (compare_prepared_linux_kernel_packages): + Fix indentation. + +2025-01-15 Dodji Seketeli + + abipkgdiff: Fix spacing in usage text output + * tools/abipkgdiff.cc (display_usage): Fix spacing. + +2025-01-13 Dodji Seketeli + + configure.ac: Add a missing preamble + * configure.ac: Add missing preamble. + +2025-01-13 Dodji Seketeli + + Update copyright years for 2025 + * include/abg-btf-reader.h: Update copyright year to include 2025. + * include/abg-comp-filter.h: Likewise. + * include/abg-comparison.h: Likewise. + * include/abg-config.h: Likewise. + * include/abg-corpus.h: Likewise. + * include/abg-ctf-reader.h: Likewise. + * include/abg-cxx-compat.h: Likewise. + * include/abg-diff-utils.h: Likewise. + * include/abg-dwarf-reader.h: Likewise. + * include/abg-elf-based-reader.h: Likewise. + * include/abg-elf-reader.h: Likewise. + * include/abg-fe-iface.h: Likewise. + * include/abg-fwd.h: Likewise. + * include/abg-hash.h: Likewise. + * include/abg-ini.h: Likewise. + * include/abg-interned-str.h: Likewise. + * include/abg-ir.h: Likewise. + * include/abg-libxml-utils.h: Likewise. + * include/abg-reader.h: Likewise. + * include/abg-regex.h: Likewise. + * include/abg-reporter.h: Likewise. + * include/abg-sptr-utils.h: Likewise. + * include/abg-suppression.h: Likewise. + * include/abg-tools-utils.h: Likewise. + * include/abg-traverse.h: Likewise. + * include/abg-viz-common.h: Likewise. + * include/abg-viz-dot.h: Likewise. + * include/abg-viz-svg.h: Likewise. + * include/abg-workers.h: Likewise. + * include/abg-writer.h: Likewise. + * src/abg-btf-reader.cc: Likewise. + * src/abg-comp-filter.cc: Likewise. + * src/abg-comparison-priv.h: Likewise. + * src/abg-comparison.cc: Likewise. + * src/abg-config.cc: Likewise. + * src/abg-corpus-priv.h: Likewise. + * src/abg-corpus.cc: Likewise. + * src/abg-ctf-reader.cc: Likewise. + * src/abg-default-reporter.cc: Likewise. + * src/abg-diff-utils.cc: Likewise. + * src/abg-dwarf-reader.cc: Likewise. + * src/abg-elf-based-reader.cc: Likewise. + * src/abg-elf-helpers.cc: Likewise. + * src/abg-elf-helpers.h: Likewise. + * src/abg-elf-reader.cc: Likewise. + * src/abg-fe-iface.cc: Likewise. + * src/abg-hash.cc: Likewise. + * src/abg-ini.cc: Likewise. + * src/abg-internal.h: Likewise. + * src/abg-ir-priv.h: Likewise. + * src/abg-ir.cc: Likewise. + * src/abg-leaf-reporter.cc: Likewise. + * src/abg-libxml-utils.cc: Likewise. + * src/abg-reader.cc: Likewise. + * src/abg-regex.cc: Likewise. + * src/abg-reporter-priv.cc: Likewise. + * src/abg-reporter-priv.h: Likewise. + * src/abg-suppression-priv.h: Likewise. + * src/abg-suppression.cc: Likewise. + * src/abg-symtab-reader.cc: Likewise. + * src/abg-symtab-reader.h: Likewise. + * src/abg-tools-utils.cc: Likewise. + * src/abg-traverse.cc: Likewise. + * src/abg-viz-common.cc: Likewise. + * src/abg-viz-dot.cc: Likewise. + * src/abg-viz-svg.cc: Likewise. + * src/abg-workers.cc: Likewise. + * src/abg-writer.cc: Likewise. + * tests/print-diff-tree.cc: Likewise. + * tests/test-abicompat.cc: Likewise. + * tests/test-abidiff-exit.cc: Likewise. + * tests/test-abidiff.cc: Likewise. + * tests/test-alt-dwarf-file.cc: Likewise. + * tests/test-core-diff.cc: Likewise. + * tests/test-cxx-compat.cc: Likewise. + * tests/test-diff-dwarf-abixml.cc: Likewise. + * tests/test-diff-dwarf.cc: Likewise. + * tests/test-diff-filter.cc: Likewise. + * tests/test-diff-pkg.cc: Likewise. + * tests/test-diff-suppr.cc: Likewise. + * tests/test-diff2.cc: Likewise. + * tests/test-dot.cc: Likewise. + * tests/test-elf-helpers.cc: Likewise. + * tests/test-ini.cc: Likewise. + * tests/test-ir-walker.cc: Likewise. + * tests/test-kmi-whitelist.cc: Likewise. + * tests/test-lookup-syms.cc: Likewise. + * tests/test-read-btf.cc: Likewise. + * tests/test-read-ctf.cc: Likewise. + * tests/test-read-dwarf.cc: Likewise. + * tests/test-read-write.cc: Likewise. + * tests/test-svg.cc: Likewise. + * tests/test-symtab-reader.cc: Likewise. + * tests/test-symtab.cc: Likewise. + * tests/test-tools-utils.cc: Likewise. + * tests/test-types-stability.cc: Likewise. + * tests/test-utils.cc: Likewise. + * tests/test-utils.h: Likewise. + * tools/abicompat.cc: Likewise. + * tools/abidiff.cc: Likewise. + * tools/abidw.cc: Likewise. + * tools/abilint.cc: Likewise. + * tools/abipkgdiff.cc: Likewise. + * tools/abisym.cc: Likewise. + * tools/binilint.cc: Likewise. + * tools/kmidiff.cc: Likewise. + * update-copyright.sh: Likewise. + +2025-01-09 Dodji Seketeli + + Bug 32402 - dwarf-reader,ir: Recognize new DWARF 5 languages + * configure.ac: Detect the presence of DW_LANG_* language + enumerators that were not supported before and for new ones that + got introduced in DWARF 5. + * include/abg-ir.h (translation_unit::LANG_{C17, C23, + C_plus_plus_17, C_plus_plus_20, C_plus_plus_23, OCaml, D, Go, + Rust, Zig, Metal, Fortran18, Fortran23, Ada2005, Ada2012, Kotlin, + C_sharp, Ruby, Assembly, Crystal, HIP, Mojo, GLSL, GLSL_ES, HLSL, + OpenCL_CPP, CPP_for_OpenCL, SYCL, Odin, P4, Move, Hylo}): Add new + languages enumerators. + * src/abg-dwarf-reader.cc (dwarf_language_to_tu_language) + (get_default_array_lower_bound): Recognize & support the new + languages enumerators above. + * src/abg-ir.cc (translation_unit_language_to_string): Likewise. + (is_c_language): Recognize translation_unit::LANG_C{17,23}. + (is_cplus_plus_language): Recognize + translation_unit::LANG_C_plus_plus_{20,23}. + (is_ada_language): Recognize + translation_unit::LANG_Ada{95,2005,2012}. + +2025-01-09 Dodji Seketeli + + configure: Support using custom builds of elfutils + * configure.ac: Add support for --with-libdw and --with-libelf. + Use pkg-config to detect the presence of libdw and libelf either + on the system or below the prefixes specified by the new + aforementionned options. + +2024-12-05 Dodji Seketeli + + abidiff.rst: Fix typo in the doc for --kmi-whitelist + * doc/manuals/abidiff.rst: It's not -kaw, but -w. + +2024-11-13 Dodji Seketeli + + fedabipkgdiff: Add a new --private-dso option + * doc/manuals/fedabipkgdiff.rst: Add documentation for the new + --private-dso option. + * tools/fedabipkgdiff (abipkgdiff): Pass the --private-dso option + to abipkgdiff when asked by the user. + (build_commandline_args_parser): Support the new --private-dso + option. + +2024-11-13 Dodji Seketeli + + fedabipkgdiff.rst: Sort options documentation alphabetically + * doc/manuals/fedabipkgdiff.rst: Sort the documentation of options + alphabetically. + +2024-11-12 Dodji Seketeli + + SECURITY: New security policy text + * SECURITY: New security policy text file. + * Makefile.am: Add the new SECURITY file to the distribution. + Reviewed-by: Frank Ch. Eigler + +2024-11-04 Dodji Seketeli + + configure.ac: Bump version number to 2.7 + * configure.ac: Bump version number to 2.7 + +2024-11-01 Dodji Seketeli + + big-tests: Update to commit bd0c1f8909a7b2f5018d54b82f7d6829c4849b59 + * big-tests: Update sub-module to upstream + bd0c1f8909a7b2f5018d54b82f7d6829c4849b59. + +2024-11-01 Dodji Seketeli + + Makefile.am: Update tag-and-all rule to do a full-check + * Makefile.am: Make the tag-and-all rule do a full-check instead + of just a check-self-compare. + +2024-11-01 Dodji Seketeli + + mainpage.txt: Update content for 2.6 release + * doc/website/mainpage.txt: Change reference to 2.5 into 2.6. Add + xxhash as a dependency. + +2024-11-01 Dodji Seketeli + + NEWS: Update for 2.6 release + * NEWS: Update with the result of the command + "git shortlog libabigail-2.5..HEAD" + +2024-11-01 Dodji Seketeli + + ChangeLog: Update ChangeLog in preparation for 2.6 release + * ChangeLog: Update with "make update-changelog". + +2024-11-01 Dodji Seketeli + + configure: Bump LIBABIGAIL_SO_CURRENT version to 5 + * configure.ac: Set LIBABIGAIL_SO_CURRENT to 5. + +2024-10-03 Dodji Seketeli + + big-tests: Update to commit cc6747bb859f6a4d7a3e2198d65618aa5d718fc1 + * big-tests: Update sub-module to commit + cc6747bb859f6a4d7a3e2198d65618aa5d718fc1 + +2024-10-03 Dodji Seketeli + + ir: Use canonical types in comparison when --enable-debug-type-canonicalization + * src/abg-ir.cc (try_canonical_compare): When + --enable-debug-type-canonicalization is activated use canonical + types for structural comparison. + +2024-10-02 Dodji Seketeli + + writer: Fix emitting of some member types within their scope + * src/abg-writer.cc (write_decl_in_scope): Detect that emitting a + scope type T doesn't emit a particular member type MT that we are + looking at. In that case, the function still needs to emit the + tags of the scope of MT and then emit MT even though T was just + emitted. + +2024-10-01 Dodji Seketeli + + hash: Use the faster XXH3 hashing algorithm from xxhash + * src/abg-hash.cc (hash): In the overload for uint64_t values, use + XXH3_64bits_withSeed instead of XXH64. In the overload for + string, use XXH3_64bits instead of XXH64. + * 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-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Likewise. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: + Likewise. + * tests/data/test-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/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/test25.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. + +2024-10-01 Dodji Seketeli + + writer: Do not crash on ABI corpora that have no associated path + * src/abg-writer.cc (write_context::record_corpus_as_emitted): + Allow corpus without path. + +2024-10-01 Dodji Seketeli + + hash: Implement full recursive hashing of artifacts + * include/abg-hash.h (enum hashing_state): Add better comments for + the enumerators. + (hashing_state::HASHING_SUBTYPE_STATE): Add new enumerator. + * src/abg-hash.cc + (MAYBE_RETURN_EARLY_FROM_HASHING_TO_AVOID_CYCLES): Consider the + new state hashing::HASHING_SUBTYPE_STATE when detecting cycles. + ({typedef_decl, qualified_type_def, pointer_type_def, + reference_type_def, array_type_def, ptr_to_mbr_type, + enum_type_decl, function_type, method_type, class_decl::base_spec, + class_or_union, class_decl, union_decl}::hash::operator()): Invoke + type_or_decl_base::hash_decl on sub-types to compute their hash. + Prior to invoke that hashing function, set the state of the + artifact to the new hashing:HASHING_SUBTYPE_STATE so that + type_or_decl_base::hash_decl does *not* set the computed hash on + the sub-type. + * src/abg-ir-priv.h (type_or_decl_base::priv::set_hash_value): An + ABI artifact can now be in the hashing::HASHING_SUBTYPE_STATE + state. + * 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/test4.so.abi: Likewise. + * tests/data/test-annotate/test6.so.abi: Likewise. + * tests/data/test-annotate/test7.so.abi: Likewise. + * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: + Likewise. + * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Likewise. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: + Likewise. + * tests/data/test-read-btf/test0.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-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-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/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/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/PR29443-missing-xx.o.abi: Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: + Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test-pointer-to-member-1.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/test4.so.abi: Likewise. + * tests/data/test-read-dwarf/test4.so.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/test28-without-std-fns-ref.xml: + Likewise. + * tests/data/test-read-write/test28-without-std-vars-ref.xml: + Likewise. + +2024-09-30 Dodji Seketeli + + reader: Drop the hash values coming from older ABIXML files + * src/abg-reader.cc (reader::m_drop_hash_value): Define new data + member. + (reader::maybe_drop_hash_values): Define new function. + (reader::read_hash_and_stash): Make the static function + read_hash_and_stash a member function of reader. Make it so that + if m_drop_hash_value is define, then no hash value is read from + the XML node. + (read_type_hash_and_cti): Move declaration of static function + before the new reader::read_hash_and_stash. + (reader::read_corpus): Call the new maybe_drop_hash_values. + (build_function_decl, build_type_decl, build_qualified_type_decl) + (build_pointer_type_def, build_reference_type_def) + (build_ptr_to_mbr_type, build_function_type, build_subrange_type) + (build_array_type_def, build_enum_type_decl, build_typedef_decl) + (build_class_decl, build_union_decl): Adjust call to + read_hash_and_stash to reader::read_hash_and_stash. + +2024-09-30 Dodji Seketeli + + big-tests: Update to latest version of libabigail-tests.git + * big-tests: + +2024-09-27 Dodji Seketeli + + ir: Don't strip typedefs when comparing pointers & references + * src/abg-ir.cc (equals): In the overload for pointer_type_def and + reference_type_def, do not peel typedefs from the pointed-to types + before comparing them. + * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. + * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Adjust. + * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Adjust. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Adjust. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. + +2024-09-27 Dodji Seketeli + + ir: Always use canonical types in comparison when possible + * src/abg-ir.cc (maybe_get_canonical_type): Define new function + template. + (try_canonical_compare): Use the above function to always use + canonical types in comparison. + * tests/data/test-diff-pkg/infinipath-psm-3.3-26_g604758e_open.6.fc36.5.x86_64-self-check-report.txt: + New test reference output. + * tests/data/test-diff-pkg/infinipath-psm-3.3-26_g604758e_open.6.fc36.5.x86_64.rpm: + Add new binary input. + * tests/data/test-diff-pkg/infinipath-psm-debuginfo-3.3-26_g604758e_open.6.fc36.5.x86_64.rpm: + Likewise. + * tests/data/Makefile.am: Add the new test material above to + source distribution. + +2024-09-17 Mark Wielaard + + Use XXH_INLINE_ALL=1 to inline all xxhash functions + * configure: Don't AC_SUBST XXHASH_{VERSION,LIBS,CFLAGS}. + Remove XXHASH_LIBS from DEPS_LIBS. Add -DXXH_INLINE_ALL=1 + to CFLAGS and CXXFLAGS. + +2024-09-15 Dodji Seketeli + + big-tests: Update to commit bd0c1f8909a7b2f5018d54b82f7d6829c4849b59 + * big-tests: Update to latest commit bcec65b53b8332710f8d74adf4d6a060a91ab5ee + +2024-09-06 Dodji Seketeli + + ir: Use definition of decl-only parm type in function type names + * src/abg-ir.cc (stream_pretty_representation_of_fn_parms): Use + the definition of decl-only function parameter types in the + representation. + +2024-09-06 Dodji Seketeli + + corpus: Allow several variables with same ID to be exported + * include/abg-corpus.h (corpus::lookup_variables): Replace + corpus::lookup_variable with this one which returns the set of + variables associated with a given ID of variable. + * src/abg-corpus-priv.h (istr_var_ptr_set_map_type): Define new + typedef. + (corpus::exported_decls_builder::priv::id_vars_map_): Replace + id_var_map_ with this new data member of type + istr_var_ptr_set_map_type. + (corpus::exported_decls_builder::priv::id_fns_map): Fix comment. + (corpus::exported_decls_builder::priv::id_vars_map): Replace + previous id_var_map with this member function. + (corpus::exported_decls_builder::priv::var_id_is_in_id_vars_map): + Replace the var_id_is_in_id_var_map member function. + (corpus::exported_decls_builder::priv::var_is_in_vars): Define new + static member function. + (corpus::exported_decls_builder::priv::{var_is_in_id_vars_map, add_var_to_id_vars_map}): + Define new member functions. + (corpus::exported_decls_builder::priv::add_var_to_map): Remove. + (corpus::exported_decls_builder::priv::add_var_to_exported): + Adjust by using the new var_is_in_id_vars_map and + add_var_to_id_vars_map. + * src/abg-corpus.cc + (corpus::exported_decls_builder::maybe_add_var_to_exported_vars): + Adjust, use the new + corpus::exported_decls_builder::priv::var_is_in_id_vars_map. + (corpus::lookup_variables): Replace corpus::lookup_variable with + this one which returns the set of variables associated with a + given ID of variable. + * tools/abicompat.cc + (compare_expected_against_provided_variables): Adjust. + +2024-09-05 Dodji Seketeli + + ABIXML reader: Unconditionally map a pointer XML node to its decl + * src/abg-reader.cc (build_pointer_type_def): Unconditionally map + a pointer type XML node to its decl. + +2024-09-05 Dodji Seketeli + + ir: Improve the checks done by 'abidw --debug-tc' + * src/abg-ir.cc (compare_types_during_canonicalization): Disable + type comparison result caching during type canonicalization + debugging. + +2024-09-05 Dodji Seketeli + + ir: Strip typedefs from pointed-to-types during comparison + * src/abg-ir.cc (equals): In the overload for pointers and + reference types, strip typedefs off of pointed-to types before + comparing them. + * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-annotate/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/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/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/test9-pr18818-clang.so.abi: Likewise. + +2024-09-02 Dodji Seketeli + + hash,reader,writer: (De)Serialize hash values using the xxhash canonical form + * include/abg-hash.h (deserialize_hash, serialize_hash): Declare + new functions. + * src/abg-hash.cc (deserialize_hash, serialize_hash): Define them. + (char_to_int, int_to_char): Define static functions. + (hash): For the overload that hashes an integer, make it take a + second one as hashing seed. Also, lay out the integer value to + hash in big endian format before passing it to XH64. + (combine_hashes): Use the amended hash function above. + * src/abg-reader.cc (read_type_hash_and_cti): Use the new + deserialize_hash function. + * src/abg-writer.cc (write_type_hash_and_cti): Use the new + serialize_hash function. + * 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-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Likewise. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: + Likewise. + * tests/data/test-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/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/test15.xml: Likewise. + * tests/data/test-read-write/test18.xml: Likewise. + * tests/data/test-read-write/test21.xml: Likewise. + * tests/data/test-read-write/test24.xml: Likewise. + * tests/data/test-read-write/test25.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. + +2024-08-30 Dodji Seketeli + + comparison: Sort anonymous types using their flat representation + * src/abg-comparison-priv.h (diff_comp::operator()): Use the + non-internal pretty representation for sorting. + * tests/data/test-abidiff-exit/test-anon-types-report-1.txt: + Adjust. + * tests/data/test-abidiff-exit/test-anonymous-enums-change-report-v1.txt: + Adjust. + +2024-08-30 Claudiu Zissulescu + + abg-tools-utils: Fix memory corruption when using CTF option + * src/abg-tools-utils.cc + (build_corpus_group_from_kernel_dist_under): change the scope of + di_root_ctf_ptr variable. + +2024-08-28 Dodji Seketeli + + dwarf-reader,ir,writer: Better support for static member variables + * include/abg-ir.h (class_or_union::get_static_data_members): + Declare new method. + * src/abg-dwarf-reader.cc (add_or_update_class_type): Do not + create any IR for the /declaration/ of static data member here. + Wait for its definition from a concrete instance DIE to create the + IR for it. + (build_ir_node_from_die): In the DW_TAG_variable case, if we are + looking at the concrete instance of a static variable (one that + has a DW_AT_abstract_origin pointing to a static data member) then + build the IR from it and add it to its class scope. + * src/abg-ir-priv.h (class_or_union::priv::static_data_members_): + Define new data member. + (class_or_union::priv::priv): Stick the static data members that + are in class_or_union::priv::data_members_ into + class_or_union::priv::static_data_members_. + * src/abg-ir.cc (maybe_adjust_canonical_type): Make sure static + data members of the canonical type has the same symbols set as the + data members of the canonicalized type. + (class_or_union::add_data_member): Update the new + class_or_union::priv::static_data_members_ when a data member is + added. + (class_or_union::get_non_static_data_members): Fix comments. + (class_or_union::get_static_data_members): Define new member + functions. + (set_member_is_static): Update the new + class_or_union::priv::static_data_members_ when static-ness is + changed. + * src/abg-writer.cc (write_decl_in_scope): Support writing pure + declarations (not types). + (write_translation_unit): Don't forget to write remaining global + variables. + (write_class_decl): Make sure to write static data members first, + before writing the non-static data members. + * tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt: + Adjust. + * tests/data/test-annotate/libtest23.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/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-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Likewise. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: + Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: + Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: + Likewise. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: + Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.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/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + * tests/data/test-read-write/test10.xml: Likewise. + +2024-08-27 Dodji Seketeli + + dwarf-reader,reader.cc: Fix function virtuality setting + * include/abg-fwd.h (set_member_function_vtable_offset) + (set_member_function_is_virtual): Remove these function + declarations. + (set_member_function_virtuality): Declare new function. + * include/abg-ir.h (decl_base::get_context_rel): Make this public. + (set_member_function_is_virtual) + (set_member_function_vtable_offset): Remove these friend + declaration for the decl_base class. + * src/abg-dwarf-reader.cc (finish_member_function_reading): Use + the new set_member_function_virtuality in lieu of the previous + set_member_function_is_virtual and + set_member_function_vtable_offset. + * src/abg-ir.cc (set_member_function_vtable_offset) + (set_member_function_is_virtual): Make these functions static. + (set_member_function_virtuality): Define new functions. + (class_or_union::add_member_function): Use the new + set_member_function_virtuality in lieu of + set_member_function_is_virtual and + set_member_function_vtable_offset. + * src/abg-reader.cc (build_class_decl): Likewise. + +2024-08-27 Dodji Seketeli + + abipkgdiff: Extract devel and main packages in the same directory + * tests/data/test-diff-pkg/gcc-debuginfo-14.2.1-1.fc40.x86_64.rpm: + Add missing debug info package. + * tests/data/Makefile.am: Add it to source distribution. + * tests/test-diff-pkg.cc (in_out_specs): Add the debuginfo package + to the libgm2 test. + * tools/abipkgdiff.cc (main): Extract the devel packages into the + "package1" and "package2" directories. + (extract_package_and_map_its_content): Extract the main and devel + packages sequentially, not in parallel. + (self_compare_prepared_userspace_package): Add more logs. + * tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt: + Adjust. + * tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-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/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt: + Likewise + * tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-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 + +2024-08-23 Dodji Seketeli + + dwarf-reader,ir: Fix endless loop while analyzing DWARF from Modula-2 + * src/abg-dwarf-reader.cc (die_qualified_type_name) + (die_qualified_decl_name, die_qualified_type_name_empty) + (die_function_signature, die_pretty_print_type) + (die_pretty_print_decl, die_pretty_print) + (reader::{get_die_qualified_type_name}): Take a new guard + parameter. Pass it to all the type name construction function, + all the way down to die_class_flat_representation and + die_return_and_parm_names_from_fn_type_die. + (die_qualified_name, die_type_name) + (die_class_or_enum_flat_representation) + (die_class_or_enum_flat_representation) + (reader::{get_die_pretty_type_representation, + get_die_pretty_representation}): Add an overload that takes a + guard parameter and rewrite the previous overload in terms of the + new one. + (die_class_flat_representation) + (die_return_and_parm_names_from_fn_type_die): Take a new guard + parameter. Use it to detect and avoid cycles during the + construction of the type name. + * src/abg-ir-priv.h + (class_or_union::priv::is_printing_flat_representation_): Define + new data member. + (class_or_union::priv::{set,unset,is}_printing_flat_representation): + Define member functions. + (function_type::priv::is_pretty_printing_): Define new data + member. + (function_type::priv::{set,unset,}_is_pretty_printing): Define + member functions. + * src/abg-ir.cc (get_class_or_union_flat_representation) + (add_outer_pointer_to_fn_type_expr): Implement cycle detection and + avoidance for recursive classes and function types. + * tests/data/test-diff-pkg/libgm2-14.2.1-1.fc40.x86_64-self-check-report.txt: + New test reference output. + * tests/data/test-diff-pkg/libgm2-14.2.1-1.fc40.x86_64.rpm: New + input RPM. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust. + * tests/data/Makefile.am: Add the new test material to source + distribution. + * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs + to the test harness. + +2024-08-22 Dodji Seketeli + + abidw: Add a --kmi-stablelist option alongside existing --kmi-whitelist + * doc/manuals/abidw.rst: Update the documentation. + * tools/abidw.cc (display_usage): Add a help string for the new + --kmi-stablelist. + (parse_command): Parse it. + +2024-08-22 Dodji Seketeli + + dwarf-reader,tools-utils: Add statistics about built/suppressed functions + * src/abg-dwarf-reader.cc (reader::stats): Define new struct. + (reader::stats_): Define a new data member of type stats. + (build_or_get_fn_decl_if_not_suppressed) + (build_or_get_var_decl_if_not_suppressed): Increments the stats. + (reader::read_debug_info_into_corpus): Emit the stats about number + of suppressed/kept functions and variables at the end of the + corpus building. + * src/abg-tools-utils.cc (load_vmlinux_corpus): Emit the status + about the number of functions/variables in the corpus. + +2024-08-21 Dodji Seketeli + + big-tests: Update git sub-module + * big-tests: Update to git commit d84f5ef7b490ffcd466be20052fed87635e6e148 + +2024-08-21 Dodji Seketeli + + abilint: Support --verbose option + * doc/manuals/abilint.rst: Document the new --verbose option. + * tools/abilint.cc (options::do_log): New data member. + (options::options): Initialize it. + (display_usage): Document it. + (set_reader_options): New static function to set the options of + the reader from user-provided options. + (main): Use the new set_reader_options. + +2024-08-21 Dodji Seketeli + + {btf,ctf,dwarf}-reader, ir: Fix self-comparison debugging for corpus groups + * src/abg-btf-reader.cc (reader::read_debug_info_into_corpus): + When reading an ELF binary, which is part of a corpus group, for + the purpose of self-comparison, set that corpus group as the + comparison input. Otherwise, if the ELF binary is not part of the + corpus group, set its corpus as the comparison input. This is + done only when we are debugging the self-comparison process by + doing abidw --debug-abidiff. + * src/abg-ctf-reader.cc (reader::read_corpus): Likewise. + * src/abg-dwarf-reader.cc (reader::read_debug_info_into_corpus): + Likewise. + * src/abg-ir-priv.h (type_originates_from_corpus): Declare ... + * src/abg-ir.cc (type_originates_from_corpus): ... new function. + (type_base::get_canonical_type_for): When debugging the + self-comparison process, use the new type_originates_from_corpus + to know if the current type being canonicalized originates from + the second corpus. + +2024-08-21 Dodji Seketeli + + {dwarf,btf,ctf}-reader: Set the origin of the corpus group + * src/abg-btf-reader.cc (reader::read_corpus): Set the origin of + the corpus group being read. + * src/abg-ctf-reader.cc (reader::read_corpus): Likewise. + * src/abg-dwarf-reader.cc (reader::read_debug_info_into_corpus): + Likewise. + +2024-08-21 Dodji Seketeli + + dwarf-reader: Fix building of void, void* and variadic parm types + * src/abg-dwarf-reader.cc (build_ir_node_for_void_type) + (build_ir_node_for_void_pointer_type) + (build_ir_node_for_variadic_parameter_type): Add the type node to + its scope just once. Use + reader::schedule_type_for_late_canonicalization to canonicalize + it. + +2024-08-21 Dodji Seketeli + + tools-utils: Improve logging while reading a Linux kernel + * src/abg-tools-utils.cc (load_vmlinux_corpus) + (build_corpus_group_from_kernel_dist_under): Improve time logging. + +2024-08-21 Dodji Seketeli + + ir: Improve type logging during type canonicalization + * src/abg-ir-priv.h (canonicalize_types): Log the time taken by + type canonicalization. + +2024-08-13 Dodji Seketeli + + reader: Improve logging in the ABIXML reader + * src/abg-reader.cc (reader::read_corpus) + (reader::perform_type_canonicalization) + (read_corpus_group_from_input): Improve logging. + +2024-08-16 Dodji Seketeli + + dwarf-reader: Support LLVM's lingo of declaration-ness + * src/abg-dwarf-reader.cc (die_is_declaration_only): A DIE is a + declaration if it has the DW_AT_declaration property and if it + either has no size attribute or no children DIE. + (reader:: maybe_schedule_decl_only_type_for_resolution): Define + new function. + (build_enum_type, add_or_update_class_type) + (add_or_update_union_type): Do not schedule a declaration for + declaration-to-definition-resolution pass here. + (build_typedef_type): If the typedef is a naming typedef, schedule + the underlying type for the declaration-to-definition-resolution + pass here. + (build_ir_node_from_die): Schedule the declaration for + declaration-to-definition-resolution pass here, after it's been + added to its scope. + * tests/data/test-diff-filter/test41-report-0.txt: Adjust. + * 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/test-libandroid.so.abi: Likewise. + +2024-08-16 Dodji Seketeli + + ir: Fix name setting of a ptr-to-mbr-type + * include/abg-ir.h (decl_base::{g,s}et_name): Make these member + functions virtual. + (ptr_to_mbr_type::get_name): Add new virtual overload. + * src/abg-ir.cc (ptr_to_mbr_type::ptr_to_mbr_type): Do not set the + name of the type here. Just say that it's not anonymous. + (ptr_to_mbr_type::get_name): Define new (virtual) member function. + +2024-08-14 Dodji Seketeli + + dwarf-reader: Speed-up decl-only resolution + * src/abg-dwarf-reader.cc + (reader::compare_before_canonicalisation): If the two types being + compared are of the same kind and name, and are declared at the + same source location, then they ought to be equivalent. + * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: 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. + +2024-08-13 Dodji Seketeli + + reader: Avoid duplicating recursive types + * src/abg-reader.cc (build_qualified_type_decl) + (build_pointer_type_def, build_reference_type_def) + (build_ptr_to_mbr_type, build_subrange_type, build_array_type_def) + (build_enum_type_decl, build_typedef_decl): After a sub-type is + built, check if the complex type we are looking at is built too. + If it is, then return it. + +2024-08-06 Dodji Seketeli + + dwarf-reader: Avoid duplicating anonymous member types + * include/abg-comp-filter.h (has_void_ptr_to_ptr_change) + (has_harmless_enum_to_int_change) + (has_benign_array_of_unknown_size_change): Declare new functions. + * include/abg-comparison.h (enum diff_category): Add + NON_COMPATIBLE_DISTINCT_CHANGE_CATEGORY, + NON_COMPATIBLE_NAME_CHANGE_CATEGORY enumerators. Update the other + enumerator values. Also, update the EVERYTHING_CATEGORY + enumerator value. + * include/abg-ir.h (class_decl::find_base_class): Document the + name of the parameter. + * src/abg-comp-filter.cc (type_diff_has_cv_qual_change_only) + (is_non_compatible_distinct_change, is_void_ptr_to_ptr): Define + new static functions. + (has_subtype_changes): Remove static function. + (class_diff_has_only_harmless_changes): Do not bother checking if + the class_diff has subtype changes. If there are, the category of + those changes is going to be propagated upward to this current + diff node. Update the comments. + (has_harmless_name_change): A diff node carrying compatible types + or types that differ only from their CV qualifiers should qualify + as having a harmless name change. + (has_harmless_enum_to_int_change): Make this function be + non-static. + (type_diff_has_cv_qual_change_only): Introduce an overload that + takes two ABI artifacts instead of one diff node. Make the diff + node overload use the new one. Simplify logic by essentially + peeling off qualified or typedefs first. Then if what remain is + pointer or array types, look at their underlying types. If the + remaining underlying types are equal then return true. + (has_void_ptr_to_ptr_change): Use the new is_void_ptr_to_ptr + function. This allows the function to detect void* -> pointer and + pointer -> void* changes. And it simplifies the logic. + * src/abg-comparison.cc (distinct_diff::compatible_child_diff): + Build a compatible child diff node iff the two diff subject are + actually compatible meaning, they are equal modulo a typedef. + (get_default_harmful_categories_bitmap): Add the new + abigail::comparison::{NON_COMPATIBLE_DISTINCT_CHANGE_CATEGORY,NON_COMPATIBLE_NAME_CHANGE_CATEGORY} + enumerators to the bitmap of harmful categories. + (operator<<(ostream& o, diff_category c)): Update this to support + emitting the new + abigail::comparison::{NON_COMPATIBLE_DISTINCT_CHANGE_CATEGORY,NON_COMPATIBLE_NAME_CHANGE_CATEGORY} + enumerators. + (class_or_union_diff::priv::count_filtered_{subtype_}changed_dm): + Fix logic for counting local changes. + diff::has_local_changes_to_be_reported is not reliable so do not + rely on it. We might want to remove that function in the end. + (category_propagation_visitor::visit_end): If the current diff + node has a harmless void pointer to pointer, enum to int, or a + benign array of unknown size change, do not propagate the + NON_COMPATIBLE_{NAME,DISTINCT}_CHANGE_CATEGORY that have + necessarily bubbled up from some of their distant children nodes. + * src/abg-dwarf-reader.cc + (maybe_set_member_type_access_specifier) + (get_next_member_sibling_die): Declare this pre-existing static + function. + (get_internal_anonymous_die_name) + (lookup_class_typedef_or_enum_type_from_corpus) + (lookup_class_typedef_or_enum_type_from_corpus): Remove. + (die_return_and_parm_names_from_fn_type_die): Add is_method_type + and return_type_name parameters. Fix the representation of member + functions. + (die_function_signature): Add qualified_name parameter. Adjust + call to die_return_and_parm_names_from_fn_type_die. + (die_type_name, die_enum_flat_representation) + (die_class_flat_representation) + (die_class_or_enum_flat_representation): Define new static + functions. + (reader::get_die_qualified_type_name, die_qualified_type_name): + For anonymous class or enum types, use the new + die_class_or_enum_flat_representation. Adjust the call to + die_return_and_parm_names_from_fn_type_die. For function types fix + the name representation. + (die_pretty_print_type): Adjust call to + die_return_and_parm_names_from_fn_type_die. + (die_pretty_print_decl): Take qualified_name and include_fns + parameters. Use the new die_type_name for variable type names. + Adjust call to die_function_signature. + (die_pretty_print): Adjust call die_pretty_print_decl. + (get_member_child_die): Remove useless vertical space. + (build_enum_underlying_type): Sort this enum underlying type (and + potentially hash it) before canonicalizing it. + (add_or_update_class_type): If an anonymous type is in the global + scope, take that into account when building its internal anonymous + die name. Lookup anonymous member types before adding them to the + class scope to avoid duplicating them in their scope. + (add_or_update_union_type): Likewise, lookup anonymous member + types before adding them to the union scope to avoid duplicating + them in their scope. + (build_subranges_from_array_type_die): Const-ify the input reader. + Adjust call to build_ir_node_from_die. Associate the subrange DIE + to the IR node built. + (build_ir_node_from_die): Get the current corpus from the reader + because it might be set for scope passed to this function, or the + scope might be nullptr. Schedule base types for canonicalization + like all the other types. Also, lookup all class/union types + before adding them to their class scope. + * src/abg-leaf-reporter.cc (leaf_reporter::report): In the + overload for class_or_union_diff, report changed data members and + their sub-types. + * tests/Makefile.am: Do not XFAIL the test runtestabidiffexit. No + more tests are XFAILED. All tests should now pass. + * tests/data/test-abidiff-exit/PR30503/libsdl/libsdl-1.2.60-1.2.64-report.txt: + Adjust. + * tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: + Likewise. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test0.abi: Likewise. + * tests/data/test-annotate/test1.abi: Likewise. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. + * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: + Likewise. + * tests/data/test-diff-dwarf/test4-report.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/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/test41-report-0.txt: Likewise. + * tests/data/test-diff-filter/test5-report.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-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: + Likewise. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: + Likewise. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: + Likewise. + * tests/data/test-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/libtest24-drop-fns-2.so.abi: + Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test0.abi: Likewise. + * tests/data/test-read-dwarf/test0.hash.abi: Likewise. + * tests/data/test-read-dwarf/test1.abi: Likewise. + * tests/data/test-read-dwarf/test1.hash.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. + * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. + * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + +2024-08-08 Dodji Seketeli + + ir: Cache the result of scope_decl::get_sorted_member_types + * include/abg-ir.h + (environment::canonicalization_started): Define new member + functions. + * src/abg-ir-priv.h + (environment::priv::canonicalization_started_): Define new data + member. + (canonicalize_types): Call + environment::canonicalization_started(true) right before starting + type canonicalization and call + environment::canonicalization_started(false) right after type + canonicalization is done. + * src/abg-ir.cc (environment::canonicalization_started): Define + new methods. + (environment::canonicalization_is_done): Set the + new canonicalization_started flag to false when the + canonicalization is done. + (scope_decl::priv::clear_sorted_member_types_cache_): Declare new + data member. + (scope_decl::{add_member_decl, insert_member_type}): If we are + adding a type to the scope, then flag the scope as needing to + clear the sorted member types cache. + (scope_decl::get_sorted_member_types): If type canonicalization is + not yet started, then the sorted member types cache needs to be + cleared. If the sorted member types cache is to be cleared, then + clear it. If the cache is empty, fill it. Then return the + content of the cache. + +2024-08-08 Dodji Seketeli + + reader: Avoid duplicating member types + * src/abg-reader.cc (read_name): New static function. + (build_class_decl, build_union_decl): If a member type already + exists in the class, do not add it. + +2024-05-14 Dodji Seketeli + + Don't strip typedefs in fn names when pretty-printing and comparing + * src/abg-ir.cc (get_function_type_name, get_method_type_name): Do + not peel typedef from return type. + (equals): In the overload for function_type, do not peel typedef + before comparing return types. In the overload for + function_decl::parameter, do not peel typedef before comparing the + parameter type. + (stream_pretty_representation_of_fn_parms): Do not strip typedef + from parameter types. + (add_outer_pointer_to_fn_type_expr): Likewise for return type. + * tests/Makefile.am: XFAIL the test runtestabidiffexit. + * tests/data/test-abidiff-exit/PR30503/libsdl/libsdl-1.2.60-1.2.64-report.txt: + Adjust. + * tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-output-1.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-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Likewise. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: + Likewise. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: + Likewise. + * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: + Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. + * tests/data/test-read-dwarf/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/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + +2023-12-17 Dodji Seketeli + + comp-filter: Ignore ptr size when detecting void ptr to ptr change + * src/abg-comp-filter.cc (has_void_ptr_to_ptr_change): Ignore + pointer size when detecting void pointer to pointer change. + * tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt: + Adjust. + +2023-12-17 Dodji Seketeli + + comp-filter: Consider lvalue-ness changes on references as harmful + * include/abg-comparison.h (enum diff_category): Add the new + REFERENCE_LVALUENESS_CHANGE_CATEGORY enumerator. Adjust the value + of the other enumerators. + * src/abg-comparison.cc (get_default_harmful_categories_bitmap): + Consider the new REFERENCE_LVALUENESS_CHANGE_CATEGORY as being + part of the default harmful categories bitmap. + (operator<<(ostream& o, diff_category c)): Support the new + REFERENCE_LVALUENESS_CHANGE_CATEGORY for me. + * include/abg-comp-filter.h (has_lvalue_reference_ness_change): + Declare new function. + * src/abg-comp-filter.cc (has_lvalue_reference_ness_change): + Define new function. + (categorize_harmful_diff_node): Use the new + has_lvalue_reference_ness_change to set the new + REFERENCE_LVALUENESS_CHANGE_CATEGORY. + * tests/Makefile.am: XFAIL runtestabidiffexit. + * tests/data/test-diff-filter/test3-report.txt: Adjust. + * 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/test35-pr18754-no-added-syms-report-1.txt: + Likewise. + * tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt: + Likewise. + +2024-03-27 Dodji Seketeli + + ir: decl-only classes don't equal fully defined classes under ODR + * src/abg-ir.cc (equals): In language supporting the ODR (just + like in all other languages), consider that a decl-only class is + different from its defined class counterpart. + * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: + Adjust. + * tests/data/test-diff-filter/test41-report-0.txt: Likewise. + +2024-08-21 Dodji Seketeli + + ir: Remove the now useless type propagation optimization + * configure.ac: Remove the now useless --enable-ct-propagation + option. + * include/abg-ir.h (environment::do_on_the_fly_canonicalization): + Remove member function declaration. + * src/abg-ir-priv.h (type_base::priv::{depends_on_recursive_type_, + canonical_type_propagated_, + propagated_canonical_type_confirmed_}): Remove data members. + (type_base::priv::priv): Update. + (type_base::priv::{depends_on_recursive_type, + set_depends_on_recursive_type, + set_does_not_depend_on_recursive_type, canonical_type_propagated, + set_canonical_type_propagated, + propagated_canonical_type_confirmed, + set_propagated_canonical_type_confirmed, + clear_propagated_canonical_type}): Remove member functions. + (environment::priv::{types_with_non_confirmed_propagated_ct_, + recursive_types_, types_with_cleared_propagated_ct_, + do_on_the_fly_canonicalization_}): Remove data members. + (environment::priv::priv): Adjust. + (environment::priv::{mark_dependant_types, + mark_dependant_types_compared_until}): Update comment. + (environment::priv::{mark_dependant_types, + mark_dependant_types_compared_until, is_recursive_type, + propagate_ct, confirm_ct_propagation_for_types_dependant_on, + confirm_ct_propagation, confirm_ct_propagation, + types_with_cleared_propagated_ct, + types_with_cleared_propagated_ct, + record_type_with_cleared_propagated_canonical_type, + erase_type_with_cleared_propagated_canonical_type, + collect_types_that_depends_on, + cancel_ct_propagation_for_types_dependant_on, + cancel_ct_propagation, clear_propagated_canonical_type, + add_to_types_with_non_confirmed_propagated_ct, + remove_from_types_with_non_confirmed_propagated_ct, + cancel_all_non_confirmed_propagated_canonical_types}): Remove. + (canonicalize_types): Remove canonical type propagation debugging + code. + * src/abg-ir.cc (mark_dependant_types_compared_until): Remove function. + (RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED): Adjust, do not use the + removed mark_dependant_types_compared_until. + (return_comparison_result): Remove handling of the canonical type + propagation optimization. + (environment::do_on_the_fly_canonicalization): Remove member + functions. + (maybe_propagate_canonical_type, maybe_propagate_canonical_type) + (maybe_cancel_propagated_canonical_type, ): Remove functions. + (compare_canonical_type_against_candidate, canonicalize): Remove + handling of the canonical type propagation optimization. + (equals): In the overload for class_or_union, adjust call to + return_comparison_result. In the overload for class_decl, remove + call to maybe_cancel_propagated_canonical_type. + (OnTheFlyCanonicalization): Remove this doxygen documentation + module describing the canonical type propagation optimization. + +2024-03-26 Dodji Seketeli + + Implement type hashing + * configure.ac: Bump ABIXML version to 4.0. Detect the new xxhash + dependency and require the 0.8.0 version at minimum. + * include/abg-fwd.h (look_through_decl_only_type): Declare new + functions. + (is_scope_decl): Const-ify the parameter and + the returned value. Also, do not include "abg-hash.h" here. + * include/abg-hash.h: Make this include cstdint (for uint64_t) and + abg-ir.h, instead of stdint.h. + (enum hashing_state): Define new enum in the abigail::hashing + namespace. + (combine_hashes, fnv_has, hash, get_hashing_state) + (set_hashing_state, is_recursive_artefact): Declare new functions + in the abigail::hashing namespace. + (struct {decl_base, type_base, type_decl, qualified_type_def, + pointer_type_def, reference_type_def, ptr_to_mbr_type, + array_type_def, enum_type_decl, typedef_decl, function_type, + method_type, member_base, class_or_union, class_decl::base_spec, + class_decl, union_decl}::hash): Declare new hash functors in the + abigail::ir namespace. + * include/abg-ir.h: Remove the inclusion of abg-hash.h from this + header. + (typedef hash_t): Define new type. + (peek_hash_value): Declare new function. + (get_canonical_types): Return a pointer to const vector. + ({type_or_decl_base, type_base, qualified_type_def, + pointer_type_def, reference_type_def, ptr_to_mbr_type, + array_type_def::subrange_type, typedef_decl, function_type, + method_type, class_or_union, class_decl, class_decl::base_spec, + union_decl}::hash_value): Add new virtual member functions. + (type_or_decl_base::set_hash_value): Add new member function. + (type_or_decl_base::priv_): Make this data member public. + (peek_hash_value, set_or_get_cached_hash_value): Declare these + functions as friends of class type_or_decl_base. + ({decl_base, scope_decl, var_decl, function_decl, + function_decl::parameter}::get_hash): Remove member functions. + * src/abg-comparison-priv.h (types_or_decls_hash::operator()): + Adjust to using the new hash_t type. + * src/abg-ctf-reader.cc + (reader::{additional_types_to_canonicalize, types}): Add new data + members. + (reader::add_type(): Add new member function. + (reader::canonicalize_all_types): Use the new types vector data + member to stash types to be canonicalized and pass them to + ir::hash_and_canonicalize_types for canonicalization. + (process_ctf_base_type) + (build_ir_node_for_variadic_parameter_type) + (build_ir_node_for_void_type, build_ir_node_for_void_pointer_type) + (build_array_ctf_range, process_ctf_enum_type): Do not use + canonicalize anymore. Rather, rely on reader::add_type to + schedule types for canonicalization, doing the generic sorting and + hashing before doing the actually canonicalization. + * src/abg-dwarf-reader.cc ({dwarf_offset_pair_hash,offset_hash, + offset_pair_hash}::operator()): Use the new hashing function. + (reader::read_debug_info_into_corpus): Improve logging. Use + ir::hash_and_canonicalize_types in lieu of ir::canonicalize_types. + (reader::types_to_canonicalize): Add + non-const overload. + (reader::canonicalize_types_scheduled): Add better logs & misc + obvious cleanup. + (maybe_canonicalize_type): Force scheduling canonicalization of + all types at the end of the DWARF processing. + * src/abg-hash.cc (combine_hashes, hash, get_hashing_state) + (set_hashing_state, is_recursive_artefact): Define new functions. + (MAYBE_RETURN_EARLY_FROM_HASHING_TO_AVOID_CYCLES) + (MAYBE_FLAG_TYPE_AS_RECURSIVE) + (MAYBE_RETURN_EARLY_IF_HASH_EXISTS): Define new macros. + (struct {decl_base, type_base, type_decl, qualified_type_def, + pointer_type_def, reference_type_def, ptr_to_mbr_type, + array_type_def, ptr_to_mbr_type, enum_type_decl, typedef_decl, + function_decl, function_type, method_type, member_base, + class_or_union, class_decl::base_spec, class_decl, + union_decl}::hash::operator): Define new hash functors. + ({template_parameter, template_decl, non_type_tparameter, + template_tparameter, type_composition, type_composition, + function_tdecl}::{hash, dynamic_hash, shared_ptr_hash): Remove. + * src/abg-ir-priv.h: Don't include abg-ir.h anymore, rather + include abg-hash.h. + (struct type_or_decl_base::priv): Move this here, from abg-ir.cc. + (type_or_decl_base::priv::{hashing_state_, hash_value_, + is_recursive_artefact_}): Define new data members. + (type_or_decl_base::priv::{get_hashing_state, set_hashing_state, + set_hash_value, force_set_hash_value, is_recursive_artefact}): + Define new member functions. + (struct sort_for_hash_functor): Define new functor. + (do_hash_value, set_or_get_cached_hash_value) + (hash_and_canonicalize_types, sort_and_canonicalize_types): Define + new function templates. + (type_is_suitable_for_hash_computing) + (sort_types_for_hash_computing_and_c14n) + (get_canonical_type_index, get_decl_name_for_comparison): Declare + new functions. + (type_base::priv::canonical_type_index): New data member. + (type_base::priv::{priv, clear_propagated_canonical_type}): + Initialize it. + (uint64_t_pair_hash::operator()): Adjust. + (environment::priv::number_of_canonical_types): New data member. + (environment::priv::priv): Initialize it. + (environment::priv::get_new_canonical_type_index): New member + function. + (environment::priv::propagate_ct): Propagate the CTI too. + (environment::priv::{confirm_ct_propagation_for_types_dependant_on, + confirm_ct_propagation}): Assert that canonical type has been + propagated and thus we have a canonical type. + (struct type_topo_comp::operator()): Beef up sorting of types. + Take into account the absolute path of the TU, the hash value, the + CTI) + (struct sort_for_hash_functor): Define new functor. + (sort_types_for_hash_computing_and_c14n): Declare new function + template and new overload. + (canonicalize_types): Take new do_log and show_stats parameters. + Improve logging. Do not sort types in here. + (hash_and_canonicalize_types): Define new function template. This + one does the sorting before the hashing and the canonicalization. + (sort_and_canonicalize_types): Likewise, but this one does no + hashing. + (cache_type_comparison_result): Cache the result of the comparison + now, unconditionally. As we don't do canonical type propagation + anymore, we should not get canonical types and equality to + disagree anymore. + (* src/abg-ir.cc (try_canonical_compare): If hash values are + present and different then the two types are different. + (environment::get_canonical_types): Constify return value. + (environment::get_canonical_type): Adjust. + (struct type_or_decl_base::priv): Move this to abg-ir-priv.h. + (type_or_decl_base::hashing_started): Remove. + ({decl_base, scope_decl, var_decl, function_decl, + function_decl::parameter, class_decl::base_spec, + non_type_tparameter, type_composition}::get_hash): Likewise. + ({template_parameter}::get_hashing_has_started) + (template_parameter::set_hashing_has_started): Likewise. + (type_or_decl_base::{hash_value, set_hash_value}) + ({type_base, type_decl, qualified_type_def, pointer_type_def, + reference_type_def, ptr_to_mbr_type, + array_type_def::subrange_type, array_type_def, enum_type_decl, + typedef_decl, function_type, method_type, class_or_union, + class_decl::base_spec, class_decl, union_decl}::hash_value): + Define new member functions. + (type_or_decl_base::set_hash_value): Likewise. + (get_decl_name_for_comparison): Make this non-static. + (is_scope_decl): Constify. + (type_is_suitable_for_hash_computing) + (peek_hash_value, read_type_hash, read_hash_and_stash) + (look_through_decl_only_type) + (candidate_matches_a_canonical_type_hash) + (sort_types_for_hash_computing_and_c14n): Define new functions. + (lookup_pointer_type, lookup_reference_type) + (pointer_type_def::get_qualified_name) + (reference_type_def::get_qualified_name) + (reference_type_def::get_pretty_representation): Adjust. + (get_type_name): Better handle naming of anonymous type decls, + used for enums. + (get_debug_representation): Adjust to emit hashes & CTI of types + as well as member types while debugging. + (look_through_decl_only_type): Rename look_through_decl_only into + this. + (lookup_pointer_type, lookup_reference_type) + (reference_type_def::get_qualified_name): Adjust. + (compare_canonical_type_against_candidate): Stop doing canonical + type propagation during type canonicalization. + (type_base::get_canonical_type_for): Use the new + candidate_matches_a_canonical_type_hash. Set the canonical type + index for homophone canonical types. In debug mode, check that if + a type equals a canonical type, their hash value must match. + (canonicalize): Take new do_log and show_stats parameter. Improve + logging. Also, a type must have the same CTI as its canonical + type. + (hash_type_or_decl): Adjust to use the new type + hash_t. + (type_topo_comp::operator()): Add an overload for type_base_wptr. + If the two pointers are equal, get out early. Otherwise, if + everything else is equal, sort using the absolute path of the + containing translation unit. + (maybe_propagate_canonical_type): Propagate canonical type only if + their CTI match. + * src/abg-reader.cc (maybe_canonicalize_type): Improve logging. + Schedule all types for late canonicalization. + (reader::perform_type_canonicalization): Improve logging. Call + hash_and_canonicalize_types to hash and canonicalize types. + (read_type_hash_and_cti, read_hash_and_stash): Define new static + functions. + (build_function_decl, build_type_decl) + (build_qualified_type_decl) + (build_pointer_type_def, build_reference_type_def) + (build_ptr_to_mbr_type, build_function_type, build_subrange_type) + (build_array_type_def, build_enum_type_decl, build_typedef_decl) + (build_class_decl, build_union_decl): Read and set the hash value + from ABIXML. + (build_function_decl, build_qualified_type_decl) + (build_pointer_type_def, build_reference_type_def) + (build_function_type, build_subrange_type, build_array_type_def) + (build_enum_type_decl, build_typedef_decl, build_class_decl) + (build_union_decl): Read the hash and CTI and set them to the + type. + (build_reference_type_def): Build the referenced type before-hand. + (build_class_tdecl, build_type_tparameter, build_type_composition) + (build_template_tparameter, build_type, handle_type_decl) + (handle_qualified_type_decl, handle_pointer_type_def) + (handle_reference_type_def, handle_function_type) + (handle_array_type_def, handle_enum_type_decl) + (handle_typedef_decl, handle_class_decl, handle_union_decl): + Adjust to the use of the new maybe_canonicalize_type signature. + * src/abg-btf-reader.cc (reader::canonicalize_types): Use the new + hash_and_canonicalize_types defined above. Log the time taken by + type canonicalization. + * src/abg-ctf-reader.cc (reader::{types, + additional_types_to_canonicalize}): New data members + (reader::add_types): New member functions. + (reader::canonicalize_all_types): Use the new + hash_and_canonicalize_types defined above. + (process_ctf_base_type): Do not call canonicalize here. + (build_ir_node_for_variadic_parameter_type) + (build_ir_node_for_void_type) + (build_ir_node_for_void_pointer_type, process_ctf_enum_type): + Likewise, and call reader::add_type instead. + * src/abg-dwarf-reader.cc ({dwarf_offset_pair_hash, offset_hash, + offset_pair_hash}::operator()): Adjust to using the new hash_t + type. + (reader::canonicalize_types_scheduled): Use the new + hash_and_canonicalize_types above. + (maybe_canonicalize_type): Schedule all types for late + canonicalization. + * src/abg-writer.cc (reader::get_id_for_type): Constify the + parameter. + (write_type_hash_and_cti, write_common_type_info) + (write_fn_parm_and_return_types): Define new static functions. + (write_type_decl, write_qualified_type_def) + (write_pointer_type_def, write_reference_type_def) + (write_array_subrange_type, write_array_type_def) + (write_enum_type_decl, write_typedef_decl, write_function_decl) + (write_function_type, write_class_decl_opening_tag) + (write_union_decl_opening_tag): Emit hash value and CTI to the + ABIXML. + * tests/Makefile.am: XFAIL the tests runtestdifffilter and + runtestabidiffexit for now. + * tests/data/test-abidiff-exit/PR30329/PR30329-report-1.txt: + Adjust. + * tests/data/test-annotate/PR29443-missing-xx.o.annotated.abi: + 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/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-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Likewise. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: + Likewise. + * tests/data/test-diff-filter/test-PR26739-2-report-0.txt: + Likewise. + * tests/data/test-diff-filter/test3-report.txt: Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: + Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: + Likewise. + * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: + Likewise. + * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: + Likewise. + * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: + Likewise. + * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: + Likewise. + * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: + Likewise. + * tests/data/test-diff-filter/test43-decl-only-def-change-leaf-report-0.txt: + Likewise. + * tests/data/test-diff-pkg-ctf/gmp-6.x.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-0.txt: + Likewise. + * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: + Likewise. + * tests/data/test-read-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/test0.xml: Likewise. + * tests/data/test-read-write/test1.xml: Likewise. + * tests/data/test-read-write/test10.xml: Likewise. + * tests/data/test-read-write/test11.xml: Likewise. + * tests/data/test-read-write/test12.xml: Likewise. + * tests/data/test-read-write/test13.xml: Likewise. + * tests/data/test-read-write/test14.xml: Likewise. + * tests/data/test-read-write/test15.xml: Likewise. + * tests/data/test-read-write/test16.xml: Likewise. + * tests/data/test-read-write/test17.xml: Likewise. + * tests/data/test-read-write/test18.xml: Likewise. + * tests/data/test-read-write/test19.xml: Likewise. + * tests/data/test-read-write/test2.xml: Likewise. + * tests/data/test-read-write/test20.xml: Likewise. + * tests/data/test-read-write/test21.xml: Likewise. + * tests/data/test-read-write/test22.xml: Likewise. + * tests/data/test-read-write/test23.xml: Likewise. + * tests/data/test-read-write/test24.xml: Likewise. + * tests/data/test-read-write/test25.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. + * tests/data/test-read-write/test3.xml: Likewise. + * tests/data/test-read-write/test4.xml: Likewise. + * tests/data/test-read-write/test5.xml: Likewise. + * tests/data/test-read-write/test6.xml: Likewise. + * tests/data/test-read-write/test7.xml: Likewise. + * tests/data/test-read-write/test8.xml: Likewise. + * tests/data/test-read-write/test9.xml: Likewise. + +2024-08-29 Dodji Seketeli + + abipkgdiff: Make --verbose enable the library's logging + * tools/abipkgdiff.cc (set_generic_options): Make --verbose + trigger the logs of the library. + +2024-08-28 Dodji Seketeli + + dwarf-reader: Do not fix ELF symbols for virtual destructors + * src/abg-dwarf-reader.cc (finish_member_function_reading): Do not + schedule virtual destructors for ELF symbol-related function + fixup. + +2024-08-29 Dodji Seketeli + + ctf-reader: Make logging more obvious + * src/abg-ctf-reader.cc (reader::read_corpus): Prefix the logs + with "CTF Reader". + +2024-08-22 Dodji Seketeli + + dwarf-reader: Fix support of suppression specifications + * src/abg-dwarf-reader.cc (function_is_suppressed) + (variable_is_suppressed): Do not return too early when the + function doesn't seem suppressed, yet. + * tests/data/test-diff-suppr/test31-report-0.txt: Adjust. + * tests/data/test-diff-suppr/test32-report-1.txt: Adjust. + +2024-08-21 Dodji Seketeli + + btf-reader: Add logging methods + * src/abg-btf-reader.cc (reader::{do_log, show_stats}): Add new + methods. + +2024-08-28 Dodji Seketeli + + dwarf-reader: Better support concrete instance functions DIEs + * src/abg-dwarf-reader.cc (build_ir_node_from_die): If the DIE is + a concrete instance of an abstract one, then get the IR from the + abstract one as it has all the types right. + * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. + * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: + Likewise. + * tests/data/test-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-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + +2024-08-08 Dodji Seketeli + + ctf-reader: Enumerate dicts in the archive rather than using their name + * src/abg-ctf-reader.cc (reader::process_ctf_archive): Do not use + ctf_dict_open to open the dictionary by name. Rather, enumerate + the dictionaries of the current archive by using ctf_archive_next + just like what lookup_symbol_in_ctf_archive does. Set the + argument of the skip_parent parameter to "false" to ensure we get + the parent dictionary. + (lookup_symbol_in_ctf_archive): Clean this up to properly + initialize the parameters and to document the arguments to the + parameters of ctf_archive_next. Use nullptr instead of NULL. + * tests/data/test-diff-pkg-ctf/test-rpm-report-1.txt: Adjust. + * tests/data/test-diff-pkg-ctf/test-rpm-report-2.txt: Adjust. + +2024-08-16 Dodji Seketeli + + ir: Handle ptr to fn type member with empty void return type + * src/abg-ir.cc (add_outer_ptr_to_mbr_type_expr): If the function + type has no return type, consider it as void type. + +2024-08-16 Dodji Seketeli + + reader: Avoid empty return type node for a function type IR + * src/abg-reader.cc (build_function_type): If the return type node + is empty, use a void type node. + +2024-08-16 Dodji Seketeli + + ir: Don't cache internal name of non-canonicalized function types + * src/abg-ir.cc (function_type::get_cached_name): Do not cache + internal name for non-canonicalized function types. + +2024-08-16 Dodji Seketeli + + ir: Improve legibility of set_member_function_is_virtual + * src/abg-ir.cc (set_member_function_is_virtual): Remove + useless white space and use clearer helper function. + +2024-08-06 Dodji Seketeli + + abidw: Make generic options like --verbose work with the ABIXML front-end + * tools/abidw.cc (set_generic_options): Take a fe_iface in + parameter, not an elf_based_reader. + (perform_self_comparison): Call set_generic_options. + +2024-08-13 Dodji Seketeli + + reader: Fix building of reference type + * src/abg-reader.cc (build_reference_type_def): Remove unnecessary + condition. + +2024-08-13 Dodji Seketeli + + reader: Avoid crashing on empty scopes in reader::push_decl_to_scope + * src/abg-reader.cc (reader::push_decl_to_scope): It's only if + there is a non-nil scope that the assert can be reached. + +2024-08-06 Dodji Seketeli + + ir: Fix comment for translation_unit::get_global_scope + * src/abg-ir.cc (translation_unit::get_global_scope): Fix comment. + +2024-08-06 Dodji Seketeli + + ir: Speed up enum comparison + * src/abg-ir.cc (equals): In the overload for enums, compare + enumerators naively for the case both enums are naively equal. + +2024-08-05 Dodji Seketeli + + ir: Support comparing a class_decl against a class_or_union + * src/abg-ir.cc (class_decl::operator==): Support comparing + against a class_or_union. + +2024-08-05 Dodji Seketeli + + ir: Support canonical type adjustments for decl-only class types + * src/abg-ir.cc (maybe_adjust_canonical_type): Look through + decl-only classes to get their definition. + +2024-08-01 Dodji Seketeli + + ir: Make odr_is_relevant support support artifacts with no TU set yet + * src/abg-ir.cc (odr_is_relevant): Consider that an artifact with + no associated TU is not relevant for ODR considerations. + +2024-08-01 Dodji Seketeli + + ir: add_decl_to_scope shouldn't abort on nullptr scopes + * src/abg-ir.cc (add_decl_to_scope): Do not abort on an empty + scope. + +2024-08-01 Dodji Seketeli + + ir: Fix getting the translation unit for an ABI artifact + * include/abg-fwd.h (get_translation_unit): Take a + type_or_decl_base parameter, not a decl_base. + * src/abg-ir.cc (get_translation_unit): Likewise. If no + translation has yet been associated with the ABI artifact, get it + from its scope. + (type_or_decl_base::get_corpus): Use the new get_translation_unit. + (maybe_set_translation_unit): Assert that the translation unit is + non-nil. + +2024-07-31 Dodji Seketeli + + Use smart pointers for variables exported from the ABI corpus + * include/abg-comparison.h (string_var_ptr_map): Use a + var_decl_sptr rather than a var_decl*. + * include/abg-corpus.h (corpus::{variable, variables_set}): + Likewise. + (corpus::lookup_variable): Return a var_decl_sptr not a var_decl*. + (corpus::exported_decls_builder::maybe_add_var_to_exported_vars): + Take a var_decl_sptr, not a var_decl*. + * include/abg-fe-iface.h + (fe_iface::add_var_to_exported_or_undefined_decls): Likewise. + * include/abg-ir.h (istring_var_decl_ptr_map_type): Use a + var_decl_sptr rather than a var_decl*. + * src/abg-btf-reader.cc (reader::build_ir_node_from_btf_type): + Adjust call to add_var_to_exported_or_undefined_decls. + * src/abg-comparison-priv.h (var_comp::operator()()): Add a new + overload for var_decl_sptr. + (corpus_diff::priv::{deleted_variable_is_suppressed, + deleted_variable_is_suppressed}): Take a var_decl_sptr not a + var_decl*. + (sort_string_var_ptr_map): Take ... + * src/abg-comparison.cc (sort_string_var_ptr_map): ... a + vector rather than a vector. + (corpus_diff::priv::ensure_lookup_tables_populated): Adjust. + (variable_is_suppressed): Likewise. + (corpus_diff::priv::{deleted_variable_is_suppressed, + added_variable_is_suppressed}): Likewise. + * src/abg-corpus-priv.h (str_var_ptr_map_type) + (istr_var_ptr_map_type): Use a var_decl_sptr rather than a + var_decl*. + (corpus::exported_decls_builder::priv::{add_var_to_map, + keep_wrt_id_of_vars_to_keep, keep_wrt_regex_of_vars_to_suppress, + keep_wrt_regex_of_vars_to_keep}): Likewise. + (corpus::exported_decls_builder::priv::vars): Likewise. + * src/abg-corpus.cc + (corpus::exported_decls_builder::maybe_add_var_to_exported_vars): + Likewise. + (var_comp::operator()()): Add an overload for var_decl_sptr. + (corpus::lookup_variable): Return var_decl_sptr rather than + var_decl*. + * src/abg-ctf-reader.cc (reader::process_ctf_archive): Adjust. + * src/abg-dwarf-reader.cc (build_ir_node_from_die): Adjust. + * src/abg-fe-iface.cc + (fe_iface::add_var_to_exported_or_undefined_decls): Take a + var_decl_sptr rather than a var_decl*. + * src/abg-reader.cc (build_class_decl, handle_var_decl): Adjust. + * src/abg-writer.cc (write_translation_unit): Likewise. + * tools/abicompat.cc (var_change::decl, var_change::var_change): + Likewise. + (compare_expected_against_provided_variables): Likewise. + +2024-08-07 Dodji Seketeli + + configure.ac: Fix typo triggered when --enable-big-tests is used + * configure.ac: It's "cd $ac_abs_top_srcdir/big-tests", not + "cd ac_abs_top_srcdir/big-tests" + +2024-07-04 Dodji Seketeli + + configure: Support the optional 'big-tests' sub-directory + * Makefile.am: Add big-tests,clean-big-tests and full-check + targets. + * configure.ac: Add an --enable-big-tests option. For now, this + option is mandatory to handle the optional 'big-tests' support. + If the --enable-big-tests option is provided and if the + 'big-tests' sub-directory is present, configure the big-tests/ + sub-package. + * .gitmodules: New sub-module configuration to get + git://sourceware.org/git/libabigail-tests and stick into ... + * big-tests: ... this directory as a sub-module. + * CONTRIBUTING: Update this to explain how to get the Big Tests + going. + * tests/Makefile.am: Update the test summary for the + check-self-compare target. + +2024-07-09 Dodji Seketeli + + abidw: Support the --abidiff option for Linux Kernel trees + * include/abg-corpus.h (is_corpus_group): Declare ... + * src/abg-corpus.cc (is_corpus_group): ... new function. + * src/abg-ctf-reader.cc (create_reader): Support --debug-abidiff + when the package is configured with --enable-debug-self-comparison. + * tools/abidw.cc (load_corpus_and_write_abixml): Factorize self + comparison code out into ... + (perform_self_comparison): ... this. + (load_kernel_corpus_group_and_write_abixml): Use the new + perform_self_comparison to perform self comparison when the + --abidiff option is provided. Also, support --debug-abidiff when + the package is configured with --enable-debug-self-comparison. + +2024-07-09 Dodji Seketeli + + ir,comparison,default-reporter: Consider sub-ranges in array diffs + * include/abg-comparison.h (array_diff::array_diff): Take a vector + of sub-range diffs as children diff nodes. + (array_diff::{subrange_diffs, any_subrange_diff_to_be_reported}): + Declare new methods. + (is_anonymous_subrange_diff): Declare new function. + * src/abg-comp-filter.cc (integral_type_has_harmless_name_change): + Define new function. + (has_harmless_name_change): Use the new + integral_type_has_harmless_name_change. + * src/abg-comparison-priv.h (array_diff::priv::subrange_diffs_): + Define new data member. + * src/abg-comparison.cc (is_anonymous_class_or_union_diff): Fix + comment. + (is_anonymous_subrange_diff): Define new function. + (array_diff::chain_into_hierarchy): Append sub-range diffs as + children nodes of the array_diff node. + (array_diff::array_diff): Take a vector of sub-range diffs as + children diff nodes. + (array_diff::{subrange_diffs, any_subrange_diff_to_be_reported}): + Define new methods. + (array_diff::has_changes): Take sub-range diffs into account. + (compute_diff): In the overload for array_type_def, compute diffs + for sub-ranges as part of the diff for array_type_defs. + (leaf_diff_node_marker_visitor::visit_begin): Do not consider an + anonymous sub-range diff node as being a leaf diff node to report + about. + (redundancy_marking_visitor::visit_end): Report all sub-range diff + nodes changes; do not propagate their (potential) redundancy to + their array_diff node parent. + * src/abg-default-reporter.cc (default_reporter::report): In the + overload for array_diff, if there is a sub-range change to be + reported, then report it. + * src/abg-ir-priv.h (real_type::base_type): Add SIZE_BASE_TYPE, + SSIZE_BASE_TYPE, BIT_SIZE_BASE_TYPE, SBIT_SIZE_BASE_TYPE, + ARRAY_SIZE_BASE_TYPE enumerators to this enum. + * src/abg-ir.cc (parse_base_real_type): Support parsing real type + names that are __ARRAY_SIZE_TYPE__, sizetype, ssizetype, + bitsizetype and sbitsizetype. + (real_type::to_string): Support IZE_BASE_TYPE, SSIZE_BASE_TYPE, + BIT_SIZE_BASE_TYPE, SBIT_SIZE_BASE_TYPE and ARRAY_SIZE_BASE_TYPE + enumerators. + (equals): In the overload for array_type_def::subrange_type, + compare the underlying types of the sub-ranged. In the overload + for array_type_def, consider sub-range changes mismatch as a local + non-type change. This is so that changes to sub-ranges don't get + filtered out because changes to element types are redundant. + * src/abg-reporter-priv.cc (represent): In the overload for + subrange_diff, clean up reporting of change of bound values. + Also, add reports of changes from non-finite to finite size. + * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt: + Adjust. + * Tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt: + Likewise. + * tests/data/test-abidiff-exit/ada-subrange/test2-ada-subrange-redundant/test2-ada-subrange-redundant-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/ada-subrange/test2-ada-subrange-redundant/test2-ada-subrange-redundant-report-2.txt: + Likewise. + * tests/data/test-abidiff-exit/test-allow-type-array-v0--v1-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/test-allow-type-array-v0--v3-report-1.txt: + Likewise. + * tests/data/test-abidiff/test-PR27985-report.txt: Likewise. + * tests/data/test-diff-dwarf/test10-report.txt: Likewise. + * tests/data/test-diff-dwarf/test11-report.txt: Likewise. + * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang-report-0.txt: + Likewise. + * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc-report-0.txt: + Likewise. + * tests/data/test-diff-filter/PR24430-fold-qualified-array-report-0.txt: + Likewise. + * tests/data/test-diff-filter/test-PR29811-0-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-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-diff-pkg/nss-3.23.0-1.0.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-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/test-has-data-member-inserted-at-1-report-1.txt: + Likewise. + * tests/data/test-diff-suppr/test-has-strict-flexible-array-data-member-conversion-report-2.txt: + Likewise. + +2024-07-08 Dodji Seketeli + + ir: Rename integral_type into real_type + * include/abg-fwd.h (is_real_type): Declare new function. + * src/abg-ctf-reader.cc (process_ctf_base_type): Adjust. + * src/abg-dwarf-reader.cc (die_qualified_type_name) + (build_type_decl): Adjust. + * src/abg-ir-priv.h (class real_type): Rename class integral_type + into this. + * src/abg-ir.cc (get_internal_real_type_name, operator|) + (operator&, operator~, operator|=, operator&=) + (parse_real_type_modifier, parse_base_real_type, parse_real_type) + (real_type::{real_type, get_base_type, get_modifiers, + set_modifiers, to_string, operator string()}): + s/integral_type/real_type. + (type_decl::{type_decl, get_qualified_name, + get_pretty_representation}): Adjust. + (is_real_type): Define new function. + (is_integral_type): Use the new is_real_type. + +2024-07-08 Dodji Seketeli + + ir: Don't strip typedefs from parms and return type when comparing fns + * src/abg-ir.cc (equals): In the overloads from function_type and + function_decl::parameter, do not strip typedefs off of types + becore comparing them. + * tests/data/test-abidiff-exit/PR30329/PR30329-report-1.txt: + Adjust. + * tests/data/test-abidiff-exit/PR30503/libsdl/libsdl-1.2.60-1.2.64-report.txt: + Adjust. + * tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt: + Adjust. + * tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-2.txt: + Adjust. + * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. + * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Adjust. + * tests/data/test-diff-dwarf/test2-report.txt: Adjust. + * tests/data/test-diff-filter/test3-report.txt: Adjust. + * tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: + Adjust. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. + * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. + * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Adjust. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Adjust. + +2024-07-05 Dodji Seketeli + + reader: Fix building of variadic parameter type + * src/abg-ir-priv.h (type_topo_comp::operator()): Do not compare + types using their location anymore. It's unnecessary (now that + types are sorted before canonicalization) and it wreaks havoc with + the new properly constructed variadic parameter types. + * src/abg-reader.cc (build_ir_node_for_variadic_parameter_type): + Define new function. Add variadic parameter type to the global + scope of the current translation unit. + (build_function_parameter, build_type_decl): Use the new + build_ir_node_for_variadic_parameter_type. + * tests/data/test-read-write/test17.xml: Adjust. + * tests/data/test-read-write/test19.xml: Likewise. + * tests/data/test-read-write/test20.xml: Likewise. + * tests/data/test-read-write/test21.xml: Likewise. + * tests/data/test-read-write/test22.xml: Likewise. + * tests/data/test-read-write/test23.xml: Likewise. + * tests/data/test-read-write/test25.xml: Likewise. + * tests/data/test-read-write/test26.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. + +2024-07-05 Dodji Seketeli + + reader: Fix building of void and void pointer types + * src/abg-reader.cc (build_ir_node_for_void_pointer_type) + (build_ir_node_for_void_type): Add the type to its scope and + schedule it for canonicalization just once. + +2024-07-05 Dodji Seketeli + + reader: Simplify logic of get_or_read_and_add_translation_unit + * src/abg-reader.cc (get_or_read_and_add_translation_unit): + Simplify logic. + +2024-07-05 Dodji Seketeli + + reader: Simplify type canonicalization invocation + * src/abg-reader.cc (reader::maybe_canonicalize_type): Remove. + (reader::schedule_type_for_canonicalization): Do not schedule + nullptr types for canonicalization. + (reader::perform_type_canonicalization): Rename + perform_late_type_canonicalizing into this. + (reader::{read_corpus, build_or_get_type_decl}): Adjust call to + maybe_canonicalize_type into schedule_type_for_canonicalization. + (read_translation_unit_from_file) + (read_translation_unit_from_buffer, read_translation_unit) + (build_function_decl, build_ir_node_for_void_type) + (build_array_type_def, build_ir_node_for_void_pointer_type) + (build_class_decl, build_union_decl) + (build_class_tdecl, build_type_tparameter, build_type_composition) + (build_template_tparameter, build_type, handle_type_decl) + (handle_qualified_type_decl, handle_pointer_type_def) + (handle_reference_type_def, handle_function_type) + (handle_array_type_def, handle_enum_type_decl) + (handle_typedef_decl, handle_class_decl, handle_union_decl): + Likewise. + +2024-07-05 Dodji Seketeli + + reader: Fix corpus group reading + * src/abg-fe-iface.cc (fe_iface::priv::initialize): Do not clear + the corpus group upon initialization. + * src/abg-reader.cc (reader::initialize): Define new function. + Make it call fe_iface::initialize. + (reader::clear_per_corpus_data): Remove. + (reader::read_corpus): Remove call to clear_per_corpus_data. + (reader::read_corpus_group_from_input): After calling + reader::read_corpus and adding the resulting corpus to the group, + get the next sibling XML element node. If it's an "abi-corpus" + node then re-initialize the reader by invoking the new + reader::initialize and move on to read it by invoking + reader::read_corpus again. + * tests/data/test-diff-suppr/test45-abi-report-1.txt: Adjust. + +2024-07-10 Dodji Seketeli + + ctf-reader: Fix analyzing single kernel binaries + * src/abg-ctf-reader.cc (reader::slurp_elf_info): Do not crash on + a kernel binary that has no CTF section because the CTF + information is in a .ctfa file in the same directory. + (reader::read_corpus): Support loading a CTF archive for a single + kernel binary. Also, support loading the CTF archive from the CTF + sections in the binary itself not necessarily from a .ctfa file in + the same directory. + +2024-06-28 Dodji Seketeli + + ctf-reader: During re-initialization, only clear canonicalize-able types + * src/abg-ctf-reader.cc (reader::types_to_canonicalize): Add data + member. + (reader::add_type): Add the new type to the vector of types to be + canonicalized. Update comment. + (reader::canonicalize_all_types): Now that the reader maintains + the vector of types to be canonicalized, just pass that vector to + canonicalize_types. reader::types_map contains all the types that + have been created in all the binaries processed by this reader so + far. Many of these types have already been canonicalized at the + end of the analysis of binaries that have already been processed. + Only the types created during the processing of the current binary + have not yet be canonicalized and reader::types_to_canonicalize is + where they are maintained. So reader::types_map should be left + alone by this function. + (reader::initialize): Do not close the CTF archive here. Do not + clear reader::{types_map, corpus_group} either. + (reader::read_corpus): Use nullptr, not NULL. Make sure to not + re-open an archive that has already been opened. + (reader::~reader): Mark a closed archive. This is more cosmetic + than anything else. + +2024-07-15 Dodji Seketeli + + ctf-reader: Do not set data member offsets for unions + * src/abg-ctf-reader.cc (process_ctf_sou_members): Do not set any + union data member offset. + +2024-07-09 Dodji Seketeli + + corpus: Support adding translation units with empty path + * src/abg-corpus.cc (corpus::add): Do not require that the path of + the translation unit be non-empty. + +2024-07-15 Dodji Seketeli + + tools-utils,btf-reader: Take modules into account for corpus group + *type* with libabigail IR artifact. + With this changes, abidw can now analyze and emit the ABIXML for a + linux kernel tree in 28 seconds, using BTF. It can self-compare a + kernel tree in 36 seconds. + * src/abg-btf-reader.cc (btf_type_to_abi_artifact_map_type): + Rename btf_type_id_to_abi_artifact_map_type into this. Make it + associate a btf_type* to a libabigail IR, rather than a type ID to + a libabigail IR. + (reader::{base_btf_handle_, base_btf_file_name_, + split_btf_handle_, split_btf_file_name_, split_btfs_to_free_}): + Define new data members. + (reader::{btf_handle_}): Remove. + (reader::base_btf_handle): Renamed btf_handle into this. Create + the BTF object using btf__parse. Store the name of the binary + into reader::base_btf_file_name_. + (reader::read_split_btf): Define new member function. + (reader::btf_handle): This is new code for an existing member + function name. Return the current split BTF object handle if + applicable, otherwise create the base BTF object handle. + (reader::btf_type_to_artifacts_): Renamed + btf_type_id_to_artifacts into this. + (reader::associate_artifact_to_btf_type): Renamed + associate_artifact_to_btf_type_id into this. + (reader::schedule_type_for_canonicalization): Do not schedule a + type that has already been canonicalized. + (reader::nr_btf_types): Take a BTF* parameter. + (reader::~reader): Free all the allocated split BTF objects. + (reader::read_debug_info_into_corpus): If we are looking at a + split BTF, then set the first type ID as the one right after the + last type ID of the base BTF. + (reader::build_ir_node_from_btf_type): Clean-up the logic for + building type void type. + (reader::{build_ir_node_for_void_type, + build_ir_node_for_void_pointer_type, + build_ir_node_for_variadic_parameter_type, + build_enum_underlying_type, build_array_type}): Schedule type for + canonicalization at the end of the IR construction, not right + away. + * src/abg-tools-utils.cc (create_best_elf_based_reader): Pass + show_all_types and linux_kernel_mode arguments to + btf::create_reader. + +2024-07-09 Dodji Seketeli + + elf-based-reader: Clean up logic of elf_based_reader::read_and_add_corpus_to_group + * src/abg-elf-based-reader.cc + (elf_based_reader::read_and_add_corpus_to_group): Fix logic. + +2024-07-09 Dodji Seketeli + + ir: Fix a potential crash in canonicalize_types + * src/abg-ir-priv.h (canonicalize_types): Avoid crashing when + de-referencing an iterator to a nullptr type. + +2024-07-10 Ross Burton + + configure.ac: improve fts checks + * configure.ac: Use AC_SEARCH_LIBS to look for fts_open in libc + and in libfts if necessary. Remove the use of FTS_LIBS which is + now unnecessary. + * src/Makefile.am: Do not use FTF_LIBS as it's now unnecessary. + * tools/Makefile.am: Likewise. + +2024-06-21 Dodji Seketeli + + btf-reader: Add missing data members reset to reader::initialize + * src/abg-btf-reader.cc (btf::reader::initialize): Clear + types_to_canonicalize_, btf_type_id_to_artifacts_ and cur_tu_. + +2024-06-21 Dodji Seketeli + + dwarf-reader: Fix reader::initialize to clear per corpus data + * src/abg-dwarf-reader.cc (reader::initialize): Call + clear_per_corpus_data. + (reader::read_debug_info_into_corpus): Remove the call to + clear_per_corpus_data from here. + +2024-06-21 Dodji Seketeli + + ir: Cache the pretty representation used during pre-canonicalization type sorting + * include/abg-ir.h (decl_base::get_cached_pretty_representation): + Declare new member function. + * src/abg-ir-priv.h ({type,decl}_topo_comp::operator()): Use + {type,decl}_base::get_cached_pretty_representation instead of + get_pretty_representation.: + * src/abg-ir.cc (decl_base::priv::{internal_cached_repr_, + cached_repr}): Define new data members. + (decl_base::get_cached_pretty_representation): + Define new member function. + (type_base::get_cached_pretty_representation): Cache pretty + representation even for non-canonicalized types. Fix comments. + +2024-06-21 Dodji Seketeli + + ctf-reader: Fix re-initialization of the CTF reader + * src/abg-ctf-reader.cc (reader::reader): Initialize ctfa, + ctf_sect, symtab_sect and strtab_sect data members. + (reader::initialize): In the overload taking no argument, make + sure to free the ctfa data member before setting it to nullptr. + In the overload that takes arguments, make sure to invoke + reader::initialize() to really free the data used. Also, improve + the comments. + +2024-06-19 Claudiu Zissulescu + + ctf-reader: Add time logging to CTF reader + * src/abg-ctf-reader.cc (do_log()): Getter of the do_log flag. + (read_corpus()): Add time logging. + +2024-06-19 Claudiu Zissulescu + + ctf-reader: Optimize calling sorting function for functions and variables. + * abg-ctf-reader.cc (process_ctf_archive()): Move + canonicalize_all_types(), sort_functions() and sort_variables()... + (read_corpus()): ...here, just after calling process_ctf_archive(). + +2024-06-12 Romain Geissler + + leaf-reporter: Fix build with gcc 4.9. + * src/abg-leaf-reporter.cc (leaf_reporter::report): In the + overload for corpus_diff, avoid using auto type deduction in + for-each loop. + +2024-05-31 Dodji Seketeli + + btf-reader: Fix re-use of the BTF reader for several binaries in a row + * src/abg-btf-reader.cc (reader::initialize): Free the btf handle + first thing as part of the re-initialization. + (reader::~reader): Once the BTF handle has been freed, set it to + nil to show that it's been deleted. + (reader::read_debug_info_into_corpus): If no BTF handle could be + retrieved then it means no BTF data was found on the binary. + Thus, return an empty corpus. + +2024-05-31 Dodji Seketeli + + abidw: make the --lt option support --btf + * tools/abidw.cc (load_kernel_corpus_group_and_write_abixml): + Support --btf. + +2024-05-31 Dodji Seketeli + + tools-utils.cc: Support collecting kernel binary paths build from sources + * src/abg-tools-utils.cc (get_binary_paths_from_kernel_dist): Look + for kernel modules under the root directory by default. + +2024-05-31 Dodji Seketeli + + Bug 31793 - tools-utils: Avoid endless loop in is_regular_file for directories + * src/abg-tools-utils.cc (is_regular_file): Loop on symbolic links + only. + +2024-05-15 Dodji Seketeli + + {btf,dwarf,ctf,abixml}-reader: Fix size of subrange type + * by the size of the base type designated by the DW_AT_type + attribute. + * or by the DW_AT_byte_size or DW_AT_bit_size attribute that might + be present on the DIE. + That is different from the length property carried by the subrange + type. + The patch updates the four front-rends (DWARF, BTF, CTF and ABIXML) to + fix the setting process of the size of the subrange type and adjusts + the testsuite accordingly. + * src/abg-btf-reader.cc (reader::build_array_type): The size of + the subrange is not defined specifically. Let's set it to the + default address size of the translation unit. + * src/abg-ctf-reader.cc (build_array_ctf_range): If no basis type + was found, then set the size of the subrange type to the default + address size of the translation unit. + * src/abg-dwarf-reader.cc (build_subrange_type): Consider the + DW_AT_byte_size and DW_AT_bit_size attribute of + DW_TAG_subrange_type if present. Otherwise, if the basis type is + present, its size as the size of the subrange type. Otherwise, + use the default address size of the translation unit as the size + of the subrange type. + * src/abg-ir.cc (array_type_def::subrange_type::subrange_type): If + the underlying (basis) type is present, then use its size as the + size of the subrange type. Otherwise the size is zero. + (array_type_def::subrange_type::set_underlying_type): Update the + size of the subrange when setting a new underlying (basis) type. + * src/abg-reader.cc (build_subrange_type): Read and set the size + of the subrange. + * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt: + Adjust. + * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt: + Likewise. + * tests/data/test-abidiff-exit/ada-subrange/test2-ada-subrange-redundant/test2-ada-subrange-redundant-report-1.txt: + Likewise. + * tests/data/test-abidiff-exit/ada-subrange/test2-ada-subrange-redundant/test2-ada-subrange-redundant-report-2.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. + +2024-05-15 Dodji Seketeli + + configure: Fix detection of BTF header to enable the BTF front-end + * configure.ac: Use a new HAS_BTF_HEADERS to store the detection + status for the btf.h header. Emit a better notice message when + the BTF header file is found. + Tested-by: Cestmir Kalina + +2024-05-10 Dodji Seketeli + + btf-reader: Ignore BTF nodes that ought to be ignored + * src/abg-btf-reader.cc (build_ir_node_from_btf_type): Ignore and + return nil for node of kind BTF_KIND_DECL_TAG, BTF_KIND_DATASEC, + and BTF_KIND_UNKN. For all other nodes, abort. + # Veuillez saisir le message de validation pour vos + modifications. Les lignes # commençant par '#' seront ignorées, et + un message vide abandonne la validation. # # Sur la branche + master # Votre branche est à jour avec 'origin/master'. # # + Modifications qui seront validées : # modifié : + src/abg-btf-reader.cc # # Fichiers non suivis: # + doc/api/libabigail.doxy.bak # patches/ # prtests/ # # + ------------------------ >8 ------------------------ # Ne touchez + pas à la ligne ci-dessus. # Tout ce qui suit sera éliminé. + diff --git a/src/abg-btf-reader.cc b/src/abg-btf-reader.cc + index f22e92bf..67206bb4 100644 + --- a/src/abg-btf-reader.cc + +++ b/src/abg-btf-reader.cc + @@ -486,12 +486,16 @@ public: + #ifdef WITH_BTF_KIND_TYPE_TAG + case BTF_KIND_TYPE_TAG/* Type Tag */: + + break; + #endif + #ifdef WITH_BTF_KIND_DECL_TAG + case BTF_KIND_DECL_TAG/* Decl Tag */: + + break; + #endif + case BTF_KIND_DATASEC/* Section */: + + break; + case BTF_KIND_UNKN/* Unknown */: + + break; + default: + ABG_ASSERT_NOT_REACHED; + break; + +2024-05-07 Dodji Seketeli + + dwarf-reader,ir: Unify type sorting & sort types before c14n + * src/abg-ctf-reader.cc (reader::canonicalize_all_types): Use a + temporary vector as input for ir::canonicalize_types because it + needs an ordered container as it now sorts types before + canonicalizing them. + * src/abg-dwarf-reader.cc (reader::types_to_canonicalize): Add a + non-const overload for this accessor. + * src/abg-ir-priv.h (compare_using_locations) + (is_ptr_ref_or_qual_type): Add a declaration for these functions + defined in abg-ir.cc. + (struct decl_topo_comp, struct type_topo_comp): Move these here, + from abg-ir.cc. + (canonicalize_types): Sort the types before canonicalizing them. + * src/abg-ir.cc (compare_using_locations): Turn this from static + to non-static, now that it's declared in abg-ir-priv.h. + (struct decl_topo_comp, struct type_topo_comp): Move these into + abg-ir-priv.h. + * src/abg-reader.cc: Include abg-ir-priv.h. + (reader::perform_late_type_canonicalizing): Use + ir::canonicalize_types, rather than canonicalizing types one by + one. + * src/abg-writer.cc: Include abg-ir-priv.h. + (struct type_topo_comp): Remove. + (write_context::sort_types): Use type_topo_comp from abg-ir-priv.h + instead of type_topo_comp that was removed. + * 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/PR22015-libboost_iostreams.so.abi: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.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/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + * tests/data/test-read-write/test28-without-std-fns-ref.xml: + Likewise. + * tests/data/test-read-write/test28-without-std-vars-ref.xml: + Likewise. + +2024-05-09 Dodji Seketeli + + elf-reader: Avoid crashing when looking at non-existing variable symbol + * src/abg-elf-reader.cc (reader::variable_symbol_is_exported): Do + not crash when the symbol we are looking at is non-present. + +2024-05-06 Dodji Seketeli + + Suppress patch file that was wrongly added to the repository + * patches/0001-WIP-Emit-read-undefined-interfaces-to-from-ABIXML.patch: + Remove from the repository. + +2024-03-26 Dodji Seketeli + + test-read-common: Fix error message + * tests/test-read-common.cc (test_task::run_abidw): Fix error + message and emit it to stderr directly. + +2024-03-27 Dodji Seketeli + + dwarf-reader,ir: Merge member fns of classes + * src/abg-dwarf-reader.cc (reader::{copy_missing_member_functions, + contains_anonymous_class, merge_member_functions_of_classes, + merge_member_functions_in_classes_of_same_names}): Define new + member functions. + (reader::read_debug_info_into_corpus): Call the reader::new + merge_member_functions_in_classes_of_same_names. + * src/abg-ir.cc (maybe_adjust_canonical_type): When looking at the + canonical type C of a type T, if they both come from the same + corpus, assert that C has all the member functions of T. This + because the DWARF reader now ensures that all types have the same + name in a given corpus have the same member functions. + * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. + * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. + * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test-libandroid.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/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: + Likewise. + * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: + Likewise. + * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: + Likewise. + * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. + +2024-05-03 Dodji Seketeli + + dwarf-reader,ir: Improve detection of method types & implicit parms + * include/abg-ir.h (method_type::get_is_for_static_method): Add + new method. + * src/abg-dwarf-reader.cc (fn_die_first_parameter_die) + (member_fn_die_has_this_pointer, die_peel_typedef): Define new + static functions. + (die_this_pointer_is_const): Make this support DIEs representing + const pointers. + (die_function_type_is_method_type): Use the new + member_fn_die_has_this_pointer function rather than (wrongly) open + coding its functionality. If the (member) function DIE has no + this pointer DIE and if the function is at class scope, then we + are looking a static member function. + (finish_member_function_reading): Use the new + method::get_is_for_static_method method rather than open-coding + its functionality. + * src/abg-ir.cc (method_type::get_is_for_static_method): Define + new method. + (type_topo_comp::operator()): In this comparison + operator for types, if two method types have the same string + representation then if one method type is for a static method, + then make the non-static method type come first. + (function_type::get_first_non_implicit_parm): The first parameter + of a function can only carry the "this pointer" if it's + artificial. + * tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt: + Adjust. + * tests/data/test-abidiff/test-struct1-report.txt: Likewise. + * tests/data/test-abidiff/test-struct1-v0.cc.bi: Likewise. + * tests/data/test-abidiff/test-struct1-v1.cc.bi: Likewise. + * tests/data/test-annotate/test14-pr18893.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-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: + Likewise. + * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: + Likewise. + * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.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/test35-pr18754-no-added-syms-report-1.txt: + Likewise. + * tests/data/test-diff-filter/test41-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/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. + * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. + * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. + * tests/data/test-read-dwarf/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/test9-pr18818-clang.so.abi: Likewise. + +2024-03-26 Dodji Seketeli + + writer: Fix control of emitting parm names in function types + * src/abg-writer.cc (write_function_type): Control emitting of + parameter names with the write_context::get_write_parameter_names + property. + * tests/test-annotate.cc (main): Do not emit function parameter + names. + * tests/test-read-dwarf.cc (main): Likewise. + * tests/data/test-annotate/libtest23.so.abi: Adjust. + * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. + * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-annotate/test0.abi: Likewise. + * tests/data/test-annotate/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/test4.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-read-dwarf/PR22015-libboost_iostreams.so.abi: + Likewise. + * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. + * tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: + Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. + * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: + Likewise. + * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. + * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise. + * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: + Likewise. + * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise. + * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise. + * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. + * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. + * tests/data/test-read-dwarf/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/test4.so.abi: Likewise. + * tests/data/test-read-dwarf/test4.so.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/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-05-03 Dodji Seketeli + + ir: Make IR node visitor aware of non-canonicalized types + * src/abg-ir.cc (ir_node_visitor::{mark_type_node_as_visited, + type_node_has_been_visited}): Invoke is_non_canonicalized_type to + know if we should expect a type to have a canonical type or not. + +2024-04-26 Dodji Seketeli + + ir,writer: Fix function type naming & fn type annotation in ABIXML + * src/abg-ir.cc (get_function_type_name, get_method_type_name): + Use get_type_name in lieu of get_pretty_representation. + * src/abg-writer.cc (annotate): In the overload for function_type, + use get_function_name instead of open coding function type + representations. + * tests/data/test-annotate/test-pointer-to-member-1.o.annotated.abi: Adjust. + * 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-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise. + * tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: Likewise. + * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: + Likewise. + * tests/data/test-read-dwarf/PR25007-sdhci.ko.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. + +2024-04-19 Sam James + + tests/runtestabidb?.sh.in: Use bash shebang + * tests/runtestabidb[1-2].sh.in: Use bash shebang. + +2024-04-29 Dodji Seketeli + + fedabipkgdiff: Cleanup output of ABI comparison + * tools/fedabipkgdiff: Adjust copyright year + (abipkgdiff): Strip out trailing spaces from the stdout + string. Emit a clear message when no ABI change was found. + * tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt: + Adjust. + * tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt: + Adjust. + * tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt: + Adjust. + * tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt: + Adjust. + * tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt: + Adjust. + * tests/data/test-fedabipkgdiff/test5-same-dir-dbus-glib-0.100.2-2.fc20.x86_64--dbus-glib-0.106-1.fc23.x86_64-report-0.txt: + Adjust. + * tests/data/test-fedabipkgdiff/test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt: + Adjust. + * tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt: + Adjust. + +2024-04-26 Frank Ch. Eigler + + configure,abidb: Make the libarchive python module optional for abidb + * configure.ac: Detect the libarchive python module as an optional + dependency for the abidb program. So far, only the git python + module remains a hard dependency. + * tools/abidb (main): Do not support the '--archive' command line + option if the libarchive python module is not present. + +2024-04-26 Dodji Seketeli + + Update Copyright for year 2024 + * update-copyright.sh: Update the date in this script. Running + the script then yields the changes below. + * include/abg-btf-reader.h: Update copyright year as a result of + running update-copyright.sh above. + * include/abg-comp-filter.h: Likewise. + * include/abg-comparison.h: Likewise. + * include/abg-config.h: Likewise. + * include/abg-corpus.h: Likewise. + * include/abg-ctf-reader.h: Likewise. + * include/abg-cxx-compat.h: Likewise. + * include/abg-diff-utils.h: Likewise. + * include/abg-dwarf-reader.h: Likewise. + * include/abg-elf-based-reader.h: Likewise. + * include/abg-elf-reader.h: Likewise. + * include/abg-fe-iface.h: Likewise. + * include/abg-fwd.h: Likewise. + * include/abg-hash.h: Likewise. + * include/abg-ini.h: Likewise. + * include/abg-interned-str.h: Likewise. + * include/abg-ir.h: Likewise. + * include/abg-libxml-utils.h: Likewise. + * include/abg-reader.h: Likewise. + * include/abg-regex.h: Likewise. + * include/abg-reporter.h: Likewise. + * include/abg-sptr-utils.h: Likewise. + * include/abg-suppression.h: Likewise. + * include/abg-tools-utils.h: Likewise. + * include/abg-traverse.h: Likewise. + * include/abg-viz-common.h: Likewise. + * include/abg-viz-dot.h: Likewise. + * include/abg-viz-svg.h: Likewise. + * include/abg-workers.h: Likewise. + * include/abg-writer.h: Likewise. + * src/abg-btf-reader.cc: Likewise. + * src/abg-comp-filter.cc: Likewise. + * src/abg-comparison-priv.h: Likewise. + * src/abg-comparison.cc: Likewise. + * src/abg-config.cc: Likewise. + * src/abg-corpus-priv.h: Likewise. + * src/abg-corpus.cc: Likewise. + * src/abg-ctf-reader.cc: Likewise. + * src/abg-default-reporter.cc: Likewise. + * src/abg-diff-utils.cc: Likewise. + * src/abg-dwarf-reader.cc: Likewise. + * src/abg-elf-based-reader.cc: Likewise. + * src/abg-elf-helpers.cc: Likewise. + * src/abg-elf-helpers.h: Likewise. + * src/abg-elf-reader.cc: Likewise. + * src/abg-fe-iface.cc: Likewise. + * src/abg-hash.cc: Likewise. + * src/abg-ini.cc: Likewise. + * src/abg-internal.h: Likewise. + * src/abg-ir-priv.h: Likewise. + * src/abg-ir.cc: Likewise. + * src/abg-leaf-reporter.cc: Likewise. + * src/abg-libxml-utils.cc: Likewise. + * src/abg-reader.cc: Likewise. + * src/abg-regex.cc: Likewise. + * src/abg-reporter-priv.cc: Likewise. + * src/abg-reporter-priv.h: Likewise. + * src/abg-suppression-priv.h: Likewise. + * src/abg-suppression.cc: Likewise. + * src/abg-symtab-reader.cc: Likewise. + * src/abg-symtab-reader.h: Likewise. + * src/abg-tools-utils.cc: Likewise. + * src/abg-traverse.cc: Likewise. + * src/abg-viz-common.cc: Likewise. + * src/abg-viz-dot.cc: Likewise. + * src/abg-viz-svg.cc: Likewise. + * src/abg-workers.cc: Likewise. + * src/abg-writer.cc: Likewise. + * tests/print-diff-tree.cc: Likewise. + * tests/test-abicompat.cc: Likewise. + * tests/test-abidiff-exit.cc: Likewise. + * tests/test-abidiff.cc: Likewise. + * tests/test-alt-dwarf-file.cc: Likewise. + * tests/test-core-diff.cc: Likewise. + * tests/test-cxx-compat.cc: Likewise. + * tests/test-diff-dwarf-abixml.cc: Likewise. + * tests/test-diff-dwarf.cc: Likewise. + * tests/test-diff-filter.cc: Likewise. + * tests/test-diff-pkg.cc: Likewise. + * tests/test-diff-suppr.cc: Likewise. + * tests/test-diff2.cc: Likewise. + * tests/test-dot.cc: Likewise. + * tests/test-elf-helpers.cc: Likewise. + * tests/test-ini.cc: Likewise. + * tests/test-ir-walker.cc: Likewise. + * tests/test-kmi-whitelist.cc: Likewise. + * tests/test-lookup-syms.cc: Likewise. + * tests/test-read-btf.cc: Likewise. + * tests/test-read-ctf.cc: Likewise. + * tests/test-read-dwarf.cc: Likewise. + * tests/test-read-write.cc: Likewise. + * tests/test-svg.cc: Likewise. + * tests/test-symtab-reader.cc: Likewise. + * tests/test-symtab.cc: Likewise. + * tests/test-tools-utils.cc: Likewise. + * tests/test-types-stability.cc: Likewise. + * tests/test-utils.cc: Likewise. + * tests/test-utils.h: Likewise. + * tools/abicompat.cc: Likewise. + * tools/abidiff.cc: Likewise. + * tools/abidw.cc: Likewise. + * tools/abilint.cc: Likewise. + * tools/abipkgdiff.cc: Likewise. + * tools/abisym.cc: Likewise. + * tools/binilint.cc: Likewise. + * tools/fedabipkgdiff: Likewise. + * tools/kmidiff.cc: Likewise. + +2024-04-22 Dodji Seketeli + + configure.ac: Update version to 2.6 + * configure.ac: + +2024-04-18 Dodji Seketeli + + {ctf,btf}-reader: Document the namespace for nicer apidoc + * include/abg-btf-reader.h (namespace btf): Add doxygen comment. + Just adding it to the *.cc won't cut it, I am not sure why. + * include/abg-ctf-reader.h (namespace ctf): Likewise. + * src/abg-btf-reader.cc (namespace btf): Add doxygen comment. + * src/abg-ctf-reader.cc (namespace ctf): Add doxygen commit. + (create_reader, reset_reader): Fix doxygen comments. + +2024-04-18 Dodji Seketeli + + doc/api/libabigail.doxy: Update to newer version. + * doc/api/libabigail.doxy: Update using doxygen -u. + +2024-04-18 Dodji Seketeli + + doc/website/mainpage.txt: Update for 2.5 release + * doc/website/mainpage.txt: + +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 diff --git a/Makefile.am b/Makefile.am index a0310368..f540ccdd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -21,7 +21,7 @@ autoconf-archive/ax_check_python_modules.m4 \ autoconf-archive/ax_prog_python_version.m4 \ autoconf-archive/ax_compare_version.m4 \ NEWS README LICENSE.txt license-change-2020.txt \ -COMPILING COMMIT-LOG-GUIDELINES VISIBILITY \ +COMPILING COMMIT-LOG-GUIDELINES VISIBILITY SECURITY \ ChangeLog gen-changelog.py \ $(headers) $(m4data_DATA) \ libabigail.pc.in @@ -30,7 +30,7 @@ libabigail.pc.in # Don't make make repeat. AM_MAKEFLAGS = --no-print-directory -.PHONY: doc +.PHONY: doc big-tests doc: html-doc man info @@ -80,7 +80,7 @@ tarball-and-tag-and-upload: tarball-and-all tarball-and-all: tag-and-all $(MAKE) tarball -tag-and-all: distcheck check-self-compare +tag-and-all: distcheck full-check $(MAKE) tag-release-only # the default for GZIP_ENV is --best, which is pretty slow for check runs @@ -94,3 +94,10 @@ distcheck-fast: check-self-compare: $(MAKE) -C tests check-self-compare +big-tests: + test -d big-tests && $(MAKE) -C big-tests check + +clean-big-tests: + test -d big-tests && $(MAKE) -C big-tests clean + +full-check: check check-self-compare big-tests diff --git a/NEWS b/NEWS index 2b4ea5dd..da5bf92d 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,315 @@ +2.8 +=== +Dodji Seketeli (30): + ChangeLog: Update for 2.7 release + NEWS: Update for 2.7 release + doc/website/mainpage.txt: Update to 2.7 + configure: Bump libabigail version to 2.8 + comparison: Emit local diff node category in tree dump + {default,leaf}-reporter: Add incompatible changes to leaf reporter + Bug 32902 - Recognize harmless type size increase + configure: Add --with-libxml2 option + tools-utils: Fix a comment + tools-utils: Fix XZ decompression after all compression data is read + libxml-utils,tools-utils: Add an I/O handler for XZ input in libxml2 + Bug 32975 - Filter out replacing a data member with a compatible union + elf-reader: Fix elfutils initialization of debuginfo lookup paths + configure: Remove the unnecessary FOUND_DWARF_GETALT_IN_LIBDW variable + fedabipkgdiff: Fix getting the latest RPM version of a given Fedora distro + Change debuginfo root paths type from vector to vector + Bug 30329 - Fix regression in support for absolute path to alt DWARF + Bug 33076 - abicompat doesn't filter out harmless diff nodes + test-abicompat: Fix color setting + Improve harmless integral type change filtering + Bug 33055 - classes_have_same_layout & types_are_compatible enter in endless loop + abg-comparison: Do not abort when a static data member is deleted + abg-comparison: Fix indentation + symtab-reader: Add missing space + abidw: Sort options documentation alphabetically + elf-reader,symtab-reader: Fix suppression of aliased symbols + Bug 33090 - Implement abidw --force-early-suppression + tests/data/test-read-dwarf/PR33090: Add missing test material + Bug 26021 - Upgrade the C++ standard to C++14 + configure: Bump libabigail_so_current to 7 + +Frank Ch. Eigler (2): + PR31533: abidb: drop debuginfod-client verbosity env variables + tests/runtestabidb2.sh.in: Take more care while doing cleanup + +Mark Wielaard (1): + tests/runtestfedabipkgdiffpy3.sh.in: Don't use which to find python3 + + +2.7 +=== +Dodji Seketeli (49): + Makefile.am: Update tag-and-all rule to do a full-check + big-tests: Update to commit bd0c1f8909a7b2f5018d54b82f7d6829c4849b59 + configure.ac: Bump version number to 2.7 + SECURITY: New security policy text + fedabipkgdiff.rst: Sort options documentation alphabetically + fedabipkgdiff: Add a new --private-dso option + abidiff.rst: Fix typo in the doc for --kmi-whitelist + configure: Support using custom builds of elfutils + Bug 32402 - dwarf-reader,ir: Recognize new DWARF 5 languages + Update copyright years for 2025 + configure.ac: Add a missing preamble + abipkgdiff: Fix spacing in usage text output + abipkgdiff: Fix indentation + tools-utils: Fix indentation + tools-utils: Add missing comment + abipkgdiff: Add more verbose logging + abipkgdiff: Add new --verbose-diff option + abipkgdiff.rst: Sort options documentation items alphabetically + abipkgdiff: Recognize stablelist files in their package + configure: Fix xxhash detection code + configure: Add $ELF_CFLAGS and $DW_CFLAGS to DEPS_CPPFLAGS + Add support for reading XZ-compressed files + abipkgdiff: Rename whitelist into stablelist + configure: Disable abidb on python version < 3.9 + Bug PR32476 - abipkgdiff: Support comparing sets of packages + big-tests: Update to latest commit 2afebc4 + {ctf,dwarf}-reader.cc: Fix a virtual method name conflict in elf_base_reader + configure.ac: Add a new --enable-inlined-xxhash option + abipkgdiff: Don't use full Linux kernel pkg path in change reports + big-tests: Sync with libabigail hashe 229682 + abipkgdiff: Avoid wrongly considering binaries being added/removed + reporter-priv: Fix a thinko in sub-range change report + comp-filter: Better detection of harmless/harmful enum changes + ir: Better handle int[5][2] changed into int[2][5] + comp-filter,ir: Simplify logic of has_harmless_name_change + ir: Recognize classes of same layout as being compatible + Bug 21296 - Normalize declaration names read from DWARF + Bug 31642 - Categorize incompatible changes on functions and variables + Bug 31642 - Don't forget filtered-out incompatible fns and var changes + Bug 28505 - Fix a case of pointer to void* change filtering + big-test: Update to e772c1e67aba14141dd16735ecdf19368b0cb29e + default.abignore: Improve default suppression for krb5 libraries + rhbz2355363 - abipkgdiff: Don't abort when alternate debug info is not found + manuals/conf.py: Update copyright years in the manuals + abidiff.rst: Sort option documentation bullets in lexicographic order + libabigail-concepts: Document the incompatible changes concept + abg-comp-filter: Fix declaration of has_harmful_name_change + abg-comp-filter: Fix some documentation thinko + manuals: Fix broken links + Bug 32794 - ir: avoid asserting in get_type_name + configure: Bump libabigail_so_current to 6 + ChangeLog: Update for 2.7 release + NEWS: Update for 2.7 release + +Sam James (1): + configure.ac: fix typos for XXHASH_LIBS, LZMA_LIBS + +2.6 +=== +Claudiu Zissulescu (3): + ctf-reader: Optimize calling sorting function for functions and variables. + ctf-reader: Add time logging to CTF reader + abg-tools-utils: Fix memory corruption when using CTF option + +Dodji Seketeli (113): + doc/website/mainpage.txt: Update for 2.5 release + doc/api/libabigail.doxy: Update to newer version. + {ctf,btf}-reader: Document the namespace for nicer apidoc + configure.ac: Update version to 2.6 + Update Copyright for year 2024 + fedabipkgdiff: Cleanup output of ABI comparison + ir,writer: Fix function type naming & fn type annotation in ABIXML + ir: Make IR node visitor aware of non-canonicalized types + writer: Fix control of emitting parm names in function types + dwarf-reader,ir: Improve detection of method types & implicit parms + dwarf-reader,ir: Merge member fns of classes + test-read-common: Fix error message + Suppress patch file that was wrongly added to the repository + elf-reader: Avoid crashing when looking at non-existing variable symbol + dwarf-reader,ir: Unify type sorting & sort types before c14n + btf-reader: Ignore BTF nodes that ought to be ignored + configure: Fix detection of BTF header to enable the BTF front-end + {btf,dwarf,ctf,abixml}-reader: Fix size of subrange type + Bug 31793 - tools-utils: Avoid endless loop in is_regular_file for directories + tools-utils.cc: Support collecting kernel binary paths build from sources + abidw: make the --lt option support --btf + btf-reader: Fix re-use of the BTF reader for several binaries in a row + ctf-reader: Fix re-initialization of the CTF reader + ir: Cache the pretty representation used during pre-canonicalization type sorting + dwarf-reader: Fix reader::initialize to clear per corpus data + btf-reader: Add missing data members reset to reader::initialize + ir: Fix a potential crash in canonicalize_types + elf-based-reader: Clean up logic of elf_based_reader::read_and_add_corpus_to_group + tools-utils,btf-reader: Take modules into account for corpus group + corpus: Support adding translation units with empty path + ctf-reader: Do not set data member offsets for unions + ctf-reader: During re-initialization, only clear canonicalize-able types + ctf-reader: Fix analyzing single kernel binaries + reader: Fix corpus group reading + reader: Simplify type canonicalization invocation + reader: Simplify logic of get_or_read_and_add_translation_unit + reader: Fix building of void and void pointer types + reader: Fix building of variadic parameter type + ir: Don't strip typedefs from parms and return type when comparing fns + ir: Rename integral_type into real_type + ir,comparison,default-reporter: Consider sub-ranges in array diffs + abidw: Support the --abidiff option for Linux Kernel trees + configure: Support the optional 'big-tests' sub-directory + configure.ac: Fix typo triggered when --enable-big-tests is used + Use smart pointers for variables exported from the ABI corpus + ir: Fix getting the translation unit for an ABI artifact + ir: add_decl_to_scope shouldn't abort on nullptr scopes + ir: Make odr_is_relevant support support artifacts with no TU set yet + ir: Support canonical type adjustments for decl-only class types + ir: Support comparing a class_decl against a class_or_union + ir: Speed up enum comparison + ir: Fix comment for translation_unit::get_global_scope + reader: Avoid crashing on empty scopes in reader::push_decl_to_scope + reader: Fix building of reference type + abidw: Make generic options like --verbose work with the ABIXML front-end + ir: Improve legibility of set_member_function_is_virtual + ir: Don't cache internal name of non-canonicalized function types + reader: Avoid empty return type node for a function type IR + ir: Handle ptr to fn type member with empty void return type + ctf-reader: Enumerate dicts in the archive rather than using their name + dwarf-reader: Better support concrete instance functions DIEs + btf-reader: Add logging methods + dwarf-reader: Fix support of suppression specifications + ctf-reader: Make logging more obvious + dwarf-reader: Do not fix ELF symbols for virtual destructors + abipkgdiff: Make --verbose enable the library's logging + Implement type hashing + ir: Remove the now useless type propagation optimization + ir: decl-only classes don't equal fully defined classes under ODR + comp-filter: Consider lvalue-ness changes on references as harmful + comp-filter: Ignore ptr size when detecting void ptr to ptr change + Don't strip typedefs in fn names when pretty-printing and comparing + reader: Avoid duplicating member types + ir: Cache the result of scope_decl::get_sorted_member_types + dwarf-reader: Avoid duplicating anonymous member types + reader: Avoid duplicating recursive types + dwarf-reader: Speed-up decl-only resolution + ir: Fix name setting of a ptr-to-mbr-type + dwarf-reader: Support LLVM's lingo of declaration-ness + reader: Improve logging in the ABIXML reader + ir: Improve type logging during type canonicalization + tools-utils: Improve logging while reading a Linux kernel + dwarf-reader: Fix building of void, void* and variadic parm types + {dwarf,btf,ctf}-reader: Set the origin of the corpus group + {btf,ctf,dwarf}-reader, ir: Fix self-comparison debugging for corpus groups + abilint: Support --verbose option + big-tests: Update git sub-module + dwarf-reader,tools-utils: Add statistics about built/suppressed functions + abidw: Add a --kmi-stablelist option alongside existing --kmi-whitelist + dwarf-reader,ir: Fix endless loop while analyzing DWARF from Modula-2 + abipkgdiff: Extract devel and main packages in the same directory + dwarf-reader,reader.cc: Fix function virtuality setting + dwarf-reader,ir,writer: Better support for static member variables + comparison: Sort anonymous types using their flat representation + hash,reader,writer: (De)Serialize hash values using the xxhash canonical form + ir: Strip typedefs from pointed-to-types during comparison + ir: Improve the checks done by 'abidw --debug-tc' + ABIXML reader: Unconditionally map a pointer XML node to its decl + corpus: Allow several variables with same ID to be exported + ir: Use definition of decl-only parm type in function type names + big-tests: Update to commit bd0c1f8909a7b2f5018d54b82f7d6829c4849b59 + ir: Always use canonical types in comparison when possible + ir: Don't strip typedefs when comparing pointers & references + big-tests: Update to latest version of libabigail-tests.git + reader: Drop the hash values coming from older ABIXML files + hash: Implement full recursive hashing of artifacts + writer: Do not crash on ABI corpora that have no associated path + hash: Use the faster XXH3 hashing algorithm from xxhash + writer: Fix emitting of some member types within their scope + ir: Use canonical types in comparison when --enable-debug-type-canonicalization + big-tests: Update to commit cc6747bb859f6a4d7a3e2198d65618aa5d718fc1 + configure: Bump LIBABIGAIL_SO_CURRENT version to 5 + ChangeLog: Update ChangeLog in preparation for 2.6 release + +Frank Ch. Eigler (1): + configure,abidb: Make the libarchive python module optional for abidb + +Mark Wielaard (1): + Use XXH_INLINE_ALL=1 to inline all xxhash functions + +Romain Geissler (1): + leaf-reporter: Fix build with gcc 4.9. + +Ross Burton (1): + configure.ac: improve fts checks + +Sam James (1): + tests/runtestabidb?.sh.in: Use bash shebang + +2.5 +=== +Dodji Seketeli (55): + configure: Bump development version to 2.5 + Bug 31045 - Don't try setting translation unit for unique types + suppression: Add "has_strict_flexible_array_data_member_conversion" property + abilint: Support --annotate + abilint: Alphabetically sort programs options + Improve type naming + Bug 30260 - Support pointer-to-member type + Bump abixml version to 2.3 + Bump LIBABIGAIL_SO_CURRENT version to 4 + Bug 31236 - Fix removing a member declaration from its scope + Bug 31279 - Acknowledge that opaque types are always decl-only + Remove python3-mock dependency and use unittest.mock instead + abidw: Fix indentation + ir: Fix wording of several comments + ir: Avoid duplicates when reading member functions + dwarf-reader: Avoid duplicating union members + dwarf-reader: Fix detection of C language DIEs + writer: Avoid emitting a canonical type twice + writer: Don't forget data members when emitting referenced types + ir: Introduce a missing IR kind for subrange types + ir: Cache internal name for several types + dwarf-reader,corpus: Use interned string to lookup corpus interfaces by ID. + dwarf-reader: Bug 31377 - Fix the IR for zero length arrays + PR25409-librte_bus_dpaa.so.20.0.abi: Update to 2.3 + btr-reader: Fix wording typo + ir,{btf,ctf,dwarf}-reader: Rename {subrange_type,array_type_def}::is_infinite. + test-alt-dwarf-file.cc: Fix test result accounting + test-abicomat.cc: Don't show details about PASSing tests. + ir: Fix indentation + ir,corpus,comparison: Const-iffy the access to corpus interfaces + abicompat: Port this to the multi-front-end architecture + ir: Use linkage name to sort virtual function members + dwarf-reader, ir: Add member fns to exported corpus fns after c14n + dwarf-reader: Fix DIE origin handling & scope getting + tests/data/test-diff-pkg: Update dpkg related reference output + ir,dwarf-reader: Better handle inline-ness setting or detection + comparison: Better sort function difference report + ir,dwarf-reader: Peel const-qualifier from const this pointers + dwarf-reader: Support creating functions from DW_TAG_inlined_subroutine + abidw: Add a -o short option for --out-file + tools-utils.cc: Fix potential crash when testing for CTF debug info + Represent undefined corpus interfaces to analyze app compatibility + Factorize elf-reader::{variable,function}_symbol_is_exported into symtab + Add support for undefined symbols in the BTF reader + Emit & read undefined interfaces to & from ABIXML + abicompat: Fix exit code in weak mode + ir: Fix Emacs C++ mode header + comparison: Fix typo + suppression: Fix indentation + abidiff: Fix indentation of help string + Bug 31513 - abidiff considers data members moved to base class as harmful + comparison: Fix erroneous detection of deleted anonymous data members + Bug 31513 - Fix fallout of initial patch + Bug 29160 - support fn symbol aliasing a var symbol + Bug 31646: Fix type suppression tactics for webkit2gtk3 + tests/runtestabidb?.sh.in: Fix git initialization + configure: Add option to disable abidb + +Frank Ch. Eigler (2): + abidb: Introduce a tool to manage the ABI of a Linux distribution + abidb: drop the TODO items from the python script + +Giuliano Procida (1): + website: doxygen: set PROJECT_NAME to libabigail + +Mark Wielaard (2): + Fix ABG_ASSERT in build_ir_node_from_die for DW_TAG_member + Recognize EM_RISCV in e_machine_to_string + + 2.4 === Dmitry V. Levin (1): diff --git a/README.OpenSource b/README.OpenSource index e7d5629c..3a620d93 100644 --- a/README.OpenSource +++ b/README.OpenSource @@ -3,7 +3,7 @@ "Name": "libabigail", "License": "Apache License 2.0", "License File": "LICENSE.txt", - "Version Number": "2.4", + "Version Number": "2.8", "Owner": "zhanghaibo0@huawei.com", "Upstream URL": "https://sourceware.org/libabigail/", "Description": "ABI check for dynamic libraries of different versions." diff --git a/SECURITY b/SECURITY new file mode 100644 index 00000000..124edfe0 --- /dev/null +++ b/SECURITY @@ -0,0 +1,34 @@ +The libabigail library and utilities aim to be generally robust and +reliable. However, libabigail routinely processes complex binary +structured data. This makes the code intricate and sometimes brittle. +While libabigail developers use a variety of static and dynamic checker +software (valgrind, sanitizers) in testing, bugs may remain. Some of +these bugs may have security-related implications. + + +While many errors are cleanly detected at runtime, it is possible that +vulnerabilities exist that could be exploitable. These may arise from +crafted / fuzzed / erroneous inputs, or perhaps even from valid inputs +with unforseen characteristics. Therefore, to minimize risks, users +of libabigail tools and libraries should consider measures such as: + +- avoiding running complex libabigail analysis on untrustworthy inputs +- avoiding running libabigail tools as privileged processes +- applying common platform level protection mechanisms such as + selinux, syscall filtering, hardened compilation, etc. + +Since libabigail tools are usually run in short-lived, local, +interactive, development context rather than remotely "in production", +we generally treat malfunctions as ordinary bugs rather than security +vulnerabilities. + +Please report bugs via any of: +- email to +- https://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail + +After considering the above exclusions, please report suspected +security vulnerabilities confidentially via any of: + +- email to +- email to +- email to diff --git a/config.h b/config.h index eb2e7917..089a0245 100644 --- a/config.h +++ b/config.h @@ -29,9 +29,27 @@ /* Define to 1 if dwarf.h has the DW_FORM_strx4 enumerator */ #define HAVE_DW_FORM_strx4 1 +/* Define to 1 if dwarf.h has the DW_LANG_Ada2005 enumerator */ +#define HAVE_DW_LANG_Ada2005_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_Ada2012 enumerator */ +#define HAVE_DW_LANG_Ada2012_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_Assembly enumerator */ +#define HAVE_DW_LANG_Assembly_enumerator 1 + /* Define to 1 if dwarf.h has the DW_LANG_C11 enumerator */ #define HAVE_DW_LANG_C11_enumerator 1 +/* Define to 1 if dwarf.h has the DW_LANG_C17 enumerator */ +#define HAVE_DW_LANG_C17_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_C23 enumerator */ +#define HAVE_DW_LANG_C23_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_CPP_for_OpenCL enumerator */ +#define HAVE_DW_LANG_CPP_for_OpenCL_enumerator 1 + /* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_03 enumerator */ #define HAVE_DW_LANG_C_plus_plus_03_enumerator 1 @@ -41,27 +59,99 @@ /* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_14 enumerator */ #define HAVE_DW_LANG_C_plus_plus_14_enumerator 1 +/* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_17 enumerator */ +#define HAVE_DW_LANG_C_plus_plus_17_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_20 enumerator */ +#define HAVE_DW_LANG_C_plus_plus_20_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_23 enumerator */ +#define HAVE_DW_LANG_C_plus_plus_23_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_C_sharp enumerator */ +#define HAVE_DW_LANG_C_sharp_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_Crystal enumerator */ +#define HAVE_DW_LANG_Crystal_enumerator 1 + /* Define to 1 if dwarf.h has the DW_LANG_D enumerator */ #define HAVE_DW_LANG_D_enumerator 1 +/* Define to 1 if dwarf.h has the DW_LANG_Fortran18 enumerator */ +#define HAVE_DW_LANG_Fortran18_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_Fortran23 enumerator */ +#define HAVE_DW_LANG_Fortran23_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_GLSL_ES enumerator */ +#define HAVE_DW_LANG_GLSL_ES_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_GLSL enumerator */ +#define HAVE_DW_LANG_GLSL_enumerator 1 + /* Define to 1 if dwarf.h has the DW_LANG_Go enumerator */ #define HAVE_DW_LANG_Go_enumerator 1 +/* Define to 1 if dwarf.h has the DW_LANG_HIP enumerator */ +#define HAVE_DW_LANG_HIP_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_HLSL enumerator */ +#define HAVE_DW_LANG_HLSL_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_Hylo enumerator */ +#define HAVE_DW_LANG_Hylo_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_Kotlin enumerator */ +#define HAVE_DW_LANG_Kotlin_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_Metal enumerator */ +#define HAVE_DW_LANG_Metal_enumerator 1 + /* Define to 1 if dwarf.h has the DW_LANG_Mips_Assembler enumerator */ #define HAVE_DW_LANG_Mips_Assembler_enumerator 1 +/* Define to 1 if dwarf.h has the DW_LANG_Mojo enumerator */ +#define HAVE_DW_LANG_Mojo_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_Move enumerator */ +#define HAVE_DW_LANG_Move_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_OCaml enumerator */ +#define HAVE_DW_LANG_OCaml_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_Odin enumerator */ +#define HAVE_DW_LANG_Odin_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_OpenCL_CPP enumerator */ +#define HAVE_DW_LANG_OpenCL_CPP_enumerator 1 + +/* Define to 1 if dwarf.h has the DW_LANG_P4 enumerator */ +#define HAVE_DW_LANG_P4_enumerator 1 + /* Define to 1 if dwarf.h has the DW_LANG_Python enumerator */ #define HAVE_DW_LANG_Python_enumerator 1 +/* Define to 1 if dwarf.h has the DW_LANG_Ruby enumerator */ +#define HAVE_DW_LANG_Ruby_enumerator 1 + /* Define to 1 if dwarf.h has the DW_LANG_Rust enumerator */ #define HAVE_DW_LANG_Rust_enumerator 1 +/* Define to 1 if dwarf.h has the DW_LANG_SYCL enumerator */ +#define HAVE_DW_LANG_SYCL_enumerator 1 + /* Define to 1 if dwarf.h has the DW_LANG_UPC enumerator */ #define HAVE_DW_LANG_UPC_enumerator 1 +/* Define to 1 if dwarf.h has the DW_LANG_Zig enumerator */ +#define HAVE_DW_LANG_Zig_enumerator 1 + /* Defined to 1 if elf.h has EM_AARCH64 macro defined */ #define HAVE_EM_AARCH64_MACRO 1 +/* Defined to 1 if elf.h has EM_RISCV macro defined */ +#define HAVE_EM_RISCV_MACRO 1 + /* Defined to 1 if elf.h has EM_TILEGX macro defined */ #define HAVE_EM_TILEGX_MACRO 1 @@ -107,9 +197,6 @@ /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 -/* Defined if libdw has the function dwarf_getalt */ -#define LIBDW_HAS_DWARF_GETALT 1 - /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" @@ -126,7 +213,7 @@ #define PACKAGE_NAME "libabigail" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libabigail 2.4" +#define PACKAGE_STRING "libabigail 2.8" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libabigail" @@ -135,14 +222,14 @@ #define PACKAGE_URL "http://sourceware.org/libabigail" /* Define to the version of this package. */ -#define PACKAGE_VERSION "2.4" +#define PACKAGE_VERSION "2.8" -/* Define to 1 if all of the C90 standard headers exist (not just the ones +/* Define to 1 if all of the C89 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #define STDC_HEADERS 1 -/* Enable extensions on AIX 3, Interix. */ +/* Enable extensions on AIX, Interix, z/OS. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif @@ -203,11 +290,15 @@ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # define __STDC_WANT_IEC_60559_DFP_EXT__ 1 #endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# define __STDC_WANT_IEC_60559_EXT__ 1 +#endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1 #endif -/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # define __STDC_WANT_IEC_60559_TYPES_EXT__ 1 #endif @@ -231,7 +322,7 @@ /* Version number of package */ -#define VERSION "2.4" +#define VERSION "2.8" /* The BTF_KIND_DECL_TAG enumerator is present */ /* #undef WITH_BTF_KIND_DECL_TAG */ @@ -248,9 +339,6 @@ /* compile the deb package support in abipkgdiff */ #define WITH_DEB 1 -/* compile support of debugging canonical type propagation */ -/* #undef WITH_DEBUG_CT_PROPAGATION */ - /* compile support of debugging abidw --abidiff */ /* #undef WITH_DEBUG_SELF_COMPARISON */ @@ -276,5 +364,11 @@ /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ -/* Define for large files, on AIX-style hosts. */ +/* Define to 1 on platforms where this makes off_t a 64-bit type. */ /* #undef _LARGE_FILES */ + +/* Number of bits in time_t, on hosts where this is settable. */ +/* #undef _TIME_BITS */ + +/* Define to 1 on platforms where this makes time_t a 64-bit type. */ +/* #undef __MINGW_USE_VC2005_COMPAT */ diff --git a/config.h.in b/config.h.in index 7e66e623..b385ac3f 100644 --- a/config.h.in +++ b/config.h.in @@ -28,9 +28,27 @@ /* Define to 1 if dwarf.h has the DW_FORM_strx4 enumerator */ #undef HAVE_DW_FORM_strx4 +/* Define to 1 if dwarf.h has the DW_LANG_Ada2005 enumerator */ +#undef HAVE_DW_LANG_Ada2005_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_Ada2012 enumerator */ +#undef HAVE_DW_LANG_Ada2012_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_Assembly enumerator */ +#undef HAVE_DW_LANG_Assembly_enumerator + /* Define to 1 if dwarf.h has the DW_LANG_C11 enumerator */ #undef HAVE_DW_LANG_C11_enumerator +/* Define to 1 if dwarf.h has the DW_LANG_C17 enumerator */ +#undef HAVE_DW_LANG_C17_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_C23 enumerator */ +#undef HAVE_DW_LANG_C23_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_CPP_for_OpenCL enumerator */ +#undef HAVE_DW_LANG_CPP_for_OpenCL_enumerator + /* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_03 enumerator */ #undef HAVE_DW_LANG_C_plus_plus_03_enumerator @@ -40,27 +58,99 @@ /* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_14 enumerator */ #undef HAVE_DW_LANG_C_plus_plus_14_enumerator +/* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_17 enumerator */ +#undef HAVE_DW_LANG_C_plus_plus_17_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_20 enumerator */ +#undef HAVE_DW_LANG_C_plus_plus_20_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_23 enumerator */ +#undef HAVE_DW_LANG_C_plus_plus_23_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_C_sharp enumerator */ +#undef HAVE_DW_LANG_C_sharp_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_Crystal enumerator */ +#undef HAVE_DW_LANG_Crystal_enumerator + /* Define to 1 if dwarf.h has the DW_LANG_D enumerator */ #undef HAVE_DW_LANG_D_enumerator +/* Define to 1 if dwarf.h has the DW_LANG_Fortran18 enumerator */ +#undef HAVE_DW_LANG_Fortran18_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_Fortran23 enumerator */ +#undef HAVE_DW_LANG_Fortran23_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_GLSL_ES enumerator */ +#undef HAVE_DW_LANG_GLSL_ES_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_GLSL enumerator */ +#undef HAVE_DW_LANG_GLSL_enumerator + /* Define to 1 if dwarf.h has the DW_LANG_Go enumerator */ #undef HAVE_DW_LANG_Go_enumerator +/* Define to 1 if dwarf.h has the DW_LANG_HIP enumerator */ +#undef HAVE_DW_LANG_HIP_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_HLSL enumerator */ +#undef HAVE_DW_LANG_HLSL_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_Hylo enumerator */ +#undef HAVE_DW_LANG_Hylo_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_Kotlin enumerator */ +#undef HAVE_DW_LANG_Kotlin_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_Metal enumerator */ +#undef HAVE_DW_LANG_Metal_enumerator + /* Define to 1 if dwarf.h has the DW_LANG_Mips_Assembler enumerator */ #undef HAVE_DW_LANG_Mips_Assembler_enumerator +/* Define to 1 if dwarf.h has the DW_LANG_Mojo enumerator */ +#undef HAVE_DW_LANG_Mojo_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_Move enumerator */ +#undef HAVE_DW_LANG_Move_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_OCaml enumerator */ +#undef HAVE_DW_LANG_OCaml_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_Odin enumerator */ +#undef HAVE_DW_LANG_Odin_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_OpenCL_CPP enumerator */ +#undef HAVE_DW_LANG_OpenCL_CPP_enumerator + +/* Define to 1 if dwarf.h has the DW_LANG_P4 enumerator */ +#undef HAVE_DW_LANG_P4_enumerator + /* Define to 1 if dwarf.h has the DW_LANG_Python enumerator */ #undef HAVE_DW_LANG_Python_enumerator +/* Define to 1 if dwarf.h has the DW_LANG_Ruby enumerator */ +#undef HAVE_DW_LANG_Ruby_enumerator + /* Define to 1 if dwarf.h has the DW_LANG_Rust enumerator */ #undef HAVE_DW_LANG_Rust_enumerator +/* Define to 1 if dwarf.h has the DW_LANG_SYCL enumerator */ +#undef HAVE_DW_LANG_SYCL_enumerator + /* Define to 1 if dwarf.h has the DW_LANG_UPC enumerator */ #undef HAVE_DW_LANG_UPC_enumerator +/* Define to 1 if dwarf.h has the DW_LANG_Zig enumerator */ +#undef HAVE_DW_LANG_Zig_enumerator + /* Defined to 1 if elf.h has EM_AARCH64 macro defined */ #undef HAVE_EM_AARCH64_MACRO +/* Defined to 1 if elf.h has EM_RISCV macro defined */ +#undef HAVE_EM_RISCV_MACRO + /* Defined to 1 if elf.h has EM_TILEGX macro defined */ #undef HAVE_EM_TILEGX_MACRO @@ -106,9 +196,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H -/* Defined if libdw has the function dwarf_getalt */ -#undef LIBDW_HAS_DWARF_GETALT - /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR @@ -136,12 +223,12 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Define to 1 if all of the C90 standard headers exist (not just the ones +/* Define to 1 if all of the C89 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS -/* Enable extensions on AIX 3, Interix. */ +/* Enable extensions on AIX, Interix, z/OS. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif @@ -202,11 +289,15 @@ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif -/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif @@ -256,9 +347,6 @@ /* compile the deb package support in abipkgdiff */ #undef WITH_DEB -/* compile support of debugging canonical type propagation */ -#undef WITH_DEBUG_CT_PROPAGATION - /* compile support of debugging abidw --abidiff */ #undef WITH_DEBUG_SELF_COMPARISON @@ -284,5 +372,11 @@ /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS -/* Define for large files, on AIX-style hosts. */ +/* Define to 1 on platforms where this makes off_t a 64-bit type. */ #undef _LARGE_FILES + +/* Number of bits in time_t, on hosts where this is settable. */ +#undef _TIME_BITS + +/* Define to 1 on platforms where this makes time_t a 64-bit type. */ +#undef __MINGW_USE_VC2005_COMPAT diff --git a/configure.ac b/configure.ac index a9400a45..770fbe00 100644 --- a/configure.ac +++ b/configure.ac @@ -1,9 +1,18 @@ -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +dnl SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +dnl Process this file with autoconf to produce a configure script. +dnl Configure input file for Libabigail. -*-autoconf-*- +dnl +dnl Copyright (C) 2013-2025 Red Hat, Inc. +dnl Author: Dodji Seketeli +dnl +dnl This file is part of Libabigail. +dnl dnl Libabigail version number is handled here with the major and minor dnl version numbers. m4_define([version_major], [2]) -m4_define([version_minor], [4]) +m4_define([version_minor], [8]) dnl Below are the numbers to handle libabigail.so's versionning dnl following the libtool's versionning scheme to handle shared @@ -25,7 +34,7 @@ dnl then increment LIBABIGAIL_SO_AGE. dnl dnl 4. If any interfaces have been removed or changed since the last dnl public release, then set LIBABIGAIL_SO_AGE to 0. -m4_define([libabigail_so_current], [3]) +m4_define([libabigail_so_current], [7]) m4_define([libabigail_so_revision], [0]) m4_define([libabigail_so_age], [0]) @@ -84,7 +93,7 @@ dnl The minor version number of the abixml version should be changed dnl each time and old version of libabigail can't handle a new version dnl of abixml. Note however that when the major version number is dnl changed, the minor version number should be set to zero. -ABIXML_VERSION_MINOR=2 +ABIXML_VERSION_MINOR=4 LIBABIGAIL_SO_CURRENT=libabigail_so_current LIBABIGAIL_SO_REVISION=libabigail_so_revision LIBABIGAIL_SO_AGE=libabigail_so_age @@ -134,11 +143,6 @@ AC_ARG_ENABLE(debug-type-canonicalization, ENABLE_DEBUG_TYPE_CANONICALIZATION=$enableval, ENABLE_DEBUG_TYPE_CANONICALIZATION=no) -AC_ARG_ENABLE(debug-ct-propagation, - AS_HELP_STRING([--enable-debug-ct-propagation=yes|no], - [enable debugging of canonical type propagation (default is no)]), - ENABLE_DEBUG_CT_PROPAGATION=$enableval, - ENABLE_DEBUG_CT_PROPAGATION=no) AC_ARG_ENABLE(show-type-use-in-abilint, AS_HELP_STRING([--enable-show-type-use-in-abilint=yes|no], @@ -182,6 +186,12 @@ AC_ARG_ENABLE([fedabipkgdiff], ENABLE_FEDABIPKGDIFF=$enableval, ENABLE_FEDABIPKGDIFF=auto) +AC_ARG_ENABLE(abidb, + AS_HELP_STRING([--enable-abidb=yes|no|auto], + [enable the support of the abidb tool (default is auto)]), + ENABLE_ABIDB=$enableval, + ENABLE_ABIDB=auto) + AC_ARG_ENABLE([python3], AS_HELP_STRING([--enable-python3=yes|no|auto], [enable running abigail tools with python3 (default is auto)]), @@ -225,6 +235,43 @@ AC_ARG_ENABLE(btf, [disable support of btf files)]), ENABLE_BTF=$enableval, ENABLE_BTF=auto) + +ENABLE_BIG_TESTS=no +AC_ARG_ENABLE(big-tests, + AS_HELP_STRING([--enable-big-tests=yes|no], + [enable the support of libabigail big tests (in the big-tests subdir)]), + ENABLE_BIG_TESTS=$enableval, + ENABLE_BIG_TESTS=no) + + +ENABLE_INLINED_XXHASH=no +AC_ARG_ENABLE(inlined-xxhash, + AS_HELP_STRING([--enable-inlined-xxhash=yes|no], + [enable the support the inlined-only version of the xxhash library]), + ENABLE_INLINED_XXHASH=$enableval, + ENABLE_INLINED_XXHASH=no) + +WITH_DW_LIBS_PATH=auto +AC_ARG_WITH(libdw, + AS_HELP_STRING([--with-libdw=/path/to/libdw-library/prefix], + [Set the path to the libdw library prefix]), + WITH_DW_LIBS_PATH=$withval, + WITH_DW_LIBS_PATH=auto) + +WITH_ELF_LIBS_PATH=auto +AC_ARG_WITH(libelf, + AS_HELP_STRING([--with-libelf=/path/to/libelf-library/prefix], + [Set the path to the libelf library prefix]), + WITH_ELF_LIBS_PATH=$withval, + WITH_ELF_LIBS_PATH=auto) + +WITH_LIBXML2_PATH=auto +AC_ARG_WITH(libxml2, + AS_HELP_STRING([--with-libxml2=/path/to/libxml2-library/prefix], + [Set the path to the libxml2 library prefix]), + WITH_LIBXML2_PATH=$withval, + WITH_LIBXML2_PATH=auto) + dnl ************************************************* dnl check for dependencies dnl ************************************************* @@ -241,9 +288,11 @@ AC_LANG([C++]) AC_LANG_COMPILER_REQUIRE dnl -dnl We use C++11 +dnl We use C++14. It has been the default in G++ since GCC 6. In el8 +dnl (that we still support), we do have GCC 8.x with c++14 as the +dnl default, still. dnl -CXX_STANDARD=c++11 +CXX_STANDARD=c++14 dnl dnl check if the c++ compiler has support __attribute__((visibility("hidden"))) @@ -275,6 +324,10 @@ fi AC_SUBST(VISIBILITY_FLAGS) +dnl glibc and BSD include fts into their libc, but musl does not so +dnl check if we need to explicitly link to the standalone musl-fts. +AC_SEARCH_LIBS([fts_open], [fts]) + dnl Older glibc had a broken fts that didn't work with Large File Systems. dnl We want the version that can handler LFS, but include workaround if we dnl get a bad one. Add define to CFLAGS (not AC_DEFINE it) since we need to @@ -289,31 +342,38 @@ AS_IF([test "x$ac_cv_bad_fts" = "xyes"], [CFLAGS="$CFLAGS -DBAD_FTS=1", CXXFLAGS="$CXXFLAGS -DBAD_FTS=1"]) -dnl On musl, we need to find fts-standalone -AS_CASE( - [${host_os}], [*-musl*], [ - PKG_CHECK_MODULES([FTS], [fts-standalone]) -]) -dnl Check for dependency: libelf, libdw, libebl (elfutils) -dnl Note that we need to use at least elfutils 0.159 but -dnl at that time elfutils didnt have pkgconfig capabilities -dnl to easily query for its version. -ELF_LIBS= -AC_CHECK_LIB([elf], [elf_end], [ELF_LIBS="-lelf"]) -AC_CHECK_HEADER([libelf.h], - [], - [AC_MSG_ERROR([could not find libelf.h])]) +dnl Check for dependency: libelf and libdw (elfutils). Note that we +dnl need to use at least elfutils 0.159 but at that time elfutils +dnl didnt have pkgconfig capabilities to easily query for its version. +dnl Those were added in version 0.165. -DW_LIBS= -AC_CHECK_LIB(dw, dwfl_begin, [DW_LIBS=-ldw]) -AC_CHECK_LIB(dw, dwarf_getalt, - [FOUND_DWARF_GETALT_IN_LIBDW=yes], - [FOUND_DWARF_GETALT_IN_LIBDW=no]) +dnl look for libelf +ELF_LIBS_VERSION=0.165 +SAVED_PKG_CONFIG_PATH=$PKG_CONFIG_PATH +if test $WITH_ELF_LIBS_PATH != xauto; then + export PKG_CONFIG_PATH="$WITH_ELF_LIBS_PATH/lib/pkgconfig:$PKG_CONFIG_PATH" +fi + +AC_MSG_NOTICE([used PKG_CONFIG_PATH=$PKG_CONFIG_PATH to check for libelf]); +PKG_CHECK_MODULES(ELF, libelf >= $ELF_LIBS_VERSION) +if test $WITH_ELF_LIBS_PATH != xauto; then + PKG_CONFIG_PATH=$SAVED_PKG_CONFIG_PATH +fi + +dnl Look for libdw +DW_LIBS_VERSION=0.165 +SAVED_PKG_CONFIG_PATH=$PKG_CONFIG_PATH +if test $WITH_DW_LIBS_PATH != xauto; then + export PKG_CONFIG_PATH="$WITH_DW_LIBS_PATH/lib/pkgconfig:$PKG_CONFIG_PATH" +fi + +AC_MSG_NOTICE([used PKG_CONFIG_PATH=$PKG_CONFIG_PATH to check for libdw]); +PKG_CHECK_MODULES(DW, libdw >= $DW_LIBS_VERSION) +if test $WITH_DW_LIBS_PATH != xauto; then + PKG_CONFIG_PATH=$SAVED_PKG_CONFIG_PATH +fi -AC_CHECK_HEADER(elfutils/libdwfl.h, - [], - [AC_MSG_ERROR([could not find elfutils/libdwfl.h installed])]) dnl Allow users to compile with the NDEBUG macro defined, dnl meaning they are compiling in a mode where the @@ -322,21 +382,10 @@ dnl users just need to pass the --disable-assert dnl option to configure. AC_HEADER_ASSERT -if test x$ELF_LIBS = x; then - AC_MSG_ERROR([could not find elfutils elf library installed]) -fi - -if test x$DW_LIBS = x; then - AC_MSG_ERROR([could not find elfutils dwarf library installed]) -fi - -if test x$FOUND_DWARF_GETALT_IN_LIBDW = xyes; then - AC_DEFINE([LIBDW_HAS_DWARF_GETALT], 1, - [Defined if libdw has the function dwarf_getalt]) -fi - AC_SUBST(DW_LIBS) +AC_SUBST(DW_CFLAGS) AC_SUBST([ELF_LIBS]) +AC_SUBST([ELF_CFLAGS]) dnl check for libctf presence if CTF code has been enabled by command line dnl argument, and then define CTF flag (to build CTF file code) if libctf is @@ -385,10 +434,10 @@ dnl configure BTF usage BPF_LIBS= if test x$ENABLE_BTF != xno; then AC_CHECK_HEADER([bpf/btf.h], - [ENABLE_BTF=yes], + [HAS_BTF_HEADERS=yes], [AC_MSG_NOTICE([could not find bpf/btf.h])]) - if test x$ENABLE_BTF = xyes; then - AC_MSG_NOTICE([enable BTF support]) + if test x$HAS_BTF_HEADERS = xyes; then + AC_MSG_NOTICE([found BTF header file so enabling BTF support]) ENABLE_BTF=yes AC_DEFINE([WITH_BTF], 1, [Defined if user enabled BTF usage]) @@ -452,14 +501,58 @@ dnl Test if various functions and structs are present. fi fi +if test x$ENABLE_BIG_TESTS = xyes; then + AC_MSG_NOTICE([looking for $srcdir/big-tests ...]); + if test -d $srcdir/big-tests -o -L $srcdir/big-tests; then + AC_CONFIG_COMMANDS([create-big-tests-build-dir-and-configure], + [AC_MSG_NOTICE([Found $srcdir/big-tests!]) + cd $ac_abs_top_srcdir/big-tests + autoreconf -i + cd $ac_abs_top_builddir + test -d big-tests || mkdir big-tests + cd big-tests + CTF_OPTS= + BTF_OPTS= + if test x$CTF_ENABLED = xyes; then CTF_OPTS="--enable-ctf"; fi; + if test x$BTF_ENABLED = xyes; then BTF_OPTS="--enable-btf"; fi; + AC_MSG_NOTICE([configuring $srcdir/big-tests --with-libabigail-tools-dir=$ac_abs_top_builddir/tools --with-libabigail-headers-dir=$ac_abs_top_srcdir/include $CTF_OPTS $BTF_OPTS]) + $ac_abs_top_srcdir/big-tests/configure --with-libabigail-tools-dir=$ac_abs_top_builddir/tools --with-libabigail-headers-dir=$ac_abs_top_srcdir/include $CTF_OPTS $BTF_OPTS], + [CTF_ENABLED=$ENABLE_CTF + BTF_ENABLED=$ENABLE_BTF]) + else + AC_MSG_ERROR([No sub-directory big-tests found. Please checkout libabigail-big-tests under a sub-directory named 'big-tests']) + fi +fi + dnl Check for dependency: libxml LIBXML2_VERSION=2.6.22 +SAVED_PKG_CONFIG_PATH=$PKG_CONFIG_PATH +if test $WITH_LIBXML2_PATH != xauto; then + export PKG_CONFIG_PATH="$WITH_LIBXML2_PATH/lib/pkgconfig:$PKG_CONFIG_PATH" +fi + +AC_MSG_NOTICE([used PKG_CONFIG_PATH=$PKG_CONFIG_PATH to check for libxml2]); PKG_CHECK_MODULES(XML, libxml-2.0 >= $LIBXML2_VERSION) +if test $WITH_LIBXML2_PATH != xauto; then + PKG_CONFIG_PATH=$SAVED_PKG_CONFIG_PATH +fi AC_SUBST(LIBXML2_VERSION) AC_SUBST(XML_LIBS) AC_SUBST(XML_CFLAGS) +dnl Check for dependency: xxhash +XXHASH_VERSION=0.8.0 +PKG_CHECK_MODULES(XXHASH, libxxhash >= $XXHASH_VERSION) +AC_SUBST(XXHASH_CFLAGS) +AC_SUBST(XXHASH_LIBS) + +dnl Check for dependency: liblzma +LIBLZMA_VERSION=5.2.0 +PKG_CHECK_MODULES(LZMA, liblzma >= $LIBLZMA_VERSION) +AC_SUBST(LZMA_CFLAGS) +AC_SUBST(LZMA_LIBS) + dnl Check for some programs like rm, mkdir, etc ... AC_CHECK_PROG(HAS_RM, rm, yes, no) if test x$HAS_RM = xno; then @@ -567,15 +660,6 @@ fi AM_CONDITIONAL(ENABLE_DEBUG_TYPE_CANONICALIZATION, test x$ENABLE_DEBUG_TYPE_CANONICALIZATION = xyes) -if test x$ENABLE_DEBUG_CT_PROPAGATION = xyes; then - AC_DEFINE([WITH_DEBUG_CT_PROPAGATION], - 1, - [compile support of debugging canonical type propagation]) - AC_MSG_NOTICE([support of debugging canonical type propagation is enabled]) -else - AC_MSG_NOTICE([support of debugging canonical type propagation is disabled]) -fi - dnl Check for the dpkg program if test x$ENABLE_DEB = xauto -o x$ENABLE_DEB = xyes; then AC_CHECK_PROG(HAS_DPKG, dpkg, yes, no) @@ -764,7 +848,7 @@ if test x$CHECK_DEPS_FOR_FEDABIPKGDIFF = xyes; then REQUIRED_PYTHON_MODULES_FOR_FEDABIPKGDIFF="\ argparse logging os re subprocess sys $URLPARSE_MODULE \ - xdg koji mock rpm $IMPORT_MODULE tempfile mimetypes shutil six" + xdg koji rpm $IMPORT_MODULE tempfile mimetypes shutil six" AX_CHECK_PYTHON_MODULES([$REQUIRED_PYTHON_MODULES_FOR_FEDABIPKGDIFF], [$PYTHON], @@ -816,12 +900,52 @@ except koji.ConfigurationError: fi fi +dnl abidb checks +if test x$PYTHON3_INTERPRETER != xno -a x$ENABLE_ABIDB != xno; then + AX_CHECK_PYTHON_MODULES([git], + [$PYTHON], + [FOUND_ALL_PYTHON_MODULES=yes], + [FOUND_ALL_PYTHON_MODULES=no]) + + $PYTHON3_INTERPRETER -c "import sys; sys.exit(0 if sys.version_info >= (3, 9) else 1)" + if test $? -ne 0; then + AC_MSG_NOTICE([Python 3 version 3.9 or higher is required for abidb]) + AC_MSG_WARN([disabling abidb as a result]) + ENABLE_ABIDB=no + else + AC_MSG_NOTICE([Found Python 3 version at 3.9 or higher. Great for abidb!]) + fi + + if test x$ENABLE_ABIDB = xno; then + pass + elif test x$ENABLE_ABIDB != xno -a x$FOUND_ALL_PYTHON_MODULES = xno; then + AC_MSG_NOTICE([missing python modules: $MISSING_PYTHON_MODULES]) + AC_MSG_WARN([disabling abidb as a result]) + ENABLE_ABIDB=no + else + ENABLE_ABIDB=yes + dnl search for optional modules, just for autoconf reporting purposes + AX_CHECK_PYTHON_MODULES([libarchive], + [$PYTHON], + [FOUND_ALL_OPTIONAL_PYTHON_MODULES=yes], + [FOUND_ALL_OPTIONAL_PYTHON_MODULES=no]) + if test x$FOUND_ALL_OPTIONAL_PYTHON_MODULES = xno; then + AC_MSG_WARN([missing optional python modules for abidb: $MISSING_PYTHON_MODULES]) + else + AC_MSG_NOTICE([found all optional python modules for abidb]) + fi + fi +else + AC_MSG_NOTICE([disabling abidb]) +fi +AM_CONDITIONAL(ENABLE_ABIDB, test x$ENABLE_ABIDB = xyes) + AM_CONDITIONAL(ENABLE_FEDABIPKGDIFF, test x$ENABLE_FEDABIPKGDIFF = xyes) AM_CONDITIONAL(ENABLE_RUNNING_TESTS_WITH_PY3, test x$RUN_TESTS_WITH_PY3 = xyes) AM_CONDITIONAL(ENABLE_PYTHON3_INTERPRETER, test x$PYTHON3_INTERPRETER != xno) AC_SUBST(PYTHON) -DEPS_CPPFLAGS="$XML_CFLAGS" +DEPS_CPPFLAGS="$XML_CFLAGS $XXHASH_CFLAGS $ELF_CFLAGS $DW_CFLAGS $LZMA_CFLAGS" AC_SUBST(DEPS_CPPFLAGS) dnl Check for the presence of doxygen program @@ -862,8 +986,10 @@ AX_VALGRIND_DFLT(sgcheck, off) AX_VALGRIND_CHECK dnl Set the list of libraries libabigail depends on - -DEPS_LIBS="$XML_LIBS $ELF_LIBS $DW_LIBS $CTF_LIBS $BPF_LIBS" +DEPS_LIBS="$XML_LIBS $ELF_LIBS $DW_LIBS $CTF_LIBS $BPF_LIBS $LZMA_LIBS" +if test x$ENABLE_INLINED_XXHASH = xno; then + DEPS_LIBS="$DEPS_LIBS $XXHASH_LIBS" +fi AC_SUBST(DEPS_LIBS) if test x$ABIGAIL_DEVEL != x; then @@ -901,6 +1027,12 @@ if test x$ENABLE_UBSAN = xyes; then CXXFLAGS="$CXXFLAGS -fsanitize=undefined" fi +dnl If the user asked then let's use inlined xxhash functions. +if test x$ENABLE_INLINED_XXHASH = xyes; then + CFLAGS="$CFLAGS -DXXH_INLINE_ALL=1" + CXXFLAGS="$CXXFLAGS -DXXH_INLINE_ALL=1" +fi + dnl Set a few Automake conditionals AM_CONDITIONAL([CTF_READER],[test "x$ENABLE_CTF" = "xyes"]) @@ -947,6 +1079,18 @@ if test x$HAS_EM_TILEGX = xyes; then [Defined to 1 if elf.h has EM_TILEGX macro defined]) fi +HAS_EM_RISCV=no +AC_CHECK_DECL([EM_RISCV], + [HAS_EM_RISCV=yes], + [HAS_EM_RISCV=no], + [[#include ]]) + +if test x$HAS_EM_RISCV = xyes; then + AC_DEFINE([HAVE_EM_RISCV_MACRO], + 1, + [Defined to 1 if elf.h has EM_RISCV macro defined]) +fi + HAS_R_AARCH64_ABS64=no AC_CHECK_DECL([R_AARCH64_ABS64], [HAS_R_AARCH64_ABS64=yes], @@ -1082,6 +1226,327 @@ if test x$HAS_DW_LANG_Rust = xyes; then [Define to 1 if dwarf.h has the DW_LANG_Rust enumerator]) fi +HAS_DW_LANG_OCaml=no +AC_CHECK_DECL([DW_LANG_OCaml], + [HAS_DW_LANG_OCaml=yes], + [HAS_DW_LANG_OCaml=no], + [[#include ]]) + +if test x$HAS_DW_LANG_OCaml = xyes; then + AC_DEFINE([HAVE_DW_LANG_OCaml_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_OCaml enumerator]) +fi + +HAS_DW_LANG_Kotlin=no +AC_CHECK_DECL([DW_LANG_Kotlin], + [HAS_DW_LANG_Kotlin=yes], + [HAS_DW_LANG_Kotlin=no], + [[#include ]]) +if test x$HAS_DW_LANG_Kotlin = xyes; then + AC_DEFINE([HAVE_DW_LANG_Kotlin_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Kotlin enumerator]) +fi + +HAS_DW_LANG_Zig=no +AC_CHECK_DECL([DW_LANG_Zig], + [HAS_DW_LANG_Zig=yes], + [HAS_DW_LANG_Zig=no], + [[#include ]]) +if test x$HAS_DW_LANG_Zig = xyes; then + AC_DEFINE([HAVE_DW_LANG_Zig_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Zig enumerator]) +fi + +HAS_DW_LANG_Crystal=no +AC_CHECK_DECL([DW_LANG_Crystal], + [HAS_DW_LANG_Crystal=yes], + [HAS_DW_LANG_Crystal=no], + [[#include ]]) +if test x$HAS_DW_LANG_Crystal = xyes; then + AC_DEFINE([HAVE_DW_LANG_Crystal_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Crystal enumerator]) +fi + +HAS_DW_LANG_C_plus_plus_17=no +AC_CHECK_DECL([DW_LANG_C_plus_plus_17], + [HAS_DW_LANG_C_plus_plus_17=yes], + [HAS_DW_LANG_C_plus_plus_17=no], + [[#include ]]) +if test x$HAS_DW_LANG_C_plus_plus_17 = xyes; then + AC_DEFINE([HAVE_DW_LANG_C_plus_plus_17_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_17 enumerator]) +fi + +HAS_DW_LANG_C_plus_plus_20=no +AC_CHECK_DECL([DW_LANG_C_plus_plus_20], + [HAS_DW_LANG_C_plus_plus_20=yes], + [HAS_DW_LANG_C_plus_plus_20=no], + [[#include ]]) +if test x$HAS_DW_LANG_C_plus_plus_20 = xyes; then + AC_DEFINE([HAVE_DW_LANG_C_plus_plus_20_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_20 enumerator]) +fi + +HAS_DW_LANG_C17=no +AC_CHECK_DECL([DW_LANG_C17], + [HAS_DW_LANG_C17=yes], + [HAS_DW_LANG_C17=no], + [[#include ]]) +if test x$HAS_DW_LANG_C17 = xyes; then + AC_DEFINE([HAVE_DW_LANG_C17_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_C17 enumerator]) +fi + +HAS_DW_LANG_Fortran18=no +AC_CHECK_DECL([DW_LANG_Fortran18], + [HAS_DW_LANG_Fortran18=yes], + [HAS_DW_LANG_Fortran18=no], + [[#include ]]) +if test x$HAS_DW_LANG_Fortran18 = xyes; then + AC_DEFINE([HAVE_DW_LANG_Fortran18_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Fortran18 enumerator]) +fi + +HAS_DW_LANG_Ada2005=no +AC_CHECK_DECL([DW_LANG_Ada2005], + [HAS_DW_LANG_Ada2005=yes], + [HAS_DW_LANG_Ada2005=no], + [[#include ]]) +if test x$HAS_DW_LANG_Ada2005 = xyes; then + AC_DEFINE([HAVE_DW_LANG_Ada2005_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Ada2005 enumerator]) +fi + +HAS_DW_LANG_Ada2012=no +AC_CHECK_DECL([DW_LANG_Ada2012], + [HAS_DW_LANG_Ada2012=yes], + [HAS_DW_LANG_Ada2012=no], + [[#include ]]) +if test x$HAS_DW_LANG_Ada2012 = xyes; then + AC_DEFINE([HAVE_DW_LANG_Ada2012_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Ada2012 enumerator]) +fi + +HAS_DW_LANG_HIP=no +AC_CHECK_DECL([DW_LANG_HIP], + [HAS_DW_LANG_HIP=yes], + [HAS_DW_LANG_HIP=no], + [[#include ]]) +if test x$HAS_DW_LANG_HIP = xyes; then + AC_DEFINE([HAVE_DW_LANG_HIP_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_HIP enumerator]) +fi + +HAS_DW_LANG_Assembly=no +AC_CHECK_DECL([DW_LANG_Assembly], + [HAS_DW_LANG_Assembly=yes], + [HAS_DW_LANG_Assembly=no], + [[#include ]]) +if test x$HAS_DW_LANG_Assembly = xyes; then + AC_DEFINE([HAVE_DW_LANG_Assembly_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Assembly enumerator]) +fi + +HAS_DW_LANG_C_sharp=no +AC_CHECK_DECL([DW_LANG_C_sharp], + [HAS_DW_LANG_C_sharp=yes], + [HAS_DW_LANG_C_sharp=no], + [[#include ]]) +if test x$HAS_DW_LANG_C_sharp = xyes; then + AC_DEFINE([HAVE_DW_LANG_C_sharp_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_C_sharp enumerator]) +fi + +HAS_DW_LANG_Mojo=no +AC_CHECK_DECL([DW_LANG_Mojo], + [HAS_DW_LANG_Mojo=yes], + [HAS_DW_LANG_Mojo=no], + [[#include ]]) +if test x$HAS_DW_LANG_Mojo = xyes; then + AC_DEFINE([HAVE_DW_LANG_Mojo_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Mojo enumerator]) +fi + +HAS_DW_LANG_GLSL=no +AC_CHECK_DECL([DW_LANG_GLSL], + [HAS_DW_LANG_GLSL=yes], + [HAS_DW_LANG_GLSL=no], + [[#include ]]) +if test x$HAS_DW_LANG_GLSL = xyes; then + AC_DEFINE([HAVE_DW_LANG_GLSL_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_GLSL enumerator]) +fi + +HAS_DW_LANG_GLSL_ES=no +AC_CHECK_DECL([DW_LANG_GLSL_ES], + [HAS_DW_LANG_GLSL_ES=yes], + [HAS_DW_LANG_GLSL_ES=no], + [[#include ]]) +if test x$HAS_DW_LANG_GLSL_ES = xyes; then + AC_DEFINE([HAVE_DW_LANG_GLSL_ES_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_GLSL_ES enumerator]) +fi + +HAS_DW_LANG_HLSL=no +AC_CHECK_DECL([DW_LANG_HLSL], + [HAS_DW_LANG_HLSL=yes], + [HAS_DW_LANG_HLSL=no], + [[#include ]]) +if test x$HAS_DW_LANG_HLSL = xyes; then + AC_DEFINE([HAVE_DW_LANG_HLSL_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_HLSL enumerator]) +fi + +HAS_DW_LANG_OpenCL_CPP=no +AC_CHECK_DECL([DW_LANG_OpenCL_CPP], + [HAS_DW_LANG_OpenCL_CPP=yes], + [HAS_DW_LANG_OpenCL_CPP=no], + [[#include ]]) +if test x$HAS_DW_LANG_OpenCL_CPP = xyes; then + AC_DEFINE([HAVE_DW_LANG_OpenCL_CPP_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_OpenCL_CPP enumerator]) +fi + +HAS_DW_LANG_CPP_for_OpenCL=no +AC_CHECK_DECL([DW_LANG_CPP_for_OpenCL], + [HAS_DW_LANG_CPP_for_OpenCL=yes], + [HAS_DW_LANG_CPP_for_OpenCL=no], + [[#include ]]) +if test x$HAS_DW_LANG_CPP_for_OpenCL = xyes; then + AC_DEFINE([HAVE_DW_LANG_CPP_for_OpenCL_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_CPP_for_OpenCL enumerator]) +fi + +HAS_DW_LANG_SYCL=no +AC_CHECK_DECL([DW_LANG_SYCL], + [HAS_DW_LANG_SYCL=yes], + [HAS_DW_LANG_SYCL=no], + [[#include ]]) +if test x$HAS_DW_LANG_SYCL = xyes; then + AC_DEFINE([HAVE_DW_LANG_SYCL_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_SYCL enumerator]) +fi + +HAS_DW_LANG_C_plus_plus_23=no +AC_CHECK_DECL([DW_LANG_C_plus_plus_23], + [HAS_DW_LANG_C_plus_plus_23=yes], + [HAS_DW_LANG_C_plus_plus_23=no], + [[#include ]]) +if test x$HAS_DW_LANG_C_plus_plus_23 = xyes; then + AC_DEFINE([HAVE_DW_LANG_C_plus_plus_23_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_23 enumerator]) +fi + +HAS_DW_LANG_Odin=no +AC_CHECK_DECL([DW_LANG_Odin], + [HAS_DW_LANG_Odin=yes], + [HAS_DW_LANG_Odin=no], + [[#include ]]) +if test x$HAS_DW_LANG_Odin = xyes; then + AC_DEFINE([HAVE_DW_LANG_Odin_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Odin enumerator]) +fi + +HAS_DW_LANG_P4=no +AC_CHECK_DECL([DW_LANG_P4], + [HAS_DW_LANG_P4=yes], + [HAS_DW_LANG_P4=no], + [[#include ]]) +if test x$HAS_DW_LANG_P4 = xyes; then + AC_DEFINE([HAVE_DW_LANG_P4_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_P4 enumerator]) +fi + +HAS_DW_LANG_Metal=no +AC_CHECK_DECL([DW_LANG_Metal], + [HAS_DW_LANG_Metal=yes], + [HAS_DW_LANG_Metal=no], + [[#include ]]) +if test x$HAS_DW_LANG_Metal = xyes; then + AC_DEFINE([HAVE_DW_LANG_Metal_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Metal enumerator]) +fi + +HAS_DW_LANG_C23=no +AC_CHECK_DECL([DW_LANG_C23], + [HAS_DW_LANG_C23=yes], + [HAS_DW_LANG_C23=no], + [[#include ]]) +if test x$HAS_DW_LANG_C23 = xyes; then + AC_DEFINE([HAVE_DW_LANG_C23_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_C23 enumerator]) +fi + +HAS_DW_LANG_Fortran23=no +AC_CHECK_DECL([DW_LANG_Fortran23], + [HAS_DW_LANG_Fortran23=yes], + [HAS_DW_LANG_Fortran23=no], + [[#include ]]) +if test x$HAS_DW_LANG_Fortran23 = xyes; then + AC_DEFINE([HAVE_DW_LANG_Fortran23_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Fortran23 enumerator]) +fi + +HAS_DW_LANG_Ruby=no +AC_CHECK_DECL([DW_LANG_Ruby], + [HAS_DW_LANG_Ruby=yes], + [HAS_DW_LANG_Ruby=no], + [[#include ]]) +if test x$HAS_DW_LANG_Ruby = xyes; then + AC_DEFINE([HAVE_DW_LANG_Ruby_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Ruby enumerator]) +fi + +HAS_DW_LANG_Move=no +AC_CHECK_DECL([DW_LANG_Move], + [HAS_DW_LANG_Move=yes], + [HAS_DW_LANG_Move=no], + [[#include ]]) +if test x$HAS_DW_LANG_Move = xyes; then + AC_DEFINE([HAVE_DW_LANG_Move_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Move enumerator]) +fi + +HAS_DW_LANG_Hylo=no +AC_CHECK_DECL([DW_LANG_Hylo], + [HAS_DW_LANG_Hylo=yes], + [HAS_DW_LANG_Hylo=no], + [[#include ]]) +if test x$HAS_DW_LANG_Hylo = xyes; then + AC_DEFINE([HAVE_DW_LANG_Hylo_enumerator], + 1, + [Define to 1 if dwarf.h has the DW_LANG_Hylo enumerator]) + +fi + HAS_DW_FORM_strx1=no HAS_DW_FORM_strx2=no HAS_DW_FORM_strx3=no @@ -1182,6 +1647,10 @@ AC_CONFIG_FILES([tests/runtestdefaultsupprs.py], [chmod +x tests/runtestdefaultsupprs.py]) AC_CONFIG_FILES([tests/runtestdefaultsupprspy3.sh], [chmod +x tests/runtestdefaultsupprspy3.sh]) +AC_CONFIG_FILES([tests/runtestabidb1.sh], + [chmod +x tests/runtestabidb1.sh]) +AC_CONFIG_FILES([tests/runtestabidb2.sh], + [chmod +x tests/runtestabidb2.sh]) AC_OUTPUT @@ -1198,24 +1667,32 @@ AC_MSG_NOTICE([ C++ Compiler : ${CXX} GCC visibility attribute supported : ${SUPPORTS_GCC_VISIBILITY_ATTRIBUTE} CXXFLAGS : ${CXXFLAGS} + ELF_LIBS : ${ELF_LIBS} + ELF_CFLAGS : ${ELF_CFLAGS} + DW_LIBS : ${DW_LIBS} + DW_CFLAGS : ${DW_CFLAGS} + XML_LIBS $ ${XML_LIBS} + XML_CFLAGS $ ${XML_CFLAGS} + DEPS_LIBS $ ${DEPS_LIBS} Python : ${PYTHON} OPTIONAL FEATURES: C++ standard level : ${CXX_STANDARD} - libdw has the dwarf_getalt function : ${FOUND_DWARF_GETALT_IN_LIBDW} + Enable inlined-only xxhash library : ${ENABLE_INLINED_XXHASH} Enable rpm support in abipkgdiff : ${ENABLE_RPM} Enable rpm/zstd in abipkgdiff testing : ${ENABLE_RPM_ZSTD} Enable abilint --show-type-use : ${ENABLE_SHOW_TYPE_USE_IN_ABILINT} Enable self comparison debugging : ${ENABLE_DEBUG_SELF_COMPARISON} Enable type canonicalization debugging : ${ENABLE_DEBUG_TYPE_CANONICALIZATION} - Enable propagated canonical type debugging : ${ENABLE_DEBUG_CT_PROPAGATION} Enable deb support in abipkgdiff : ${ENABLE_DEB} Enable GNU tar archive support in abipkgdiff : ${ENABLE_TAR} Enable bash completion : ${ENABLE_BASH_COMPLETION} Enable fedabipkgdiff : ${ENABLE_FEDABIPKGDIFF} + Enable abidb : ${ENABLE_ABIDB} Enable python 3 : ${ENABLE_PYTHON3} Enable CTF front-end : ${ENABLE_CTF} Enable BTF front-end : ${ENABLE_BTF} + Enable Big Libabigail tests : ${ENABLE_BIG_TESTS} Enable running tests under Valgrind : ${enable_valgrind} Enable build with -fsanitize=address : ${ENABLE_ASAN} Enable build with -fsanitize=memory : ${ENABLE_MSAN} diff --git a/default.abignore b/default.abignore index 2df7f515..9ccfd64f 100644 --- a/default.abignore +++ b/default.abignore @@ -91,7 +91,26 @@ [suppress_type] soname_regexp = libwebkit2?gtk-.*\\.so.* - name_regexp = (^std::.*|WebCore::.*|WebKit::.*) + name_regexp = ^std::.* + drop = true + +[suppress_type] +# Transform all C++ types in the WebCore and WebKit namespaces into +# opaque types. These are essentially internal types of libwebkit2 +# anyway. This greatly reduces the size of the in-memory working set. + label = libabigail::OPAQUE_TYPE_LABEL + soname_regexp = libwebkit2?gtk-.*\\.so.* + name_regexp = (^WebCore::.*|^WebKit::.*) + drop = true + +[suppress_type] +# All structs that don't start with either WebKit* or _WebKit are +# considered internal types and so are transform into opaque types. +# This helps to reduce the size of the in-memory working set further. + label = libabigail::OPAQUE_TYPE_LABEL + soname_regexp = libwebkit2?gtk-.*\\.so.* + type_kind = struct + name_not_regexp = ^_?WebKit.* drop = true ####################################################### @@ -155,9 +174,14 @@ ######################################### [suppress_function] # Suppress ABI change reports about functions starting with the name - # krb5int_* in libraries named libkrb5.so - soname_regexp = libkrb5.*\\.so.* - name_regexp = ^krb5int_.* + # krb5int_*, or k5_ in various libraries of the krb5-libs package + # because they are private functions. Note that deleted functions + # are also suppressed. + soname_regexp = lib(krb5|k5crypto|gssrpc|kdb5|krb5support|gssapi_krb5).*\\.so.* + change_kind = all + name_regexp = (^krb5int|^k5)_.* + symbol_name_regexp = (^krb5int|^k5)_.* + ########################################## # End of krb5 suppression specifications ######################################### diff --git a/doc/api/libabigail.doxy b/doc/api/libabigail.doxy index 33f0eb49..305b558c 100644 --- a/doc/api/libabigail.doxy +++ b/doc/api/libabigail.doxy @@ -1,721 +1,903 @@ -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -# -# Doxyfile 1.8.3.1 +# Doxyfile 1.9.1 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # -# All text after a hash (#) is considered a comment and will be ignored. +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. # The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" "). +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 -# The PROJECT_NAME tag is a single word (or sequence of words) that should -# identify the project. Note that if you do not use Doxywizard you need -# to put quotes around the project name if it contains spaces. +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. -PROJECT_NAME = "libabigail" +PROJECT_NAME = libabigail -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer -# a quick idea about the purpose of the project. Keep the description short. +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = -# With the PROJECT_LOGO tag one can specify an logo or icon that is -# included in the documentation. The maximum height of the logo should not -# exceed 55 pixels and the maximum width should not exceed 200 pixels. -# Doxygen will copy the logo to the output directory. +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. PROJECT_LOGO = -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. OUTPUT_DIRECTORY = api -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. CREATE_SUBDIRS = NO +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. -#BRIEF_MEMBER_DESC = YES +OUTPUT_TEXT_DIRECTION = None -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. +# The default value is: YES. REPEAT_BRIEF = YES -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief +# doxygen will generate a detailed section even if there is only a brief # description. +# The default value is: NO. -#ALWAYS_DETAILED_SEC = NO ALWAYS_DETAILED_SEC = YES # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. +# The default value is: NO. INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. FULL_PATH_NAMES = YES -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. Note that you specify absolute paths here, but also -# relative paths, which will be relative from the directory where doxygen is -# started. +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. STRIP_FROM_INC_PATH = -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful if your file system -# doesn't support long names like on DOS, Mac, or CD-ROM. +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. JAVADOC_AUTOBRIEF = NO -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. QT_AUTOBRIEF = NO -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. -#MULTILINE_CPP_IS_BRIEF = NO MULTILINE_CPP_IS_BRIEF = YES -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. SEPARATE_MEMBER_PAGES = NO -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 4 -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) ALIASES = -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding -# "class=itcl::class" will allow you to use the command class in the -# itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, -# and language is one of the parsers supported by doxygen: IDL, Java, -# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, -# C++. For instance to make doxygen treat .inc files as Fortran files (default -# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note -# that for custom extensions you also need to set FILE_PATTERNS otherwise the -# files are not read by doxygen. +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. EXTENSION_MAPPING = -# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all -# comments according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you -# can mix doxygen, HTML, and XML commands with Markdown formatting. -# Disable only in case of backward compatibilities issues. +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. -#MARKDOWN_SUPPORT = YES MARKDOWN_SUPPORT = NO -# When enabled doxygen tries to link words that correspond to documented classes, -# or namespaces to their corresponding documentation. Such a link can be -# prevented in individual cases by by putting a % sign in front of the word or +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also makes the inheritance and collaboration +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. +# The default value is: NO. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. +# The default value is: NO. CPP_CLI_SUPPORT = NO -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES (the -# default) will make doxygen replace the get and set methods by a property in -# the documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. -#IDL_PROPERTY_SUPPORT = YES IDL_PROPERTY_SUPPORT = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first +# tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. +# The default value is: NO. -#DISTRIBUTE_GROUP_DOC = NO DISTRIBUTE_GROUP_DOC = YES -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. SUBGROUPING = YES -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and -# unions are shown inside the group in which they are included (e.g. using -# @ingroup) instead of on a separate page (for HTML and Man pages) or -# section (for LaTeX and RTF). +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. INLINE_GROUPED_CLASSES = NO -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and -# unions with only public data fields will be shown inline in the documentation -# of the scope in which they are defined (i.e. file, namespace, or group -# documentation), provided this scope is documented. If set to NO (the default), -# structs, classes, and unions are shown on a separate page (for HTML and Man -# pages) or section (for LaTeX and RTF). +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. INLINE_SIMPLE_STRUCTS = NO -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. TYPEDEF_HIDES_STRUCT = NO -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penalty. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will roughly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols. - -SYMBOL_CACHE_SIZE = 0 - -# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be -# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given -# their name and scope. Since this can be an expensive process and often the -# same symbol appear multiple times in the code, doxygen keeps a cache of -# pre-resolved symbols. If the cache is too small doxygen will become slower. -# If the cache is too large, memory is wasted. The cache size is given by this -# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols. +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 +# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which efficively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. EXTRACT_ALL = NO -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. EXTRACT_PRIVATE = NO -# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. +# The default value is: NO. EXTRACT_PACKAGE = NO -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. EXTRACT_STATIC = NO -#EXTRACT_STATIC = YES -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. -#EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_CLASSES = NO -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespaces are hidden. +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. EXTRACT_ANON_NSPACES = NO -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. HIDE_UNDOC_MEMBERS = NO -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. HIDE_UNDOC_CLASSES = NO -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the # documentation. +# The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. HIDE_IN_BODY_DOCS = NO -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. INTERNAL_DOCS = NO -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# The default value is: system dependent. -#CASE_SENSE_NAMES = YES CASE_SENSE_NAMES = NO -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. HIDE_SCOPE_NAMES = YES -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. SHOW_INCLUDE_FILES = YES -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. FORCE_LOCAL_INCLUDES = NO -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. SORT_MEMBER_DOCS = YES -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. -#SORT_BRIEF_DOCS = NO SORT_BRIEF_DOCS = YES -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. -#SORT_MEMBERS_CTORS_1ST = NO SORT_MEMBERS_CTORS_1ST = YES -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. -#SORT_GROUP_NAMES = NO SORT_GROUP_NAMES = YES -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. -#SORT_BY_SCOPE_NAME = NO SORT_BY_SCOPE_NAME = YES -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to -# do proper type resolution of all parameters of a function it will reject a -# match between the prototype and the implementation of a member function even -# if there is only one candidate or it is obvious which candidate to choose -# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen -# will still accept a match between prototype and implementation in such cases. +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. STRICT_PROTO_MATCHING = NO -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. GENERATE_TODOLIST = NO -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. GENERATE_TESTLIST = NO -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. GENERATE_BUGLIST = NO -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. GENERATE_DEPRECATEDLIST= NO -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if section-label ... \endif -# and \cond section-label ... \endcond blocks. +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. ENABLED_SECTIONS = -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or macro consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and macros in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. -#MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 0 -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. +# The default value is: YES. SHOW_USED_FILES = YES -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. SHOW_FILES = YES -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. LAYOUT_FILE = -# The CITE_BIB_FILES tag can be used to specify one or more bib files -# containing the references data. This must be a list of .bib files. The -# .bib extension is automatically appended if omitted. Using this command -# requires the bibtex tool to be installed. See also -# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style -# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this -# feature you need bibtex and perl available in the search path. Do not use -# file names with spaces, bibtex cannot handle them. +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- -# configuration options related to warning and progress messages +# Configuration options related to warning and progress messages #--------------------------------------------------------------------------- -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. WARNINGS = YES -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. WARN_IF_UNDOCUMENTED = NO -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. WARN_IF_DOC_ERROR = YES -# The WARN_NO_PARAMDOC option can be enabled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. WARN_NO_PARAMDOC = NO -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). WARN_LOGFILE = LIBABIGAIL_OUTPUT/doc/api/doxygen-warnings.txt #--------------------------------------------------------------------------- -# configuration options related to the input files +# Configuration options related to the input files #--------------------------------------------------------------------------- -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = LIBABIGAIL_INPUT/src \ - LIBABIGAIL_INPUT/include \ - LIBABIGAIL_INPUT/tests/test-read-common.cc \ - LIBABIGAIL_INPUT/tests/test-read-common.h +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. +INPUT = LIBABIGAIL_INPUT/src \ + LIBABIGAIL_INPUT/include \ + LIBABIGAIL_INPUT/tests/test-read-common.cc \ + LIBABIGAIL_INPUT/tests/test-read-common.h # This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py -# *.f90 *.f *.for *.vhd *.vhdl +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, +# *.ucf, *.qsf and *.ice. -FILE_PATTERNS = +FILE_PATTERNS = -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. +# # Note that relative paths are relative to the directory from which doxygen is # run. @@ -724,14 +906,16 @@ EXCLUDE = Makefile* # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. +# The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = api/libabigail.doxy @@ -740,821 +924,1187 @@ EXCLUDE_PATTERNS = api/libabigail.doxy # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. EXAMPLE_RECURSIVE = NO -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty or if -# non of the patterns match the file name, INPUT_FILTER is applied. +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) -# and it is also possible to disable source filtering for a specific pattern -# using *.ext= (so without naming a filter). This option only has effect when -# FILTER_SOURCE_FILES is enabled. +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = -# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page (index.html). -# This can be useful if you have a project on for instance GitHub and want reuse -# the introduction page also for the doxygen output. +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- -# configuration options related to source browsing +# Configuration options related to source browsing #--------------------------------------------------------------------------- -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. -#SOURCE_BROWSER = NO SOURCE_BROWSER = YES -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C, C++ and Fortran comments will always remain visible. +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. -#STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = NO -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. REFERENCED_BY_RELATION = NO -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. REFERENCES_RELATION = NO -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. REFERENCES_LINK_SOURCE = YES -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index +# Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. ALPHABETICAL_INDEX = YES -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 2 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- -# configuration options related to the HTML output +# Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. GENERATE_HTML = YES -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. Note that when using a custom header you are responsible -# for the proper inclusion of any scripts and style sheets that doxygen -# needs, which is dependent on the configuration options used. -# It is advised to generate a default header using "doxygen -w html -# header.html footer.html stylesheet.css YourConfigFile" and then modify -# that header. Note that the header is subject to change so you typically -# have to redo this when upgrading to a newer version of doxygen or when -# changing the value of configuration settings such as GENERATE_TREEVIEW! +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If left blank doxygen will -# generate a default style sheet. Note that it is recommended to use -# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this -# tag will in the future become obsolete. +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = -# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional -# user-defined cascading style sheet that is included after the standard -# style sheets created by doxygen. Using this option one can overrule -# certain style aspects. This is preferred over using HTML_STYLESHEET -# since it does not replace the standard style sheet and is therefor more -# robust against future updates. Doxygen will copy the style sheet file to -# the output directory. +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the -# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that -# the files will be copied as-is; there are no commands or markers available. +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. -# Doxygen will adjust the colors in the style sheet and background images -# according to this color. Hue is specified as an angle on a colorwheel, -# see http://en.wikipedia.org/wiki/Hue for more information. -# For instance the value 0 represents red, 60 is yellow, 120 is green, -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. -# The allowed range is 0 to 359. +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = NO +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of -# entries shown in the various tree structured indices initially; the user -# can expand and collapse entries dynamically later on. Doxygen will expand -# the tree to such a level that at most the specified number of entries are -# visible (unless a fully collapsed tree already exceeds this amount). -# So setting the number of entries 1 will produce a full collapsed tree by -# default. 0 is a special value representing an infinite number of entries -# and will result in a full expanded tree by default. +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.gnu.libabigail -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely -# identify the documentation publisher. This should be a reverse domain-name -# style string, e.g. com.mycompany.MyDocSet.documentation. +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.fsf -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = libabigail -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: +# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be # written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.libabigail -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# -# Qt Help Project / Custom Filters. +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# -# Qt Help Project / Filter Attributes. +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project -# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) -# at top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. Since the tabs have the same information as the -# navigation tree you can set this option to NO if you already set -# GENERATE_TREEVIEW to YES. +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. -# Since the tree basically has the same information as the tab index you -# could consider to set DISABLE_INDEX to NO when enabling this option. +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values -# (range [0,1..20]) that doxygen will group on one line in the generated HTML -# documentation. Note that a value of 0 will completely suppress the enum -# values from appearing in the overview section. +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax -# (see http://www.mathjax.org) which uses client side Javascript for the -# rendering instead of using prerendered bitmaps. Use this if you do not -# have LaTeX installed or if you want to formulas look prettier in the HTML -# output. When enabled you may also need to install MathJax separately and -# configure the path to it using the MATHJAX_RELPATH option. +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for -# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and -# SVG. The default value is HTML-CSS, which is slower, but has the best -# compatibility. +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS -# When MathJax is enabled you need to specify the location relative to the -# HTML output directory using the MATHJAX_RELPATH option. The destination -# directory should contain the MathJax.js script. For instance, if the mathjax -# directory is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to -# the MathJax Content Delivery Network so you can quickly see the result without -# installing MathJax. -# However, it is strongly recommended to install a local -# copy of MathJax from http://www.mathjax.org before deployment. +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest -# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension -# names that should be enabled during MathJax rendering. +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /