diff options
author | Daniel Jacobowitz <drow@false.org> | 2007-09-23 16:25:06 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2007-09-23 16:25:06 +0000 |
commit | 41f1b6975dce5616800a8ff1acb544019c7bc132 (patch) | |
tree | f3e49925507634d70cb6d6e1fbd9ce7c6b8ec313 /gdb/language.h | |
parent | 3f213f78ed9182dbdeb3500dab729a6aad17dfd9 (diff) | |
download | gdb-41f1b6975dce5616800a8ff1acb544019c7bc132.zip gdb-41f1b6975dce5616800a8ff1acb544019c7bc132.tar.gz gdb-41f1b6975dce5616800a8ff1acb544019c7bc132.tar.bz2 |
* infcall.c (call_function_by_hand): Handle language-specific
pass and return by reference.
* cp-abi.c (cp_pass_by_reference): New.
* cp-abi.h (cp_pass_by_reference): Declare.
(struct cp_abi_ops): Add pass_by_reference.
* gnu-v3-abi.c (gnuv3_pass_by_reference): New.
(init_gnuv3_ops): Set pass_by_reference.
* language.c (language_pass_by_reference): New.
(default_pass_by_reference): New.
(unknown_language_defn, auto_language_defn, local_language_defn): Add
default_pass_by_reference.
* langauge.h (struct language_defn): Add la_pass_by_reference.
(language_pass_by_reference, default_pass_by_reference): Declare.
* ada-lang.c (ada_language_defn): Add default_pass_by_reference.
* c-lang.c (c_language_defn, asm_language_defn)
(minimal_language_defn): Likewise.
(cplus_language_defn): Add cp_pass_by_reference.
* f-lang.c (f_language_defn): Add default_pass_by_reference.
* jv-lang.c (java_language_defn): Likewise.
* m2-lang.c (m2_language_defn): Likewise.
* objc-lang.c (objc_language_defn): Likewise.
* p-lang.c (pascal_language_defn): Likewise.
* scm-lang.c (scm_language_defn): Likewise
* gdb.cp/pass-by-ref.cc, gdb.cp/pass-by-ref.exp: New files.
Diffstat (limited to 'gdb/language.h')
-rw-r--r-- | gdb/language.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gdb/language.h b/gdb/language.h index e6dc544..3649b00 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -280,6 +280,10 @@ struct language_defn int format, enum val_prettyprint pretty); + /* Return non-zero if TYPE should be passed (and returned) by + reference at the language level. */ + int (*la_pass_by_reference) (struct type *type); + /* Add fields above this point, so the magic number is always last. */ /* Magic number for compat checking */ @@ -471,4 +475,13 @@ extern void default_print_array_index (struct value *index_value, int format, enum val_prettyprint pretty); +/* Return non-zero if TYPE should be passed (and returned) by + reference at the language level. */ +int language_pass_by_reference (struct type *type); + +/* Return zero; by default, types are passed by value at the language + level. The target ABI may pass or return some structs by reference + independent of this. */ +int default_pass_by_reference (struct type *type); + #endif /* defined (LANGUAGE_H) */ |