]> Cypherpunks repositories - gostls13.git/commitdiff
debug/elf: make check for empty symbol section consistent for 64-bit and 32-bit binaries
authorAditya Sirish A Yelgundhalli <ayelgundhall@bloomberg.net>
Wed, 10 Sep 2025 02:34:03 +0000 (02:34 +0000)
committerGopher Robot <gobot@golang.org>
Mon, 1 Dec 2025 15:29:29 +0000 (07:29 -0800)
The check for whether a binary's symbols section is empty is
inconsistent across the 32-bit and 64-bit flows.

Change-Id: I1abc235320a53cf957cfb83c9e7bcad6e52bc529
GitHub-Last-Rev: f264915ca2964ad8f34ce1deee4f42c2f9dc21bf
GitHub-Pull-Request: golang/go#75334
Reviewed-on: https://go-review.googlesource.com/c/go/+/702195
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
src/debug/elf/file.go

index 1d56a06c3fb221433e4fd25292da64a338646174..1fc10a56869e5072ee8118ab82cd74899c2e12a4 100644 (file)
@@ -641,7 +641,7 @@ func (f *File) getSymbols32(typ SectionType) ([]Symbol, []byte, error) {
                return nil, nil, fmt.Errorf("cannot load symbol section: %w", err)
        }
        if len(data) == 0 {
-               return nil, nil, errors.New("symbol section is empty")
+               return nil, nil, ErrNoSymbols
        }
        if len(data)%Sym32Size != 0 {
                return nil, nil, errors.New("length of symbol section is not a multiple of SymSize")
@@ -690,12 +690,12 @@ func (f *File) getSymbols64(typ SectionType) ([]Symbol, []byte, error) {
        if err != nil {
                return nil, nil, fmt.Errorf("cannot load symbol section: %w", err)
        }
-       if len(data)%Sym64Size != 0 {
-               return nil, nil, errors.New("length of symbol section is not a multiple of Sym64Size")
-       }
        if len(data) == 0 {
                return nil, nil, ErrNoSymbols
        }
+       if len(data)%Sym64Size != 0 {
+               return nil, nil, errors.New("length of symbol section is not a multiple of Sym64Size")
+       }
 
        strdata, err := f.stringTable(symtabSection.Link)
        if err != nil {