Skip to content

Commit cb378ae

Browse files
committed
syscall: call getfsstat via libc on openbsd
On openbsd, call getfsstat directly via libc, instead of calling it via syscall.Syscall. Updates golang/go#63900 Change-Id: I99a3555b3207754b107dbabf63440569fca93eea Reviewed-on: https://go-review.googlesource.com/c/sys/+/538976 Reviewed-by: Cherry Mui <[email protected]> Run-TryBot: Joel Sing <[email protected]> Reviewed-by: Tobias Klauser <[email protected]> Reviewed-by: Josh Rickmar <[email protected]> Reviewed-by: Bryan Mills <[email protected]> TryBot-Result: Gopher Robot <[email protected]>
1 parent 661d749 commit cb378ae

15 files changed

+145
-8
lines changed

Diff for: unix/syscall_openbsd.go

+4-8
Original file line numberDiff line numberDiff line change
@@ -137,18 +137,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
137137
}
138138

139139
func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
140-
var _p0 unsafe.Pointer
140+
var bufptr *Statfs_t
141141
var bufsize uintptr
142142
if len(buf) > 0 {
143-
_p0 = unsafe.Pointer(&buf[0])
143+
bufptr = &buf[0]
144144
bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
145145
}
146-
r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
147-
n = int(r0)
148-
if e1 != 0 {
149-
err = e1
150-
}
151-
return
146+
return getfsstat(bufptr, bufsize, flags)
152147
}
153148

154149
//sysnb getresuid(ruid *_C_int, euid *_C_int, suid *_C_int)
@@ -326,6 +321,7 @@ func Uname(uname *Utsname) error {
326321
//sys write(fd int, p []byte) (n int, err error)
327322
//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
328323
//sys munmap(addr uintptr, length uintptr) (err error)
324+
//sys getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error)
329325
//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
330326
//sys pledge(promises *byte, execpromises *byte) (err error)
331327
//sys unveil(path *byte, flags *byte) (err error)

Diff for: unix/zsyscall_openbsd_386.go

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: unix/zsyscall_openbsd_386.s

+5
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,11 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
668668
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4
669669
DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)
670670

671+
TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0
672+
JMP libc_getfsstat(SB)
673+
GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $4
674+
DATA ·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)
675+
671676
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
672677
JMP libc_utimensat(SB)
673678
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4

Diff for: unix/zsyscall_openbsd_amd64.go

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: unix/zsyscall_openbsd_amd64.s

+5
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,11 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
668668
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8
669669
DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)
670670

671+
TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0
672+
JMP libc_getfsstat(SB)
673+
GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8
674+
DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)
675+
671676
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
672677
JMP libc_utimensat(SB)
673678
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8

Diff for: unix/zsyscall_openbsd_arm.go

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: unix/zsyscall_openbsd_arm.s

+5
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,11 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
668668
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4
669669
DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)
670670

671+
TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0
672+
JMP libc_getfsstat(SB)
673+
GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $4
674+
DATA ·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)
675+
671676
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
672677
JMP libc_utimensat(SB)
673678
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4

Diff for: unix/zsyscall_openbsd_arm64.go

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: unix/zsyscall_openbsd_arm64.s

+5
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,11 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
668668
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8
669669
DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)
670670

671+
TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0
672+
JMP libc_getfsstat(SB)
673+
GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8
674+
DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)
675+
671676
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
672677
JMP libc_utimensat(SB)
673678
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8

Diff for: unix/zsyscall_openbsd_mips64.go

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: unix/zsyscall_openbsd_mips64.s

+5
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,11 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
668668
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8
669669
DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)
670670

671+
TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0
672+
JMP libc_getfsstat(SB)
673+
GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8
674+
DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)
675+
671676
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
672677
JMP libc_utimensat(SB)
673678
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8

Diff for: unix/zsyscall_openbsd_ppc64.go

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: unix/zsyscall_openbsd_ppc64.s

+6
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,12 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
801801
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8
802802
DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)
803803

804+
TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0
805+
CALL libc_getfsstat(SB)
806+
RET
807+
GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8
808+
DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)
809+
804810
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
805811
CALL libc_utimensat(SB)
806812
RET

Diff for: unix/zsyscall_openbsd_riscv64.go

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: unix/zsyscall_openbsd_riscv64.s

+5
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,11 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
668668
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8
669669
DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)
670670

671+
TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0
672+
JMP libc_getfsstat(SB)
673+
GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8
674+
DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)
675+
671676
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
672677
JMP libc_utimensat(SB)
673678
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8

0 commit comments

Comments
 (0)