Re: [PATCH v6] Make chained function calls in expressions work

Ulrich Weigand
2014-11-28T12:10:34Z

Siva Chandra wrote:

> gdb/ChangeLog:
>
> 2014-11-27 Siva Chandra Reddy <sivachandra@google.com>
>
> * eval.c: Include gdbthread.h.
> (evaluate_subexp): Enable thread stack temporaries before
> evaluating a complete expression and clean them up after the
> evaluation is complete.
> * gdbthread.h: Include common/vec.h.
> (value_ptr): New typedef.
> (VEC (value_ptr)): New vector type.
> (value_vec): New typedef.
> (struct thread_info): Add new fields stack_temporaries_enabled
> and stack_temporaries.
> (enable_thread_stack_temporaries)
> (thread_stack_temporaries_enabled_p, push_thread_stack_temporary)
> (get_last_thread_stack_temporary)
> (value_in_thread_stack_temporaries): Declare.
> * gdbtypes.c (class_or_union_p): New function.
> * gdbtypes.h (class_or_union_p): Declare.
> * infcall.c (call_function_by_hand): Store return values of class
> type as temporaries on stack.
> * thread.c (enable_thread_stack_temporaries): New function.
> (thread_stack_temporaries_enabled_p, push_thread_stack_temporary)
> (get_last_thread_stack_temporary): Likewise.
> (value_in_thread_stack_temporaries): Likewise.
> * value.c (value_force_lval): New function.
> * value.h (value_force_lval): Declare.
>
> gdb/testsuite/ChangeLog:
>
> 2014-11-27 Siva Chandra Reddy <sivachandra@google.com>
>
> * gdb.cp/chained-calls.cc: New file.
> * gdb.cp/chained-calls.exp: New file.
> * gdb.cp/smartp.exp: Remove KFAIL for "p c2->inta".

This is OK.

Thanks for you patience in working through the many iterations on this patch!

One final nit:

>+/* Return an address after skipping over the current stack temporaries
>+ of thread with id PTID. SP is the current stack frame pointer. Non-zero
>+ DOWNWARD indicates that the stack grows downwards/backwards. */
>+
>+struct value *
>+get_last_thread_stack_temporary (ptid_t ptid)

Comment no longer fits the new semantics of the function.

Thanks,
Ulrich

--
Dr. Ulrich Weigand
GNU/Linux compilers and toolchain
Ulrich.Weigand@de.ibm.com