proc: Add filter for non-variable global symbols to PackageVariables
This commit is contained in:
parent
58913527db
commit
14a92352bc
@ -1576,3 +1576,24 @@ func TestIssue414(t *testing.T) {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestPackageVariables(t *testing.T) {
|
||||
withTestProcess("testvariables", t, func(p *Process, fixture protest.Fixture) {
|
||||
err := p.Continue()
|
||||
assertNoError(err, t, "Continue()")
|
||||
scope, err := p.CurrentThread.Scope()
|
||||
assertNoError(err, t, "Scope()")
|
||||
vars, err := scope.PackageVariables()
|
||||
assertNoError(err, t, "PackageVariables()")
|
||||
failed := false
|
||||
for _, v := range vars {
|
||||
if v.Unreadable != nil {
|
||||
failed = true
|
||||
t.Logf("Unreadable variable %s: %v", v.Name, v.Unreadable)
|
||||
}
|
||||
}
|
||||
if failed {
|
||||
t.Fatalf("previous errors")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -541,11 +541,21 @@ func (scope *EvalScope) PackageVariables() ([]*Variable, error) {
|
||||
var vars []*Variable
|
||||
reader := scope.DwarfReader()
|
||||
|
||||
var utypoff dwarf.Offset
|
||||
utypentry, err := reader.SeekToTypeNamed("<unspecified>")
|
||||
if err == nil {
|
||||
utypoff = utypentry.Offset
|
||||
}
|
||||
|
||||
for entry, err := reader.NextPackageVariable(); entry != nil; entry, err = reader.NextPackageVariable() {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if typoff, ok := entry.Val(dwarf.AttrType).(dwarf.Offset); !ok || typoff == utypoff {
|
||||
continue
|
||||
}
|
||||
|
||||
// Ignore errors trying to extract values
|
||||
val, err := scope.extractVariableFromEntry(entry)
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user