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

3.9 KiB

wcsspn.obj exact-match log

Plain-English behavior

This CRT routine counts the initial UTF-16 characters in string that all belong to control. It stops at the first character absent from the control set or at the string terminator and returns that character index.

Provenance and target inventory

The completed local result at commit 98f28ba7 (duplicated later as ec562740) was treated as untrusted. Its object-scoped source was transplanted onto the current campaign line, rebuilt from scratch with XDK 3911 CL 13.00.9254.1, and checked independently against the January target.

  • Generated object flags: /O1 /Gy /I"xbox/include", unchanged.
  • The January target owns exactly one 70-byte .text COMDAT.
  • _wcsspn is the only function and is externally linked (COFF type 0x20, storage class 2).
  • There are zero relocations and no target-owned .rdata, .data, or .bss.

January's bytes prove the canonical Microsoft CRT topology: an outer scan of the input and an inner scan of the control set. A missing character exits from the inner loop; the string terminator exits the outer loop; both paths converge on the same pointer-subtraction and divide-by-two machine epilogue.

Measured source shapes

ID Source shape Size T/B Relocs T/B Candidate hash Result
E01 Canonical nested scans with early source return 70/70 0/0 daf0926e...035d04a Accepted: strict-exact
E02 Single source return using goto done 70/70 0/0 a3ee2c4f...ec48e4 Rejected: pushes moved below empty-string branch
E03 E01 with const-correct local scan pointers 70/70 0/0 daf0926e...035d04a Accepted: same exact bytes, cleaner source

The accepted full normalized SHA-256 is daf0926e297ef92eb1c4cced409b2f9f8afd164fc2a0b5dd3a8f5a9ca035d04a. The strict comparator also verifies the empty relocation list, and the symbol audit verifies exact external ownership.

House/Berth and safety audit

Each parameter is on its own line and the two return expressions are explicit. This function retains two source-level returns as a narrowly measured exception to the preferred single-return rule: E02 shows that merging them changes the otherwise exact prologue and empty-string path even though total size remains 70 bytes. VC7 already cross-jumps E01's two source exits into the single target machine epilogue.

Both scan pointers remain const, and neither string is modified. The source uses no assembly, volatile, __forceinline, alignment pragma, undefined behavior, byte forcing, magic offset, compiler-flag change, or comparator exception. It contains no known original bug requiring a preservation comment.

Final admission gates

The final isolated lane was rebased onto authoritative campaign tip fe4065f6 before admission. The object was then cleaned and rebuilt, rather than reusing an earlier candidate artifact.

  • Hardened whole-object audit: exact one-function inventory, 70/70 raw bytes, 0/0 relocations, identical normalized SHA-256, and matching external function ownership.
  • Owned data audit: the target owns no .rdata, .data, or .bss, and the candidate introduces none. Compiler-only .drectve and discardable debug sections are not runtime-owned target sections.
  • Full halobetacache_build and libcmt_build: passed.
  • Semantic progress: 3,448 functions evaluated, 3,364 accepted exact, and zero unit errors.
  • Ordinary progress credits wcsspn.obj as one complete libcmt object. The current aggregate is 277/833 objects; libcmt is 10/212 objects and 11/476 functions.
  • Admission audit: no wcsspn candidate, contradiction, or revocation.
  • Fail-closed regression manifest/check: _wcsspn remains exact, with no failures or warnings.
  • Tool tests: all 177 passed.
  • git diff --check: clean.

No production file outside this object, its configuration entry, and this log was changed. Nothing was pushed.