Files
Cesarus85--mjolnir-vr/docs/object_matching_logs/libcmt_syserr_obj.md
T

88 lines
4.4 KiB
Markdown

# `libs/libcmt/syserr.obj` exact-match ledger
This atomic lane starts from campaign commit `e5ff86a3`. The object was
`MISSING` at config index 763, absent from `config/parked.json`, and had no
production source. January owns no executable code here: the object is the
CRT's public error-message pointer table, its upper-bound value, and the
string literals referenced by that table.
## Plain-English behavior
`_sys_errlist` maps the standard CRT error numbers to their English messages.
Several unsupported error numbers deliberately share the single
`"Unknown error"` literal. `_sys_nerr` contains 43, the final fallback index;
`strerror.obj` uses it both as the range boundary and as the fallback entry.
## Primary provenance and target inventory
The XDK 3911 `libcmt.lib` archive has SHA-256
`60aa4c87c97eeb6662b31d9d37cf3caba1afabaec72c47b090e7a0ce8b632f55`.
Its `obj\i386\syserr.obj` member has SHA-256
`883a9f4aecf55b5419541ba9f23857fa9115e0a752fb398913e9ff0cf382b374`,
compiler identifier `0x001c2426`, ordinary C CodeView records, and source path
`d:\xbox-finalfre\private\sdktools\crt\crtw32\misc\syserr.c`. The public
historical Microsoft Xbox CRT source at the same path supplies the message
spellings and table order. January bytes and ownership remain authoritative.
Strict January runtime inventory:
- one writable `.data` section, 180 bytes, with 44 DIR32 relocations and
normalized SHA-256
`8a59cc708ce056f9aeb11128812b50f5b38f24bb7bd4fe1e2f5e0c39839e3313`;
- external `__sys_errlist` at data offset `0x00` and external `__sys_nerr` at
offset `0xb0`, with the latter containing the integer 43;
- 40 unique string COMDATs totaling 824 bytes (44 table entries reuse the
`"Unknown error"` COMDAT four additional times);
- no `.text`, BSS, or other runtime-owned section.
The target and rebuilt object expose the same 42 external non-code symbols.
All symbol values, types, and storage classes agree. All 41 distinct runtime
sections pass `section_infos_equal`, and the 44 relocations agree in address,
type, destination symbol, and addend. The extracted XDK member independently
reproduces every one of those payloads and owners.
## Experiment matrix
| ID | Source factor | Data T/B | Relocs T/B | Result | Decision |
|---|---|---:|---:|---|---|
| E01 | Authentic Microsoft table, spellings, shared fallback literal, and `sizeof`-derived final index | `1004/1004` | `44/44` | all table bytes, strings, relocations, symbols, offsets, and ownership strict exact on the first build | accepted |
No code-shaping experiment was needed. The compiler naturally coalesces the
five occurrences of `"Unknown error"`, which is why 44 pointers own only 40
unique string sections.
## Strict verification
XDK 3911 CL `13.00.9254.1` compiled with unchanged libcmt
`/O1 /Gy /I"xbox/include"` flags. The hardened target-authoritative census
checks every external owner, each owned section, and all relocations; nothing
is accepted through fuzzy percentage, symbol masking, or a semantic-data
exception.
The full `halobetacache_build`, `libcmt_build`, and `progress` targets pass.
Progress reports 332/833 objects overall and 65/212 libcmt objects. Libcmt has
88/476 exact functions, 4,512/55,015 exact code bytes, and 1,368/8,637 exact
data bytes. This data-only object contributes one completed object and 1,004
exact data bytes. The semantic scan covers 434 units and 3,525 functions,
accepts 3,441 exact functions, and reports zero unit errors. The admission
audit reports no candidates or revocations; its only contradiction is the
pre-existing unrelated `shell_xbox` accounting item.
The clean-commit regression snapshot/check was followed by deleting the
generated object and forcing a rebuild. It retained every data fingerprint
and owner with no failures or warnings. The complete tool suite passes
179/179 tests.
## House/Berth and original-bug audit
The source is the readable, naturally typed Microsoft table: no assembly,
`volatile`, forced inlining, undefined behavior, type-punning, opaque padding,
alignment trick, magic address, build-flag change, byte patch, or comparator
waiver. `sizeof` derives the final index rather than hard-coding 43. Formatting
and public linkage follow the surrounding CRT source and Berth conventions.
No shipped correctness defect was found in this object. Writable `char *`
entries are the historical CRT ABI even though modern source would usually
spell the string targets `const`; changing that public type is outside this
exact-match reconstruction.