This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: RFA/dwarf: Fix the GCC 2.95.3 store.exp regression for multi-register variables
On Thu, Apr 10, 2003 at 02:06:01PM -0400, Elena Zannoni wrote:
> Michael Elizabeth Chastain writes:
> > My test bed says that this is okay. It fixes the regression in
> > store.exp with gcc 2.95.3 -gdwarf-2 (gcc 2.95.3 is the only compiler
> > that puts this particular struct into a register). And it doesn't
> > have any regressions with any gcc v2 or v3, dwarf-2 or stabs+,
> > on my native i686-pc-linux-gnu.
> >
> > I have another PR for this, gdb/1107, that comes with a source file
> > and an executable file. With this patch, gdb HEAD changes from
> > 'new bad behavior' back to 'same bad behavior as 5.3'. Specifically,
> > I have a structure which is in %ebx and %esi. gdb 5.3 prints values
> > from %ebx and %esp (the next register in 'info registers').
> > gdb HEAD prints %ebx and something from god knows where, and
> > gdb HEAD + patch prints %ebx and %esp again.
> >
> > (I really hate it when gdb prints the wrong numbers!)
> >
> > With this patch gdb is better in the store.exp case and not any
> > worse in the gdb/1107 case. What the heck, here's a table:
> >
> > store.exp gdb/1107
> > gdb 5.3 okay wrong
> > gdb HEAD wrong wrong
> > gdb HEAD + drow okay wrong
> >
> > So ... recommended for approval. If it goes in then we can maybe talk
> > about gdb/1107 some more.
> >
> > Michael C
>
> Daniel did you check this in?
Now I have. Thanks!
> > ===
> >
> > 2003-03-12 Daniel Jacobowitz <drow at mvista dot com>
> >
> > * dwarf2expr.h (struct dwarf_expr_context): Remove extra arguments
> > to read_reg and update its comment. Remove regnum member.
> > * dwarf2expr.c (execute_stack_op): Remove memaddr and expr_lval.
> > Don't call read_reg when setting in_reg. Call read_reg to get
> > the frame base if it's in a register. Return the register number
> > on the stack instead of in the context. Remove extra arguments
> > to read_reg.
> > * dwarf2loc.c (dwarf_expr_read_reg): Remove extra arguments.
> > (dwarf2_evaluate_loc_desc): Call value_from_register. Expect
> > the register number on the expression stack.
> > (needs_frame_read_reg): Remove extra arguments.
>
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer