Skip to content

syscall: how to deal with ABI changes? (freebsd in this case) #16735

@keltia

Description

@keltia

Hello,

  1. What version of Go are you using (go version)?
    1.6 & 1.7 & master 1.8
  2. What operating system and processor architecture are you using (go env)?
    FreeBSD 9.x / 10.3 / upcoming 11.0

An interesting problem: between 8.x and 9.x in 3/2014 (see freebsd/freebsd-src@b38edcd#diff-6769d113f5fa92d186538ae4c8659029) some structures were changed in the kernel ABI (and thus breaking it). Current Go repo has a copy of the 8.0 if.h file translated in go struct. How would you deal with such an ABI change with respect to the go translation?

In the current FreeBSD port system, we have an patch that re-sync with the current ABI (although it is currently incomplete as it does not deal with ztypes_freebsd_arm.go at all but I'll fix that) and I'd like to see that patch (see https://github.com/freebsd/freebsd-ports/blob/master/lang/go/files/struct-if_data-patch) upstreamed if possible.

The problem is that I'm not sure how (and have some difficulty to test right now) a go compiled binary with the modifications would work on a pre-ABI change system (although it is rather old and unsupported right now, I'd hate to break that) and how, in the go side of things, deal with that (versioned *_freebsd_* files? Something else?).

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions