This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 4/5] powerpc64-aix ptrace64 when defined.
- From: Raunaq 12 <raunaq12 at in dot ibm dot com>
- To: gdb-patches at sourceware dot org
- Cc: tromey at redhat dot com, Mark Kettenis <mark dot kettenis at xs4all dot nl>
- Date: Mon, 29 Jul 2013 11:46:36 +0530
- Subject: [PATCH 4/5] powerpc64-aix ptrace64 when defined.
When GDB is compiled in 64 BIT mode ptrace and ptracex calls are not
defined.
So, instead we check if ptrace64 is defined, if it is then we call that
instead of ptrace/x.
---
ChangeLog :-
* gdb_ptrace.h: Add macro to define ptrace64 if HAVE_PTRACE64 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: Add function check for ptrace64
*config.in: initialize HAVE_PTRACE64 which will be set by configure
---
Index: ./gdb/gdb_ptrace.h
===================================================================
--- ./gdb.orig/gdb_ptrace.h
+++ ./gdb/gdb_ptrace.h
@@ -135,7 +135,15 @@
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 */
Index: ./gdb/rs6000-nat.c
===================================================================
--- ./gdb.orig/rs6000-nat.c
+++ ./gdb/rs6000-nat.c
@@ -66,7 +66,7 @@
/* 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
@@ -132,7 +132,11 @@
static int
rs6000_ptrace32 (int req, int id, int *addr, int data, int *buf)
{
+ #ifdef HAVE_PTRACE64
+ int ret = ptrace64 (req, (long long) 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);
@@ -146,7 +150,11 @@
rs6000_ptrace64 (int req, int id, long long addr, int data, void *buf)
{
#ifdef ARCH3264
+ #ifdef HAVE_PTRACE64
+ int ret = ptrace64 (req, (long long) id, addr, data, (int *)buf);
+ #else
int ret = ptracex (req, id, addr, data, buf);
+ #endif
#else
int ret = 0;
#endif
Index: ./gdb/configure.ac
===================================================================
--- ./gdb.orig/configure.ac
+++ ./gdb/configure.ac
@@ -1180,7 +1180,7 @@
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
Index: ./gdb/config.in
===================================================================
--- ./gdb.orig/config.in
+++ ./gdb/config.in
@@ -101,6 +101,9 @@
*/
#undef HAVE_DECL_MALLOC
+/* Define to 1 if you have the `ptrace64' function. */
+#undef HAVE_PTRACE64
+
/* Define to 1 if you have the declaration of `ptrace', and to 0 if you
don't.
*/
#undef HAVE_DECL_PTRACE