Libabigail 2.0 is out!

Dodji Seketeli dodji@redhat.com
Mon Oct 4 14:28:50 GMT 2021


Hello,

Libabigail 2.0 has been released.

You can download it at http://mirrors.kernel.org/sourceware/libabigail/libabigail-2.0.tar.gz.

Libabigail is a library which aims at constructing, manipulating,
serializing and de-serializing ABI-relevant artifacts.

It also comes with a set of associated command line tools to compare
the interfaces of ELF binaries resulting from the compilation of C or
C++ programs.

Typical use cases of libabigail tools include detecting ABI
incompatible changes across several releases of shared libraries or
incompatible changes in the interface between a Linux kernel and its
modules, for instance.

Users can of course write their own tools using the library.

The library comes with extensive API documentation available online at
https://sourceware.org/libabigail/apidoc.  The tools are documented
online as well at https://sourceware.org/libabigail/manual/libabigail-tools.html.

With this release, the source code switches from the LGPLv3+ license
to the Apache License 2.0 with LLVM exception.  This is the result of
a collaborative effort led by myself and others to lower the barrier
of entry to the project.  The whole rationale was introduced at
https://sourceware.org/pipermail/libabigail/2020q2/002388.html.

A notable change is the switch to C++11 as the implementation
language.  It was about time.  We intend to be able to build
Libabigail on Linux distributions that GCC 4.8.5 and newer versions.

Another notable change is the support for many DWARF5 features, making
libabigail able to handle binaries generated by more recent toolchains
based on LLVM and GCC.

Of course, this release also contains a lot of bug fixes, as usual.

Below is a summary of the significant changes brought to you in this
new release:

Ben Woodard via Libabigail (5):
      Fix declaratons of conditionally defined functions
      Fix declaratons of conditionally defined functions
      Bug 27512 - Remove broken zip-archive support
      Fix trivial typo when printing version string
      Fix trivial typo when printing version string

Dodji Seketeli (90):
      configure: add --enable-rpm415 option
      Add check-self-compare to release regression testing
      Bump version number to 2.0
      Add missing SPDX headers to source files not specifying any license
      Add has-spdx-header.sh script
      Add replace-spdx-license.sh script
      Add helper files to perform the re-licensing
      Re-license the project to Apache v2 With LLVM Exception
      Add the LICENSE.txt file
      Delete COPYING* files
      Add a license-change-2020.txt file
      Teach Automake that COPYING* files are gone from sources
      CONTRIBUTING: Update instructions about regression tests
      Use C++11 for the code base
      ir: Add better comments to types_have_similar_structure
      mainpage: Update web page for 1.8 release
      Bug 26992 - Try harder to resolve declaration-only classes
      Bug 27204 -  potential loss of some aliased ELF function symbols
      Ignore duplicated functions and those not associated with ELF symbols
      Bug 27236 - Pointer comparison wrongly fails because of typedef change
      Bug 27233 - fedabipkgdiff fails on package gnupg2 from Fedora 33
      Bug 27232 - fedabipkgdiff fails on gawk from Fedora 33
      dwarf-reader: Support fast DW_FORM_line_strp string comparison
      Bug 27255 - fedabipkgdiff fails on nfs-utils on Fedora 33
      Bug 26684 - Support DW_AT_data_bit_offset attribute
      Bump ABIXML format version to 2.0
      Bug 27165 - Better support multi-language binaries
      Bug 27331 - Data member offset change not considered local
      Bug 27267 - Better support for opaque enum types
      dwarf-reader: Use DW_FORM_line_strp only if it's present
      Use generic internal type name to canonicalize anonymous enums
      Don't consider type name when comparing typedefs
      tests: Update to catch.hpp v2.13.4 and fix #2178
      Better sorting of (anonymous) types in ABIXML files
      dwarf-reader: Keep stable order when de-duplicating class definitions
      tests/catch.hpp: Add SPDX header back
      Revert "Fix declaratons of conditionally defined functions"
      dwarf-reader: Support more DWARF-5 type DIEs
      Bug 27569 - abidiff misses a function parameter addition
      Bug 27598 - abidiff mishandles union member functions
      dwarf-reader: Canonicalize opaque enums and classes
      dwarf-reader: properly set artificial-ness in opaque types
      reader: Handle 'abi-corpus' element being possibly empty
      reader: Use xmlFirstElementChild and xmlNextElementSibling rather than xml::advance_to_next_sibling_element
      reader: Use xmlFirstElementChild/xmlNextElementSibling to iterate over children elements
      Fix thinko in configure.ac
      Miscellaneous indentation and comments cleanups
      Fix DWARF type DIE canonicalization
      Peel array types when peeling pointers from a type
      Add primitives callable from the command line of the debugger
      Detect failed self comparison in type canonicalization of abixml
      Detect abixml canonical type instability during abidw --debug-abidiff
      Introduce artificial locations
      abixml reader: Fix recursive type definition handling
      xml reader: Fix recursive qualified & reference type definition
      ir: Enable setting breakpoint on first type inequality
      Add environment::{get_type_id_from_pointer,get_canonical_type_from_type_id}
      location:expand() shouldn't crash when no location manager available
      ir: make 'debug(artefact)' support showing enums
      reader: Canonicalizing a type once is enough
      rhbz1951526 - SELF CHECK FAILED for 'gimp-2.10'
      Fix recursive array type definition
      abidw: Remove temporary .typeid files when using --debug-abidiff
      abg-reader: Fix typo
      doc: Fix typo
      Revert "Fix trivial typo when printing version string"
      Bug 27980 - Fix updating of type scope upon type canonicalization
      ir: Improve the debugging facilities
      ir: Tighten the test for anonymous data member
      ir: Tighten type comparison optimization for Linux kernel binaries
      Bug 27995 - Self comparison error from abixml file
      Bug 27236 - Fix the canonical type propagation optimization
      Bug 27236 - Allow updating classes from abixml
      Bug 27236 - Don't forget to emit some referenced types
      RHBZ 1925886 - Compare anonymous types without qualified names
      Bug 27985 - abidiff: bad array types in report
      RHBZ-1944096 - assertion failure during self comparison of systemd
      writer: escape enum linkage name in abixml
      ir: Avoid infinite loop during type canonicalization
      ir: Fix canonical type propagation cancelling
      xml-reader: Get back to original way of building qualified types
      writer: Avoid sigsev on types with no translation unit
      RHBZ1951496 - ir: Acknowledge that "void type" is not canonicalized
      RHBZ1944102 - self comparing ABI of protobuf-3.14.0-2.el9 failed
      abipkgdiff: Fix showing added/removed files
      Bug 28316 - Failure to represent typedef named anonymous enums
      abipkgdiff: Do not erase working dirs before we are done using them
      Bug 27970 - Duplicated member functions cause spurious self comparison changes
      dwarf-reader: Indent
      Bug 27086 - Consider all C++ virtual destructors when there are many

Giuliano Procida (17):
      abidiff: support --dump-diff-tree with --leaf-changes-only
      ir: Arrays are indirect types for type structure similarity purposes
      Add qualifier / typedef / array / pointer test
      Refresh ABI cross check test files
      abidiff: do not qualify member names in diff report
      abg-dwarf-reader: Fix typo in compare_dies_string_attribute_value
      DWARF reader: Interpret ARM32 ELF addresses correctly
      DWARF reader: Comment ARM32 ELF address interpretation
      dwarf-reader: Treat union members as public by default.
      abg-writer.cc: fix write_elf_symbol_reference loop
      dwarf-reader: Create new corpus unconditionally
      abg-reader: Ensure corpus always has a symtab reader
      abg-reader: Create a fresh corpus object per corpus
      ir: remove "is Linux string constant" property from elf_symbol
      abg-ir.h: add declaration of operator<< for elf_symbol::visibility
      PR28060 - Invalid offset for bitfields
      abg-writer: faster referenced type emission tests

Matthias Maennich (34):
      Replace individual license references with SPDX Identifiers
      Drop C++03 compatibility layer
      Remove <functional> usages from abg_compat
      Remove <memory> usages from abg_compat
      Remove <unordered_map> usages from abg_compat
      Remove <unordered_set> usages from abg_compat
      Drop unneccessary includes of abg-cxx-compat.h
      clang-format: define C++ standard to improve formatting
      Update catch2 testing framework: v1.12.2 -> v2.13.3
      abg-ir: Optimize calls to std::string::find() for a single char.
      abipkgdiff: Address operator precedence warning
      abg-cxx-compat: add simplified version of std::optional
      abg-ir: elf_symbol: add is_in_ksymtab field
      abg-ir: elf_symbol: add is_suppressed field
      dwarf-reader split: create abg-symtab-reader.{h,cc} and test case
      clang-format: Minor correction to not break parameters on the first line
      Refactor ELF symbol table reading by adding a new symtab reader
      Integrate new symtab reader into corpus and read_context
      corpus: make get_(undefined_)?_(var|fun)_symbols use the new symtab
      corpus: make get_unreferenced_(function|variable)_symbols use the new symtab
      abg-reader: avoid using the (var|function)_symbol_map
      dwarf-reader: read_context: use new symtab in *_symbols_is_exported
      Switch kernel stuff over to new symtab and drop unused code
      abg-elf-helpers: migrate ppc64 specific helpers
      symtab_reader: add support for ppc64 ELFv1 binaries
      abg-corpus: remove symbol maps and their setters
      dwarf reader: drop (now) unused code related to symbol table reading
      test-symtab: add tests for whitelisted functions
      symtab/dwarf-reader: allow hinting of main symbols for aliases
      dwarf-reader/writer: consider aliases when dealing with suppressions
      symtab: Add support for MODVERSIONS (CRC checksums)
      elf-helpers: refactor find_symbol_table_section
      symtab-reader: add support for binaries compiled with CFI
      Consistently use std::unique_ptr for private implementations (pimpl)

Many thanks to those who contributed to this release with bug reports,
comments or code.

Happy Hacking and may all significant binary interface changes of your
libraries be noticed!


-- 
		Dodji



More information about the Libabigail mailing list