mirror of
https://github.com/Cesarus85/ringfall-mjolnir-vr.git
synced 2026-10-24 21:00:30 +02:00
91 lines
4.5 KiB
Markdown
91 lines
4.5 KiB
Markdown
# `libs/libcmt/time.obj` exact-match ledger
|
|
|
|
This atomic lane independently revalidates an older completed result on a
|
|
fresh worktree based on campaign commit `63501296`. The historical branch was
|
|
used only to identify the candidate; target provenance and every admission
|
|
measurement below were repeated in this lane.
|
|
|
|
## Plain-English behavior
|
|
|
|
`time` asks Windows for the current system clock as a 64-bit count of
|
|
100-nanosecond ticks since 1601. It subtracts the difference between the
|
|
Windows and Unix epochs, divides by the number of ticks in one second,
|
|
optionally stores that Unix timestamp through the caller's pointer, and returns
|
|
the same value.
|
|
|
|
## Primary provenance and target inventory
|
|
|
|
The locally archived XDK 3911 `libcmt.lib` has SHA-256
|
|
`60aa4c87c97eeb6662b31d9d37cf3caba1afabaec72c47b090e7a0ce8b632f55`.
|
|
Its member `obj\i386\time.obj` records both `..\time.c` and the full original
|
|
path `d:\xbox-finalfre\private\sdktools\crt\crtw32\time\time.c`, plus compiler
|
|
id `0x001c2426`. The member's `_time` COMDAT is already strict-equal to the
|
|
January split target:
|
|
|
|
- code size `56/56` bytes;
|
|
- two `IMAGE_REL_I386_REL32` relocations, at `+0x0a` to
|
|
`_GetSystemTimeAsFileTime@4` and `+0x29` to `__aulldiv`, both addend zero;
|
|
- identical normalized SHA-256
|
|
`f481c71336d955df61673ad2844701121e93e39d9392cce86c4c261bfd870d7f`;
|
|
- no target-owned `.data`, `.bss`, or `.rdata`.
|
|
|
|
This proves the target is Microsoft's readable CRT C translation unit rather
|
|
than a vendored-assembly object, and gives a primary reference object for the
|
|
function, relocation destinations, ownership, compiler identity, and size.
|
|
|
|
## Recovered representation and experiments
|
|
|
|
The retained source overlays the two 32-bit `FILETIME` halves with an unsigned
|
|
64-bit tick value in a named union. That is the ordinary VC7/XDK representation
|
|
for this Windows structure and lets the compiler perform the epoch subtraction
|
|
directly on the two halves before calling its unsigned 64-bit divide helper.
|
|
The constants are typed 64-bit values: `116444736000000000ui64` ticks between
|
|
the epochs and `10000000ui64` ticks per second.
|
|
|
|
| ID | Source shape | Size T/B | Relocs T/B | Result |
|
|
|---|---|---:|---:|---|
|
|
| E01 | Named union with `parts` and `ticks` views | `56/56` | `2/2` | retained; strict exact |
|
|
| E02 | Build the 64-bit value explicitly with shift and OR | `65/56` | `2/2` | rejected; redundant zero/OR work and an extra saved register |
|
|
|
|
No raw offsets, pointer-cast punning, packing, assembly, `volatile`, forced
|
|
inlining, undefined behavior, object-byte patch, comparator exception, or
|
|
compiler-flag override is used.
|
|
|
|
## Strict production verification
|
|
|
|
The production object was rebuilt with XDK 3911 CL `13.00.9254.1` under the
|
|
configured libcmt flags `/O1 /Gy /I"xbox/include"`. The fresh result is strict
|
|
exact:
|
|
|
|
| symbol | target | candidate | relocs | normalized SHA-256 |
|
|
|---|---:|---:|---:|---|
|
|
| `_time` | 56 B | 56 B | 2 / 2 | `f481c71336d955df61673ad2844701121e93e39d9392cce86c4c261bfd870d7f` |
|
|
|
|
Both relocations match in address, type, destination, and addend: `+0x0a`
|
|
targets `_GetSystemTimeAsFileTime@4 + 0`, and `+0x29` targets
|
|
`__aulldiv + 0`. `tools.coff_compare.section_infos_equal` returned true. Both
|
|
objects contain one 56-byte `.text` COMDAT with identical flags, externally
|
|
owned by function symbol `_time` at offset zero; neither owns runtime data.
|
|
The candidate's other sections are ordinary compiler directives and debug
|
|
metadata.
|
|
|
|
The complete `halobetacache_build` and `libcmt_build` succeeded. A forced clean
|
|
rebuild again emitted the configured `/O1 /Gy` command and reproduced strict
|
|
equality, ruling out stale-object credit. The regenerated semantic audit
|
|
scanned 405 implemented units with zero unit errors and 3,381 accepted exact
|
|
functions. Progress reported 295/833 exact objects overall and 28/212 libcmt
|
|
objects; libcmt had 1,981/55,015 exact code bytes and 196/8,637 exact data
|
|
bytes at this lane's snapshot. The full tooling suite passed **179/179** tests.
|
|
|
|
After the atomic commit, the fail-closed per-unit regression manifest was
|
|
snapshotted and checked successfully with no failures, warnings, regressions,
|
|
ownership changes, or unexpected new matches. `git diff --check` and the final
|
|
scope/policy audit were also clean.
|
|
|
|
## House/Berth audit
|
|
|
|
The implementation is ordinary readable C with its sole parameter on its own
|
|
line and one explicit final return. It uses named typed members rather than raw
|
|
structure offsets. No tag, datum, or object access is involved. No original
|
|
January bug was found, so no bug-preservation comment is needed.
|