From b18be20d0aadff1e7c5b4d161177481aa61b9fc4 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Mon, 7 May 2007 11:49:05 +0000 Subject: * 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. --- gdb/cp-abi.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gdb/cp-abi.h') diff --git a/gdb/cp-abi.h b/gdb/cp-abi.h index 4ddc121..91d89b3 100644 --- a/gdb/cp-abi.h +++ b/gdb/cp-abi.h @@ -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); }; -- cgit v1.1