public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug symtab/30656] [gdb/symtab] optimized out static handled inconsistently
Date: Fri, 21 Jul 2023 06:25:33 +0000	[thread overview]
Message-ID: <bug-30656-4717-L4EVitmPBn@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-30656-4717@http.sourceware.org/bugzilla/>

https://sourceware.org/bugzilla/show_bug.cgi?id=30656

--- Comment #5 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom de Vries <vries@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f4c4456eb4d826f39abb2575ce5c2c4640bb16f3

commit f4c4456eb4d826f39abb2575ce5c2c4640bb16f3
Author: Tom de Vries <tdevries@suse.de>
Date:   Fri Jul 21 08:25:25 2023 +0200

    [gdb/symtab] Add optimized out static var to cooked index

    Consider the test-case:
    ...
    $ cat main.c
    int main (void) { return 0; }
    $ cat static-optimized-out.c
    static int aaa;
    ...
    compiled like this:
    ...
    $ gcc-12 static-optimized-out.c main.c -g -O2 -flto
    ...

    There's a difference in behaviour depending on symtab expansion state:
    ...
    $ gdb -q -batch a.out -ex "print aaa"
    No symbol "aaa" in current context.
    $ gdb -q -batch a.out -ex "maint expand-symtab" -ex "print aaa"
    $1 = <optimized out>
    ...

    The reason for the difference is that the optimized out variable aaa:
    ...
     <1><104>: Abbrev Number: 2 (DW_TAG_variable)
        <105>   DW_AT_name        : aaa
        <109>   DW_AT_decl_file   : 1
        <10a>   DW_AT_decl_line   : 18
        <10b>   DW_AT_decl_column : 12
        <10c>   DW_AT_type        : <0x110>
    ...
    is not added to the cooked index because of this clause in
abbrev_table::read:
    ...
         else if (!has_location && !has_specification_or_origin &&
!has_external
                   && cur_abbrev->tag == DW_TAG_variable)
            cur_abbrev->interesting = false;
    ...

    Fix this inconsistency by making sure that the optimized out variable is
added
    to the cooked index.

    Regression tested on x86_64-linux.

    Add two test-cases, a C test-case gdb.opt/static-optimized-out.exp and a
dwarf
    assembly test-case gdb.dwarf2/static-optimized-out.exp.

    Tested gdb.opt/static-optimized-out.exp with gcc-8 to gcc-12, for which we
now
    consistently get:
    ...
    (gdb) print aaa^M
    $1 = <optimized out>^M
    ...
    and with gcc 7.5.0 and clang 13.0.1, for which we still consistently get:
    ...
    (gdb) print aaa^M
    No symbol "aaa" in current context.^M
    ...
    due to missing debug info for the variable.

    PR symtab/30656
    Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30656

    Approved-By: Tom Tromey <tom@tromey.com>

-- 
You are receiving this mail because:
You are on the CC list for the bug.

  parent reply	other threads:[~2023-07-21  6:25 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-20  5:15 [Bug symtab/30656] New: " vries at gcc dot gnu.org
2023-07-20  6:42 ` [Bug symtab/30656] " vries at gcc dot gnu.org
2023-07-20  6:48 ` vries at gcc dot gnu.org
2023-07-20  7:35 ` vries at gcc dot gnu.org
2023-07-20 14:43 ` vries at gcc dot gnu.org
2023-07-21  6:25 ` cvs-commit at gcc dot gnu.org [this message]
2023-07-21  6:26 ` vries at gcc dot gnu.org
2023-07-21  6:51 ` vries at gcc dot gnu.org
2023-07-21 14:14 ` vries at gcc dot gnu.org
2023-07-21 14:16 ` vries at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-30656-4717-L4EVitmPBn@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).