Make isData field specific to fileAddr2Line. (#614)
The fileNM structure does not need it as NM symbolization does not use the field.
diff --git a/internal/binutils/binutils.go b/internal/binutils/binutils.go
index 576a6ee..e25334b 100644
--- a/internal/binutils/binutils.go
+++ b/internal/binutils/binutils.go
@@ -477,11 +477,11 @@
buildID = fmt.Sprintf("%x", id)
}
}
- isData := ph != nil && ph.Flags&elf.PF_X == 0
if b.fast || (!b.addr2lineFound && !b.llvmSymbolizerFound) {
- return &fileNM{file: file{b, name, base, buildID, isData}}, nil
+ return &fileNM{file: file{b, name, base, buildID}}, nil
}
- return &fileAddr2Line{file: file{b, name, base, buildID, isData}}, nil
+ isData := ph != nil && ph.Flags&elf.PF_X == 0
+ return &fileAddr2Line{file: file{b, name, base, buildID}, isData: isData}, nil
}
func (b *binrep) openPE(name string, start, limit, offset uint64) (plugin.ObjFile, error) {
@@ -517,7 +517,6 @@
name string
base uint64
buildID string
- isData bool
}
func (f *file) Name() string {
@@ -579,6 +578,7 @@
file
addr2liner *addr2Liner
llvmSymbolizer *llvmSymbolizer
+ isData bool
}
func (f *fileAddr2Line) SourceLine(addr uint64) ([]plugin.Frame, error) {