cilium / ebpf

ebpf-go is a pure-Go library to read, modify and load eBPF programs and attach them to various hooks in the Linux kernel.

Home Page:https://ebpf-go.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

deprecation of directive `//go:linkname`

florianl opened this issue · comments

Describe the bug

This package makes use of the directive //go:linkname:

ebpf/internal/auxv.go

Lines 20 to 21 in 79b6759

//go:linkname runtime_getAuxv runtime.getAuxv
func runtime_getAuxv() []uintptr

With go.dev/issue/67401 an initiative was started to limited this directive. cilium/ebpf is already named as user of the runtime.getAuxv.

I'm not sure if there will be an exception for the use of runtime.getAuxv. Therefore an alternative approach should be investigated.

How to reproduce

The use of //go:linkname was introduced with fbff7db.

I think it's really funny that x/sys/cpu gets to poke into the runtime just fine but we get put into the hall of shame xD Matter of fact is that auxv is useful on unix platforms, and the Go runtime doesn't give us access to it. Using the linkname is a lot better than the cruft we had before.

I'd be happy to migrate to some exported function if one existed (maybe via x/sys/unix?)

@florianl are you interested in opening an upstream proposal for this?

Proposal was created with golang/go#68089. Follow up in golang/go#67839.