Skip to content

Support RegisterFunc and typed callbacks on Windows/386 #479

Description

@nekohasekai

Operating System

  • Windows

What feature would you like to be added?

Support typed RegisterFunc/RegisterLibFunc calls and typed callbacks on Windows/386, instead of limiting official support to SyscallN and NewCallback.

This should include:

  • 64-bit integer arguments and EDX:EAX returns
  • float32/float64 arguments and x87 returns
  • typed callback arguments and results
  • stdcall and cdecl stack cleanup
  • the full 32 declared argument slots
  • by-value structs for direct calls, but not callbacks
  • native Windows/386 CI coverage

A draft implementation is available in #478. Direct-call struct support is also related to #474.

Why is this needed?

Windows/386 is a supported Tier 2 target, but its partial typed-call implementation loses the high half of 64-bit values, handles floating-point returns incorrectly, and does not fully support typed callbacks or the declared argument capacity.

Completing the ABI support allows applications to share the same typed PureGo bindings across Windows architectures and gives these paths real 32-bit runtime coverage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions