summaryrefslogtreecommitdiff
path: root/gdb/defs.h
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2004-05-08 23:02:10 +0000
committerMark Kettenis <kettenis@gnu.org>2004-05-08 23:02:10 +0000
commitaea37949d9489d071132783869fff517ae667bce (patch)
tree4c5eed657037ba91f0df505f474e8ca9fee3aa00 /gdb/defs.h
parent2ff666840382eadc34de44a88d30b0c72281966c (diff)
downloadgdb-aea37949d9489d071132783869fff517ae667bce.tar.gz
* defs.h (enum return_value_convention): Add
RETURN_VALUE_ABI_RETURNS_ADDRESS and RETURN_VALUE_ABI_PRESERVES_ADDRESS. * infcmd.c (legacy_return_value): New function. (print_return_value): Rwerite to implement RETURN_VALUE_ABI_RETURNS_ADDRESS. * values.c (using_struct_return): Check for inequality to RETURN_VALUE_REGISTER_CONVENTION instead of equality to RETURN_VALUE_STRUCT_CONVENTION. * i386-tdep.c (i386_return_value): Implement RETURN_VALUE_ABI_RETURNS_ADDRESS.
Diffstat (limited to 'gdb/defs.h')
-rw-r--r--gdb/defs.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/gdb/defs.h b/gdb/defs.h
index 362f4a773c8..97714285224 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -250,7 +250,19 @@ enum return_value_convention
should be stored. While typically, and historically, used for
large structs, this is convention is applied to values of many
different types. */
- RETURN_VALUE_STRUCT_CONVENTION
+ RETURN_VALUE_STRUCT_CONVENTION,
+ /* Like the "struct return convention" above, but where the ABI
+ guarantees that the called function stores the address at which
+ the value being returned is stored in a well-defined location,
+ such as a register or memory slot in the stack frame. Don't use
+ this if the ABI doesn't explicitly guarantees this. */
+ RETURN_VALUE_ABI_RETURNS_ADDRESS,
+ /* Like the "struct return convention" above, but where the ABI
+ guarantees that the address at which the value being returned is
+ stored will be available in a well-defined location, such as a
+ register or memory slot in the stack frame. Don't use this if
+ the ABI doesn't explicitly guarantees this. */
+ RETURN_VALUE_ABI_PRESERVES_ADDRESS,
};
/* the cleanup list records things that have to be undone