public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* Re: [PATCH 4/5] powerpc64-aix ptrace64 when defined.
@ 2013-08-10  2:57 David Edelsohn
  0 siblings, 0 replies; 21+ messages in thread
From: David Edelsohn @ 2013-08-10  2:57 UTC (permalink / raw)
  To: Raunaq 12; +Cc: Tom Tromey, Ulrich Weigand, GDB Patches, Mark Kettenis

[Trying again because GMail insists on sending HTML which
sourceware.org rejects.]

> When GDB is compiled in 64 BIT mode ptrace and ptracex calls are not
defined on AIX. So, instead we check if ptrace64 is defined, if it is then
we call that instead of ptrace/x.

Have you tested the patch in both 32 bit mode and 64 bit mode for both host
GDB and target debugee? I tried the earlier version of this patch from last
year and experienced problems debugging in 32 bit mode (I no longer could
debug GCC).

ptrace, ptracex and ptrace64 are defined in syscalls.exp

ptrace64                 syscall3264
# 32
ptrace                     syscall32
ptracex                   syscall32

As you wrote, ptrace and ptracex are 32 bit only APIs; ptrace64 is
available as 32 bit and 64 bit API.  ptrace64 is suppose to support 32 bit
debugee targets, but I experienced problems.

A configure probe of ptrace64 will compile and link in 32 bit mode and
configure will discover it as available when building 32 bit GDB.

Is your intention to always use ptrace64 when it is available or only to
use it for GDB built and hosted on 64 bit mode?

Thanks, David

^ permalink raw reply	[flat|nested] 21+ messages in thread
* [PATCH 4/5] powerpc64-aix ptrace64 when defined.
@ 2013-08-01 11:28 Raunaq 12
  2013-08-01 13:26 ` Mark Kettenis
  0 siblings, 1 reply; 21+ messages in thread
From: Raunaq 12 @ 2013-08-01 11:28 UTC (permalink / raw)
  To: gdb-patches; +Cc: tromey, Mark Kettenis


When GDB is compiled in 64 BIT mode ptrace and ptracex calls are not
defined on AIX.
So, instead we check if ptrace64 is defined, if it is then we call that
instead of ptrace/x.

Kindly review this. Thanks.
---
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

^ permalink raw reply	[flat|nested] 21+ messages in thread
* [PATCH 4/5] powerpc64-aix ptrace64 when defined.
@ 2013-07-29  6:17 Raunaq 12
  0 siblings, 0 replies; 21+ messages in thread
From: Raunaq 12 @ 2013-07-29  6:17 UTC (permalink / raw)
  To: gdb-patches; +Cc: tromey, Mark Kettenis


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

^ permalink raw reply	[flat|nested] 21+ messages in thread
* [PATCH 4/5] powerpc64-aix ptrace64 when defined.
@ 2013-07-24 13:01 Raunaq 12
  0 siblings, 0 replies; 21+ messages in thread
From: Raunaq 12 @ 2013-07-24 13:01 UTC (permalink / raw)
  To: gdb-patches; +Cc: Mark Kettenis, tromey


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

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2013-09-17 18:38 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CAGWvnynVeLt6F-QREsP_CtQvwvtZgwqHxtcS6pn58LMf=AX=GA@mail.gmail.com>
2013-08-12 12:02 ` [PATCH 4/5] powerpc64-aix ptrace64 when defined Raunaq 12
2013-08-12 15:53   ` David Edelsohn
2013-08-12 12:11 ` Raunaq 12
2013-08-12 19:43   ` David Edelsohn
2013-08-22 23:32     ` Joel Brobecker
2013-08-23  0:48       ` [RFA/ppc-aix] fix thread support breakage (was: "Re: [PATCH 4/5] powerpc64-aix ptrace64 when defined.") Joel Brobecker
2013-08-23  7:23         ` David Edelsohn
2013-08-23 13:34           ` Joel Brobecker
2013-08-23 15:14             ` David Edelsohn
2013-09-10 10:16               ` Raunaq 12
2013-09-17 18:38                 ` [RFA/ppc-aix] fix thread support breakage Tom Tromey
2013-08-29 21:03         ` Checked in: [RFA/ppc-aix] fix thread support breakage (was: "Re: [PATCH 4/5] powerpc64-aix ptrace64 when defined.") Joel Brobecker
2013-08-10  2:57 [PATCH 4/5] powerpc64-aix ptrace64 when defined David Edelsohn
  -- strict thread matches above, loose matches on Subject: below --
2013-08-01 11:28 Raunaq 12
2013-08-01 13:26 ` Mark Kettenis
2013-08-02  6:56   ` Raunaq 12
     [not found]   ` <OF21D042FF.CF4E8435-ON65257BBB.0024F10A-65257BBB.00261FEF@LocalDomain>
2013-08-07 11:39     ` Raunaq 12
2013-08-07 13:36   ` Raunaq 12
2013-08-07 14:44     ` Ulrich Weigand
2013-07-29  6:17 Raunaq 12
2013-07-24 13:01 Raunaq 12

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).