Skip to content

godefs does not regenerate Msghdr in ztypes_darwin_{386,amd64}.go correctly #1466

@davecheney

Description

@davecheney
What steps will reproduce the problem?

On a darwin system regenerating ztypes_darwin_{386,amd64}.go will not correctly 

What is the expected output?

[dave@indy ~/go/src/pkg/syscall]$ uname
FreeBSD
[dave@indy ~/go/src/pkg/syscall]$ godefs -gsyscall -f-m32 types_freebsd.c 2>/dev/null
| grep -A 8 Msghdr\ struct
type Msghdr struct {
    Name *byte;
    Namelen uint32;
    Iov *Iovec;
    Iovlen int32;
    Control *byte;
    Controllen uint32;
    Flags int32;
}

odessa(~/go/src/pkg/syscall) % uname
Linux
odessa(~/go/src/pkg/syscall) % godefs -gsyscall -f-m32 types_linux.c 2>/dev/null |
grep -A 8 Msghdr\ struct
type Msghdr struct {
    Name *byte;
    Namelen uint32;
    Iov *Iovec;
    Iovlen uint32;
    Control *byte;
    Controllen uint32;
    Flags int32;
}

What do you see instead?

lucky(~/go/src/pkg/syscall) % uname 
Darwin
lucky(~/go/src/pkg/syscall) % godefs -gsyscall -f-m32 types_darwin.c 2>/dev/null |
grep -A 8 Msghdr\ struct
type Msghdr struct {
    Name *byte;
    Namelen uint32;
    Iov uint32;
    Iovlen int32;
    Control *byte;
    Controllen uint32;
    Flags int32;
}

Iov is no longer defined as *Iovec, but uint32 (or uint64 under -m64)

Which compiler are you using (5g, 6g, 8g, gccgo)?

godefs

Which operating system are you using?

Works on linux and freebsd, does not work on darwin

Which revision are you using?  (hg identify)

c88661a2d028+ tip

Please provide any additional information below.

Linux is the only GOOS that uses syscall.Msghdr, darwin and freebsd do not have support
for syscall.Recvmsg, so this is not a big problem at the moment, but it's a timebomb for
the day when someone adds those syscalls.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions