unwind-dw2.c (_Unwind_DebugHook): New function.

* unwind-dw2.c (_Unwind_DebugHook): New function.
	(uw_install_context): Call _Unwind_DebugHook.

From-SVN: r147934
This commit is contained in:
Tom Tromey 2009-05-27 23:12:21 +00:00 committed by Tom Tromey
parent c5adc4275c
commit e455776af0
2 changed files with 25 additions and 7 deletions

View file

@ -1,3 +1,8 @@
2009-05-27 Tom Tromey <tromey@redhat.com>
* unwind-dw2.c (_Unwind_DebugHook): New function.
(uw_install_context): Call _Unwind_DebugHook.
2009-05-27 Tom Tromey <tromey@redhat.com>
* system.h (CONST_CAST2): Use C++ const_cast when compiled as C++

View file

@ -1473,18 +1473,31 @@ uw_init_context_1 (struct _Unwind_Context *context,
context->ra = __builtin_extract_return_addr (outer_ra);
}
static void _Unwind_DebugHook (void *, void *) __attribute__ ((__noinline__));
/* This function is called during unwinding. It is intended as a hook
for a debugger to intercept exceptions. CFA is the CFA of the
target frame. HANDLER is the PC to which control will be
transferred. */
static void
_Unwind_DebugHook (void *cfa __attribute__ ((__unused__)),
void *handler __attribute__ ((__unused__)))
{
asm ("");
}
/* Install TARGET into CURRENT so that we can return to it. This is a
macro because __builtin_eh_return must be invoked in the context of
our caller. */
#define uw_install_context(CURRENT, TARGET) \
do \
{ \
long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
__builtin_eh_return (offset, handler); \
} \
#define uw_install_context(CURRENT, TARGET) \
do \
{ \
long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
_Unwind_DebugHook ((TARGET)->cfa, handler); \
__builtin_eh_return (offset, handler); \
} \
while (0)
static long