+2013-08-07 Raunaq Bathija <raunaq12@in.ibm.com>
+ Ulrich Weigand <uweigand@de.ibm.com>
+
+ * gdb_ptrace.h: Use ptrace64 instead of ptrace if HAVE_PTRACE64
+ is defined.
+ * rs6000-nat.c: Check for __ld_info64_ if compiling 64 BIT gdb.
+ (rs6000_ptrace32): Call ptrace64 instead of ptrace if present.
+ (rs6000_ptrace64): Call ptace64 instead of ptracex if present.
+ * configure.ac: Check for ptrace64.
+ * configure, config.in: Regenerate.
+
2013-08-07 Raunaq Bathija <raunaq12@in.ibm.com>
Ulrich Weigand <uweigand@de.ibm.com>
/* Define if <sys/procfs.h> has pstatus_t. */
#undef HAVE_PSTATUS_T
+/* Define to 1 if you have the `ptrace64' function. */
+#undef HAVE_PTRACE64
+
/* Define if sys/ptrace.h defines the PTRACE_GETFPXREGS request. */
#undef HAVE_PTRACE_GETFPXREGS
sigaction sigprocmask sigsetmask socketpair syscall \
ttrace wborder wresize setlocale iconvlist libiconvlist btowc \
setrlimit getrlimit posix_madvise waitpid lstat \
- fdwalk pipe2
+ fdwalk pipe2 ptrace64
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
sigaction sigprocmask sigsetmask socketpair syscall \
ttrace wborder wresize setlocale iconvlist libiconvlist btowc \
setrlimit getrlimit posix_madvise waitpid lstat \
- fdwalk pipe2])
+ fdwalk pipe2 ptrace64])
AM_LANGINFO_CODESET
# Check the return and argument types of ptrace. No canned test for
zero. */
#ifdef PTRACE_TYPE_ARG5
-# define ptrace(request, pid, addr, data) ptrace (request, pid, addr, data, 0)
+# ifdef HAVE_PTRACE64
+# define ptrace(request, pid, addr, data) \
+ ptrace64 (request, pid, addr, data, 0)
+# undef PTRACE_TYPE_ARG3
+# define PTRACE_TYPE_ARG3 long long
+# else
+# define ptrace(request, pid, addr, data) \
+ ptrace (request, pid, addr, data, 0)
+# endif
#endif
#endif /* gdb_ptrace.h */
/* In 32-bit compilation mode (which is the only mode from which ptrace()
works on 4.3), __ld_info32 is #defined as equivalent to ld_info. */
-#ifdef __ld_info32
+#if defined (__ld_info32) || defined (__ld_info64)
# define ARCH3264
#endif
static int
rs6000_ptrace32 (int req, int id, int *addr, int data, int *buf)
{
+ #ifdef HAVE_PTRACE64
+ int ret = ptrace64 (req, id, (long long) addr, data, buf);
+ #else
int ret = ptrace (req, id, (int *)addr, data, buf);
+ #endif
#if 0
printf ("rs6000_ptrace32 (%d, %d, 0x%x, %08x, 0x%x) = 0x%x\n",
req, id, (unsigned int)addr, data, (unsigned int)buf, ret);
rs6000_ptrace64 (int req, int id, long long addr, int data, void *buf)
{
#ifdef ARCH3264
+ #ifdef HAVE_PTRACE64
+ int ret = ptrace64 (req, id, addr, data, buf);
+ #else
int ret = ptracex (req, id, addr, data, buf);
+ #endif
#else
int ret = 0;
#endif