ANNOCHECK(1)
β¨ ANNOCHECK(1) β the manual name, served π
π¦ NAME
okay bestie, so annocheck is the tool that's literally analysing binary files and reporting info about them π it's giving detective energy fr π΅οΈββοΈβ¨
π SYNOPSIS
annocheck
[-h | --help]
[--help-tool]
[--version]
[-v | --verbose]
[-q | --quiet]
[-i | --ignore-unknown]
[-r | --report-unknown]
[-f | --follow-links]
[-I | --ignore-links]
[--debug-rpm=file]
[--debug-file=file]
[--debug-dir=dir]
[-p text | --prefix=text]
[-t dir | --tmpdir=dir]
[-u | --use-debuginfod]
[-n | --no-use-debuginfod]
[--enable-tool]
[--disable-tool]
[--tool]
[--tool-option]
file...
annocheck
--builtby
--enable-builtby
[--all]
[--tool=name]
[--nottool=name]
[--no-version-info]
[--no-lang-info]
[--options-info]
file...
πΈ DESCRIPTION
okay so annocheck is modular π§, which means it's built out of a bunch of self-contained tools that each handle the checking part. the list of tools that are currently implemented is... um, not actually listed here, so just vibes π«
it can scan inside rpm files and libraries π¦ and if you point it at a directory on the command line, it'll automatically recurse into it π bonus: it knows how to find debug info stored in separate debug files and will go hunting for those whenever it needs what's inside them π
wanna add a new tool? β¨ make a new source file and include it in the Makefile used to build annocheck. nothing else needs updating, which is the whole main character energy of the modular design π
new tools have to fill out a struct checker structure (defined in annocheck.h) and define a constructor function that calls annocheck_add_checker so the tool registers itself at program start-up π
annocheck also has some generic command line options that work no matter which tools are turned on π«Ά
"--debug-rpm=file"
- look inside file for separate dwarf debug info π. you can stack multiple
--debug-rpmoptions and they accumulate π
β οΈ note: if none of--debug-rpm,--debug-fileand--debug-dirare used, and you give it a single source file whose name ends in.rpm, annocheck will automatically try to find an associated debug info rpm based on the filename. iykyk π
"--debug-file=file"
- look in file for dwarf debug info. multiple instances of this option accumulate π§
"--debug-dir=dir"
- look in the directory dir for separate dwarf debug info files π. heads up: multiple instances of this option do not accumulate π
"--help" / "-h"
- shows the generic annobin usage info and then exits π
"--help-tool"
- shows the usage info for tool and then exits π
"--report-unknown" / "--ignore-unknown" / "-r" / "-i"
- if enabled, unknown file types get reported when they're encountered π¨. that includes non-ELF files, block devices, and so on. directories are never considered unknown and get automatically descended into π
the default depends on the file being processed π€. for rpm files, the default is to ignore unknowns, since they often contain non-executable files π ββοΈ. for everything else (including directories), the default is to report unknown files π£
"--ignore-links" / "--follow-links" / "-I" / "-f"
- decides whether symbolic links get followed or ignored π
the default depends on the file being processed π€. for rpm files, links get ignored by default, since they're often unresolveable π₯. for other file types (including directories), links get followed by default πββοΈ
"--prefix=text" / "-p text"
- includes text in the output description π·οΈ
"--quiet" / "-q"
- prints nothing at all, you only get an exit status π€«
"--tmpdir=dir" / "-t dir"
- uses dir as the place to hold temporary files ποΈ
"--verbose" / "-v"
- produces informational messages while it works π£οΈ. repeat it for even more info π’
"--version"
- reports the version of the tool and then exits π·οΈβ¨
"--use-debuginfod" / "-u"
- enables the debuginfod service for downloading debuginfo rpms π. this is on by default, but it only actually works if debuginfod server support was compiled into annocheck π οΈ
"--no-use-debuginfod" / "-n"
- do NOT use the debuginfod service, even if it's available π ββοΈ
"--enable-tool"
- enables tool. most tools are disabled by default, so you gotta enable them with this option before they'll do anything π
"--disable-tool"
- disables tool. this is normally used to turn off the hardening checker, which is enabled by default π‘οΈ
"--tool"
- enables tool and disables all the other tools π―
"--tool-option"
- passes option on to tool π
any other command line options get passed to the tools in turn, so each one gets a chance to claim and process them π
the builtby tool is disabled by default, but you can turn it on with --enable-builtby or just --builtby ποΈ. it checks the specified files for any stored info about how they were built and what source languages were involved π§
since the hardening checker is on by default, you might also wanna add --disable-hardened to your command line π
. it's not needed if you're using --builtby though π«
the builtby tool supports a few command line options to customise its behaviour π¨:
"--all"
- reports all builder identification strings π. builtby has several different heuristics for figuring out the builder π§©. by default it only reports the info from the first successful heuristic, but with
--all, every successful result gets returned π. heads up: this will probably show the same info multiple times π
"--tool=name"
- restricts the output to only files built by a specific tool π§. super handy when you're scanning a directory full of files and hunting for ones built by a particular compiler π΅οΈ. you can use this option multiple times to select a bunch of builders π
"--nottool=NAME"
- restricts the output to only files that were NOT built by a specific tool π«. handy when you're scanning a directory and want the ones that weren't built by a particular compiler π . use it multiple times to hide multiple builders π«₯
"--lang=name"
- restricts the output to only files written in a specific high level language π¬. note: not all binaries include info about the source code language(s), so this option might not be 100% effective π₯Ί. use it multiple times for a broader selection of languages π
"--notlang=NAME"
- restricts the output to only files NOT written in a specific high level language π. note: not all binaries include info about source code language(s), so this might not be totally effective π₯Ί. use it multiple times to hide a broader selection of languages π«£
"--no-version-info" / "--lang-info"
- by default, builtby reports the version info for the builders it detects π’. enabling
--no-version-infostops that info from showing up π
if you need it back, the --version-info option re-enables it π
"--no-lang-info" / "--lang-info"
- by default, builtby reports the high level language(s) of the sources used to build the program, if they were recorded π£οΈ. enabling
--no-lang-infostops that from showing up π€
if you need it back, use --lang-info to re-enable it π
"--no-tool-info" / "--no-builder-info" / "--tool-info"
- by default, builtby reports the tool(s) used to build the program π οΈ. enabling
--no-build-infostops that from showing, so only the high level language info will be shown π£οΈ. turning this off AND--no-lang-infoat the same time makes builtby basically redundant π
note: --no-builder-info is a synonym for --no-tool-info π―
if you need it back, use --tool-info to re-enable it π
"--options-info" / "--no-options-info"
- by default, builtby will NOT report the command line options given to the tools that built the target binary π
. adding
--options-infoturns that display on, if the info is stored in the binary (or its debug info) π
if you need to turn it off again, use --no-options-info π«Ά
π OPTIONS
the OPTIONS section is empty in the original, so no vibes here either π«
π COPYRIGHT
Copyright (c) 2018-2026 Red Hat. π
permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation π. there are no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts π«Ά. a copy of the license is included in the section entitled "GNU Free Documentation License" π
bestie, that's the whole page π annobin-1 Β· 2026-02-23 Β· ANNOCHECK(1) π¦β¨ stay iconic π
π¦ where this page comes from
- centos-stream 10: annobin-annocheck 13.31-1.el10 Β· GPL-3.0-or-later AND LGPL-2.0-or-later AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (LGPL-2.0-or-later WITH GCC-exception-2.0) AND GFDL-1.3-or-later
- centos-stream 9: annobin-annocheck 13.29-1.el9 Β· GPL-3.0-or-later AND LGPL-2.0-or-later AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (LGPL-2.0-or-later WITH GCC-exception-2.0) AND GFDL-1.3-or-later
- centos-stream 9: annobin-annocheck 13.29-1.el9 Β· GPL-3.0-or-later AND LGPL-2.0-or-later AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (LGPL-2.0-or-later WITH GCC-exception-2.0) AND GFDL-1.3-or-later
- fedora 44: annobin-annocheck 13.08-1.fc44 Β· GPL-3.0-or-later AND LGPL-2.0-or-later AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (LGPL-2.0-or-later WITH GCC-exception-2.0) AND GFDL-1.3-or-later
- fedora 44: annobin-annocheck 13.14-1.fc44 Β· GPL-3.0-or-later AND LGPL-2.0-or-later AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (LGPL-2.0-or-later WITH GCC-exception-2.0) AND GFDL-1.3-or-later
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms