This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v6] Make chained function calls in expressions work
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: sivachandra at google dot com (Siva Chandra)
- Cc: gdb-patches at sourceware dot org (gdb-patches)
- Date: Fri, 28 Nov 2014 13:10:25 +0100 (CET)
- Subject: Re: [PATCH v6] Make chained function calls in expressions work
- Authentication-results: sourceware.org; auth=none
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