diff --git a/unix/mkpost.go b/unix/mkpost.go index 5624847c6..3d19d3fa7 100644 --- a/unix/mkpost.go +++ b/unix/mkpost.go @@ -101,6 +101,17 @@ func main() { }) } + if goos == "solaris" { + // Convert *int8 to *byte in Iovec.Base like on every other platform. + convertIovecBase := regexp.MustCompile(`Base\s+\*int8`) + iovecType := regexp.MustCompile(`type Iovec struct {[^}]*}`) + iovecStructs := iovecType.FindAll(b, -1) + for _, s := range iovecStructs { + newNames := convertIovecBase.ReplaceAll(s, []byte("Base *byte")) + b = bytes.Replace(b, s, newNames, 1) + } + } + // Intentionally export __val fields in Fsid and Sigset_t valRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\s+)X__(bits|val)(\s+\S+\s+)}`) b = valRegex.ReplaceAll(b, []byte("type $1 struct {${2}Val$4}")) diff --git a/unix/types_solaris.go b/unix/types_solaris.go index 98a4d8596..89e4c51e2 100644 --- a/unix/types_solaris.go +++ b/unix/types_solaris.go @@ -76,12 +76,6 @@ struct sockaddr_any { char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; }; -// go_iovec is used to get *byte as the base address for Iovec. -struct goIovec { - void* iov_base; - size_t iov_len; -}; - // Solaris and the major illumos distributions ship a 3rd party tun/tap driver // from https://github.com/kaizawa/tuntap // It supports a pair of IOCTLs defined at @@ -164,7 +158,7 @@ type _Socklen C.socklen_t type Linger C.struct_linger -type Iovec C.struct_goIovec +type Iovec C.struct_iovec type IPMreq C.struct_ip_mreq