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.
The manual pages
- Solnix: c++filt(1) from
pkgs.solnix.binutils - Linux: c++filt(1) binutils-2.46
- FreeBSD: c++filt(1) 15.1-RELEASE
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 with | Topic | What differs |
|---|---|---|
| Linux | same program | The 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 |
| FreeBSD | different implementation | The 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 missing | Solnix 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 missing | The 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 values | On 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 meaning | FreeBSD 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 |
| FreeBSD | leading underscore default | Solnix 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 |
| FreeBSD | Java and other languages | The 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 |
| FreeBSD | exit status | The 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 default | Solnix 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,-sand--versionin scripts that must also run against FreeBSD's llvm-cxxfilt. Avoid-p,-i,-rand-R, and pass only-sauto or-sgnu. - Do not rely on the default underscore handling. Pass
-nor -_ 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.