Skip to content

Commit 6249b83

Browse files
Asphalttcfc4n
authored andcommitted
feat: Expose internal verifier error
When verifier error happens, it's required to retrieve the internal verifier error to print the verifier log, like the code snippet: ```go var ve *ebpf.VerifierError if errors.As(err, &ve) { // Do something with `ve`, like fmt.Printf("failed to verify bpf prog: %+v\n", ve) } ``` Signed-off-by: Leon Hwang <hffilwlqm@gmail.com>
1 parent 2822b00 commit 6249b83

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

manager.go

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
package manager
22

33
import (
4+
"errors"
45
"fmt"
5-
"github.com/cilium/ebpf/link"
66
"io"
77
"os"
88
"strings"
99
"sync"
1010
"time"
1111

12-
"errors"
12+
"github.com/cilium/ebpf"
13+
"github.com/cilium/ebpf/link"
1314
"github.com/florianl/go-tc"
1415
"github.com/hashicorp/go-multierror"
1516
"golang.org/x/sys/unix"
16-
17-
"github.com/cilium/ebpf"
1817
)
1918

2019
// ConstantEditor - A constant editor tries to rewrite the value of a constant in a compiled eBPF program.
@@ -371,13 +370,13 @@ func (m *Manager) editMapSpec(name string, mapSpec *ebpf.MapSpec) error {
371370
return ErrManagerNotInitialized
372371
}
373372

374-
//判断是否存在该map
373+
// 判断是否存在该map
375374
_, ok := m.collectionSpec.Maps[name]
376375
if !ok {
377376
return ErrUnknownMap
378377
}
379378

380-
//覆盖mapSpec
379+
// 覆盖mapSpec
381380
m.collectionSpec.Maps[name] = mapSpec
382381
return nil
383382
}
@@ -448,7 +447,7 @@ func (m *Manager) GetProgramSpec(id ProbeIdentificationPair) ([]*ebpf.ProgramSpe
448447
if len(programs) > 0 {
449448
return programs, true, nil
450449
}
451-
//prog, ok := m.collectionSpec.Programs[id.Section]
450+
// prog, ok := m.collectionSpec.Programs[id.Section]
452451
prog, ok := m.collectionSpec.Programs[id.EbpfFuncName]
453452
return []*ebpf.ProgramSpec{prog}, ok, nil
454453
}
@@ -1096,7 +1095,6 @@ func (m *Manager) getProbeProgramSpec(matchFuncName string) (*ebpf.ProgramSpec,
10961095

10971096
// matchSpecs - Match loaded maps and program specs with the maps and programs provided to the manager
10981097
func (m *Manager) matchSpecs() error {
1099-
11001098
// Match programs
11011099
for _, probe := range m.Probes {
11021100
programSpec, err := m.getProbeProgramSpec(probe.EbpfFuncName)
@@ -1314,7 +1312,7 @@ func (m *Manager) editConstant(prog *ebpf.ProgramSpec, editor ConstantEditor) er
13141312
// rewriteMaps - Rewrite the provided program spec with the provided maps
13151313
func (m *Manager) rewriteMaps(program *ebpf.ProgramSpec, eBPFMaps map[string]*ebpf.Map) error {
13161314
for symbol, eBPFMap := range eBPFMaps {
1317-
//fd := eBPFMap.FD()
1315+
// fd := eBPFMap.FD()
13181316
err := program.Instructions.AssociateMap(symbol, eBPFMap)
13191317
if err != nil {
13201318
return errors.New(fmt.Sprintf("error:%v , couldn't rewrite map %s", err, symbol))
@@ -1370,7 +1368,7 @@ func (m *Manager) loadCollection() error {
13701368
// Load collection
13711369
m.collection, err = ebpf.NewCollectionWithOptions(m.collectionSpec, m.options.VerifierOptions)
13721370
if err != nil {
1373-
return errors.New(fmt.Sprintf("error:%v , couldn't load eBPF programs, cs:%v", err, m.collectionSpec))
1371+
return fmt.Errorf("error:%w , couldn't load eBPF programs, cs:%v", err, m.collectionSpec)
13741372
}
13751373

13761374
// Initialize Maps
@@ -1387,7 +1385,7 @@ func (m *Manager) loadCollection() error {
13871385
}
13881386
}
13891387

1390-
//Initialize ringbufmap
1388+
// Initialize ringbufmap
13911389
for _, ringbufMap := range m.RingbufMaps {
13921390
if err := ringbufMap.Init(m); err != nil {
13931391
return err

0 commit comments

Comments
 (0)