diff options
| author | Joey Jiao <joeyjiaojg@gmail.com> | 2021-08-04 14:26:13 +0800 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2021-08-16 13:36:55 +0200 |
| commit | 33c26cb735dc83786ebebe071a3e17cdd5383ead (patch) | |
| tree | f61588b70ed4dd18fe4d595f946560c750b3d6cc /pkg | |
| parent | 6652437df0ae46ec854536cb66264b9282e500ec (diff) | |
pkg/cover: fix func range drop into variable range
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/cover/backend/elf.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/pkg/cover/backend/elf.go b/pkg/cover/backend/elf.go index 227356eef..f96f38245 100644 --- a/pkg/cover/backend/elf.go +++ b/pkg/cover/backend/elf.go @@ -45,6 +45,10 @@ func elfReadSymbols(module *Module, info *symbolInfo) ([]*Symbol, error) { } var symbols []*Symbol for i, symb := range allSymbols { + if symb.Info&0xf != uint8(elf.STT_FUNC) && symb.Info&0xf != uint8(elf.STT_NOTYPE) { + // Only save STT_FUNC, STT_NONE otherwise some symb range inside another symb range. + continue + } text := symb.Value >= text.Addr && symb.Value+symb.Size <= text.Addr+text.Size if text { start := symb.Value + module.Addr |
