read what the binary says about itself: names, signatures, prototypes; gen v2
All checks were successful
CI / lint (push) Successful in 17s
CI / fuzz (push) Successful in 1m52s
CI / test (push) Successful in 24s

This commit is contained in:
Kamal Tufekcic 2026-07-29 20:09:21 +03:00
commit c458b4cb50
34 changed files with 58363 additions and 192 deletions

View file

@ -72,7 +72,7 @@ enum Cmd {
#[arg(long)]
keep: bool,
/// With --gamedata, also run the LIVE fuzzer against this same server for N randomized probes
/// (0 = off). Reuses the launched server — no separate `fuzz-live` run needed for CI.
/// (0 = off). Runs against the server `produce` already launched; there is no separate command for it.
#[arg(long, default_value_t = 500)]
fuzz_iterations: usize,
},
@ -129,6 +129,16 @@ enum Cmd {
/// Multilib non-virtual names to fold as sigs — `{lib: [{name,addr}]}`; `make_sig` runs per lib.
#[arg(long)]
extra_sigs: Option<PathBuf>,
/// Declared C++ prototypes (`mappings/prototypes.json`) to judge against this build's measured
/// register footprints. Emits `abi-<game>.json`. Static repo input — omit to skip the manifest.
#[arg(long)]
prototypes: Option<PathBuf>,
/// Valve's naming for the entity class behind each `PVAL_EHANDLE` Pulse parameter
/// (`mappings/ehandle-classes.json`), propagated across the parameters this build's destructor
/// addresses prove are the same type. Static repo input — omit and the bindings artifact simply
/// states no class.
#[arg(long)]
ehandle_classes: Option<PathBuf>,
/// Byte budget for signatures the FOLD generates (the extrapolated tiers). The derive's own
/// `core` sigs use a separate fixed budget — this flag does not widen those.
#[arg(long, default_value_t = 400)]
@ -356,6 +366,8 @@ fn main() -> Result<()> {
full_names,
extra_offsets,
extra_sigs,
prototypes,
ehandle_classes,
sig_cap,
version,
out_dir,
@ -393,6 +405,8 @@ fn main() -> Result<()> {
full_names: inputs.full_names.as_deref(),
extra_offsets: inputs.extra_offsets.as_deref(),
extra_sigs: inputs.extra_sigs.as_deref(),
prototypes: prototypes.as_deref(),
ehandle_classes: ehandle_classes.as_deref(),
sig_cap,
version: &version,
out_dir: &out_dir,