Expand description
Analysis passes over loaded binaries.
Function discovery layers signals from highest to lowest confidence:
- The full symbol table (
.symtab) when present. - The dynamic symbol table (
.dynsym). - Byte-pattern signatures (CRT helpers, libc primitives, …).
.eh_frame(DWARF CFI) — names are addresses, but sizes are authoritative; survives stripping.
Each Function in the produced FunctionMap records every
source that contributed to it. Names from higher-confidence sources
win over names from lower-confidence sources; sizes are merged
preserving any non-zero value.
After all sources are merged, a final pass fills in sizes for functions that no source supplied a size for (typically signature matches), using the distance to the next discovered function in the same address window.
Re-exports§
pub use call_sites::discover_from_bpf_call_sites;pub use call_sites::CallSiteError;
Modules§
- bpf_
relocs - BPF / SBF call-site name resolution via
.rel.dyn. - call_
sites - Function discovery from
calltargets.
Structs§
- Function
- A discovered function.
- Function
Map - A collection of discovered functions, indexed by address.
Enums§
- EhFrame
Error - Errors specific to
.eh_frameparsing. - Error
- Crate-level error type.
- Function
Source - Where a function record came from. Ordered by ascending confidence — higher-numbered sources override lower-numbered ones for fields where they disagree (currently: function name).
- PltError
- Errors specific to PLT thunk discovery.
- Symbol
Error - Errors specific to symbol-table parsing.
Functions§
- discover_
from_ eh_ frame - Walk every FDE in
.eh_frameand return oneFunctionper entry. - discover_
from_ signatures - Run signature matching against every executable section in
elf. - discover_
from_ symbol_ tables - Sweep every
.symtaband.dynsyminelf, return oneFunctionper qualifying entry. Names are resolved via the linked string table. - discover_
functions - Run every available discovery source and merge into a single
FunctionMap. - discover_
plt_ thunks - Discover every PLT thunk across
.plt,.plt.got, and.plt.sec(IBT-aware variants), and return oneFunctionper entry, named by its imported symbol.