ABIDB(1)
π abidb(1) β Libabigail's abixml bestie π
okay so bestie, meet abidb from Libabigail π
it's the girlie who checks a binary against an abixml corpus and/or submits new data. Lowkey iconic.
abidb manages a git repository of abixml files describing shared libraries, and checks binaries against them. elfutils and libabigail programs are used to query and process the binaries. It works well with debuginfod to fetch needed DWARF content automatically. no cap π«Ά
β¨ INVOCATION β¨
abidb [OPTIONS] [--submit PATH1 PATH2 ...] [--check PATH1 PATH2 ...]
πΈ COMMON OPTIONS πΈ
These are the everyday settings, bestie β the little knobs that make the whole vibe work.
--abicompat PATHβ Specify the path to theabicompatprogram to use. By default, in the absence of this option, theabicompatprogram found in directories listed in the$PATHenvironment is used.--abidw PATHβ Specify the path to theabidwprogram to use. By default, in the absence of this option, theabidwprogram found in directories listed in the$PATHenvironment is used.--distrobranch BRANCHβ Specify the git branch for the abixml files in the git repo. The default is a string likeDISTRO/VERSION/ARCHITECTURE, computed from the running environment.--git REPOβ Specify the preexisting git working tree forabidbto submit to or check against. The default is the current working directory. It may be used concurrently by multiple βcheckβ operations, but only one βsubmitβ operation.
bestie, that concurrency bit matters: many βcheckβ girlies can share the working tree, but only one βsubmitβ operation at a time. π
--help | -hβ Display a short help about the command and exit.--loglevel LOGLEVELβ Specify the diagnostic level for messages to stderr. One ofdebug,info,warning,error, orcritical; case-insensitive. The default isinfo.--timeout SECONDSβ Specify a maximum limit to the execution time (in seconds) allowed for theabidwandabicompatprograms that are executed. By default, no limit is set for the execution time of these programs.
π SUBMIT OPTIONS π
Submitting is the main character moment: you're feeding abixml into the git repo. β¨
--allow-no-debug-infoβ By default, the program fails to submit a binary if its associated debug info could not be found. With this option however if no debug info was found, then the ABI information submitted for the binary only comes from ELF symbols; the type information is omitted.--archive | -Z .EXT[=CMD]β DesignatePATHnames with a.EXTsuffix to be treated as archives. IfCMDis present, pipe thePATHthrough the given shell command, otherwise pass as if throughcat. The resulting stream is then opened bylibarchive, to enumerate the contents of a wide variety of possible archive file format. Process each file in the archive individually into abixml.
For example, -Z .zip will process each file in a zip file, and -Z .deb='dpkg-deb --fsys-tarfile' will process each payload file in a Debian archive.
--filter REGEXβ Limit files selected for abixml extraction to those that match the given regular expression. The default is/lib.*\.so, as a heuristic to identify shared libraries.--submit PATH1 PATH2 ...β Usingabidw, extract abixml for each of the listed files, generally shared libraries, subject to the filename filter and the archive decoding options. Save the output of eachabidwrun into the selecteddistrobranchof the selected git repo. If--submitand--checkare both given, do submit operations first.--sysroot PREFIXβ Specify the prefix path that is to be removed from submitted file names.
π¦ CHECK OPTIONS π¦
Checking is where abidb pulls out the receipts and compares everything. π₯
--check PATH1 PATH2 ...β Usingabidiff, compare each of the listed file, generally executables, against abixml documents for selected versions for all shared libraries needed by the executable. These are listed by enumerating the dynamic segment tagsDT_NEEDEDof the executable.--ld-library-path DIR1:DIR2:DIR3...β Select the search paths for abixml documents used to locate any particularSONAME. The first given directory wins. However, all versions of the sameSONAMEin that directory are selected for comparison. The default is unspecified, which means to search for all matchingSONAMEentries in thedistrobranch, regardless of specific directory.
β EXIT CODE β
In case of successful submission and/or checking of all paths, the exit code is 0.
In case of error, the exit code of abidb is nonzero, and a brief listing of the binaries unable to be submitted and/or checked is printed.
π GIT REPOSITORY SCHEMA π
abidb stores abixml documents in a git repo with the following naming schema within the distrobranch:
- The directory path leading to the shared library file
- The
SONAMEof the shared library file, as a subdirectory name - A file named
BUILDID.xml, where BUILDID is the hexadecimal ELF build-id note of the shared library.
For example:
/usr/lib64/libc.so.6.2.32β/usr/lib64/libc.so.6/788cdd41a15985bf8e0a48d213a46e07d58822df.xml/usr/lib64/libc.so.6.2.33β/usr/lib64/libc.so.6/e2ca832f1c2112aea9d7b9bc639e97e873a6b516.xml/lib/ld-linux.so.2β/lib/ld-linux.so.2/b65f3c15b129f33f44f504da1719926aec03c07d.xml
okay so the whole point of putting the buildid in the name is so that when a distro gets updated with multiple versions of a given shared library, they can be represented nearby but non-conflicting. β¨ The SONAME is used in the second-last name component β inspired by the behavior of ld.so and ldconfig, which rely on symbolic links to map references from the SONAME to an actual file. iykyk π
β¨ SEE ALSO β¨
- ELF:
http://en.wikipedia.org/wiki/Executable_and_Linkable_Formatβ the ELF site, iconic π§ - DWARF:
https://www.dwarfstd.orgβ the DWARF site, no cap - Debuginfod:
https://sourceware.org/elfutils/Debuginfod.htmlβ the Debuginfod page, periodt - Git:
https://git-scm.com/β the Git site, main character energy - Libarchive:
https://www.libarchive.org/β the Libarchive site, slay
π«Ά AUTHOR π«Ά
Written by Frank Ch. Eigler. π
π COPYRIGHT π
2014-2026, Red Hat, Inc. β legal vibes, locked in π
thatβs the page, bestie β footer tea: source/version ABIDB(1), dated Oct 08, 2026. go forth and let your shared libraries coexist peacefully π¦π
π¦ where this page comes from
- centos-stream 9: libabigail 3.0-1.el9 Β· Apache-2.0 WITH LLVM-exception
- centos-stream 9: libabigail 3.0-1.el9 Β· Apache-2.0 WITH LLVM-exception
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms