Libabigail 1.7 is out!

Dodji Seketeli dodji@seketeli.org
Wed Jan 1 00:00:00 GMT 2020


Libabigail 1.7 has been released.

You can download it at http://mirrors.kernel.org/sourceware/libabigail/libabigail-1.7.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.

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

Dodji Seketeli:
      Internal pretty repr of union cannot be flat representation
      Fix anonymous union constructed under the wrong context
      Propagate private type diff category through refs/qualified type diffs
      Add test for the fix for PR24410
      Fix "Add test for the fix for PR24410"
      Bug 24430 - Fold away const for array types
      Bug 24431 - ELF reader can't interpret ksymtab with Kernel 4.19+
      Bug 24431 - ELF reader fails to determine __ksymtab format
      Enable building with AddressSanitizer activated
      Fix a memory leak in real_path
      Delay canonicalization for array and qualified types
      abg-tools-utils.cc: Plug a leak in find_file_under_dir
      Add --enable-{asan,ubsan} configure options
      Canonicalize types non tied to any DWARF DIE
      Don't try to de-duplicate all anonymous struct DIEs
      Use canonical types hash maps for type IDs in abixml writer
      Handle several member anonymous types of the same kind
      Better handle several anonymous types of the same kind
      Fix logic of get_binary_load_address
      Handle Linux kernel binaries with no __ksymtab section
      Bug 24560 - Assertion failure on an abixml with an anonymous type
      Bug 24552 - abidiff fails comparing a corpus against a corpus group
      Take anonymous scopes into account when comparing decls
      [dwarf-reader] const-ify Dwarf_Die* use in many places
      [dwarf-reader] Re-use function types inside a given TU
      [dwarf-reader] Better use of linkage name for fn decl de-duplication
      [dwarf-reader] Optimize speed of compare_as_decl_dies
      [dwarf-reader] Fix indentation in compare_dies_string_attribute_value
      Fully account for anonymous-ness of scopes when comparing decl names
      Bug 24731 - Wrongly reporting union members order change
      Make abidiff --harmless show harmless changes in unions
      [dwarf-reader] Constify the first parameter of maybe_canonicalize_type
      [dwarf-reader] Make sure to canonicalize anonymous types
      Implement a poor-man's RTTI for performance
      [xml-writter] Avoid using RTTI when dynamically hashing types
      [xml-writter] Speedup function_type::get_cached_name
      [xml-writer] Remove a useless kludge
      Misc indent cleanup
      Implement fast comparison of Linux Kernel types when applicable
      [ir] Fix indentation and add comments
      Add timing to the verbose logs of abidw
      Bug 24787 - Filter out enum changes into compatible integer types
      Serialize canonical types to avoid testing if types have been emitted
      Detect the presence of R_AARCH64_{ABS64, PREL32} macros
      Bug 25007 - Don't use section-relative symbol values on ET_REL binaries
      Remove the elf_symbol::get_value property
      Guard testing v4.19+ AARCH64 kernel module loading for EL6 support
      Fix reading of relocation sections when endianness mismatches
      [has_type_change] Better detect type size changes
      Better propagation of suppressed-ness to function types
      Support the "name_not_regexp" property in the [suppress_type] section
      PR25042 - Support string form DW_FORM_strx{1,4} from DWARF 5
      Fix a typo in a comment of abg-dwar-reader.cc
      Fix thinkos in DW_FORM_strx detection in configure.ac
      PR25058 - Support decl DIEs referring to symbols using DW_AT_ranges
      PR25058 - Better support fn DIEs referring to symbols using DW_AT_ranges
      [abg-comparison.cc] Fix comments typo
      Support symbol_name_not_regexp in [suppress_{function, variable}]
      Bug 25095 - Apply symbol white lists to ELF symbols
      Bug 25128 - Leaf diff reporter shouldn't compare decl-only classes
      Bug 25128 - Handle decl-only classes that differ only in size
      Small style fix in abg-default-reporter.cc
      Bug 24690 - Support comparing non-reachable types of a binary
      Misc typo fixes
      Bug 25409 - Fix reading layout-offset-in-bits attribute of data-member
      suppression: Better handle soname/filename properties evaluation
      abixml-reader: Support SONAME related properties on file suppression
      tools-utils: Drop redefinition of fopen when BAD_FTS is defined
      gen-changelog.py: Update the script for python3

Giuliano Procida:
      Remove redundant mention of libtool in COMPILING documentation.
      Fix typo in COMPILING.
      Don't ignore options when diffing translation units (.bi files).
      Sort kernel module object files before processing them.
      Fix stray comma in leaf-changes-only mode.

Jessica Yu:
      Support pre and post v4.19 ksymtabs for Linux kernel modules

Mark Wielaard:
      Fix an undefined behaviour in has_var_type_cv_qual_change
      Don't try to read a build_id as string in find_alt_debug_info_link.

Matthias Maennich:
      dwarf-reader: fix undefined behaviour in get_binary_load_address
      Add .clang-format approximation
      abg-writer: Simplify 'annotate' propagation
      Add deprecation facilities
      abg-writer: Refactor write_translation_unit API
      abg-writer: Refactor write_corpus API
      abg-writer: Refactor write_corpus_group API
      write_context: allow mutating the ostream used
      abidw: Consolidate setting options
      Make write_architecture and write_corpus_path flags in the write_context
      abidw: add option to omit the compilation directory
      abidw: add option to only emit file names (--short-locs)
      abg-writer: drop deprecated API
      .gitignore: Add libabigail-?.* *.orig files
      .clang-format: Add more options for match existing coding style
      abg-reporter.h: add missing includes / using declarations
      Drop requirement to compile with GNU extensions
      Update tests/.gitignore to ignore runtesttoolsutils
      Add compatibility layer for C++11 mode
      abg-tools-utils: add missing header include guards
      Ensure a consistent C++ standard use
      abg-dwarf-reader: detect kernel modules without exports as such
      dwarf-reader: read_corpus_from_elf: unconditionally load elf properties
      kmidiff: fix help message
      dwarf-reader: refactor try_reading_first_ksymtab_entry_using{pre,}_v4_19_format
      dwarf-reader: add support for symbol namespaces in ksymtab entries
      abg-dwarf-reader: resolve relocation sections by index
      dwarf-reader: relax restriction about relocation sections in try_reading_first_ksymtab_entry
      Add (undocumented) support for version suffixes
      abidiff/kmidiff: do not default-suppress added symbols
      abg-reader: handle empty corpus nodes in xml representation
      corpus: is_empty: consider actual translation unit contents
      writer: completely skip over empty corpora
      KMI Whitelists: Add functionality to make whitelists additive
      KMI Whitelists: Drop old whitelist extraction methods
      clang-format: Better approximation for binary operators and assignments
      dwarf-reader: handle symtab.section_header.sh_entsize == 0
      dwarf-reader: handle binaries with missing symtab
      Fix / add include guards
      abg-fwd: drop duplicate forward declaration for corpus_sptr
      Testing: add Catch Unit test framework
      Fix some parameter name inconsistencies
      abg-comparison: prefer .empty() over implicit bool conversion of .size()
      abg-dwarf-reader: zero initialize local Dwarf_Addr values
      abg-workers: Rework the worker queue to improve concurrent behaviour
      abg-fwd.h: fix mismatched tags for ir_node_visitor
      abilint: fix return types bool -> int
      abg-reader: clarify boolean use of assignment
      diff-utils: point: fix postfix decrement/increment operator
      add missing virtual destructors
      viz-dot: remove unused members from dot
      suppressions: drop unused parameter from type_is_suppressed
      ir: drop unused data members from {environment,qualified_name}_setter
      distinct_diff: avoid expression with side effects within typeid
      dwarf-reader: fix recursion in expr_result::operator&
      Update .gitignore files to ignore typical dev side products
      dwarf-reader: Fix comments for try_reading_first_ksymtab_entry_using_{pre_,}v4_19_format
      dwarf-reader: templatize read_int_from_array_of_bytes
      Bug 24431 Read 32bit values when testing for the v4.19 symbol table format
      Bug 24431 Treat __ksymtab as int32_t for v4.19+ kernels

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
code be noticed!

-- 
		Dodji



More information about the Libabigail mailing list