delve/pkg/proc/internal/ebpf/trace_bpfel_x86.go
Hengqi Chen 64d5ce26d6
proc: Simplify eBPF backend implementation (#3325)
* Remove standard C headers since we have vmlinux.h already
* Simplify get_goroutine_id() implementation, this reduces a map
  and thus reduces runtime memory comsumption.

While at it, unify all indention using 4 spaces.

Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com>
2023-04-24 13:37:58 -07:00

124 lines
2.8 KiB
Go

// Code generated by bpf2go; DO NOT EDIT.
//go:build (386 || amd64) && go1.16
// +build 386 amd64
// +build go1.16
package ebpf
import (
"bytes"
_ "embed"
"fmt"
"io"
"github.com/cilium/ebpf"
)
// loadTrace returns the embedded CollectionSpec for trace.
func loadTrace() (*ebpf.CollectionSpec, error) {
reader := bytes.NewReader(_TraceBytes)
spec, err := ebpf.LoadCollectionSpecFromReader(reader)
if err != nil {
return nil, fmt.Errorf("can't load trace: %w", err)
}
return spec, err
}
// loadTraceObjects loads trace and converts it into a struct.
//
// The following types are suitable as obj argument:
//
// *traceObjects
// *tracePrograms
// *traceMaps
//
// See ebpf.CollectionSpec.LoadAndAssign documentation for details.
func loadTraceObjects(obj interface{}, opts *ebpf.CollectionOptions) error {
spec, err := loadTrace()
if err != nil {
return err
}
return spec.LoadAndAssign(obj, opts)
}
// traceSpecs contains maps and programs before they are loaded into the kernel.
//
// It can be passed ebpf.CollectionSpec.Assign.
type traceSpecs struct {
traceProgramSpecs
traceMapSpecs
}
// traceSpecs contains programs before they are loaded into the kernel.
//
// It can be passed ebpf.CollectionSpec.Assign.
type traceProgramSpecs struct {
UprobeDlvTrace *ebpf.ProgramSpec `ebpf:"uprobe__dlv_trace"`
}
// traceMapSpecs contains maps before they are loaded into the kernel.
//
// It can be passed ebpf.CollectionSpec.Assign.
type traceMapSpecs struct {
ArgMap *ebpf.MapSpec `ebpf:"arg_map"`
Events *ebpf.MapSpec `ebpf:"events"`
}
// traceObjects contains all objects after they have been loaded into the kernel.
//
// It can be passed to loadTraceObjects or ebpf.CollectionSpec.LoadAndAssign.
type traceObjects struct {
tracePrograms
traceMaps
}
func (o *traceObjects) Close() error {
return _TraceClose(
&o.tracePrograms,
&o.traceMaps,
)
}
// traceMaps contains all maps after they have been loaded into the kernel.
//
// It can be passed to loadTraceObjects or ebpf.CollectionSpec.LoadAndAssign.
type traceMaps struct {
ArgMap *ebpf.Map `ebpf:"arg_map"`
Events *ebpf.Map `ebpf:"events"`
}
func (m *traceMaps) Close() error {
return _TraceClose(
m.ArgMap,
m.Events,
)
}
// tracePrograms contains all programs after they have been loaded into the kernel.
//
// It can be passed to loadTraceObjects or ebpf.CollectionSpec.LoadAndAssign.
type tracePrograms struct {
UprobeDlvTrace *ebpf.Program `ebpf:"uprobe__dlv_trace"`
}
func (p *tracePrograms) Close() error {
return _TraceClose(
p.UprobeDlvTrace,
)
}
func _TraceClose(closers ...io.Closer) error {
for _, closer := range closers {
if err := closer.Close(); err != nil {
return err
}
}
return nil
}
// Do not access this directly.
//go:embed trace_bpfel_x86.o
var _TraceBytes []byte