unwind-cxx.h: Include sys/sdt.h if detected.
* libsupc++/unwind-cxx.h: Include sys/sdt.h if detected. (PROBE2): New macro. * libsupc++/eh_throw.cc (__cxa_throw, __cxa_rethrow): Add probe. * libsupc++/eh_catch.cc (__cxa_begin_catch): Add probe. * configure.ac: Check for sys/sdt.h. * configure, config.h.in: Rebuild. From-SVN: r196674
This commit is contained in:
parent
d0a7de7055
commit
83c214a835
@ -1,3 +1,12 @@
|
||||
2013-03-15 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* libsupc++/unwind-cxx.h: Include sys/sdt.h if detected.
|
||||
(PROBE2): New macro.
|
||||
* libsupc++/eh_throw.cc (__cxa_throw, __cxa_rethrow): Add probe.
|
||||
* libsupc++/eh_catch.cc (__cxa_begin_catch): Add probe.
|
||||
* configure.ac: Check for sys/sdt.h.
|
||||
* configure, config.h.in: Rebuild.
|
||||
|
||||
2013-03-14 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
PR libstdc++/56613
|
||||
|
@ -400,6 +400,9 @@
|
||||
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||
#undef HAVE_SYS_RESOURCE_H
|
||||
|
||||
/* Define to 1 if you have the <sys/sdt.h> header file. */
|
||||
#undef HAVE_SYS_SDT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/sem.h> header file. */
|
||||
#undef HAVE_SYS_SEM_H
|
||||
|
||||
|
2
libstdc++-v3/configure
vendored
2
libstdc++-v3/configure
vendored
@ -20417,7 +20417,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
for ac_header in endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \
|
||||
locale.h machine/endian.h machine/param.h nan.h stdint.h stdlib.h string.h \
|
||||
strings.h sys/ipc.h sys/isa_defs.h sys/machine.h sys/param.h \
|
||||
sys/resource.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \
|
||||
sys/resource.h sys/sdt.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \
|
||||
wchar.h wctype.h
|
||||
do :
|
||||
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
||||
|
@ -216,7 +216,7 @@ GLIBCXX_CHECK_SYSCTL_HW_NCPU
|
||||
AC_CHECK_HEADERS([endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \
|
||||
locale.h machine/endian.h machine/param.h nan.h stdint.h stdlib.h string.h \
|
||||
strings.h sys/ipc.h sys/isa_defs.h sys/machine.h sys/param.h \
|
||||
sys/resource.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \
|
||||
sys/resource.h sys/sdt.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \
|
||||
wchar.h wctype.h])
|
||||
|
||||
# Only do link tests if native. Else, hardcode.
|
||||
|
@ -80,6 +80,9 @@ __cxxabiv1::__cxa_begin_catch (void *exc_obj_in) _GLIBCXX_NOTHROW
|
||||
}
|
||||
|
||||
objectp = __gxx_caught_object(exceptionObject);
|
||||
|
||||
PROBE2 (catch, objectp, header->exceptionType);
|
||||
|
||||
#ifdef __ARM_EABI_UNWINDER__
|
||||
_Unwind_Complete(exceptionObject);
|
||||
#endif
|
||||
|
@ -60,6 +60,8 @@ extern "C" void
|
||||
__cxxabiv1::__cxa_throw (void *obj, std::type_info *tinfo,
|
||||
void (_GLIBCXX_CDTOR_CALLABI *dest) (void *))
|
||||
{
|
||||
PROBE2 (throw, obj, tinfo);
|
||||
|
||||
// Definitely a primary.
|
||||
__cxa_refcounted_exception *header
|
||||
= __get_refcounted_exception_header_from_obj (obj);
|
||||
@ -97,7 +99,12 @@ __cxxabiv1::__cxa_rethrow ()
|
||||
if (!__is_gxx_exception_class(header->unwindHeader.exception_class))
|
||||
globals->caughtExceptions = 0;
|
||||
else
|
||||
{
|
||||
header->handlerCount = -header->handlerCount;
|
||||
// Only notify probe for C++ exceptions.
|
||||
PROBE2 (rethrow, __get_object_from_ambiguous_exception(header),
|
||||
header->exceptionType);
|
||||
}
|
||||
|
||||
#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
|
||||
_Unwind_SjLj_Resume_or_Rethrow (&header->unwindHeader);
|
||||
|
@ -37,6 +37,19 @@
|
||||
#include <bits/atomic_word.h>
|
||||
#include <cxxabi.h>
|
||||
|
||||
#ifdef _GLIBCXX_HAVE_SYS_SDT_H
|
||||
#include <sys/sdt.h>
|
||||
/* We only want to use stap probes starting with v3. Earlier versions
|
||||
added too much startup cost. */
|
||||
#if defined (STAP_PROBE2) && _SDT_NOTE_TYPE >= 3
|
||||
#define PROBE2(name, arg1, arg2) STAP_PROBE2 (libstdcxx, name, arg1, arg2)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef PROBE2
|
||||
#define PROBE2(name, arg1, arg2)
|
||||
#endif
|
||||
|
||||
#pragma GCC visibility push(default)
|
||||
|
||||
namespace __cxxabiv1
|
||||
|
Loading…
Reference in New Issue
Block a user