[gdb/symtab] Fix line number of static const class member
authorTom de Vries <tdevries@suse.de>
Fri, 24 Mar 2023 14:45:56 +0000 (15:45 +0100)
committerTom de Vries <tdevries@suse.de>
Fri, 24 Mar 2023 14:45:56 +0000 (15:45 +0100)
commit9ed6d7410c800c331d1f24051c85e4e52d7dfced
tree5512050698e901966e35ee4e7d813d93d46db918
parent3672e3262210d1a08a3fdc44569ea8b5696c43cc
[gdb/symtab] Fix line number of static const class member

Since commit 6d263fe46e0 ("Avoid bad breakpoints with --gc-sections"), there
was a silent regression on openSUSE Leap 15.4 for test-case
gdb.cp/m-static.exp, from:
...
(gdb) info variable everywhere^M
All variables matching regular expression "everywhere":^M
^M
File /home/vries/tmp.local-remote-host-native/m-static.h:^M
8:      const int gnu_obj_4::everywhere;^M
(gdb)
...
to:
...
(gdb) info variable everywhere^M
All variables matching regular expression "everywhere":^M
^M
File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static.h:^M
8:      const int gnu_obj_4::everywhere;^M
^M
File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static1.cc:^M
8:      const int gnu_obj_4::everywhere;^M
(gdb)
...

Another regression was found due to that commit, and it was fixed in commit
99d679e7b30 ("[gdb/symtab] Fix "file index out of range" complaint") by
limiting the scope of the fix in the original commit.

Fix this regression by yet further limiting the scope of that fix, making sure
that this bit in dwarf_decode_lines is executed again for m-static1.cc:
...
  /* Make sure a symtab is created for every file, even files
     which contain only variables (i.e. no code with associated
     line numbers).  */
...

Tested on x86_64-linux.

PR symtab/30265
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30265
gdb/dwarf2/read.c
gdb/testsuite/gdb.cp/m-static.exp