aboutsummaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/sys/unix/auxv.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2025-09-29 21:45:56 +0200
committerStefan Majewsky <majewsky@gmx.net>2025-09-29 21:45:56 +0200
commit24762f09de2aa8cada3f3c63afa313e06ebf47c8 (patch)
tree260b236dbdaa4b21ab55f2ce54003446630dcea5 /vendor/golang.org/x/sys/unix/auxv.go
parent6f4c551a522b94e80ace5657d2b8cdfc267d8ae2 (diff)
downloadgofu-24762f09de2aa8cada3f3c63afa313e06ebf47c8.tar.gz
replace deprecated dependencies with their successors
Diffstat (limited to 'vendor/golang.org/x/sys/unix/auxv.go')
-rw-r--r--vendor/golang.org/x/sys/unix/auxv.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/vendor/golang.org/x/sys/unix/auxv.go b/vendor/golang.org/x/sys/unix/auxv.go
new file mode 100644
index 0000000..37a8252
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/auxv.go
@@ -0,0 +1,36 @@
+// Copyright 2025 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos)
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+//go:linkname runtime_getAuxv runtime.getAuxv
+func runtime_getAuxv() []uintptr
+
+// Auxv returns the ELF auxiliary vector as a sequence of key/value pairs.
+// The returned slice is always a fresh copy, owned by the caller.
+// It returns an error on non-ELF platforms, or if the auxiliary vector cannot be accessed,
+// which happens in some locked-down environments and build modes.
+func Auxv() ([][2]uintptr, error) {
+ vec := runtime_getAuxv()
+ vecLen := len(vec)
+
+ if vecLen == 0 {
+ return nil, syscall.ENOENT
+ }
+
+ if vecLen%2 != 0 {
+ return nil, syscall.EINVAL
+ }
+
+ result := make([]uintptr, vecLen)
+ copy(result, vec)
+ return unsafe.Slice((*[2]uintptr)(unsafe.Pointer(&result[0])), vecLen/2), nil
+}