package gen
import "github.com/cilium/ebpf/cmd/bpf2go/gen"
Package gen contains utilities to generate Go bindings for eBPF ELF files.
Index ¶
- Variables
- func CollectGlobalTypes(spec *ebpf.CollectionSpec) []btf.Type
- func Compile(args CompileArgs) error
- func FindTarget(id string) (Target, GoArches, error)
- func Generate(args GenerateArgs) error
- func TargetsByGoArch() map[GoArch]Target
- type CompileArgs
- type GenerateArgs
- type GoArch
- type GoArches
- type Target
Variables ¶
Functions ¶
func CollectGlobalTypes ¶
func CollectGlobalTypes(spec *ebpf.CollectionSpec) []btf.Type
CollectGlobalTypes finds all types which are used in the global scope.
This currently includes the types of variables, map keys and values.
func Compile ¶
func Compile(args CompileArgs) error
Compile C to a BPF ELF file.
func FindTarget ¶
FindTarget turns a list of identifiers into targets and their respective GoArches.
The following are valid identifiers:
- bpf: compile generic BPF for host endianness
- bpfel: compile generic BPF for little endian
- bpfeb: compile generic BPF for big endian
- native: compile BPF for host target
- $GOARCH: compile BPF for $GOARCH target
Generic BPF can run on any target goarch with the correct endianness, but doesn't have access to some arch specific tracing functionality.
func Generate ¶
func Generate(args GenerateArgs) error
Generate bindings for a BPF ELF file.
func TargetsByGoArch ¶
TargetsByGoArch returns all supported targets.
Types ¶
type CompileArgs ¶
type CompileArgs struct {
// Which compiler to use.
CC string
// Command used to strip DWARF from the ELF.
Strip string
// Flags to pass to the compiler. This may contain positional arguments as well.
Flags []string
// Absolute working directory
Workdir string
// Absolute input file name
Source string
// Absolute output file name
Dest string
// Target to compile for, defaults to compiling generic BPF in host endianness.
Target Target
DisableStripping bool
}
type GenerateArgs ¶
type GenerateArgs struct {
// Package of the resulting file.
Package string
// The prefix of all names declared at the top-level.
Stem string
// Build Constraints included in the resulting file.
Constraints constraint.Expr
// Maps to be emitted.
Maps []string
// Variables to be emitted.
Variables []string
// Programs to be emitted.
Programs []string
// Types to be emitted.
Types []btf.Type
// Filename of the object to embed.
ObjectFile string
// Output to write template to.
Output io.Writer
// Function which transforms the input into a valid go identifier. Uses the default behaviour if nil
Identifier func(string) string
}
type GoArch ¶
type GoArch string
GoArch is a Go arch string.
See https://go.dev/doc/install/source#environment for valid GOARCHes when GOOS=linux.
type GoArches ¶
type GoArches []GoArch
func (GoArches) Constraint ¶
func (arches GoArches) Constraint() constraint.Expr
Constraints is satisfied when GOARCH is any of the arches.
type Target ¶
type Target struct {
// contains filtered or unexported fields
}
func (*Target) IsGeneric ¶
IsGeneric returns true if the target will compile to generic BPF.
func (*Target) ObsoleteSuffix ¶
ObsoleteSuffix returns an obsolete suffix for a subset of targets.
It's used to work around an old bug and should not be used in new code.
func (*Target) Suffix ¶
Suffix returns a a string suitable for appending to a file name to identify the target.
Source Files ¶
compile.go doc.go output.go target.go types.go
- Version
- v0.20.0 (latest)
- Published
- Oct 27, 2025
- Platform
- linux/amd64
- Imports
- 23 packages
- Last checked
- 4 months ago –
Tools for package owners.