diff options
-rw-r--r-- | gdb/python/lib/gdb/printing.py | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dap/ptrref.cc | 12 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dap/ptrref.exp | 9 |
3 files changed, 21 insertions, 2 deletions
diff --git a/gdb/python/lib/gdb/printing.py b/gdb/python/lib/gdb/printing.py index dec1351..14bd84b 100644 --- a/gdb/python/lib/gdb/printing.py +++ b/gdb/python/lib/gdb/printing.py @@ -350,7 +350,7 @@ class NoOpStructPrinter(gdb.ValuePrinter): def children(self): for field in self.__ty.fields(): - if field.name is not None: + if hasattr(field, "bitpos") and field.name is not None: yield (field.name, self.__value[field]) diff --git a/gdb/testsuite/gdb.dap/ptrref.cc b/gdb/testsuite/gdb.dap/ptrref.cc index bfb1afe..c9b83cd 100644 --- a/gdb/testsuite/gdb.dap/ptrref.cc +++ b/gdb/testsuite/gdb.dap/ptrref.cc @@ -15,9 +15,21 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ +struct some_struct +{ + int x; + int y; + + static int z; +}; + +int some_struct::z = 37; + void func () { + some_struct aggregate { 91, 87 }; + int value = 23; int *ptr = &value; diff --git a/gdb/testsuite/gdb.dap/ptrref.exp b/gdb/testsuite/gdb.dap/ptrref.exp index e0cc745..456774a 100644 --- a/gdb/testsuite/gdb.dap/ptrref.exp +++ b/gdb/testsuite/gdb.dap/ptrref.exp @@ -55,7 +55,7 @@ gdb_assert {[llength $scopes] == 2} "two scopes" lassign $scopes scope reg_scope gdb_assert {[dict get $scope name] == "Locals"} "scope is locals" -gdb_assert {[dict get $scope namedVariables] == 3} "three vars in scope" +gdb_assert {[dict get $scope namedVariables] == 4} "three vars in scope" set num [dict get $scope variablesReference] set refs [lindex [dap_check_request_and_response "fetch variables" \ @@ -97,6 +97,13 @@ foreach var [dict get $refs body variables] { "$name has exactly one child" fetch_pointer $name $var } + "aggregate" { + gdb_assert {[dict get $var variablesReference] != 0} \ + "$name has children" + # This should omit the static field. + gdb_assert {[dict get $var namedVariables] == 2} \ + "$name has exactly 2 children" + } } } |