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

4.4 KiB

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.