3.8 KiB
wcslen.obj exact-match log
Plain-English behavior
This CRT routine walks a UTF-16 string until its zero terminator and returns the number of 16-bit characters before it.
Provenance and verification
- January target: one 22-byte cdecl function, zero relocations, no data.
- Compiler: XDK 3911 CL 13.00.9254.1 with the libcmt project's unchanged
/O1 /Gyflags. - A pre-tested
while (*end) end++;shape compiled to 25 bytes and was rejected. The original CRT idiom advances the pointer in the condition,while (*end++);, then returnsend - string - 1. Exact verification requires the target's word load, two byte-wise pointer increments, signed divide-by-two shift, and final decrement—not just equivalent behavior. - No assembly,
volatile, forced inlining, undefined behavior, byte patch, or compiler-flag change is used.
2026-08-13 independent salvage audit
The completed local result at commits f2c0f207 and 8b1ff695 was treated as
untrusted. The source-only change from f2c0f207 was transplanted without its
history onto authoritative campaign tip 0244dd18, then rebased and fully
revalidated on the later authoritative tip b7bde2b6. It was rebuilt from
scratch and compared against the independently extracted January target
object after that final rebase.
Target inventory and ownership
- The target owns exactly one runtime section: a 22-byte
.textCOMDAT. _wcslenis the only function. It is a public cdecl symbol with COFF type0x20and external storage class2.- There are zero relocations and no target-owned
.rdata,.data, or.bss. - The target instruction sequence is one pointer walk: load a UTF-16 word, advance the pointer by two bytes, loop while the word is nonzero, subtract the original pointer, divide the byte distance by two, and exclude the terminator.
Measured source shapes
| Shape | Target/candidate size | Relocations | Result |
|---|---|---|---|
Pretested while (*end) end++; |
22/25 |
0/0 |
Rejected: different loop topology |
Post-increment while (*end++); |
22/22 |
0/0 |
Accepted: strict-exact |
The accepted source is the normal readable CRT idiom, not a code-emission
trick. The hardened comparator reports the same normalized SHA-256 for both
objects: ab4bab194aae7751eae686a11b9b3777dd65c29138d9a7d064cc8a88cb137299.
The candidate preserves the target's external function ownership and contains
no extra runtime sections.
Scope and standards audit
This is an isolated CRT translation unit, so it changes no shared declaration
and has no sibling function to perturb. It uses the canonical XDK 3911
compiler and the generated libcmt /O1 /Gy /I"xbox/include" flags unchanged.
The sole parameter is on its own line and the function has one explicit
return. There is no assembly, volatile, __forceinline, alignment pragma,
undefined behavior, byte forcing, magic offset, compiler flag change, or
comparator exception. The function reproduces no known original bug requiring
a preservation comment.
Project gates
- A forced target/candidate rebuild and whole-runtime-object audit passed: 22/22 bytes, 0/0 relocations, exact normalized hash, exact symbol type and storage class, and no owned data.
ninja halobetacache_build libcmt_buildcompleted successfully.ninja semantic_progressandninja progresscompleted with zero semantic unit errors. At the final campaign tip, the libcmt category reports 3/212 complete objects, 4/476 exact functions, and 142/55,015 exact code bytes.- A clean post-admission regression snapshot and rebuild/check passed with
ok: true, no failures, no warnings, and_wcsleninstill_exact. - The admission audit reports no
wcslencontradiction or revocation. - The complete tool suite passes 177/177 unit tests, and
git diff --checkis clean.