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
|
var vars []*Variable
|
||||||
reader := scope.DwarfReader()
|
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() {
|
for entry, err := reader.NextPackageVariable(); entry != nil; entry, err = reader.NextPackageVariable() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if typoff, ok := entry.Val(dwarf.AttrType).(dwarf.Offset); !ok || typoff == utypoff {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
// Ignore errors trying to extract values
|
// Ignore errors trying to extract values
|
||||||
val, err := scope.extractVariableFromEntry(entry)
|
val, err := scope.extractVariableFromEntry(entry)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user