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):
      elf-helpers: make sure config.h is included first

Dodji Seketeli (58):
      Update website for the 2.3 release
      release-text-template.txt: Modernize a little bit.
      dwarf-reader: Don't compute canonical type while propagating one
      Bug 29693 - clang-libs from f37 fails self test
      Bug 30466 - harfbuzz fails self-check on f38
      Bug 30467 - enlightenment fails self check on f38
      configure.ac: Bump to 2.4 version
      Bug 30503 - Fail to compare non-anonymous struct vs named struct data members
      Bug 30461 - insight fails self-compare
      fedabipkgdiff: Don't choke Koji servers with self-signed SSL certs
      fedabipkgdiff: Fix previous commit
      Make fe_iface::initialize independent from the kind of interface
      corpus,tools-utils: Support loading a corpus, its deps & other binaries
      abidw: Add --{follow,list}-dependencies & --add-binaries support
      abidiff: Add --{follow,list}-dependencies & add-binaries{1,2} support
      reader: Fix a long standing Thinko
      ir: Remove an unnecessary comparison
      reader: fix indentation
      tools-utils: Fix indentation
      dwarf-reader,ir: Make logging a property of the middle end
      dwarf-reader: Fix some logging
      abipkgdiff: Initialize libxml2 to use it in a multi-thread context
      tools-utils: Avoid endless loop
      {dwarf,elf}reader: Don't consider no symbol table as an error
      abipkgdiff: Avoid comparing binaries that are outside of the package
      ir: Add missing ABG_RETURN in the comparison engine
      ir: Add fn types to type lookup maps
      ir: Fix forgetting canonicalizing some function types
      ir: Avoid forgetting potential seemingly duplicated member functions
      ir: Really avoid canonicalizing decl-only classes
      ir: Use non qualified typedef name for type canonicalization
      ir: Fix qualification as non-confirmed propagated canonical types
      dwarf-reader: Do not re-use typedefs in a scope
      elf-reader, ir: Fix compilation on GCC 4.8.5
      configure,test-diff-pkg.cc: Handle symlinks presence in dist tarball
      libabigail-concepts.rst:  Sort the properties of the directives
      libabigail-concepts.rst: Remove trailing white spaces
      test-abidiff-exit: Do not use debuginfo dir when its empty
      ir: Fix output of 'debug(enum-type)'
      comparison: Always apply filters on the diff graph
      abg-comparison[-priv]: Better detection of incompatible unreachable type changes
      doc/manuals/libabigail-concepts.rst: Fix typo
      suppression: Fix indentation
      suppression: Fix a typo in apidoc
      Bug 30959 - Crash on malformed fn call expression
      ini: Support '[' and ']' in arguments of function call expressions
      init: Fix thinko in apidoc
      ir: Remove redundant virtual member functions
      Bug 30971 - Wrong interpretation of "has_data_member_inserted_at"
      default-reporter,reporter-priv: Do not report names of anonymous enums
      ir,comparison,corpus: Better support anonymous enums comparison
      ir,comparison: Represent changed anonymous enums
      comparison: Represent changed unreachable anonymous unions, structs & enums
      Support suppressing data member insertion before a flexible array member
      suppression: Make the "end" data member offset selector be named boundary
      ir: Fix compilation error with GCC 4.8.5
      gen-changelog.py: Don't escaping '/' with '\' in regexp
      gen-changelog.py: Fix a long standing typo

Giuliano Procida (1):
      operator!= fixes for C++-20

John Moon (1):
      suppression: Add "changed_enumerators_regexp" property

Matthias Maennich (2):
      symtab reader: use C++11 `using` syntax instead of typedefs
      symtab reader: fix symtab iterator to support C++20

Yaakov Selkowitz (1):
      Fix fedabipkgdiff configure check for Python 3.12


2.3
===
Aleksei Vetrov (1):
      symtab: fix getting CRC in relocatable modules

Ben Woodard (1):
      Have fedabipkgdiff sleep while waiting for abipkgdiff

Dodji Seketeli (92):
      ir: Improve get_debug_representation
      ir: Add a debug_comp_stack debugging function
      Bug 29857 - Don't pop comparison operands that haven't been pushed
      Bug 29857 - dwarf-reader: Resolve decl-only unions
      Bug 29857 - Better detect comparison cycles in type graph
      ir: Cache more aggregate type comparison results
      NEWS: Update for 2.2 release
      ChangeLog: Update for 2.2 release
      configure: Bump version number to 2.3
      Update website documentation for 2.2
      Bug 29901 - abidiff hangs when comparing libgs.so.10 with itself
      Bug 29934 - Handle buggy data members with empty names
      dwarf-reader: Bug 29932 - Handle function DIE as type as needed
      elf-reader: Don't free CTF resources too early
      ir: misc cleanups
      ir: Bug 29934 - Fix propagated canonical type confirmation
      ir: Add sanity checking to canonical type propagation confirmation
      Update copyright year for 2023
      Don't use the "infinite" keyword for arrays of unknown size
      dwarf-reader: Bug 29811 - Support updating of variable type
      Bug 29811 - Better categorize harmless unknown array size changes
      fix comparing array subrange DIEs
      configure: Enable the CTF front-end by default
      Add support for BTF
      Update the copyright notice for the BTF reader
      btf-reader: Use abigail::ir::canonicalize_types to canonicalize types
      Better detect suitable libctf version
      Update CTF's ctf_dict_t detection
      fe-iface: Add missing virtual destructor
      dwarf-reader: Remove unused code
      corpus: Handle empty symbol table cases
      {dwarf,elf_based}-reader,writer: Avoid duplicating corpora in corpus_group
      default-reporter: Fix source location in functions change report
      PR30048 - wrong pretty representation of qualified pointers
      configure: Bump the CURRENT library number
      ir: Add missing virtual methods overloads
      ctf-reader: Fix GCC 13 warnings
      abipkgdiff: Emit better logs in verbose mode
      abipkgdiff: Emit error when no vmlinux is found in debug package
      ini: Fix parsing list property values
      suppr: Support has_data_member and has_data_member_regexp properties
      suppression: Factorize out is_data_member_offset_in_range
      suppression: Support the has_size_change property for suppress_type
      suppression: Support offset_of_{first,last}_data_member_regexp offset selectors
      comparison, suppression: Support [allow_type] directive
      Misc white space fixes
      abidiff: Add extensive logging
      tools-utils: Support kernel stablelist
      comp-filter: Don't re-visit node while applying filters to diff nodes
      comparison: Add a mode to not apply filters on interface sub-graphs
      comparison: When marking leaf nodes don't do unnecessary impact analysis
      comp-filter: Speed up harmless/harmful categorization
      tools-utils: Improve logging in build_corpus_group_from_kernel_dist_under
      ir: Fix cycle detection for union types
      Bug 29977 - dwarf-reader: Fix canonical DIE propagation canceling
      dwarf-reader,abidiff: Fix compilation with --enable-debug-type-canonicalization
      Bug 29912 - Better support an ELF symbol alias that designates several functions
      Bug 29911 - fedabipkgdiff forgets to provide some debuginfo RPMs to abipkgdiff
      Bug 29692 - Support binaries with empty symbol table
      abipkgdiff: Fix a typo
      test-symtab: Update after support for empty symtabs
      Bug 29690 - Out of range exception in add_or_update_class_type
      Bug 29686 - Fix testing the presence of anonymous data member in a struct
      Bug 29345 - abipkgdiff is confused by symlinked binaries in RPMs
      Bug 29340 - Add support for Ada range types
      Fix redundancy filtering of range types
      Bug rhbz#2182807 --  abipkgdiff crashes on missing debuginfo package
      dwarf-reader: Support Ada subranges having upper_bound < lower_bound
      abipkgdiff: Don't use user-specific filesystem info in error msg
      reader: Make reader::get_scope_for_node handle subranges at array scope.
      dwarf-reader: Support DW_OP_GNU_variable_value
      dwarf-reader: Fix typo in comment
      dwarf-reader: Support indirectly referenced subrange_type DIEs
      fedabipkgdiff: Add timing data in debug logs
      fedabipkgdiff: Remove busy loop when forking abipkgdiff
      Bug 29339 - elf-helpers: Don't crash on unexpected ELF file
      abi{dw,diff}: Better error messages when alternate debuginfo not found
      abidiff,reader: Fix compilation with --debug-self-comparison
      ir: Add new environment::get_type_id_from_type
      ir: Recognize "void* as being equal to all other pointers in C
      tests/update-test-output.py: Adapt to some broken test output
      Improve self-comparison debug mode
      ir: Improve debugging type_base::get_canonical_type_for
      writer: Annotate pointer representation
      comparison: Fix index error when interpreting scope comparison
      ir: fix canonical type propagation canceling error
      reader: Recognize variadic parameter type from abixml
      Bug 30309 - Support absolute path to alt debug info file in DWARF
      Fix the test of the patch for Bug 30309
      test-abidiff-exit: Fix the command line passed to abidiff
      ini: Do not crash on incorrect property value
      test-ini: Fix a typo

Giuliano Procida (1):
      DWARF reader: avoid C++20 operator!= overload ambiguity

Guillermo E. Martinez (4):
      ctf-front-end: Add test for alias symbols
      ctf-reader: Fix missing initializer for member in test suite
      abipkgdiff: Fix kernel package detection when comparing kABIs
      tools-utils: Fix looking for vmlinux binary in debuginfo package

Mark Wielaard (1):
      doc: Fix some typos and add some missing references

Petr Pavlu (2):
      Fix de-initialization of elf::reader::priv
      abidiff: Fix handling of linux-kernel-mode

Xiaole He (1):
      elf-reader: reclaim fd and mem before break


2.2
===
Aleksei Vetrov (1):
      symtab: add support for CRC values from __kcrctab

Dodji Seketeli (20):
      Bump version number to 2.2
      Update website for 2.1 release.
      ir: Fix documentation of canonical type propagation
      abidiff: add a --debug-tc option
      Bug 29650 - Caching class comparison result potentially too early
      ir: remove redundant cycle detection code in equals
      ir: Fix a wrong comment in canonicalize()
      ir: Properly indent overload of equals() for class_decl
      dwarf-reader: Fix class size setting bug
      rhbz2114909 - Refer to changed base classes using their non-qualified names
      ir: Don't crash when looking at corpus-less translation units
      kmidiff: Fix spacing in the help string
      Use environment by reference.
      Make Front Ends first class citizens
      test-read-ctf: Update tests for fixing size and name for underlying types
      Fix spurious deleted/added virtual destructor change report
      dwarf-reader: Leverage ODR & DWZ
      dwarf-reader: Avoid duplicating member functions
      dwarf-reader: Make die_peel_{qual_ptr,typedef} always set peeled type
      Bug 29829 - dwarf-reader: Allow DIEs to be in a lexical block

Giuliano Procida (1):
      Narrow Linux symbol CRCs to 32 bits

Guillermo E. Martinez (6):
      Use the CTF reader by default when applicable
      ctf-reader: Set alignment-in-bits property to 0
      ctf-reader: Fix size and name for underlying types
      ctf-reader: Strip qualification from a qualified array type
      ctf-reader: Fix representation of multidimensional arrays
      ctf-reader: Fix array size representation

Sam James (1):
      Use xz as the default tarball compression format

Xiaole He (3):
      abg-ir: add missing else
      abg-reader: optimize if construction
      abg-diff-utils: fix typo in comments

2.1
===
Ben Woodard (7):
      Fix typo in abipkgdiff manpage
      Add an option ignore SONAME differences in libraries
      Add github actions to support workflows
      abicompat: Add missing space
      abidiff: Remove redundant code
      abicompat: Support reading CTF and abixml
      Bug 28669 - Increment Library version

David Cantrell (1):
      Include <libgen.h> in tools/abisym.cc for basename(3)

David Seifert (1):
      Find fts-standalone on musl

Dodji Seketeli (90):
      Fix tarball upload directory
      Update libabigail web page for 2.0 release
      Bump to 2.1 version
      Improve type (de)serialization instability debugging
      Add --enable-debug-type-canonicalization to configure
      tests/Makefile.am: Fix warning
      ir: Avoid canonicalizing types that are not meant to
      writer: Don't forget to emit types referenced by function types
      writer: Don't forget when emitting array subrange types
      writer: Don't forget that a naming typedef is referenced
      Bug 28364 - libwiretap fails self comparison
      Add debug info package for wireshark-cli-3.4.9-1.fc36.x86_64.rpm
      Update licensing information on the web page after 2.0
      PR28365 - Assert on empty typedef on webkit2gtk3-jsc-2.32.3-1.fc34.x86_64
      Bug 28450 - Fix cloned member function handling in DWARF
      abidw: Add --abixml-version
      abg-config.{cc,h}: Misc comment cleanups
      Bug 28584 - Don't drop global variables that lack DW_AT_external
      test-utils: Define colors for test status messages
      test-utils: Define test status reporting functions
      ctf-reader: Remove useless parameter from fill_ctf_section
      suppression: Fix has_data_member_inserted_between = {offset_of(), offset_of()}
      reader: Build array types with their element type "a priori"
      suppression: Fix compilation warning on el7
      Bug 28319 - re-fix of rhbz1951526 - SELF CHECK FAILED for 'gimp-2.10'
      writer: small compilation error fix
      symtab-reader: Fix typo in comment
      symtab-reader: Remove an over-agressive assertion
      Bug 26646 - unexpected declaration-only types
      configure: Remove use of obsolete AC_CONFIG_HEADER
      abilint: add the --show-type-use option
      abilint --show-type-use: Show results for global decls that have no symbols
      reader: Fix a compilation warning
      ir: Remove obsolete comment from enumerator equal operator
      Bug 26646 - unexpected declaration-only types (part 2)
      dwarf-reader: Don't propagate canonical type upon aggregate redundancy
      Bug 28013 - Acknowledge variadic parameter type is not canonicalized
      comparison: Describe the "generic view" of a diff node
      comparison: Factorize the code that inserts diff nodes to the graph
      comparison: Avoid sorting diff nodes with wrong criteria
      comparison: Fix leaf report summary
      Bug 29144 - abidiff doesn't report base class re-ordering
      abicompat: Properly guard inclusion of abg-ctf-reader.h
      ir, test-read-ctf: Remove uncertainty in sorting anonymous types
      Add better error messaging to several tests
      test-read-dwarf: Use abidw rather than using the library
      abidw, dwarf-reader: Add an option to debug DIE canonicalization
      dwarf-reader: compare_dies sometimes compares empty formal parms
      Canonicalize DIEs w/o assuming ODR & handle typedefs transparently
      dwarf-reader: Fix DWARF string comparison optimization
      reporter-priv: Passing a string parm by reference
      Update year in copyright notice
      ir: Make canonicalization stable wrt typedefs in fn return types
      test-alt-dwarf: Add missing dwz alt-debug file
      dwarf-reader: Avoid long comparisons when resolving C++ decl-only classes
      dwarf-reader: Don't consider top-level types as private
      Bug 29303 - Cache the result of structural aggregate comparison
      ir: Add some debugging facilities for the comparison machinery
      dwarf-reader,ir: Don't canonicalize enums too early & too naively
      Bug 29302 - Don't edit fn linkage name when not appropriate
      dwarf-reader: Fix a thinko when building vars
      Better Handle naming typedefs on anonymous enums
      dwarf-reader: Support DWARF incomplete class types
      tests-diff-{filter,pkg,pkg-ctf}: Fix tests broken by the previous commit
      ir: Make pointers name stable wrt decl-only-ness of pointed-to types
      ir: Disambiguate sorting of array element types
      dwarf-reader: Remove redundant qualifiers from qualified types
      ir: Consider integral types of same kind and size as equivalent
      writer: Make sorting referenced typedefs types stable in abixml
      ir: Don't consider different int types of same kind and size as equivalent
      Update test-read-ctf reference output
      dwarf-reader: Better handle the absence of a die->parent map
      Add test-abidiff-exit/ld-2.28-21{0,1}.so to source distribution
      ir: Don't overdo canonical type propagation control when comparing classes
      ir: translation_unit::is_empty should work without environment.
      dwarf-reader: Simplify the canonicalization decision of types added to IR
      Bug PR29443 - Global variables not emitted to abixml in some cases
      test-annotate: Don't emit architecture data
      Fix butchered tests/data/Makefile.am
      dwarf-reader: Revamp the canonical type DIE propagation algorithm
      Allow restricting analyzed decls to exported symbols
      Fix IR comparison result caching and canonical type propagation tracking
      ir, writer: Go back to canonicalizing typedefs in the IR
      test-read-ctf: Update test output files after typedef canonicalization
      comparison: Ensure that fn parms with basic types can't be redundant
      Better support for golang programs
      ir: Support cloning data members of unions
      dwarf-reader: Accept SHT_PROGBITS sections in .dynamic segment
      ir: Avoid cancelling a "confirmed" propagated canonical type
      Update ChangeLog for 2.1 release.

Frederic Cambus (1):
      Fix numbering error in the abidiff manual.

George Rawlinson (1):
      Bug 28663 - generate man page for kmidiff

Giuliano Procida (22):
      Tweak clang-format configuration
      Bug 28191 - Interpret DWARF 5 addrx locations
      symtab reader: fix up alternative addresses
      DWARF reader: use size_t for DWARF expression length
      abidiff: include ABI XML versions when reporting a mismatch
      abidiff: include ABI XML versions when reporting a mismatch cont.
      XML writer: remove type_hasher and remaining comment
      XML writer: drop write_elf_symbols_table variable emitted_syms
      XML writer: improve slightly emission of top-level declarations
      XML writer: do not create extra temporary referenced type shared_ptr
      symtab: refactor ELF symbol value tweaks
      symtab: fix up 64-bit ARM address which may contain tags
      test-annotate.cc: ignore whitespace during diff
      XML writer: unify type emission tracking
      limit repeated DIE comparisons
      crc_changed: eliminate copying of shared_ptr values
      optional: minor improvements
      Linux symbol CRCs: support 0 and report presence changes
      add Linux kernel symbol namespace support
      abidw: fix --stats output for resolved classes and enums
      abidw: remove always true test in resolve_declaration_only_classes
      abidw: resolve declaration-only enums the same as classes

Guillermo E. Martinez (20):
      ctf-reader: Use argument by reference reading the context
      ctf-reader: Make create_read_context return a smart pointer.
      ctf-reader: Use ABG_ASSERT instead of assert
      ctf-reader: Fix memory leak reported by valgrind
      ctf-reader: Fix length in dynamic array definition
      Add regression tests for ctf reading
      ctf-reader: Assert on ir::hash_as_canonical_type_or_constant
      ctf-reader: Add support to undefined forward declaration types
      tools-utils: `entry_of_file_with_name' returns incorrect result
      ctf-reader: Fix multiple var-decl in anonymous struct/uninons
      ctf-reader: Add support to read CTF information from the Linux Kernel
      ctf-reader: shows incomplete summary changes
      ctf-reader: CTF debug info for some symbols is not found
      abipkgdiff: Add support to compare packages with CTF debug format
      ctf-reader: add support to looking debug information in external path
      kmidiff: Add CTF support to comparing Kernel trees
      Add regression tests for abipkgdiff using ctf info
      ctf-reader: add support to looks for debug information to extract kABI
      ctf-reader: looks for debug information in out-of-tree modules
      ctf-reader: Lookup debug info for symbols in a non default archive member

Jose E. Marchesi (7):
      Add support for the CTF debug format to libabigail.
      ctf: make libabigail::ctf_reader::read_corpus reentrant
      elf_helpers: new utility function find_strtab_for_symtab_section
      abg-ctf-reader: use the right string table for CTF data
      Move dwarf_reader::status facilities to an abigail::elf_reader namespace
      ctf: ctf_reader::read_corpus now sets a status
      abidw: add support for CTF

Mark Wielaard (4):
      dwarf-reader: Workaround libdw dwarf_location_expression bug
      DWARF reader: use size_t for DWARF expression length cont.
      symtab-reader: Setup aliases before checking ppc64 opd function entries
      Handle zero sh_entsize in get_soname_of_elf_file

Matthias Maennich (8):
      XML writer: adjust tracking of emitted declarations
      XML writer: use consistent type pointers for type ids and emission tracking
      XML writer: use exemplar types for tracking referenced types
      XML writer: track emitted types by bare pointer
      XML writer: map type ids by bare pointer
      XML writer: resolve declaration-only enum definitions
      abidiff: improve whitespace generation in symbol diff report
      tests: Update Catch2 library to v2.13.9

Randy MacLeod (1):
      Improve some grammar

Thomas Schwinge (13):
      Better highlight 'make distcheck-fast'
      CONTRIBUTING: Move "Coding language and style" section
      configure: Tune fedabipkgdiff dependencies detection
      Add '.mailmap'
      Further update 'make distcheck-fast'
      configure: Instead of for rpm 4.15+ version, test actual rpm/zstd support
      abipkgdiff: Respect 'create_abi_file_path' interface
      abipkgdiff: Use 'convert_path_to_relative' in 'create_abi_file_path'
      fedabipkgdiff: Enable testing without proper Koji installation
      Replace use of deprecated Python 'imp' module with 'importlib'
      fedabipkgdiff: Also accept MIME type 'application/x-redhat-package-manager' for RPM files
      Replace Python 'import importlib' with 'import importlib.machinery'
      Handle several variants of Python 'imp', 'importlib' modules

Vanessa Sochat (2):
      Fixing incorrect symbol
      Adding missing newline to build-container workflow

Xiaole He via Libabigail (1):
      abg-reader: fix comment of function

tangmeng (8):
      Fix trivial typo when printing help information
      abilint: fix trivial typo when using abilint
      abicompat: Add prompt message for abnormal operation
      Fix trivial typo when printing message
      abilint: Add prompt message for abnormal operation
      abicompat: Add prompt message for abnormal operation
      test-abicompat: Make the test output more pleasant
      Standardize and improve the output of several tests

vsoch (1):
      Add Logic to detect file type by extension


2.0
===

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)

1.8
===
Dodji Seketeli (62):
      Bump version number to 1.8
      Update fedabipkgdiff tests according to commit b602f46c
      abipkgdiff: fix documentation of --impacted-interface
      dwarf-reader: Fix bloom filter access in GNU_HASH section
      Update tests/data/test-abidiff-exit/test-leaf-peeling-report.txt
      Update the mailing list registration form on the web page
      abipkgdiff: Fix race condition while using private types suppr specs
      Fix compilation with g++ 4.8.5 on el7
      Bug 25977 - runtestabidiffexit regression on EL7
      Bug 25986 - Wrong name of function type used in change report
      Add -g back to ABIGAIL_DEVEL
      {default,leaf}-reporter: group data members changes reports together
      dwarf-reader: support several anonymous data members in a given class
      Bug 25661 - Support data member replacement by anonymous data member
      Bug 25989 - type_topo_comp doesn't meet irreflexive requirements
      abigail.m4: Fix copyright notice
      Bug 26127 - abidw --annotate emits incomplete function types
      Bug 26135 - Wrong linkage name causes anonymous classes miscomparison
      Support declaration-only enums in DWARF reader.
      reader: Remove useless support for WIP types
      Pimpl-ify traversable_base and remove its unused traverse method
      dwarf-reader: re-indent a block of code
      Bug 26261 - Fix logic for canonicalizing DW_TAG_subroutine_type DIEs
      Use flat representation to canonicalize anonymous classes and unions
      writer: Avoid using dynamic hashing in type maps
      Fix thinko in get_vmlinux_path_from_kernel_dist
      Bug 26309 - Wrong leaf reporting of changes to typedef underlying type
      Make abidiff and abidw support several --headers-dir{1,2} options
      Bug 26568 - Union should support more than one anonymous member
      Consider the implicit 'this' parameter when comparing methods
      Fix redundancy detection in the diff graph
      Structurally compare the few non-canonicalized types in general
      configure: Support ABIGAIL_NO_OPTIMIZATION_DEBUG environment variable
      abg-tools-utils: Fix comment
      Bug 26770 - Spurious declaration-only-ness induces spurious type changes
      update-test-output.py: Update syntax
      Update test-libandroid.so.abi
      Bug PR26739 - Handle qualified typedef array types
      writer: Sort decls and fix topological sorting for types
      ir: Add equality op to array_type_def::subrange_type::bound_value
      Make sure to canonicalize all types but decl-only classes
      Bug 26769 - Fix missing types in abixml output
      abipkgdiff: Add a new --self-check option
      fedabipkgdiff: make --self-compare use abipkgdiff --self-check
      dwarf-reader: support artificially generated translation units
      tests/data/test-fedabipkgdiff: Update reference output
      abipkgdiff: Avoid uncertainty when sorting worker tasks
      reader: Read array subrange length into an uint64_t
      Bug 26780 - Fix array subrange bounds (de)serialization
      writer: Emit definitions of declarations when they are present
      ir: Introduce internal pretty representation for anonymous classes
      reader: Don't lose anonymous-ness of decl-only classes
      dwarf-reader: Avoid having several functions with the same symbol
      abidw: make --abidiff report any change against own ABIXML
      abipkgdiff: make --self-check to fail on any change against own ABIXML
      writer: fix off-by-one error in assertion
      reader: Fix off-by-one error in assert
      dwarf-reader: Bug 26908 - don't crash on empty DW_TAG_partial_unit
      configure: add --enable-rpm415 option
      Add check-self-compare to release regression testing
      Update the Changelog for 1.8
      Update NEWS file for 1.8

Giuliano Procida (112):
      Correct spelling of "alignment".
      Correct various inconsequential typos.
      Add space missing between "[C]" tag and description of changed item.
      Fix the reporting of leaf change statistics.
      abisym: Remove leading space in output.
      abg-comparison.cc: Remove stray function declaration.
      Fix spurious new lines after diff sections.
      Add more leaf change reporting.
      Fix interaction of --redundant and --leaf-changes-only options.
      abg-leaf-reporter.cc: Fix indentation of function parameter diffs.
      Eliminate some unnecessary blank lines in diff output.
      Output 2-space indentation consistently.
      Treat function type changes as local.
      Tag add/remove/change lines unconditionally with [A], [D], [C].
      dwarf-reader: Use all bits of Bloom filter words.
      Ensure change_kind enum values are used consistently.
      Eliminate redundancy in representation of local change kinds.
      abg-ir.cc: Fix peel_typedef_type(const type_base*).
      abg-ir.cc: Remove always-true check.
      abg-ir.cc: Improve types_have_similar_structure.
      abidiff: Remove some more unnecessary blank lines.
      abg-reader.cc: Fix code indentation and tabify.
      abg-ir.cc: Add types_have_similar_structure tests.
      abidiff: Clean up new lines between sections.
      abidiff: Remove blank line after base class diffs.
      abidiff: Fix enum impacted interfaces blank line.
      abidiff: Remove member function diff blank lines.
      abidiff: Fix variable declaration formatting.
      abidiff: Eliminate leaf mode double blank lines.
      abidiff: Remove new lines after parameter diffs.
      Fix size calculations for multidimensional arrays.
      abidiff: Remove blank line after typedef changes.
      test-diff-suppr.cc: Add missing tests.
      abidiffpkg: Remove stray test report file.
      abg-dwarf-reader.cc: Avoid division by zero.
      Rename test-abidiff-exit/test-leaf[0-3] files.
      test-abidiff-exit.cc: Drop redundant --redundant.
      abidiff: More compact references to prior diffs.
      abg-reporter-priv.cc: Fix anonymous member size change reports.
      abg-reporter-priv.cc: Improve readability of represent helper function.
      abidiff: Document and refresh tests.
      Fix variable suppression name_not_regex.
      test35-leaf.suppr: fix regex typo.
      test24-soname-suppr*txt: Fix suppression syntax.
      Add tests for declaration-only struct diffs.
      abidiff: Blank line after declaration-only diff.
      abidiff: Omit declaration-only type size 0 diffs.
      Move regex definitions to own files.
      Move libxml bits out of abg-sptr-utils.h.
      Simplify generation of symbol whitelist regex.
      Remove excess whitespace.
      Remove stray semicolons.
      Eliminate redundant conditional operators.
      Make set_drops_artifact_from_ir non-const.
      Hoist some common expressions evaluating offsets.
      Tidy #includes in a few files.
      Document ^_^ regex in generate_from_strings.
      Escape names used in symbol whitelisting regex.
      abg-suppression.cc: More uniform variable naming.
      Add POSIX regex wrapper functions.
      Use regex::compile wrapper instead of regcomp.
      Tidy checks for sufficient suppression properties.
      Use regex::match wrapper instead of regexec.
      Refactor read_parameter_spec_from_string logic.
      abg-reader.cc: Remove key_replacement_type_map.
      Let std::unordered_map::operator[] insert keys.
      doc: Fix sufficient suppression property lists.
      Tidy get_pretty_representation qualified_name.
      clang-format: set continuation indentation to 2
      Fix HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY spelling
      Eliminate non-ASCII characters.
      abg-writer: Add support for stable hash type ids.
      Fix leaf-mode formatting of decl <-> defn diffs.
      Fix bug that suppressed DWARF read tests.
      get_canonical_type_for: restore environment better
      Improve code comments and whitespace.
      Refactor d.context() as ctxt in report(enum_diff).
      Tidy build_enum_type state variables.
      Rename declaration-definition change category.
      abg-ir.cc: Remove unused re_canonicalize function.
      Support incomplete enums in core and diff code.
      Add declaration-only enums to XML reader/writer.
      Add tests for declaration-only enums.
      Use pointers not strings in type graph comparison.
      abg-writer.cc: Clean up new line emission.
      reporter: Fix report whitespace typos.
      Fix corpus_diff::has_net_changes for --leaf-changes-only mode
      abg-ir.cc: Tidy some operator== definitions
      Fix --type-id-style hash for empty internal names.
      abg-comparison.cc: Tidy some corpus_diff code
      abg-ir.cc: Refactor operator== methods with helper function
      abg-comparison.h: Remove stray declaration
      Remove unused is_reference_or_pointer_diff.
      Simplify peel_typedef_pointer_or_reference_type
      Fix inheritance of scope_decl::insert_member_decl
      Enable Clang's -Werror-overloaded-virtual.
      abg-ir.cc: Fix incorrect pop of compared types.
      Remove ABI XML test data file blank lines
      abg-writer.cc: Fix indentation of XML output
      abg-ir.cc: Remove duplicated line of code
      Make decl_names_equal more accurate
      Fix decl_base comparison function
      Fix maybe_report_data_members_replaced_by_anon_dm
      Improve documentation of abidiff --type-id-style
      DWARF: look up DW_AT_declaration non-recursively
      DWARF: track chained DIE declaration-only status
      abg-corpus.cc: report architecture discrepancies
      Add missing newlines to end of test files.
      Fix two wrongs in test suppression regex
      Stabilise sort of canonical types
      Improve and stabilise sort of member functions
      Improve enum synthetic type names

Mark Wielaard (10):
      Add --header-file option to add individual public header files.
      Add --drop-private-types to abidw.
      Add --drop-undefined-syms to abidw.
      Add no-parameter-names to drop function parameter names.
      Add --no-elf-needed option to drop DT_NEEDED list from corpus.
      Rename read_elf_symbol_binding to read_elf_symbol_visibility.
      Add --no-write-default-sizes option.
      Don't iterate before the start of a RandomAccessOutputIterator.
      dwarf-reader: get subrange_type bounds signedness from underlying type
      Assume subrange bounds types are unsigned if no underlying type is given.

Matthias Maennich (38):
      dwarf-reader: gnu_hash_tab lookup: fix overflow in bloom hash calculation
      configure: add support for thread sanitizer (--enable-tsan)
      abg-workers: guard bring_workers_down to avoid dead lock
      abidiff: fix documentation of --impacted-interfaces
      configure: add support for memory sanitizer (--enable-msan)
      test-read-dwarf: ensure in_elf_path exists and add missing test files
      dwarf-reader: remove superfluous ABG_ASSERT
      make: add distcheck-fast target
      abg-dwarf-reader: simplify symbol map update
      tests: parallelize diff-suppr test
      abg-dwarf-reader split: create abg-elf-helpers.{h,cc} and test case
      abg-elf-helpers: move some elf helpers from abg-dwarf-reader
      abg-elf-helpers: move some versioning helpers from abg-dwarf-reader
      abg-elf-helpers: move some kernel helpers from abg-dwarf-reader
      abg-elf-helpers: consolidate the is_linux_kernel* helpers
      abg-dwarf-reader: migrate more ELF helpers to elf-helpers
      abg-elf-helpers: migrate more elf helpers (architecture specific helpers)
      abg-elf-helpers: migrate maybe_adjust_et_rel_sym_addr_to_abs_addr
      test-types-stability: parallelize test case alternatives
      tests: reorder test execution to optimize 'make check' runtime
      corpus/writer: sort emitted translation units by path name
      configure: set -Wno-error-overloaded-virtual for clang builds
      tests/.gitignore: ignore all files starting with runtest*
      dwarf-reader: read_context: drop some unused accessor methods
      cxx-compat: add test suite for cxx-compat
      configure: add ABIGAIL_DEBUG options
      configure: add more diagnostic options when ABIGAIL_DEVEL is set
      tests: Add symtab test suite
      tests: Add kernel symtab test suite
      dwarf-reader: Remove unused code
      dwarf-reader: read_context: drop unused symbol versioning code
      abg-reporter: fully qualify std::string and std::ostream
      abipkgdiff: remove unused includes of elfutils/libdw.h and elf.h
      dwarf-reader: get_die_source: always initialize return value
      cleanup: std::weak_ptr use: replace manual lock by std::weak_ptr::lock
      dwarf-reader: fix lookup for repeated translation unit paths
      dwarf-reader: Ignore zero length location expressions from DW_AT_location
      abipkgdiff: minor cleanups

1.7
==
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


1.6
===
Dodji Seketeli:
      Bump version number to 1.6
      Update website for 1.5
      Support having several debuginfo search dirs for a binary
      Add a --fail-no-debug-info to abidiff
      Some light style change in abidiff.cc
      Add basic support for Fortran binaries
      Update copyright for 2019
      Bug 23044 - Assertions with side effects
      Separate public types of first binary from those of the second
      Add (very) basic support for Rust
      Support some new DWARF language encoding for C and C++
      Fix a thinko
      Overhaul detection the DW_LANG_* enumerators from dwarf.h
      Fix a typo in the recent Rust support and update regression tests
      Conditionalize the Rust support regression test
      Properly add the new rust tests to EXTRA_DIST
      Bug 20175 - Classify CV qual changes in variable type as harmless
      Better comments in the comparison engine
      Bug 24139 - Support suppressing some enumerator changes
      Small apidoc fix
      Bug 24157 - Wrong support of Ada ranges
      Bug 24188 - Assertion failed while analysing a Fortran binary
      Avoid over-suppressing fns & vars when analysing the Kernel
      Do not build DIE -> parent map just because we see an asm TU
      PR24257 - Handle DW_TAG_typedef with no underlying type
      Better detection of void* to something* change
      Add ir::{lookup_data_member, get_function_parameter}
      Better pointer name equality optimization in DIE de-duplication code
      Misc cleanups
      Bug 24378 - DW_TAG_subroutine_type as a DIE scope causes infinite loop
      Add missing assignment operators

Mark Wielaard:
      Conditionalize the use of DW_LANG_C_plus_plus_03 and DW_LANG_Rust

Xiao Jia via libabigail:
      Some documentation fixes

1.5
===
Dodji Seketeli:
      Bug 23533 - Accept '=' in ini property values
      PR23641 - Type definition DIE matched by a supprspec but not its decl
      PR23641 - confusion when a type definition DIE is matched by a supprspec and its decl DIEs aren't
      Bug 23708 - categorize void* to pointer change as harmless
      Bug rhbz1638554 - assertion failed in is_mostly_distinct_diff
      Bump version number to 1.5
      Allow use of python even when fedabipkgdiff is disabled
      Make test-ir-walker work on ELF binaries directly
      Fix apidoc of dwarf_reader::get_soname_of_elf_file
      Add option to avoid walking abigail::ir nodes twice
      Fix propagation of private type suppression category
      Categorize CV qualifier changes on fn return types as harmless
      Misc comment fix
      Add default suppression specification for the krb5 project
      Add default suppression specification for the libvirt project
      Better support array with unknown upper bound
      Define UINT64_MAX when it's not defined

1.4
===
Dodji Seketeli:
      Fix typo in tests/runtestdefaultsupprs.py
      Remove references, arrays and fn parms from leaf diff nodes
      Improve detection of local *type* changes
      Better detect when diff nodes only carry local type changes
      Better detect when pointer and qualified types carry local changes
      Use the flat representation for anonymous struct/unions
      Add test44-anon-struct-union-v{0,1}.o to source distribution
      Explicitely detect anonymous data member changes
      Identify a function using its symbol name and version
      Fix indentation of help string in abipkgdiff
      Fix redundancy detection through fn ptr and typedef paths
      Filter out changes like type to const type
      Initial basic support of union type in suppression specifications
      Ensure die_function_type_is_method_type returns a class type die
      Fix race between runtestdefaultsupprs{py3.sh,.py}
      Allow square brackets in ini property values
      Properly add test materials for test-diff-suppr/test38-char-class-in-ini*

1.3
===
Chenxiong Qi:
      Bug 22722 - Make fedabipkgdiff and its tests support both python 3 and 2

Dodji Seketeli:
      Report change locations in leaf reports
      Skip changes to function *types* in the leaf reporter
      Make abipkgdiff avoid comparing private DSOs from RPMs
      Detect the presence of 'rpm' as it's now needed by abipkgdiff
      Do not enable fedabipkgdiff tests if fedabipkgdiff itself is disabled
      Don't crash when invoking kmidiff with no debug info root dir
      Don't possibly forget type definition when reading a CorpusGroup
      Do not show decl-only-to-def changes in the leaf reporter
      Overhaul of the report diff stats summary
      Do not mark "distinct" diff nodes as being redundant
      Fix meaning of "harmless name change" to avoid overfiltering
      Better handle category propagation of pointer changes
      Improve function changes reporting in leaf and default mode
      Don't filter out typedef changes with redundant underlying type changes
      Only show leaf type changes in the leaf type changes section
      Fix leaf report of class data member changes
      Always show redundant changes in leaf mode
      Avoid reporting an enum change if it has already been reported
      When we say a change was reported earlier give its source location
      [abipkgdiff]: in leaf mode we always show redundant changes
      Update tests for the "better leaf mode redundancy management" patchset
      Use absolute builddir paths in automake test files
      Represent sizes and offsets in bytes and hexadecimal values
      Initial support of anonymous data members
      Show data member offsets in bytes too
      Sort the output of the leaf reporter
      Use the dynamically selected python for Koji configure tests
      Use the correct python interpreter in runtestdefaultsupprs.py
      Handle cases where no python2 interpreter is found
      Don't bail because "rpm" issued an error

Jonathan Wakely:
      Remove assertion with side-effects
      Remove unused local set<string> variables
      Rename misleading remove_trailing_white_spaces functions
      Use std::string::substr instead of appending single chars

1.2
===
Dodji Seketeli:
      Add newline at end of version string display
      Initial support for Ada ranges
      Bug 22913 - Correctly de-dup pointers to anonymous structs inside a TU
      Fix the output indentation of abidiff --help
      Fix indentation in the DWARF reader
      Update abipkgdiff documentation wrt suppression specifications
      Fix typo in abipkgdiff documentation

1.1
===
Dodji Seketeli:
      Bug 22076 - Disable fedabipkgdiff for old koji clients
      Bug 22436 - make abipkgdiff accept several debuginfo packages
      Bug 22488 - Make abipkgdiff handle different binaries with same basename
      Bug 22437 - Make fedabipkgdiff use all debug info RPMs of a sub-RPM
      Bug 22684 - Add --d{1,2} options to kmidiff
      Bug 22692 - Consider Java as a language that supports the ODR
      Fully report diagnostic about alternate debug info file not found
      Update & cleanup the tools manuals summary
      Improve comments wording in fedabipkgdiff
      Update copyright notice for all source files
      Fix version revision number printing in tools --help option
      abipkgdiff --verbose shouldn't trigger --fail-no-dbg
      Fix logic in common_prefix
      Fix symlinks paths handling in abipkgdiff
      Suppress duplicates when listing package content
      Make kmidiff show the wrong option when it complains about it
      Only consider local changes when filtering subtype changes
      Skip class types with changed names in leaf reports
      Correctly link with pthread

1.0
=====
Ben Woodard:
      Fix some clang compile problems
      Fix more clang build warnings

Chenxiong Qi:
      More document for local RPMs comparison
      Follow moved packages when download
      Read Koji config via Koji API
      Warn properly when cannot find peer RPM
      Fix wrong variable name
      Bug 20380 - Compare two local RPMs
      Bug 20087 - Clean cache before or after ABI comparison

Dodji Seketeli:
      Forgot to consider libtest33-v{0,1}.so in test-diff-suppr.cc
      A suppressed diff node implies suppressing all equivalent nodes too
      Make bash completion files non-executable
      Allow pretty printing function decls for internal purposes
      Setup per-corpus type maps indexed by type names
      Implement de-duplication for types and decls at DWARF loading time
      Support naming typedef and use them to speed up type canonicalization
      Fix pretty representation of array types
      Introduce on-the-fly type canonicalization
      Very light speed improvements
      Add tests/data/test-diff-suppr/test33-report-0.txt to tarball
      Rename tests/update-test-read-dwarf-output.py
      Fix aborting when reading .foo symbols from a ppc64 binary
      Fix template_decl::hash::operator()
      Don't early-canonicalize function types when reading abixml
      Naming typedefs of classes are not read properly from abixml
      make is_anonymous_type work for unions and classes
      Misc style cleanup
      Make abg-fwd.h use *_sptr typedefs
      Handle per translation unit and per corpus types maps
      [dwarf-reader] Handle per translation-unit type de-duplication
      Update tests/data/test-read-write/test27.xml
      Update 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
      Fix a typo in method name computation
      Cleanup ODR-based type canonicalization optimization gating logic
      Fix qualified name caching for some types
      [dwarf-reader] Don't early canonicalize function types
      [abixml writer] Fix comparison of pointer to types
      [abixml writer] Make sure all function types are emitted
      Update tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi
      Update tests/data/test-read-dwarf/*.abi files
      Avoid unnecessary updates to type lookup maps
      Speedup set_member_is_static
      Misc comments and apidoc fixes
      Misc style fixes
      [apidoc] Allow brief description at the top of class description pages
      Update copyright year on a bunch of files
      Adjust some reference outputs of the test-read-dwarf test harness
      Better de-duplicate classes, unions, enums in non-odr contexts
      Add debug routines to dump locations to a stream
      Support Linux Kernel binaries
      Support Linux Kernel ABI whitelist files
      Remove unused functions from abg-ir.cc
      Update copyright notice for abg-fwd.h, abg-ir.h and test-abidiff.cc
      Fix performance regression while analyzing libjvm.so
      Add missing deep comparison operators for {function, method}_decl_sptr
      Speed up pretty representing (function) types
      Handle several virtual member functions having the same vtable offset
      [dwarf reader] Fix pretty printing static methods from DWARF
      [dwarf reader] Do not over de-duplicate function *definitions*
      [dwarf reader] Allow updating and de-duplicating member functions
      [dwarf reader] properly separate function decls and types in lookup
      [dwarf reader] Don't abort when trying to canonicalize a non-type
      [comparison engine] Don't crash when the context is null
      Support virtual member functions with vtable offset not yet set
      Fix some include logic in abg-suppression.cc
      Fix suppression category propagation in diff node graph
      Add --harmless option to abipkgdiff
      Fix test-diff-pkg after commit 2dcc606
      Make abidw --headers-dir work with the --out-file option
      Fix help string for --header-dirs
      Adjust reference output of test-annotate
      Fix indentation in src/abg-writer.cc
      Misc style fixes
      Fix silent failure of tests/runtestfedabipkgdiff.py
      Add missing new line to an error message of runtestfedabipkgdiff.py
      Add missing tests input files to distribution files
      fedabipkgdiff refuses to compare packages with the same release number
      Fix typo in help string of abipkgdiff
      Several fixes and enhancements to abigail::workers
      Add a "make check-valgrind-helgrind-recursive" target
      Do not ignore valgrind checks returning an error
      Make abipkgdiff.cc use the abigail::workers interface
      Display the command that failed the runtestfedabipkgdiff.py test
      Move test-read-dwarf.cc to abigail::workers
      Make the helgrind suppressions less specific
      Silence Helgrind reports about exception stack unwinding
      More Helgrind suppressions
      Make Helgrind suppressions less specific to libgcc_s version
      Fix virtual members sorting to unbreak the build on EL6
      Consider file path when sorting virtual member functions
      Fix data race on worker::queue::priv::bring_workers_down
      Shut down a helgrind false positive in the "system" libc call
      Launch fedabipkgdiff tests first
      Fix some random deadlock while running fedabipkgidiff in tests
      Fix a race condition in queue::priv::do_bring_workers_down
      Fix buffer overrun in 'equals' function for arrays
      Fix array subranges (wrongly) having the same lower bound
      Ensure build_qualified_type can return non-qualified types
      Remove useless overloads of is_type
      Invalidate function and variable ID cache when invoking ::set_symbol
      Rename fn_parm_diff::get_type_diff into fn_parm_diff::type_diff
      Don't consider changes to basic types as being redundant
      Misc cleanups in abg-writer.cc
      Update the description of what abipkgdiff does
      Speedup comparison of decl-only classes
      Speed up access to the definition of a class declaration-only type
      Avoid building DIE -> parent DIE map when analyzing a C binary
      Do not forget to erase temporary directories in abipkgdiff
      Avoid comparing kernel.img file from the grub2 package
      Fix some typos in abidiff.cc
      Create a Corpus Group API extension
      Initial support to lookup types per location
      Support loading and comparing two kernel trees
      Avoid loading a translation unit twice from abixml
      Make abipkgdiff compare two kernel packages
      Make abidw support the --kmi-whitelist option
      Introduce the --kmi-whitelist option to abidiff
      Update the reference output of regression tests after kabidiff work
      Rename write_corpus_to_native_xml into write_corpus
      Avoid emitting duplicated decls in abixml
      Avoid emitting some empty translation units to abixml
      Fix indentation glitch before the </abi-corpus> tag in abixml
      Adjust test reference outputs after changes in abg-writer.cc
      Initial support of the serialization of the KMI of a Linux Kernel Tree
      Initial support of de-serializing the KMI of a Linux Kernel Tree
      Speedup access to unreferenced symbols when loading corpus_group
      Avoid de-duplicating different C types that have identical name
      Allow selective resolution of class declaration
      Speedup DIE representation computing esp function signature in C
      Do not report about voffset when it's not set in debug info
      Fix innacurate test condition when reading an enum type from abixml
      Cache function type name computation results
      Add --vmlinux{1,2} option to abidw and kmidiff
      Allow re-using the ELF/DWARF read_context when loading a corpus group
      Add documentation for the kmidiff tool
      Allow selective resolution of class declaration
      Do not report about voffset when it's not set in debug info
      Filter top cv qualifier changes on function parameter types
      Support ELF symbol visibility property
      Symbols with the same zero value are not aliases
      Fix doc glitch in abidiff.rst
      Misc style fixes
      Don't add empty translation unit to corpus
      Better handle decl-only classes being different from their definition
      Fix a typo when reporting size change wrt a decl-only class
      Fix typo in comments
      speed up class type lookup in a corpus
      Replace --lkaw with -w and --lkaw-pkg with --wp
      Add missing space in abipkgdiff error message
      Use shorter lines in abipkgdiff.cc
      Fix support of the --wp option of abipkgdiff
      Support up to two --wp options for abipkgdiff
      Avoid crashing when the elf file could not be read
      Fix some make distcheck failures
      Misc style fixes
      Finer detection of local changes of var_decl type
      Avoid adding the same data member twice in the DWARF reader
      Don't crash on classes that differ in their virtual member fn count
      22160 - Annotate state flag unitialized in abidw
      Add missing newlines to kmidiff's usage strings
      Renamed offset_offset_map type name into offset_offset_map_type
      Remove redundant (useless) typedef declaration
      Use an unordered map for canonical DIE offsets
      [abixml writer] Store pointers to emitted types rather than type-ids
      [abixml writer] Use an unordered set when appropriate
      Initialize naked canonical type
      Misc style fixes in abg-writer.cc
      Add missing comment to type declaration
      Update copyright year to tools/abidiff.cc
      Allow several kinds of reports to be emitted
      Initial implementation of a --leaf-changes-only option to abidiff
      Add a --leaf-changes-only option to abipkgdiff
      Add --full-impact option to kmidiff
      Add --impacted-changes option to kmidiff
      Cleanup a switch-case logic to avoid a GCC 7.2.1 warning
      Fix a indentation warning from GCC 7.2.1
      Handle exceptions when global_config is not yet set in fedabipkgdiff
      Add a --suppressions option to fedabipkgdiff
      Remove useless vertical space from src/abg-writer.cc
      Allow setting options to instances of xml_writer::write_context
      Wire the --no-show-locs option to abidw
      Support systems where fts.h can't be used with _FILE_OFFSET_BITS set
      Bug 20670 - abipkgdiff aborts if $XDG_CACHE_HOME does not exist
      Bug 20887 - Show relative change of offsets
      Bug 20927 - Segfault when $HOME is not set
      Bug 21058 - abipkgdiff wrongly drops non-public types
      Bug 20476 - Compare virtual member functions when comparing classes
      Bug 21228 - Handle cloning union member functions
      Bug 21296 - Reporting diff of const ref against non-const ref aborts
      Bug 21567 - Fedabipkgdiff matches build distro names too tightly
      Bug 21627 - Libabigail doesn't consider translation unit compile dir
      Bug 21629 - equivalent DIEs must be of the same DIE source
      Bug 21630 - A this pointer DIE can be const
      Bug 21631 - Forgot a "break" statement in stv_to_elf_symbol_visibility
      Bug 21153 - abipkgdiff reports undetermined interface subtype changes
      Bug 21644 - abipkgdiff does not emit diagnostics about comparison errors
      Bug 21730 - Make abipkgdiff compare Linux Kernel packages as expected
      Bug 22015 - Failing to return global scope of a DIE in certain cases
      Bug 22122 - Fail to represent 'const array'
      Bug 22190 - crash in read_context::get_or_compute_canonical_die
      Bug 22438 - Emit a clear message when debug info is not found

Mark Wielaard:
      Declare eval_last_constant_dwarf_sub_expr with [u]int64_t not [s]size_t.
      readdir_r() is deprecated, use readdir().
      Fix -Wmisleading-indentation warning in abg-leaf-reporter.cc.
      Bug 22075 - data_member_diff_comp forgets data members names

Ondrej Oprala:
      Fix a few remarks made by cppcheck
      abipkgdiff doesn't mention --no-default-suppression in help
      Check --enable-rpm dependencies more rigorously
      Properly report missing files for abipkgdiff
      Fix comparison used instead of an assignment
      Clean up scripts/*
      Fix cppcheck error: "Same iterator is used with different containers"
      cppcheck: mitigate performance warnings
      Bug 19272 - abipkgdiff doesn't report arch change
      Bug 18754 - Add the "--no-added-syms" option to abidiff
      Bug 20970 - Add a --annotate option to abidw

Sinny Kumari:
      Add --self-compare option in fedabipkgdiff
      Check if return_codes list is empty in fedabipkgdiff

Slava Barinov:
      Fix types in header to meet sources


1.0.rc6
=======
Chenxiong Qi:
      Update bash completion for fedabipkgdiff
      Add fedabipkgdiff bash completion to dist
      Add --abipkgdiff option in manual and bash completion
      Make fedabipkgdiff consistent with Libabigail's other tests

Dodji Seketeli:
      Bug 20332 - too many ...'s counted as parameters
      Bug 20194 - Fail to recognize void type represented by DW_TAG_base_type
      Bug 20199 - Consider integral type synonyms as being equal
      Bug 20420 - Wrong ODR-based type comparison optimization on qualified type
      Bug 20534 - abipkgdiff wrongly displays the name of added binary files
      Bug 20740 - Broken check for dwarf_getalt in configure.ac
      Add a new overload for is_type_decl
      Better recognize qualified void type
      Fix spurious type size change report for distinct_diff
      Prepare support for symbol visibility control
      Add ABG_ASSERT_NOT_REACHED macro
      Cleanup is_class and is_compatible_with_class_type
      Generalize DIE source concept in DWARF reader
      Support DW_TAG_type_unit
      Control symbols exported from libabigail.so
      Don't walk diff trees indefinitely when applying suppressions
      Fix misleading indentation issues
      Do not emit empty namespaces in abixml
      Add new helper functions
      Pimplify the abigail::ir::scope_decl type
      Drop suppressed ABI artifacts from the IR
      Add default suppression specification for webkitgtk
      Add default suppression specifications for C++ binaries
      Better handle fedabipkgdiff dependencies detection
      Update reference output of runtestreaddwarf
      Define a new interned_string_set_type typedef
      Prevent infinite loops while comparing two function_type
      Apply ODR-based type comparison optimization to function types
      Cleanup class_decl inifite comparison detection
      Cleanup functions to detect infinite comparison of class_decl
      Cleanup namespace importing in abg-interned-str.h
      Canonicalize function types when reading from DWARF
      Fix abigail::ir::get_type_scope()
      Cleanup some entry points in abg-fwd.h
      Cleanup void and variadic parameter type interfaces
      Consider a method_decl as always being a member decl
      Factorize out parsing of integral types
      Factorize out string representation of array_type_def::subrange_type
      Avoid stripping typedefs too much
      Apply harmless and harmful filters in one pass
      Rename config::property_vector into config::properties_type
      Support empty properties in INI files
      Support union types
      Better diagnostics when wget is missing
      Lexicographically sort union data members in change reports
      Support reading data member offset from DW_AT_bit_offset
      Fix indentation in abg-writer.cc
      Fix offset type mismatch
      Fix a compiler warning issued by GCC 6.2.1
      Avoid using size_t to get DWARF data

Matthias Klose:
      Fix typo in abipkgdiff

1.0.rc5
=======
Chenxiong Qi:
      Bug 19428 - New fedabipkgdiff utility
      Bug 20085 - Add --dso-only option to fedabipkgdiff
      Bug 20135 - Make fedabipkgdiff compare ABIs using devel packages
      Add integration tests for fedabipkgdiff
      Fix package NVR comparison in fedabipkgdiff
      Use consistent string format in fedabipkgdiff
      Fix pep8 error in fedabipkgdiff

Dodji Seketeli:
      Bug 19964 - Cannot load function aliases on ppc64
      Bug 20015 - support file_name_not_regexp and soname_not_regexp in suppr specs
      Bug 20180 - Support system-wide suppression specifications
      Bug 19967 - System-level suppressions for glibc
      Fix python interpreter path for el6      
      Add doc, info, man and html-doc targets to top-level Makefile
      Update documentation to require doxygen and python-sphinx for building
      Make API documentation of thread pools visible
      Show SONAME of removed/added libraries in abipkgdiff
      Fix indentation in concepts manual
      Fix typo in concept manual
      Doc not show classes' inherited members in apidoc
      Fix mention of tool's name in abidiff error message
      Add several shortcuts to options for abicompat
      Fix indentation for abidiff manual
      Split suppression engine off of abg-comparison.{cc,h}
      Implement a [suppress_file] suppression directive
      Remove config.h.in from the repository
      Do not run fedabipkgdiff tests if --enable-fedabipkgdiff is turned off
      Update the COMMIT-LOG-GUIDELINES file
      Update the CONTRIBUTING file
      Support running "make check-valgrind"
      Fix a read passed-the-end in abg-dwarf-reader.cc
      Plug leak of diff_context_sptr after calling compute_diff
      Plug leak of regex_t in suppression engine
      Remove circular ref from class_decl::priv::definition_of_declaration
      Plug leak of shared private data of class_diff type
      Plug leak of debug info handles
      Fix invocation of delete operator in test-read-dwarf.cc
      Speedup diff node child insertion
      Plug leak of diffs of member variables of class type
      Avoid unnecessary computation of type name in suppression evaluation
      Minimize number of string::length calculation
      Light optimizations by passing reference to smart pointers around
      Optimize out some shared_ptr use
      Add missing API doc strings
      Enhance API doc for diff_context::add_diff
      Fix bash completion configure status
      Fix white space in abg-comparison.cc
      Fix whitespaces in autotools files
      Document how to handle regression tests in CONTRIBUTING
      Fix the number of removed functions in change report
      Make abi{pkg}diff filter out changes about private types
      Add a 'check-valgrind' target to the top-most Makefile.am
      Add test data for tests/runtestfedabipkgdiff.py
      Fix some wording in the Libabigail overview manual page
      Update reference to tools in libabigail-concepts manual
      Fix suppr spec wording in abipkgdiff manual
      Better diagnostics when abipkgdiff has an extra argument
      Add --abipkgdiff option to fedabipkgdiff
      Don't require all version symbol sections to present
      Escape all characters when reading a string in ini files
      Improve python modules detection
      Cleanup function_decl::parameter::get_pretty_representation
      Misc white space and comment cleanups
      Use ODR-based optimization on C/C++ translation unit only
      Misc cleanup in abg-reader.cc

Sinny Kumari:
      Bug 19961 - Distinguish between PI executable and shared library
      Change parent directory for keeping extracted packages in abipkgdiff

1.0.rc4
=======
Dodji Seketeli:
      Bug 19844 - Cannot try to canonicalize a type that is being constructed
      Bug 19846 - variable decl associated with the wrong debug info section
      Bug 19867 - abipkgdiff skips symbolic links
      Bug 19885 - Cannot associate a function DIE to a symbol on powerpc64
      Ease use of soname_regexp/file_name_regexp in suppr specs
      More docs about ABIDIFF_ABI_INCOMPATIBLE_CHANGE
      Update copyright dates for the manuals
      Fix typos on the web page
      Fix typos in the manual of abidiff
      Fix typos in the suppression specifications manual
      Fix a typo in include/abg-tools-utils.h
      Fix typos in comments in src/abg-dwarf-reader.cc
      Fix comments in tests/test-diff-pkg.cc
      Fix logs in abipkgdiff and add some more

Roland McGrath:
      Fix typo in configure --enable-deb help text

1.0.rc3
=======
Dodji Seketeli:
      Upate build instructions on the website
      Bug 19138 - Failure to relate variables address from DWARF and ELF
      Include missing <algorithm> to abg-dwarf-reader.cc
      Make enum values take 64 bits on all platforms
      Use worker threads pattern to speed up some tests
      Sort the tests run in tests/ by running the slowest ones first
      Bug 19434 - invalid character in attribute value
      Bug 19141 - Libabigail doesn't support common ELF symbols
      Pass parm of elf_symbol::add_alias by reference
      Bug 19204 - libabigail aborts on DWARF referencing non-existing DIE
      Comparing aliases of the same symbol must be done by pointer
      Do not crash when looking up a type from global scope
      Fix abicompat's handling of library types not used by the application
      Fix synthesizing of pointer type
      Fix synthesizing of reference type
      Bug 19596 - Incorrect exit status for incompatible ABI change
      Use proper WIFEXITED and WEXITSTATUS macros to get exit code
      Bug 19604 - abidiff --suppressions doesn't complain about invalid file name
      Make abipkgdiff return correct exit code on usage error
      Make abipkgdiff check for the presence of suppression spec files
      Talk about mandatory properties in suppress_* directives
      Add a comment about libabigail needing elfutils 0.159 at least.
      Bug 19606 - Need better error message for invalid options
      Prefix abidiff error message with the 'abidiff' program name
      Emit more informational messages on unrecognized options
      Bug 19619 - failing to suppress added aliased function reports for C++
      Add function lookup by linkage name to libabigail::corpus
      Bug 19638 - DWARF reader fails to link clone function to its declaration
      Add --verbose option to abidiff
      Bug 19658 - Type canonicalization slow for the 2nd binary loaded
      Add missing inequality operators for ABI artifacts
      Fix crash when handling templates with empty patterns
      Implement string interning for Libabigail
      Some small speed optimizations
      Bug 19706 - Core dump from abidiff with suppression
      Update mentions to the build dependencies in the doc
      Make libabigail link with pthread
      Add --verbose to abidw
      Fixup virtual member functions with linkage and no underlying symbol
      Bug 19596 - Suppressed removed symbol changes still considered incompatible
      Bug 19778 - diff_has_ancestor_filtered_out() loops forever
      Bug 19780 - abipkgdiff doesn't support parallel execution
      Fix reference to test file in Makefile.am
      Walk function_type_diff tree in a deterministic way

Mark Wielaard:
      Fix GCC6 -Wmisleading-indentation warnings.
      Make make more silent.
      Remove defined but not used functions pointed out by GCC6.

Ondrej Oprala:
      Escape the value of the filepath attribute.

1.0.rc2
======
Dodji Seketeli:
      Fix regression on the support for alternate debug info files
      Lexicographically sort added/removed base classes in change report

1.0.rc1
=======
Dodji Seketeli:
      Bug 19336 - Better handle redundantly qualified reference types
      Bug 19126 - abidw segv on a dwz compressed version of r300_dri.so
      Bug 19355 - Libabigail slow on r300_dri.so
      Do not use designated initializers in abipkgdiff.cc
      Read enum values in the size_t and write them in ssize_t
      Do not abort when there is no binary to compare in a package
      Add missing new line to abidiff help message
      Constify is_qualified_type()
      Find more spots where to discriminate internal and non-internal names
      Do not forget to peel qualified type off when peeling types
      Fix comparison in qualified_type_diff::has_changes
      Avoid try/catch code paths when that is possible
      Fix internal name for pointers, typedefs and arrays
      Filter out harmless diagnostics glitches due to some ODR violation
      [PERF] Pass a bunch of perf-sensitive smart pointers by reference
      [PERF] Turn some pimpl pointers into naked pointers
      [PERF] Access naked pointers for canonical types and function types
      [PERF] Speedup comparing declaration-only class_decls
      Speed up class_decl::find_base_class
      Avoid adding the same base class twice
      Support two different variables having the same underlying symbol
      Add a NEWS file
      Fix abidw -v

Ondrej Oprala:
      Add bash-completion scripts for the libabigail tools
      Abidiff: Remove doubled line in help.
      Fix a function doc
      Support printing the file, line and column information in change reports
