objdump(1) on Solnix vs Linux and the BSDs
objdump is not in the Solnix base system. Install pkgs.solnix.binutils to get GNU binutils objdump, whose synopsis is identical to the Linux page. FreeBSD's objdump(1) is llvm-objdump, which has a different option set: GNU options such as -x, -s, -t and -r are not in the extracted FreeBSD flag list.
The manual pages
- Solnix: objdump(1) from
pkgs.solnix.binutils - Linux: objdump(1) binutils-2.46
- FreeBSD: objdump(1) 15.1-RELEASE
What Solnix runs
Not installed by default: add pkgs.solnix.binutils. The bundle lists no other illumos variants, so the command comes only from that package.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| Linux | same program | The Solnix page and the Linux (binutils-2.46) page have the same NAME and SYNOPSIS and the same extracted options, apart from --enable-follow-debug-links, which only the Linux list contains. GNU-style invocations should behave alike on both.Source: Solnix objdump(1) SYNOPSIS; Linux objdump(1) SYNOPSIS; option flag lists |
| FreeBSD | different implementation | FreeBSD's objdump(1) page documents llvm-objdump, LLVM's object file dumper. Solnix and Linux use the GNU binutils objdump. Options, defaults and output can differ between the two. Source: FreeBSD objdump(1) NAME and SYNOPSIS; Solnix objdump(1) NAME |
| FreeBSD | action options | GNU objdump requires at least one of -a -d -D -e -f -g -G -h -H -p -P -r -R -s -S -t -T -V -x. The extracted FreeBSD option list has none of -a, -f, -h, -p, -r, -R, -s, -t, -T or -x, so scripts using them need checking.Source: Solnix objdump(1) OPTIONS (first paragraph); FreeBSD objdump(1) option flags |
| FreeBSD | input handling | llvm-objdump reads a.out when no file is named, and reads standard input when the file name is -. The GNU page synopsis shows objfile... and the bundle text does not describe either behaviour. Source: FreeBSD objdump(1) DESCRIPTION; Solnix objdump(1) SYNOPSIS |
| FreeBSD | -w meaning | On FreeBSD, -w/--wide is ignored and kept only for compatibility with GNU objdump. The GNU synopsis lists -w|--wide as an option.Source: FreeBSD objdump(1) -w, --wide; Solnix objdump(1) SYNOPSIS |
| FreeBSD | -C demangle argument | GNU -C/--demangle takes an optional style argument. FreeBSD -C/--demangle takes none. GNU also has a demangling recursion limit (default on, 2048 levels) with --recurse-limit and --no-recurse-limit; the FreeBSD page documents neither.Source: Solnix objdump(1) -C, --recurse-limit; FreeBSD objdump(1) -C, --demangle |
| FreeBSD | selecting target architecture | GNU objdump uses -m machine and -b bfdname/--target, and -i lists the supported formats. FreeBSD uses --arch-name, --triple, --mcpu and --mattr. The FreeBSD flag list has no -m, -b or -i.Source: Solnix objdump(1) -b, -m, -i; FreeBSD objdump(1) --arch-name, --triple, --mcpu, --mattr |
| FreeBSD | -M disassembler options | FreeBSD -M takes comma-separated, target-specific names such as att, intel, reg-names-raw, no-aliases and numeric. x86 defaults to att, and ARM defaults to reg-names-std. FreeBSD also has the deprecated --x86-asm-syntax. The GNU text in the bundle does not show its -M option list.Source: FreeBSD objdump(1) -M, --x86-asm-syntax; Solnix objdump(1) SYNOPSIS (-M options) |
| FreeBSD | -l and -S imply disassembly | On FreeBSD, -l (line numbers) and -S (source) both imply --disassemble. The GNU text in the bundle is trimmed and does not state this, so do not assume it carries over to Solnix.Source: FreeBSD objdump(1) -l, -S; Solnix objdump(1) SYNOPSIS |
| FreeBSD | immediate values in hex | FreeBSD prints immediates in hex by default (--print-imm-hex) and has --no-print-imm-hex to turn that off. These options are not in the GNU option list.Source: FreeBSD objdump(1) --print-imm-hex, --no-print-imm-hex; Solnix objdump(1) option flags |
| FreeBSD | debug info formats | GNU objdump has -g (STABS, falling back to DWARF), -G, -W/--dwarf, --ctf and --sframe. The FreeBSD page has none of these. It offers --debug-vars, --build-id and --debug-file-directory, which the GNU page lacks.Source: Solnix objdump(1) -g, SYNOPSIS (-W, --ctf, --sframe, -G); FreeBSD objdump(1) --debug-vars, --build-id, --debug-file-directory |
| FreeBSD | debuginfod | On FreeBSD, --debuginfod and --no-debuginfod control debuginfod lookups. By default they are enabled only if libcurl was compiled in and DEBUGINFOD_URLS names a server. GNU spells this -wD/--dwarf=use-debuginfod and -wE.Source: FreeBSD objdump(1) --debuginfod; Solnix objdump(1) SYNOPSIS (-wD, -wE) |
| FreeBSD | address range scope | FreeBSD --start-address and --stop-address also limit which relocations and symbols are printed, not just the disassembly. The GNU text in the bundle gives only the option names.Source: FreeBSD objdump(1) --start-address, --stop-address; Solnix objdump(1) SYNOPSIS |
Standards
- POSIX: objdump is not a POSIX.1-2024 utility.
Writing portable scripts
- On Solnix, install pkgs.solnix.binutils first; do not assume objdump exists on a default system.
- For scripts that must also run against FreeBSD's llvm-objdump, stick to
-d,-C,-j,-l,-S,--start-address,--stop-addressand--no-show-raw-insn, which appear in both option lists. Do not rely on-x,-s,-tor-r.
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.