Strict build-compatibility fingerprint — the PRIMARY safety gate for DSP hot reload. More...
#include <cstdint>#include <cstdio>#include <cstring>#include <string>#include <vector>Go to the source code of this file.
Classes | |
| struct | pulp::format::reload::BuildFingerprint |
Namespaces | |
| namespace | pulp |
| namespace | pulp::format |
| What the product grants a device: the quota table indexed by capability tier and live thermal state. | |
| namespace | pulp::format::reload |
| namespace | pulp::format::reload::detail |
Functions | |
| void | pulp::format::reload::detail::set_field (char *dst, std::size_t cap, const char *src) |
| BuildFingerprint | pulp::format::reload::current_build_fingerprint () |
| Capture THIS translation unit's build fingerprint. | |
| bool | pulp::format::reload::fingerprints_match (const BuildFingerprint &a, const BuildFingerprint &b) |
| Field-by-field equality (the gate). | |
| std::vector< std::string > | pulp::format::reload::fingerprint_diff (const BuildFingerprint &shell, const BuildFingerprint &logic) |
| Human-readable per-field differences (diagnostics only). Empty == identical. | |
Variables | |
| constexpr uint32_t | pulp::format::reload::kBuildFingerprintSchema = 1 |
| Bump when the fingerprint layout/semantics change. | |
Strict build-compatibility fingerprint — the PRIMARY safety gate for DSP hot reload.
The shell and the hot-loaded logic dylib must be built with a byte-identical toolchain + ABI configuration, because the seam carries full C++ traffic (vtable dispatch, std:: containers, exceptions, RTTI). A sizeof/layout probe cannot prove that; this fingerprint does, by rejecting any logic binary whose compiler/stdlib/flags differ.
CRITICAL: BuildFingerprint is a fixed-size POD (no std::string). It is the ONE struct that crosses the shell↔logic boundary before compatibility is established, so it must not itself depend on the STL ABI it exists to check. current_build_fingerprint() is header-inline + macro-driven so each binary captures its OWN compiler's settings at its own compile time.