* Makefile.in (c-lang.o, gnu-v3-abi.o): Update.

* NEWS: Mention improved C++ thunk support.
	* c-lang.c (cplus_language_defn): Mention cplus_skip_trampoline.
	* cp-abi.c (cplus_skip_trampoline): New.
	* cp-abi.h (cplus_skip_trampoline): New prototype.
	(struct cp_abi_ops): Add skip_trampoline member.
	* gnu-v3-abi.c (gnuv3_skip_trampoline): New.
	(init_gnuv3_ops): Set skip_trampoline.

	* gdb.cp/virtfunc.exp (proc do_tests): Test stepping through a thunk.
This commit is contained in:
Daniel Jacobowitz
2007-05-07 11:49:05 +00:00
parent dda9b909e6
commit b18be20d0a
9 changed files with 83 additions and 3 deletions

View File

@@ -170,6 +170,11 @@ struct value *cplus_method_ptr_to_value (struct value **this_p,
void cplus_make_method_ptr (gdb_byte *CONTENTS, CORE_ADDR address,
int is_virtual);
/* Determine if we are currently in a C++ thunk. If so, get the address
of the routine we are thunking to and continue to there instead. */
CORE_ADDR cplus_skip_trampoline (CORE_ADDR stop_pc);
struct cp_abi_ops
{
const char *shortname;
@@ -192,6 +197,7 @@ struct cp_abi_ops
int (*method_ptr_size) (void);
void (*make_method_ptr) (gdb_byte *, CORE_ADDR, int);
struct value * (*method_ptr_to_value) (struct value **, struct value *);
CORE_ADDR (*skip_trampoline) (CORE_ADDR);
};