NOTE: Recompile required — TypeID allocation change

Hi all,

If you have been testing with OPDF-enabled binaries, please
recompile everything (both the FPC compiler and all target
programs) before your next debugging session.

I switched TypeID allocation from sequential counters to
FNV-1a 32-bit hashes of each type's canonical mangled name.
The same type now receives the same TypeID regardless of
which compilation unit emits it. This eliminates the
cross-compilation TypeID collisions I were seeing with
many large multi-unit projects, where separately compiled
frameworks+application produced overlapping TypeID namespaces.

The debugger's remap infrastructure (FTypeIDRemap,
FHeaderTypeIDRemap, RemapTypeID) has been removed — it is
no longer needed. A minimal collision-remap fallback handles
the statistically rare case of two different types hashing
to the same 32-bit value.

Verified: all 27 integration tests pass, and previous
problematic projects now resolve variables correctly on
first attempt.

Design rationale:
https://github.com/graemeg/opdebugger/blob/master/docs/design-decisions.adoc#11-hash-based-typeid-allocation
  docs/design-decisions.adoc, line 660
  (section "Hash-Based TypeID Allocation")

Regards,
  - Graeme -
_______________________________________________
fpc-devel maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to