diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 90c895a3bd..43ae8e8e36 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-02-24 Tom de Vries + + PR gdb/25592 + * stack.c (iterate_over_block_locals): Handle LOC_CONST. + 2020-02-24 Tom de Vries * tui/tui-layout.c (_initialize_tui_layout): Fix help messages for diff --git a/gdb/stack.c b/gdb/stack.c index af30405f29..266d771e35 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -2237,6 +2237,7 @@ iterate_over_block_locals (const struct block *b, { switch (SYMBOL_CLASS (sym)) { + case LOC_CONST: case LOC_LOCAL: case LOC_REGISTER: case LOC_STATIC: diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6bc24e29e4..6e50785182 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2020-02-24 Tom de Vries + + PR gdb/25592 + * gdb.base/info-locals-unused-static-var.c: New test. + * gdb.base/info-locals-unused-static-var.exp: New file. + 2020-02-22 Tom Tromey * gdb.python/tui-window.exp: New file. diff --git a/gdb/testsuite/gdb.base/info-locals-unused-static-var.c b/gdb/testsuite/gdb.base/info-locals-unused-static-var.c new file mode 100644 index 0000000000..86d34b3579 --- /dev/null +++ b/gdb/testsuite/gdb.base/info-locals-unused-static-var.c @@ -0,0 +1,24 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2020 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +int +main (void) +{ + static int b = 2; + + return 0; +} diff --git a/gdb/testsuite/gdb.base/info-locals-unused-static-var.exp b/gdb/testsuite/gdb.base/info-locals-unused-static-var.exp new file mode 100644 index 0000000000..79f02c25e6 --- /dev/null +++ b/gdb/testsuite/gdb.base/info-locals-unused-static-var.exp @@ -0,0 +1,40 @@ +# Copyright 2020 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . */ + +# Test if an unused static local var is listed with info locals. +# +# Note: with gcc 4.8.5, we have: +# ... +# (gdb) info addr b +# Symbol "b" is static storage at address $hex +# ... +# but with gcc 7.5.0, we have instead: +# ... +# (gdb) info addr b +# Symbol "b" is constant. +# ... + +standard_testfile + +if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} { + return -1 +} + +if ![runto_main] then { + fail "can't run to main" + return 0 +} + +gdb_test "info locals" "\r\nb = .*"