docs(research): #9 sweep acclient_function_map.md against PDB symbols
Pure-docs sweep. Cross-checked 63 hand-curated entries in
acclient_function_map.md against docs/research/named-retail/symbols.json
(the PDB-derived authoritative name table) using the new helper at
tools/pdb-extract/check_function_map.py.
Findings:
- Zero entries matched address-and-name exactly. Confirms the
PDB build is from a different revision than the binary that
produced our Ghidra chunks (~0x800-0xC10 byte delta varies by
function cluster). Match by NAME, not by raw address.
- 38 entries corrected by PDB name lookup. The "Was" column
preserves the old address for traceability against existing
code comments. Old entries pointed mid-body of the actual
function; new column heads point to function starts.
- 25 entries have no PDB match. Either inlined / non-public
(no S_PUB32 record) or our hand-derived names were synthesized
from call-site analysis and don't match the MSVC mangled form
in the PDB. Several had wrong class assignments (e.g. 0x5387C0
claimed as CTransition::find_collisions, actually
CPolygon::polygon_hits_sphere). Flagged for re-derivation in
acclient_2013_pseudo_c.txt.
Pattern: kept the table format with two address columns (PDB +
legacy) so existing code references using the old addresses can
still be looked up. Added a sweep-summary section at the bottom of
the file documenting the methodology + findings.
Helper script at tools/pdb-extract/check_function_map.py is reusable
for future re-runs (re-run after every PDB regeneration / function
map edit).
Closes #9.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
567078803f
commit
83b020499b
3 changed files with 296 additions and 96 deletions
|
|
@ -177,25 +177,6 @@ Copy this block when adding a new issue:
|
|||
|
||||
---
|
||||
|
||||
## #9 — Address-correction sweep on `acclient_function_map.md`
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** LOW (per-developer convenience; gets us correct symbol→address mapping for ~71 hand-curated entries)
|
||||
**Filed:** 2026-04-25
|
||||
**Component:** docs / research
|
||||
|
||||
**Description:** The hand-curated function map at `docs/research/acclient_function_map.md` has ~71 entries with addresses derived from older Ghidra chunk inspection. The PDB-extracted `docs/research/named-retail/symbols.json` (Sept 2013 EoR build) is now the authoritative name-source. Several entries point at mid-function offsets rather than function starts. E.g. our `FUN_005111d0 = UpdatePhysicsInternal` — actual start in PDB is `0x510700`. Need a sweep that verifies + corrects all hand-curated rows.
|
||||
|
||||
**Root cause / status:** PDB built from a slightly different revision (~0xC00 byte delta on some functions); legacy Ghidra-derived addresses don't all line up. Match by name (PDB names are ground truth) and record the corrected address.
|
||||
|
||||
**Files:**
|
||||
- `docs/research/acclient_function_map.md` — corrections in-place.
|
||||
- `docs/research/named-retail/symbols.json` — name→address lookup source.
|
||||
|
||||
**Acceptance:** Spot-check 10 entries across all sections — each row's address matches `symbols.json` for the named function. Mismatches annotated `(corrected from FUN_xxx, was mid-body)`.
|
||||
|
||||
---
|
||||
|
||||
## #11 — Spell metadata loader (`spells.csv` → `SpellTable`)
|
||||
|
||||
**Status:** OPEN
|
||||
|
|
@ -222,6 +203,14 @@ Copy this block when adding a new issue:
|
|||
|
||||
# Recently closed
|
||||
|
||||
## #9 — [DONE 2026-04-25] Address-correction sweep on `acclient_function_map.md`
|
||||
|
||||
**Closed:** 2026-04-25
|
||||
**Commit:** `docs(research): #9 sweep acclient_function_map.md against PDB symbols`
|
||||
**Resolution:** Wrote `tools/pdb-extract/check_function_map.py` that cross-checks 63 hand-curated entries against `docs/research/named-retail/symbols.json`. Findings: **zero entries matched address-and-name exactly** (confirms ~0x800-0xC10 byte delta vs the binary that produced our Ghidra chunks — different build revision). 38 entries corrected by PDB name lookup; 25 entries either lack PDB symbol records (inlined / non-public) or had wrong class assignments (e.g. `0x5387C0` claimed as `CTransition::find_collisions` was actually `CPolygon::polygon_hits_sphere`). Updated `acclient_function_map.md` with corrected addresses, kept legacy addresses in a "Was" column for traceability, added a top-of-file sweep summary.
|
||||
|
||||
---
|
||||
|
||||
## #10 — [DONE 2026-04-25] Wire `KillerNotification (0x01AD)`
|
||||
|
||||
**Closed:** 2026-04-25
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue