Inspect a file

glaurung symbols

List symbols, imports, exports, and linked libraries.

does not write by default 3 worked examples

use it for

Symbols come from the file. Stripped binaries may expose little more than imports and dynamic symbols.

Run glaurung symbols --help on your installed version before putting the command in a script. Glaurung is still pre-1.0.

input
One binary with whatever static or dynamic symbol data survived the build.
output
Symbols, imports, exports, and linked-library names. A stripped file can return only dynamic entries.
mode
read only. The examples leave the input unchanged.

command shape

syntax

short form
$ glaurung symbols PATH [--filter FILTER] [--limit N]

The installed parser is authoritative: glaurung symbols --help

run it

examples

List the small fixture

Debug builds make the difference between file symbols and imported symbols easy to see.

run

from the engine checkout
$ glaurung symbols samples/binaries/platforms/linux/amd64/export/native/clang/debug/hello-c-clang-debug --limit 8

output

captured result captured output, shortened
all: 8
  Scrt1.o
  _DYNAMIC
  _GLOBAL_OFFSET_TABLE_
  _IO_stdin_used
dynamic: 7
  __cxa_finalize
  __libc_start_main
  printf
  strlen
libs: 2
  /lib64/ld-linux-x86-64.so.2
  libc.so.6

captured output, shortened.

Read the result: The all group includes file and linker symbols. The dynamic group is what a stripped ELF usually leaves behind.

Find one imported API

Search after filtering when a large library has thousands of symbols.

run

from the engine checkout
$ glaurung symbols /usr/bin/curl --filter imports --search SSL --limit 30

output

captured result captured from the Ubuntu development host, 2026-08-31
imports: 2
  curl_easy_ssls_export
  curl_easy_ssls_import

captured from the Ubuntu development host, 2026-08-31.

Read the result: The filter matches symbol names, not every TLS-related call the program may make. Follow the two imports into their callers before drawing a conclusion.

Read Mach-O symbols

The Darwin fixture shows Mach-O's leading-underscore symbol convention without requiring macOS as the host.

run

from the engine checkout
$ glaurung symbols samples/binaries/platforms/darwin/amd64/export/native/multi_import-macho --limit 20

output

captured result captured from the checked-in x86_64 Mach-O fixture, 2026-08-31
all: 9
  __dyld_private
  __mh_execute_header
  _free
  _main
  _malloc
  _printf
  _puts
  _strlen
  dyld_stub_binder
exports: 2
  __mh_execute_header
  _main

captured from the checked-in x86_64 Mach-O fixture, 2026-08-31.

Read the result: Mach-O prefixes ordinary C names with an underscore. Search for _main or _printf in this file rather than assuming ELF naming rules.

used above

important options

--filter imports
Print only imported symbols.
--search TEXT
Keep symbols whose names contain TEXT.
--limit N
Cap each printed group.
--json
Return the groups as JSON.

These are the flags used by the examples. Run glaurung symbols --help for the complete parser help.

keep working

related commands

← all 40 commands