c++filt(1) on Solnix vs Linux and the BSDs

c++filt is not in the Solnix base system; install pkgs.solnix.binutils to get the GNU binutils c++filt. Its page matches the Linux binutils page. The FreeBSD page documents llvm-cxxfilt, which has far fewer options and fewer mangling formats.

What Solnix runs

Not installed by default: add pkgs.solnix.binutils. The bundle shows no illumos variant of c++filt, so there is nothing else on PATH to compare.

Differences

Compared withTopicWhat differs
Linuxsame programThe Solnix page and the Linux binutils page document the same GNU binutils c++filt. Synopsis, options, formats and the @file handling read the same in the bundle. The bundle shows no Linux-versus-Solnix difference.
Source: Solnix c++filt(1) SYNOPSIS, OPTIONS; Linux c++filt(1) SYNOPSIS, OPTIONS
FreeBSDdifferent implementationThe FreeBSD c++filt(1) page documents llvm-cxxfilt (NAME: llvm-cxxfilt), which describes itself as a replacement for the GNU c++filt tool. Solnix and Linux document GNU c++filt from binutils.
Source: FreeBSD c++filt(1) NAME, DESCRIPTION; Solnix c++filt(1) NAME
FreeBSD-p / --no-params missingSolnix c++filt -p omits function parameter types from demangled names. The FreeBSD page lists no -p or --no-params.
Source: Solnix c++filt(1) -p, --no-params; FreeBSD c++filt(1) OPTIONS
FreeBSD-i, -r, -R missingThe FreeBSD page has no -i/--no-verbose and no recursion-limit options (-r, -R and their long forms). Solnix has them, with a default limit of 2048 nesting levels. Scripts that pass these options to llvm-cxxfilt will fail.
Source: Solnix c++filt(1) -i, -r, -R; FreeBSD c++filt(1) OPTIONS
FreeBSD-s / --format valuesOn Solnix, -s accepts auto, gnu, lucid, arm, hp, edg, gnu-v3, java and gnat. The FreeBSD page accepts only auto (the default) and gnu, meaning GNU/Itanium style.
Source: Solnix c++filt(1) -s format; FreeBSD c++filt(1) --format
FreeBSD-h meaningFreeBSD documents -h as a short form of --help. The Solnix page lists --help only, with no -h.
Source: FreeBSD c++filt(1) --help, -h; Solnix c++filt(1) --help
FreeBSDleading underscore defaultSolnix says whether c++filt strips the initial underscore by default is target dependent. The FreeBSD page says not stripping is the default on all platforms except Mach-O hosts, where stripping is on.
Source: Solnix c++filt(1) -_, --strip-underscore; FreeBSD c++filt(1) --no-strip-underscore, --strip-underscore
FreeBSDJava and other languagesThe Solnix page describes demangling of C++ and Java symbols, including the gcj and GNAT formats. The FreeBSD page describes Itanium-style manglings only and does not mention Java.
Source: Solnix c++filt(1) NAME, -s format (java, gnat); FreeBSD c++filt(1) DESCRIPTION, --format
FreeBSDexit statusThe FreeBSD page documents the exit status: 0 unless there is a usage error, then non-zero. The Solnix and Linux pages have no EXIT STATUS section, so the manual does not say what they return.
Source: FreeBSD c++filt(1) EXIT STATUS; Solnix c++filt(1) (no EXIT STATUS section)
FreeBSD-t defaultSolnix says type demangling (-t) is disabled by default, and gives "a" demangled as "signed char" as an example of confusion. The FreeBSD page does not state a default for --types.
Source: Solnix c++filt(1) -t, --types; FreeBSD c++filt(1) --types

Standards

  • POSIX: c++filt is not a POSIX.1-2024 utility.
  • Solnix: The Solnix page has no STANDARDS section.

Writing portable scripts

  • Use only -n, -_, -t, -s and --version in scripts that must also run against FreeBSD's llvm-cxxfilt. Avoid -p, -i, -r and -R, and pass only -s auto or -s gnu.
  • Do not rely on the default underscore handling. Pass -n or -_ explicitly, because the default is target dependent on Solnix and Linux and varies by platform on FreeBSD.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.