[patch/rfc; RFA:testsuite] Revamp store for lval_register and lval_reg_frame_relative
Andrew Cagney
ac131313@redhat.com
Wed Nov 6 18:47:00 GMT 2002
FYI, I've checked in the valops.c part of of this change.
Fernando, note the store.exp part.
Andrew
> The attached patch merges the lval_register and lval_reg_frame_relative store-register code. It now treads lval_register just like lval_reg_frame_relative only the former always applies to the current (inner most) frame.
>
> As a bonus, the merge manages to eliminate any calls to the functions write_register_bytes(), read_register_bytes(), and get_saved_register() in tha file.
>
> But wait, there's more! The patch adds tests to check that GDB can actually store a value correctly in a target register.
>
> And if you test the patch in the next 15 minutes, the merge will also fix the very long standing bug where GDB would occasionally loose the selected frame:
> (gdb) up
> 10 v = v + v;
> (gdb) print v
> $1 = 10
> (gdb) set variable v = 20
> (gdb) print v
> No symbol "v" in current context.
> (gdb) down
> Bottom (i.e., innermost) frame selected; you cannot go down.
> (gdb) up
> 10 v = v + v;
> (gdb) print v
> $2 = 20
> The code now restores the selected frame after the frame-cache flush.
>
> I'll look to commit the valops.c patch in a few days (it depends on an earlier frame_register() patch).
>
> Fernando,
> the new store.{exp,c} test cases? The tests fail without this patch and pass with the patch applied.
>
> Andrew
>
>
>
> 2002-11-01 Andrew Cagney <cagney@redhat.com>
>
> * valops.c (value_assign): Merge lval_register case into
> lval_reg_frame_relative. Use frame_register and
> regcache_cooked_write instead of get_saved_register and
> write_register_bytes. After flushing the register cache, try to
> re-select the selected frame.
>
> Index: testsuite/ChangeLog
> 2002-11-02 Andrew Cagney <ac131313@redhat.com>
>
> * gdb.base/store.exp, gdb.base/store.c: New files.
>
More information about the Gdb-patches
mailing list