mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
2007-06-18 Markus Deuling <deuling@de.ibm.com>
* gdbarch.sh (EXTRACT_RETURN_VALUE): Replace with gdbarch_extract_return_value. * value.c (generic_use_struct_convention): Likewise (comment). * ia64-tdep.c (ia64_use_struct_convention): Likewise (comment). * arch-utils.c (legacy_return_value): Likewise. * arch-utils.h (legacy_return_value): Likewise (comment). * gdbarch.sh (STORE_RETURN_VALUE): Replace by gdbarch_store_return_value. * stack.c (return_command): Likewise (comment). * arch-utils.h (legacy_return_value): Likewise (comment). * arch-utils.c (legacy_return_value): Likewise. * gdbarch.c, gdbarch.h: Regenerate.
This commit is contained in:
parent
b187c47613
commit
82d1552e97
@ -61,17 +61,18 @@ legacy_return_value (struct gdbarch *gdbarch, struct type *valtype,
|
||||
{
|
||||
gdb_assert (!struct_return);
|
||||
/* NOTE: cagney/2004-06-13: See stack.c:return_command. Old
|
||||
architectures don't expect STORE_RETURN_VALUE to handle small
|
||||
architectures don't expect store_return_value to handle small
|
||||
structures. Should not be called with such types. */
|
||||
gdb_assert (TYPE_CODE (valtype) != TYPE_CODE_STRUCT
|
||||
&& TYPE_CODE (valtype) != TYPE_CODE_UNION);
|
||||
STORE_RETURN_VALUE (valtype, regcache, writebuf);
|
||||
gdbarch_store_return_value (current_gdbarch, valtype, regcache, writebuf);
|
||||
}
|
||||
|
||||
if (readbuf != NULL)
|
||||
{
|
||||
gdb_assert (!struct_return);
|
||||
EXTRACT_RETURN_VALUE (valtype, regcache, readbuf);
|
||||
gdbarch_extract_return_value (current_gdbarch,
|
||||
valtype, regcache, readbuf);
|
||||
}
|
||||
|
||||
if (struct_return)
|
||||
|
@ -33,8 +33,8 @@ struct gdbarch_info;
|
||||
extern int gdbarch_debug;
|
||||
|
||||
/* An implementation of return_value that props up architectures still
|
||||
using USE_STRUCT_RETURN, EXTRACT_RETURN_VALUE and
|
||||
STORE_RETURN_VALUE. See also the hacks in "stack.c". */
|
||||
using USE_STRUCT_RETURN, gdbarch_extract_return_value and
|
||||
store_return_value. See also the hacks in "stack.c". */
|
||||
enum return_value_convention legacy_return_value (struct gdbarch *gdbarch,
|
||||
struct type *valtype,
|
||||
struct regcache *regcache,
|
||||
|
@ -768,12 +768,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: elf_make_msymbol_special = <0x%lx>\n",
|
||||
(long) current_gdbarch->elf_make_msymbol_special);
|
||||
#ifdef EXTRACT_RETURN_VALUE
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
"EXTRACT_RETURN_VALUE(type, regcache, valbuf)",
|
||||
XSTRING (EXTRACT_RETURN_VALUE (type, regcache, valbuf)));
|
||||
#endif
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: extract_return_value = <0x%lx>\n",
|
||||
(long) current_gdbarch->extract_return_value);
|
||||
@ -1035,12 +1029,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: stabs_argument_has_addr = <0x%lx>\n",
|
||||
(long) current_gdbarch->stabs_argument_has_addr);
|
||||
#ifdef STORE_RETURN_VALUE
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
"STORE_RETURN_VALUE(type, regcache, valbuf)",
|
||||
XSTRING (STORE_RETURN_VALUE (type, regcache, valbuf)));
|
||||
#endif
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: store_return_value = <0x%lx>\n",
|
||||
(long) current_gdbarch->store_return_value);
|
||||
|
@ -383,7 +383,7 @@ extern void set_gdbarch_integer_to_address (struct gdbarch *gdbarch, gdbarch_int
|
||||
should take the type/value of the function to be called and not the
|
||||
return type. This is left as an exercise for the reader.
|
||||
NOTE: cagney/2004-06-13: The function stack.c:return_command uses
|
||||
the predicate with default hack to avoid calling STORE_RETURN_VALUE
|
||||
the predicate with default hack to avoid calling store_return_value
|
||||
(via legacy_return_value), when a small struct is involved. */
|
||||
|
||||
extern int gdbarch_return_value_p (struct gdbarch *gdbarch);
|
||||
@ -392,7 +392,7 @@ typedef enum return_value_convention (gdbarch_return_value_ftype) (struct gdbarc
|
||||
extern enum return_value_convention gdbarch_return_value (struct gdbarch *gdbarch, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf);
|
||||
extern void set_gdbarch_return_value (struct gdbarch *gdbarch, gdbarch_return_value_ftype *return_value);
|
||||
|
||||
/* The deprecated methods EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE,
|
||||
/* The deprecated methods extract_return_value, store_return_value,
|
||||
DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS and
|
||||
deprecated_use_struct_convention have all been folded into
|
||||
RETURN_VALUE. */
|
||||
@ -400,22 +400,10 @@ extern void set_gdbarch_return_value (struct gdbarch *gdbarch, gdbarch_return_va
|
||||
typedef void (gdbarch_extract_return_value_ftype) (struct type *type, struct regcache *regcache, gdb_byte *valbuf);
|
||||
extern void gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, gdb_byte *valbuf);
|
||||
extern void set_gdbarch_extract_return_value (struct gdbarch *gdbarch, gdbarch_extract_return_value_ftype *extract_return_value);
|
||||
#if !defined (GDB_TM_FILE) && defined (EXTRACT_RETURN_VALUE)
|
||||
#error "Non multi-arch definition of EXTRACT_RETURN_VALUE"
|
||||
#endif
|
||||
#if !defined (EXTRACT_RETURN_VALUE)
|
||||
#define EXTRACT_RETURN_VALUE(type, regcache, valbuf) (gdbarch_extract_return_value (current_gdbarch, type, regcache, valbuf))
|
||||
#endif
|
||||
|
||||
typedef void (gdbarch_store_return_value_ftype) (struct type *type, struct regcache *regcache, const gdb_byte *valbuf);
|
||||
extern void gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const gdb_byte *valbuf);
|
||||
extern void set_gdbarch_store_return_value (struct gdbarch *gdbarch, gdbarch_store_return_value_ftype *store_return_value);
|
||||
#if !defined (GDB_TM_FILE) && defined (STORE_RETURN_VALUE)
|
||||
#error "Non multi-arch definition of STORE_RETURN_VALUE"
|
||||
#endif
|
||||
#if !defined (STORE_RETURN_VALUE)
|
||||
#define STORE_RETURN_VALUE(type, regcache, valbuf) (gdbarch_store_return_value (current_gdbarch, type, regcache, valbuf))
|
||||
#endif
|
||||
|
||||
typedef int (gdbarch_deprecated_use_struct_convention_ftype) (int gcc_p, struct type *value_type);
|
||||
extern int gdbarch_deprecated_use_struct_convention (struct gdbarch *gdbarch, int gcc_p, struct type *value_type);
|
||||
|
@ -503,18 +503,18 @@ M::CORE_ADDR:integer_to_address:struct type *type, const gdb_byte *buf:type, buf
|
||||
# return type. This is left as an exercise for the reader.
|
||||
|
||||
# NOTE: cagney/2004-06-13: The function stack.c:return_command uses
|
||||
# the predicate with default hack to avoid calling STORE_RETURN_VALUE
|
||||
# the predicate with default hack to avoid calling store_return_value
|
||||
# (via legacy_return_value), when a small struct is involved.
|
||||
|
||||
M::enum return_value_convention:return_value:struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf:valtype, regcache, readbuf, writebuf::legacy_return_value
|
||||
|
||||
# The deprecated methods EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE,
|
||||
# The deprecated methods extract_return_value, store_return_value,
|
||||
# DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS and
|
||||
# deprecated_use_struct_convention have all been folded into
|
||||
# RETURN_VALUE.
|
||||
|
||||
f:=:void:extract_return_value:struct type *type, struct regcache *regcache, gdb_byte *valbuf:type, regcache, valbuf:0
|
||||
f:=:void:store_return_value:struct type *type, struct regcache *regcache, const gdb_byte *valbuf:type, regcache, valbuf:0
|
||||
f::void:extract_return_value:struct type *type, struct regcache *regcache, gdb_byte *valbuf:type, regcache, valbuf:0
|
||||
f::void:store_return_value:struct type *type, struct regcache *regcache, const gdb_byte *valbuf:type, regcache, valbuf:0
|
||||
f::int:deprecated_use_struct_convention:int gcc_p, struct type *value_type:gcc_p, value_type::generic_use_struct_convention::0
|
||||
|
||||
f::CORE_ADDR:skip_prologue:CORE_ADDR ip:ip:0:0
|
||||
|
@ -2923,7 +2923,7 @@ static struct libunwind_descr ia64_libunwind_descr =
|
||||
#endif /* HAVE_LIBUNWIND_IA64_H */
|
||||
|
||||
/* Should we use DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS instead of
|
||||
EXTRACT_RETURN_VALUE? GCC_P is true if compiled with gcc and TYPE
|
||||
gdbarch_extract_return_value? GCC_P is true if compiled with gcc and TYPE
|
||||
is the type (which is known to be struct, union or array). */
|
||||
int
|
||||
ia64_use_struct_convention (int gcc_p, struct type *type)
|
||||
|
@ -1792,7 +1792,7 @@ return_command (char *retval_exp, int from_tty)
|
||||
|| TYPE_CODE (return_type) == TYPE_CODE_UNION))
|
||||
{
|
||||
/* NOTE: cagney/2003-10-20: Compatibility hack for legacy
|
||||
code. Old architectures don't expect STORE_RETURN_VALUE
|
||||
code. Old architectures don't expect gdbarch_store_return_value
|
||||
to be called with with a small struct that needs to be
|
||||
stored in registers. Don't start doing it now. */
|
||||
query_prefix = "\
|
||||
|
@ -1654,7 +1654,7 @@ coerce_enum (struct value *arg)
|
||||
|
||||
|
||||
/* Should we use DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS instead of
|
||||
EXTRACT_RETURN_VALUE? GCC_P is true if compiled with gcc and TYPE
|
||||
gdbarch_extract_return_value? GCC_P is true if compiled with gcc and TYPE
|
||||
is the type (which is known to be struct, union or array).
|
||||
|
||||
On most machines, the struct convention is used unless we are
|
||||
|
Loading…
Reference in New Issue
Block a user