[v3,0/2] add annotation in 'info locals' command for variables shadowing case

Message ID 20230918164738.17082-1-abdul.b.ijaz@intel.com
Series add annotation in 'info locals' command for variables shadowing case |


Abdul Basit Ijaz Sept. 18, 2023, 4:47 p.m. UTC
  From: "Ijaz, Abdul B" <abdul.b.ijaz@intel.com>

Hi All,

For the variable shadowing case, these V3 patches add the annotation "shadowed" and location information  to the shadowed variables so that it is easier for the end user to identify which variable was shadowed.

V2 of this series can be found at:

Latest feedback for the changes:

V1 series:

Patch#1 updates "info locals" command and Path #2 is for the mi commands
'-stack-list-locals' and '-stack-list-variables'.

Changes since V2:
* Update the way shadowed annotation as per the feedback and also now print the location info as well for such variables.
* Add variable shadowing test for Ada language.
* Rebase patches to current master.

Please verify if "info locals" command output for shadowed variables looks fine now.  Location information is added only to the shadowed variables and not by default.  This change now prints "shadowed" only to the outermost scope variables and for the innermost variable, only the location is printed.

GDB Testsuite is executed on Ubuntu22.04 OS using gcc64/gcc32/gdbserver-native/native-extended-gdbserver and there is no regression seen with this change.

Also, to validate file_path handling on Windows command line, manually tested var_shadowing.c test just to confirm if file name extraction works fine on Windows for "info locals" command, which has also shown file name as expected.

Thanks & Best Regards,
Abdul Basit

Ijaz, Abdul B (2):
  gdb: add annotation in 'info locals' command for variables shadowing
  gdb: add shadowed field in '-stack-list-locals/variables' mi commands

 gdb/doc/gdb.texinfo                           |  26 ++++
 gdb/mi/mi-cmd-stack.c                         |  73 ++++++++-
 gdb/printcmd.c                                |  14 +-
 gdb/stack.c                                   |  67 ++++++++-
 gdb/stack.h                                   |   3 +-
 gdb/testsuite/gdb.ada/var_shadowing.exp       |  38 +++++
 .../gdb.ada/var_shadowing/var_shadowing.adb   |  30 ++++
 gdb/testsuite/gdb.base/var-shadowing.c        |  49 ++++++
 gdb/testsuite/gdb.base/var-shadowing.exp      |  90 +++++++++++
 gdb/testsuite/gdb.base/var-shadowing2.c       |  16 ++
 gdb/testsuite/gdb.mi/mi-var-shadowing.c       |  48 ++++++
 gdb/testsuite/gdb.mi/mi-var-shadowing.exp     | 141 ++++++++++++++++++
 gdb/testsuite/gdb.rust/var_reuse.exp          |  32 ++++
 gdb/testsuite/gdb.rust/var_reuse.rs           |  20 +++
 gdb/tracepoint.c                              |   3 +-
 gdb/value.h                                   |   4 +-
 16 files changed, 639 insertions(+), 15 deletions(-)
 create mode 100644 gdb/testsuite/gdb.ada/var_shadowing.exp
 create mode 100644 gdb/testsuite/gdb.ada/var_shadowing/var_shadowing.adb
 create mode 100755 gdb/testsuite/gdb.base/var-shadowing.c
 create mode 100755 gdb/testsuite/gdb.base/var-shadowing.exp
 create mode 100644 gdb/testsuite/gdb.base/var-shadowing2.c
 create mode 100644 gdb/testsuite/gdb.mi/mi-var-shadowing.c
 create mode 100644 gdb/testsuite/gdb.mi/mi-var-shadowing.exp
 create mode 100755 gdb/testsuite/gdb.rust/var_reuse.exp
 create mode 100755 gdb/testsuite/gdb.rust/var_reuse.rs