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

2.5 KiB

source/camera/orbiting_camera.obj exact-match record

Environment and scope

  • Compiler: XDK 3911 CL.Exe 13.00.9254.1.
  • Flags: /O2 /Oy- /DDEBUG /Dxbox.
  • January target: pristine cachebeta.exe, regenerated with csplit.
  • Complete object inventory: two functions, one 20-byte constants section, and one 40-byte owned path-string section.

Final strict evidence

Symbol Size T/B Relocs T/B Normalized SHA-256 Result
_orbiting_camera_new 0x20/0x20 1/1 5e1d0e29bf599e8dc421610e5deb29869e72075acd624ee1794e9b48bf723984 exact
_orbiting_camera_update 0x470/0x470 50/50 908d34ea2543c87642a508552b21907f5aa137815b6abd711edf4816ff17188c exact
_rdata_0025724c 0x14/0x14 0/0 860534d4a115070bc9d1c9cf3863cea78704541d317d85fb697fb4b44f9474e4 exact
owned source-path string 0x28/0x28 0/0 4947aefac83506a01ca314594c170532ef4437715f7eb8175022fc2f72cdab63 exact

The hardened comparator reports all_equal: true. The constants owner has COFF type 0 and storage class 3 on both the regenerated target and rebuilt object.

Closing source and ownership evidence

The prior external declaration made orbiting_camera_update differ only in a nine-byte scheduling window. The compiler delayed the two loads from rdata_0025724c until after the zero-vector and depth stores. Declaring the constants table static const gives VC7 translation-unit ownership and non-aliasing knowledge; it then emits the January load/store interleaving exactly, without changing source semantics or any other instruction.

This is also the evidence for the original linkage:

  • no other translation unit references rdata_0025724c;
  • the object owns the complete 20-byte table;
  • static const alone reproduces every function byte and relocation address;
  • config/symbols.json now marks the csplit symbol static, producing storage class 3 on both sides.

Rejected experiment and do-not-repeat list

  • Expanding result->offset = *global_zero_vector3d into three scalar assignments regressed the update to 52 relocations and introduced repeated global loads. It was reverted.
  • Five older assignment/declaration-order permutations failed to improve the external-linkage baseline and were reverted.
  • Do not revisit barriers, volatile, assembly, undefined behavior, byte forcing, compiler pragmas, or flag changes. None is needed.

Disposition

Complete and strict-exact. The stale parked entry was removed and the object is marked Matching.