From 7b6a6dc3a62e1578d9867929cd66131f5fd802ea Mon Sep 17 00:00:00 2001 From: Timo Beckers Date: Wed, 8 Jul 2026 21:58:11 +0200 Subject: [PATCH] btf: unexport decoder.TypesByName It looks like this had been exported by mistake in v0.19.0 and nobody noticed. The same happened to decoder.TypeByID and decoder.TypeID, but those were shadowed by their Spec equivalents. Signed-off-by: Timo Beckers --- btf/btf.go | 12 ++++++------ btf/core.go | 2 +- btf/unmarshal.go | 24 ++++++++---------------- 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/btf/btf.go b/btf/btf.go index e13a9dc15..4cd62b2ad 100644 --- a/btf/btf.go +++ b/btf/btf.go @@ -179,8 +179,8 @@ func loadSpecFromELF(file *internal.SafeELFFile) (*Spec, error) { return nil, err } - if spec.decoder.byteOrder != file.ByteOrder { - return nil, fmt.Errorf("BTF byte order %s does not match ELF byte order %s", spec.decoder.byteOrder, file.ByteOrder) + if spec.byteOrder != file.ByteOrder { + return nil, fmt.Errorf("BTF byte order %s does not match ELF byte order %s", spec.byteOrder, file.ByteOrder) } spec.elf = &elfData{ @@ -350,7 +350,7 @@ func (s *Spec) Copy() *Spec { } cpy := &Spec{ - s.decoder.Copy(), + s.decoder.copy(nil), nil, } @@ -370,7 +370,7 @@ func (s *Spec) Copy() *Spec { // Returns an error wrapping ErrNotFound if a Type with the given ID // does not exist in the Spec. func (s *Spec) TypeByID(id TypeID) (Type, error) { - typ, err := s.decoder.TypeByID(id) + typ, err := s.decoder.typeByID(id) if err != nil { return nil, fmt.Errorf("inflate type: %w", err) } @@ -386,7 +386,7 @@ func (s *Spec) TypeByID(id TypeID) (Type, error) { // // Returns an error wrapping [ErrNotFound] if the type isn't part of the Spec. func (s *Spec) TypeID(typ Type) (TypeID, error) { - return s.decoder.TypeID(typ) + return s.decoder.typeID(typ) } // AnyTypesByName returns a list of BTF Types with the given name. @@ -397,7 +397,7 @@ func (s *Spec) TypeID(typ Type) (TypeID, error) { // // Returns an error wrapping ErrNotFound if no matching Type exists in the Spec. func (s *Spec) AnyTypesByName(name string) ([]Type, error) { - types, err := s.TypesByName(newEssentialName(name)) + types, err := s.decoder.typesByName(newEssentialName(name)) if err != nil { return nil, err } diff --git a/btf/core.go b/btf/core.go index f128011dd..0c560c77a 100644 --- a/btf/core.go +++ b/btf/core.go @@ -264,7 +264,7 @@ func CORERelocate(relos []*CORERelocation, targets []*Spec, bo binary.ByteOrder, var targetTypes []Type for _, target := range targets { - namedTypes, err := target.TypesByName(essentialName) + namedTypes, err := target.typesByName(essentialName) if errors.Is(err, ErrNotFound) { continue } else if err != nil { diff --git a/btf/unmarshal.go b/btf/unmarshal.go index b56b5a068..f35a4f716 100644 --- a/btf/unmarshal.go +++ b/btf/unmarshal.go @@ -174,15 +174,7 @@ func allBtfTypeOffsets(buf []byte, bo binary.ByteOrder, header *btfType) iter.Se } } -// Copy performs a deep copy of a decoder and its base. -func (d *decoder) Copy() *decoder { - if d == nil { - return nil - } - - return d.copy(nil) -} - +// copy performs a deep copy of a decoder and its base. func (d *decoder) copy(copiedTypes map[Type]Type) *decoder { if d == nil { return nil @@ -217,8 +209,8 @@ func (d *decoder) copy(copiedTypes map[Type]Type) *decoder { } } -// TypeID returns the ID for a Type previously obtained via [TypeByID]. -func (d *decoder) TypeID(typ Type) (TypeID, error) { +// typeID returns the ID for a Type previously obtained via [TypeByID]. +func (d *decoder) typeID(typ Type) (TypeID, error) { if _, ok := typ.(*Void); ok { // Equality is weird for void, since it is a zero sized type. return 0, nil @@ -235,13 +227,13 @@ func (d *decoder) TypeID(typ Type) (TypeID, error) { return id, nil } -// TypesByName returns all types which have the given essential name. +// typesByName returns all types which have the given essential name. // // Returns ErrNotFound if no matching Type exists. -func (d *decoder) TypesByName(name essentialName) ([]Type, error) { +func (d *decoder) typesByName(name essentialName) ([]Type, error) { var types []Type for id := range d.namedTypes.Find(string(name)) { - typ, err := d.TypeByID(id) + typ, err := d.typeByID(id) if err != nil { return nil, err } @@ -261,8 +253,8 @@ func (d *decoder) TypesByName(name essentialName) ([]Type, error) { return types, nil } -// TypeByID decodes a type and any of its descendants. -func (d *decoder) TypeByID(id TypeID) (Type, error) { +// typeByID decodes a type and any of its descendants. +func (d *decoder) typeByID(id TypeID) (Type, error) { d.mu.Lock() defer d.mu.Unlock()