What is gdb.base/structs2.exp actually testing?
Daniel Jacobowitz
drow@false.org
Mon Mar 8 14:54:00 GMT 2004
On Mon, Mar 08, 2004 at 03:41:54PM +0100, Corinna Vinschen wrote:
> Hi,
>
> the subject already contains the question. What is the structs2 test
> good for? It's really not clear to me. There's a PR 13536 mentioned
> in the first line of structs2.c but this is a PRMS number and searching
> the gdb-patches archive didn't give me any useful hint. Is PRMS still
> accessible somewhere?
>
> The problem with this test is that it is based on the assumption, that
> GCC would not optimize away unused variables. The register arguments
> to param_reg are not reallyused, instead they only get values assigned.
> GCC is able to recognize this and to optimize away these assignments
> entirely, even in the non-optimize case! This happens for example on
> the SH target.
>
> The consequence of this fact is that the binary doesn't contain any
> debug information for the given register variables, so GDB doesn't know
> about them. In turn the testcase has two fails:
>
> FAIL: gdb.base/structs2.exp: structs2 continue1 (PRMS 13536)
> FAIL: gdb.base/structs2.exp: structs2 continue2 (PRMS 13536)
>
> due to the fact that the arguments are not printed, when the breakpoint
> is hit:
>
> Breakpoint 2, param_reg () at ...
>
> Are these tests really useful or shouldn't they either be dropped or
> modified to accomodate the above case?
Personally, that seems like a very dubious optimization for GCC to be
making at -O0... we can't change the calling convention at -O0, so the
arguments are there, so GCC ought to emit enough information for us to
find them. You didn't mention what compiler version you're testing
with...
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
More information about the Gdb
mailing list