diff options
author | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2019-12-20 17:43:06 +0100 |
---|---|---|
committer | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2019-12-20 17:43:06 +0100 |
commit | 099a6354dab7e74c990501929f383394fc8efd02 (patch) | |
tree | a9a1bbfc10c14ff65af9b6d9e8cdf6106a07e197 /gdb/ChangeLog | |
parent | 62bf63d74d54482d42e9d78890ebc0dd4675e23b (diff) | |
download | gdb-099a6354dab7e74c990501929f383394fc8efd02.zip gdb-099a6354dab7e74c990501929f383394fc8efd02.tar.gz gdb-099a6354dab7e74c990501929f383394fc8efd02.tar.bz2 |
infcall: handle pass-by-reference arguments appropriately
If an aggregate argument is implicitly pass-by-reference, allocate a
temporary object on the stack, initialize it via the copy constructor
(if exists) or trivially by memcpy'ing. Pass the reference of the
temporary to the callee function. After the callee returns, invoke
the destructor of the temporary.
gdb/ChangeLog:
2019-12-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
PR gdb/25054
* infcall.c (call_function_by_hand_dummy): Update the argument-
passing section for call-by-value parameters.
(struct destructor_info): New struct.
(call_destructors): New auxiliary function.
Change-Id: I18fa5d0df814dfa0defe9e862a88a6dbf1d99d01
Diffstat (limited to 'gdb/ChangeLog')
-rw-r--r-- | gdb/ChangeLog | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 43b86f2..c2157e4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2019-12-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> + PR gdb/25054 + * infcall.c (call_function_by_hand_dummy): Update the argument- + passing section for call-by-value parameters. + (struct destructor_info): New struct. + (call_destructors): New auxiliary function. + +2019-12-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> + * gnu-v3-abi.c (enum definition_style): New enum type. (get_def_style): New function. (is_user_provided_def): New function. |