mirror of
https://github.com/gperftools/gperftools
synced 2025-01-11 17:19:32 +00:00
Include asm/ptrace.h when accessing ucontext_t
In some architectures (e.g. powerpc, powerpc64 and powerpc64le), the macro that specifies the position of the program counter is defined in header asm/ptrace.h. When glibc bug 21457 got fixed in version 2.27, header sys/ucontext.h stopped including signal.h, which indirectly removed asm/ptrace.h too. Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
This commit is contained in:
parent
5574c87e39
commit
fc00474ddc
@ -20,6 +20,7 @@ AC_DEFUN([AC_PC_FROM_UCONTEXT],
|
||||
AC_CHECK_HEADERS(sys/ucontext.h) # ucontext on OS X 10.6 (at least)
|
||||
fi
|
||||
AC_CHECK_HEADERS(cygwin/signal.h) # ucontext on cywgin
|
||||
AC_CHECK_HEADERS(asm/ptrace.h) # get ptrace macros, e.g. PT_NIP
|
||||
AC_MSG_CHECKING([how to access the program counter from a struct ucontext])
|
||||
pc_fields=" uc_mcontext.gregs[[REG_PC]]" # Solaris x86 (32 + 64 bit)
|
||||
pc_fields="$pc_fields uc_mcontext.gregs[[REG_EIP]]" # Linux (i386)
|
||||
@ -53,9 +54,18 @@ AC_DEFUN([AC_PC_FROM_UCONTEXT],
|
||||
How to access the PC from a struct ucontext)
|
||||
AC_MSG_RESULT([$pc_field])
|
||||
pc_field_found=true)
|
||||
elif test "x$ac_cv_header_asm_ptrace_h" = xyes -a "x$ac_cv_header_sys_ucontext_h" = xyes; then
|
||||
AC_TRY_COMPILE([#define _GNU_SOURCE 1
|
||||
#include <asm/ptrace.h>
|
||||
#include <sys/ucontext.h>],
|
||||
[ucontext_t u; return u.$pc_field == 0;],
|
||||
AC_DEFINE_UNQUOTED(PC_FROM_UCONTEXT, $pc_field,
|
||||
How to access the PC from a struct ucontext)
|
||||
AC_MSG_RESULT([$pc_field])
|
||||
pc_field_found=true)
|
||||
elif test "x$ac_cv_header_sys_ucontext_h" = xyes; then
|
||||
AC_TRY_COMPILE([#define _GNU_SOURCE 1
|
||||
#include <sys/ucontext.h>],
|
||||
#include <sys/ucontext.h>],
|
||||
[ucontext_t u; return u.$pc_field == 0;],
|
||||
AC_DEFINE_UNQUOTED(PC_FROM_UCONTEXT, $pc_field,
|
||||
How to access the PC from a struct ucontext)
|
||||
|
@ -56,6 +56,9 @@
|
||||
//#define _XOPEN_SOURCE 500
|
||||
|
||||
#include <string.h> // for memcmp
|
||||
#ifdef HAVE_ASM_PTRACE_H
|
||||
#include <asm/ptrace.h>
|
||||
#endif
|
||||
#if defined(HAVE_SYS_UCONTEXT_H)
|
||||
#include <sys/ucontext.h>
|
||||
#elif defined(HAVE_UCONTEXT_H)
|
||||
|
Loading…
Reference in New Issue
Block a user