internal/abi — validation proof
Go’s own internal/abi test suite, converted to C# by go2cs, built against the converted standard
library, run under the Go-semantics test host, and compared verdict for verdict against a clean
go test -json baseline of the same sources. This page is generated by the converter from that
comparison — it is the evidence behind the internal/abi row in
Validated Test Packages.
Validated 2026-10-25 · converter b5fc1294d
1 matched · 1 disclosed — Go 1.26.10, windows/amd64, converted package
src/core/internal/abi.
Measured at Release (tiered JIT off), oracle go version go1.26.10 windows/amd64.
Verdicts
| Test | go test |
go2cs |
|---|---|---|
TestFuncPC |
pass | fail (disclosed) |
TestFuncPCCompileError |
pass | pass |
Disclosed divergences
A disclosed divergence is a specific Go assertion the managed CLR provably cannot satisfy — not
a skipped test and not a tolerance. Each one is pinned by exact failure signature in the package’s
hand-owned go2cs_test_disclosures.json;
a disclosed test that fails any other way is still a hard mismatch.
| Test | Class | Pinned reason |
|---|---|---|
TestFuncPC |
runtime-capability |
The test compares FuncPCABI0(FuncPCTestFn) against FuncPCTestFnAddr, and Go writes that expected value from _test.s, assembly that is never converted. The managed side therefore has no real code address on either arm: FuncPCTestFn is a bodyless partial with no managed body, and FuncPCTestFnAddr is declared and read but never written. Rather than let both arms read 0 and pass vacuously, the synthetic-PC registry refuses a token for an assembly routine by construction, because it would be dereferenced or compared as an address and there is nothing to resolve it to; that refusal is the signature pinned here. A more complete registry cannot retire this entry: it needs a real code address for FuncPCTestFn on both arms, which this port has no mechanism to produce, so the entry may be permanent. |