From: Tom de Vries Date: Mon, 6 Jan 2025 17:48:58 +0000 (+0100) Subject: [gdb/cli] Show LOC_CONST_BYTES var for info locals X-Git-Tag: binutils-2_44~249 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=91f95754097398fdfa076f5f1cf46f1e2ebc6b38;p=thirdparty%2Fbinutils-gdb.git [gdb/cli] Show LOC_CONST_BYTES var for info locals PR cli/32525 reports that a variable with this DWARF: .. <2><423>: Abbrev Number: 14 (DW_TAG_variable) <424> DW_AT_name : var1867 <42a> DW_AT_type : <0x2f8> <42e> DW_AT_const_value : 8 byte block: 0 0 0 0 0 0 0 0 ... is not shown by info locals. Fix this by handling LOC_CONST_BYTES in iterate_over_block_locals. Tested on x86_64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32525 Approved-By: Tom Tromey --- diff --git a/gdb/stack.c b/gdb/stack.c index 9785a94b858..73165c80134 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -2221,6 +2221,7 @@ iterate_over_block_locals (const struct block *b, switch (sym->aclass ()) { case LOC_CONST: + case LOC_CONST_BYTES: case LOC_LOCAL: case LOC_REGISTER: case LOC_STATIC: diff --git a/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp index 0aa7b04fb3e..f338fd44e89 100644 --- a/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp +++ b/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp @@ -53,6 +53,11 @@ Dwarf::assemble $asm_file { {name "opt_out"} {type :$int_type_label} } + DW_TAG_variable { + {name const_bytes} + {type :$int_type_label} + {const_value "\x01\x01\x01\x01" DW_FORM_block1} + } } } } @@ -67,5 +72,14 @@ if ![runto_main] { return -1 } +set lines [gdb_get_lines "info locals"] + # Make sure "info locals" shows optimized out variables. -gdb_test "info locals" ".*opt_out = .*" "info local shows optimized out variable" +gdb_assert \ + { [regexp [string_to_regexp "opt_out = "] $lines] } \ + "info locals shows optimized out variable" + +# Regression test for PR cli/32525. +gdb_assert \ + { [regexp [string_to_regexp "const_bytes = 16843009"] $lines] } \ + "info locals shows DW_FORM_block1 variable"