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 | 9d084466d740e40c655609f9c04b3bb2b9b9ca76 (patch) | |
tree | 210f4ac3ac14359576fce5bda16bd3522a43c1b1 /gdb/ChangeLog | |
parent | e35000a7f8be021459102751db7e0b7e2868b57e (diff) | |
download | gdb-9d084466d740e40c655609f9c04b3bb2b9b9ca76.zip gdb-9d084466d740e40c655609f9c04b3bb2b9b9ca76.tar.gz gdb-9d084466d740e40c655609f9c04b3bb2b9b9ca76.tar.bz2 |
infcall, c++: allow more info to be computed for pass-by-reference values
In C++, call-by-value arguments that cannot be trivially copied are
implicitly passed by reference. When making an infcall, GDB needs to
find out if an argument is pass-by-reference or not, so that the
correct semantics can be followed. This patch enriches the
information computed by the language ops for pass-by-reference
arguments. Instead of a plain binary result, the computed information
now includes whether the argument is
- copy constructible
- destructible
- trivially copyable
- trivially copy constructible
- trivially destructible
This information is stored in a struct named 'language_pass_by_ref_info'.
This patch paves the way for GDB's infcall mechanism to call the copy
ctor and the destructor of a pass-by-ref argument appropriately.
gdb/ChangeLog:
2019-12-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* language.h (struct language_pass_by_ref_info): New struct.
(struct language_defn)<la_pass_by_reference>: Change the signature
to return a language_pass_by_ref_info instead of an int.
(language_pass_by_reference): Ditto.
(default_pass_by_reference): Ditto.
Adjust the users listed below.
* arch-utils.c (default_return_in_first_hidden_param_p):
Update.
* cp-abi.c (cp_pass_by_reference): Update.
* cp-abi.h (cp_pass_by_reference): Update declaration.
(struct cp_abi_ops)<pass_by_reference>: Update.
* gnu-v3-abi.c (gnuv3_pass_by_reference): Update.
* infcall.c (call_function_by_hand_dummy): Update.
* language.c (language_pass_by_reference): Update.
(default_pass_by_reference): Update.
* tic6x-tdep.c (tic6x_return_value): Update.
Change-Id: Ib1c1f87f2490a5737c469f7b7185ddc7f6a164cb
Diffstat (limited to 'gdb/ChangeLog')
-rw-r--r-- | gdb/ChangeLog | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5175ebc..3e88754 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,24 @@ 2019-12-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> + * language.h (struct language_pass_by_ref_info): New struct. + (struct language_defn)<la_pass_by_reference>: Change the signature + to return a language_pass_by_ref_info instead of an int. + (language_pass_by_reference): Ditto. + (default_pass_by_reference): Ditto. + Adjust the users listed below. + * arch-utils.c (default_return_in_first_hidden_param_p): + Update. + * cp-abi.c (cp_pass_by_reference): Update. + * cp-abi.h (cp_pass_by_reference): Update declaration. + (struct cp_abi_ops)<pass_by_reference>: Update. + * gnu-v3-abi.c (gnuv3_pass_by_reference): Update. + * infcall.c (call_function_by_hand_dummy): Update. + * language.c (language_pass_by_reference): Update. + (default_pass_by_reference): Update. + * tic6x-tdep.c (tic6x_return_value): Update. + +2019-12-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> + * dwarf2read.c (dwarf2_add_member_fn): Read the DW_AT_defaulted and DW_AT_deleted attributes of a function. (read_structure_type): Read the DW_AT_calling_convention attribute |