This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFC/RFA] gdb.cp/classes.exp: Don't try to print local variable out of scope
- From: mec dot gnu at mindspring dot com (Michael Elizabeth Chastain)
- To: carlton at kealia dot com, drow at mvista dot com, vinschen at redhat dot com
- Cc: gdb-patches at sources dot redhat dot com
- Date: Tue, 9 Mar 2004 10:11:11 -0500 (EST)
- Subject: Re: [RFC/RFA] gdb.cp/classes.exp: Don't try to print local variable out of scope
Hi Corinna,
cv> Basically, the testsuite tries to print the value of a local variable
cv> on a closing brace. This fails due to the debug info given in this
cv> case:
I have been seeing this also on native i686-pc-linux-gnu.
cv> When the testsuite steps to the closing brace of the function, $pc is
cv> set to the first instruction of the epilogue. This is exactly the
cv> first instruction which doesn't belong to the lexical block anymore.
cv> Logically, the local variable doesn't exist anymore at this point.
Right.
I want to raise the question: is this really a bug in the gdb test suite,
or is it a bug in gcc?
That is: is a local variable required to exist at the closing brace of a
function?
I think your answer is "no, it's not required to exist, therefore the
gdb test suite should change". My answer is "reluctantly, no,
it's not required to exist"; I don't think the famous gcc -O0
debug info clause covers this case. I'm curious what drow and
carlton and other people have to say.
void foo ()
{
int i;
i = 1;
bar (i);
}
(gdb) break bar
(gdb) run
(gdb) finish
(gdb) print i
Is it okay for gcc to emit debug info that "i" is out of scope here?
cv> I'd suggest to change the testsuite case to add another line to the
cv> function enums1(), so that it's sure to be still in the scope of the
cv> local variable obj_with_enum.
misc.cc is used by three *.exp files so I do not want to touch it
at all, so I am dis-approving your patch. I will write a patch to
remove the "gdb_test next" in test_enums instead.
Michael C