[gdb/symtab] Don't complain about function decls
authorTom de Vries <tdevries@suse.de>
Tue, 4 Oct 2022 14:51:03 +0000 (16:51 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 4 Oct 2022 14:51:03 +0000 (16:51 +0200)
commit8ba677d35608eab2970a6a649eb3c5c09d142037
tree74a48f53d17b0de9c639f9b2048ad02f03184367
parent3aeba5cd1c7a2eac0d8a0efd051beaa77522f614
[gdb/symtab] Don't complain about function decls

[ Requires "[gdb/symtab] Don't complain about inlined functions" as
submitted here (
https://sourceware.org/pipermail/gdb-patches/2022-September/191762.html ). ]

With the test-case included in this patch, we get:
...
(gdb) ptype main^M
During symbol reading: cannot get low and high bounds for subprogram DIE \
  at 0xc1^M
type = int (void)^M
(gdb) FAIL: gdb.dwarf2/anon-ns-fn.exp: ptype main without complaints
...

The DIE causing the complaint is a function declaration:
...
 <2><c1>: Abbrev Number: 3 (DW_TAG_subprogram)
    <c2>   DW_AT_name        : foo
    <c8>   DW_AT_declaration : 1
...
which is referred to from the DIE representing the function definition:
...
 <1><f4>: Abbrev Number: 7 (DW_TAG_subprogram)
    <f5>   DW_AT_specification: <0xc1>
    <f9>   DW_AT_low_pc      : 0x4004c7
    <101>   DW_AT_high_pc     : 0x7
...
which does contain the low and high bounds.

Fix this by not complaining about function declarations.

Tested on x86_64-linux.
gdb/dwarf2/read.c
gdb/testsuite/gdb.dwarf2/anon-ns-fn.cc [new file with mode: 0644]
gdb/testsuite/gdb.dwarf2/anon-ns-fn.exp [new file with mode: 0644]