* gdbarch.sh: Document the return_value method. Explain that

the FUNCTYPE parameter might be NULL.
        * gdbarch.h: Regenerated.
        * sparc-tdep.c (sparc32_push_dummy_code): Do not pass the function
        type when calling using_struct_return, as this is unnecessary
        on this target.
This commit is contained in:
Joel Brobecker 2008-04-29 16:06:07 +00:00
parent 266b05cf76
commit ea42b34a37
4 changed files with 30 additions and 9 deletions

View File

@ -1,3 +1,12 @@
2008-04-29 Joel Brobecker <brobecker@adacore.com>
* gdbarch.sh: Document the return_value method. Explain that
the FUNCTYPE parameter might be NULL.
* gdbarch.h: Regenerated.
* sparc-tdep.c (sparc32_push_dummy_code): Do not pass the function
type when calling using_struct_return, as this is unnecessary
on this target.
2008-04-28 Joel Brobecker <brobecker@adacore.com> 2008-04-28 Joel Brobecker <brobecker@adacore.com>
* terminal.h (create_tty_session): Fix return type. * terminal.h (create_tty_session): Fix return type.

View File

@ -360,9 +360,16 @@ typedef CORE_ADDR (gdbarch_integer_to_address_ftype) (struct gdbarch *gdbarch, s
extern CORE_ADDR gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf); extern CORE_ADDR gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf);
extern void set_gdbarch_integer_to_address (struct gdbarch *gdbarch, gdbarch_integer_to_address_ftype *integer_to_address); extern void set_gdbarch_integer_to_address (struct gdbarch *gdbarch, gdbarch_integer_to_address_ftype *integer_to_address);
/* It has been suggested that this, well actually its predecessor, /* Return the return-value convention that will be used by FUNCTYPE
should take the type/value of the function to be called and not the to return a value of type VALTYPE. FUNCTYPE may be NULL in which
return type. This is left as an exercise for the reader. */ case the return convention is computed based only on VALTYPE.
If READBUF is not NULL, extract the return value and save it in this buffer.
If WRITEBUF is not NULL, it contains a return value which will be
stored into the appropriate register. This can be used when we want
to force the value returned by a function (see the "return" command
for instance). */
extern int gdbarch_return_value_p (struct gdbarch *gdbarch); extern int gdbarch_return_value_p (struct gdbarch *gdbarch);

View File

@ -470,10 +470,16 @@ f:CORE_ADDR:pointer_to_address:struct type *type, const gdb_byte *buf:type, buf:
f:void:address_to_pointer:struct type *type, gdb_byte *buf, CORE_ADDR addr:type, buf, addr::unsigned_address_to_pointer::0 f:void:address_to_pointer:struct type *type, gdb_byte *buf, CORE_ADDR addr:type, buf, addr::unsigned_address_to_pointer::0
M:CORE_ADDR:integer_to_address:struct type *type, const gdb_byte *buf:type, buf M:CORE_ADDR:integer_to_address:struct type *type, const gdb_byte *buf:type, buf
# It has been suggested that this, well actually its predecessor, # Return the return-value convention that will be used by FUNCTYPE
# should take the type/value of the function to be called and not the # to return a value of type VALTYPE. FUNCTYPE may be NULL in which
# return type. This is left as an exercise for the reader. # case the return convention is computed based only on VALTYPE.
#
# If READBUF is not NULL, extract the return value and save it in this buffer.
#
# If WRITEBUF is not NULL, it contains a return value which will be
# stored into the appropriate register. This can be used when we want
# to force the value returned by a function (see the "return" command
# for instance).
M:enum return_value_convention:return_value:struct type *functype, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf:functype, valtype, regcache, readbuf, writebuf M:enum return_value_convention:return_value:struct type *functype, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf:functype, valtype, regcache, readbuf, writebuf
m:CORE_ADDR:skip_prologue:CORE_ADDR ip:ip:0:0 m:CORE_ADDR:skip_prologue:CORE_ADDR ip:ip:0:0

View File

@ -388,8 +388,7 @@ sparc32_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp,
*bp_addr = sp - 4; *bp_addr = sp - 4;
*real_pc = funcaddr; *real_pc = funcaddr;
if (using_struct_return (SYMBOL_TYPE (find_pc_function (funcaddr)), if (using_struct_return (NULL, value_type))
value_type))
{ {
gdb_byte buf[4]; gdb_byte buf[4];