-
Yuval Pavel Zholkover authored
Background: The 64-bit inode project was merged into the upcoming FreeBSD 12 release. It changes the ABI for structs holding inodes: stat, statfs, dirent. New system call numbers were introduced which accept the new struct layouts, the old ones were marked as COMPAT11. Their equivalent libc wrappers are using ELF symbol versioning. The new wrappers have moved from @FBSD_1.0 to @FBSD_1.5. Backward and forward compatability is achieved by always using the new struct layouts while converting the old struct instance to the new layout on old kernels. https://svnweb.freebsd.org/base?view=revision&revision=318736 https://svnweb.freebsd.org/base?view=revision&revision=320278 The same approach is used for Go: The new Stat_t, Statfs_t and Dirent types hold 64-bit inodes and additional ABI changes, they are generated from their C definitions in FreeBSD-12 using cgo -godefs. Each type has an unexported *_freebsd11 counterpart generated the same way. Previous directly exposed syscalls like Fstat have now a wrapper in place calling either fstat or fstat_freebsd12 zsyscall wrapper based on the kern.osreldate. If an old syscall needs to be used, then the returned *_freebsd11 result is converted to the new layout before returning from the wrapper. Introduce supportsABI() call to check the kern.osreldate sysctl for the ABI version. Drop the old struct stat8 definition in favour of the <sys/stat.h> version. Run the mktypes part of GOOS=freebsd GOARCH={386,amd64,arm} ./mkall.sh on FreeBSD-12.0-ALPHA6 (r338675), updating all types except Kevent. Expose Mknodat, both COMPAT11 version (currently missing) and the FreeBSD 12 one. Some COMPAT11 syscalls have no direct FreeBSD 12 counterpart, in those cases an *at(AT_FDCWD, ...) is used instead. Updates golang/go#22448 Change-Id: I87940b88ae358db88103cdcd06f9cafbf4694cfc Reviewed-on: https://go-review.googlesource.com/c/136816 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Giovanni Bajo <rasky@develer.com> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
5535b4e6