Re: [RFC/RFA] gdb.cp/classes.exp: Don't try to print local variable out of scope

Michael Elizabeth Chastain
2004-03-09T15:11:20Z

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