This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]