public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Mark Kettenis <mark.kettenis@xs4all.nl>
To: raunaq12@in.ibm.com
Cc: gdb-patches@sourceware.org, tromey@redhat.com
Subject: Re: [PATCH 5/5] make calls to ptrace64 in aix-thread.c when defined
Date: Thu, 01 Aug 2013 13:28:00 -0000	[thread overview]
Message-ID: <201308011328.r71DS4Da001305@glazunov.sibelius.xs4all.nl> (raw)
In-Reply-To: <OF0A0D873A.A510454C-ON65257BBA.003EF54A-65257BBA.003F2B0C@in.ibm.com>	(message from Raunaq 12 on Thu, 1 Aug 2013 16:58:43 +0530)

From: Raunaq 12 <raunaq12@in.ibm.com>
Date: Thu, 1 Aug 2013 16:58:43 +0530

Calls to ptrace and ptracex do not work when we compile 64 BIT GDB on AIX.
So, we check if ptrace64 is defined, if so, then we use ptrace64 in place
of
ptrace and ptracex.

Note:- the 3rd argument to ptrace is of type int * whereas for ptrace64 it
is of type long long. So, we add a macro called addr_ptr to take care of
this.
---
ChangeLog :-
* aixthread.c: call ptrace64 instead of ptracex if defined
 Call ptrace64 instead of ptrace if defined
 Add macro addr_ptr to take care of ptrace address arguement
(pdc_read_regs): Likewise
(pdc_write_regs): Likewise
(aix_thread_resume): Likewise
(fetch_regs_kernel_thread): Likewise
(store_regs_kernel_thread): Likewise

Again, you're being sloppy here.  Sentences start with a capital
letter and end in a full stop.

---
Index: ./gdb/aix-thread.c
===================================================================
--- ./gdb.orig/aix-thread.c
+++ .gdb/aix-thread.c
@@ -237,7 +237,14 @@
   return 0;  /* Not reached.  */
 }

-/* Call ptracex (REQ, ID, ADDR, DATA, BUF).  Return success.  */
+/* Call ptracex (REQ, ID, ADDR, DATA, BUF) or
+   ptrace64 (REQ, ID, ADDR, DATA, BUF) if HAVE_PTRACE64.
+   Return success.  */
+
+#ifdef HAVE_PTRACE64
+# define ptracex(request, pid, addr, data, buf) \
+	 ptrace64 (request, pid, addr, data, buf)
+#endif

 static int
 ptrace64aix (int req, int id, long long addr, int data, int *buf)
@@ -246,14 +253,24 @@
   return ptrace_check (req, id, ptracex (req, id, addr, data, buf));
 }

-/* Call ptrace (REQ, ID, ADDR, DATA, BUF).  Return success.  */
+/* Call ptrace (REQ, ID, ADDR, DATA, BUF) or
+   ptrace64 (REQ, ID, ADDR, DATA, BUF) if HAVE_PTRACE64.
+   Return success.  */
+
+#ifdef HAVE_PTRACE64
+# define ptrace(request, pid, addr, data, buf) \
+	 ptrace64 (request, pid, addr, data, buf)
+# define addr_ptr long long
+#else
+# define addr_ptr int *
+#endif

 static int
-ptrace32 (int req, int id, int *addr, int data, int *buf)
+ptrace32 (int req, int id, addr_ptr addr, int data, int *buf)
 {
   errno = 0;
   return ptrace_check (req, id,
-		       ptrace (req, id, (int *) addr, data, buf));
+		       ptrace (req, id, (addr_ptr) addr, data, buf));
 }

 /* If *PIDP is a composite process/thread id, convert it to a
@@ -361,7 +378,7 @@
   /* Floating-point registers.  */
   if (flags & PTHDB_FLAG_FPRS)
     {
-      if (!ptrace32 (PTT_READ_FPRS, tid, (void *) fprs, 0, NULL))
+      if (!ptrace32 (PTT_READ_FPRS, tid, (addr_ptr) fprs, 0, NULL))
 	memset (fprs, 0, sizeof (fprs));
       memcpy (context->fpr, fprs, sizeof(fprs));
     }
@@ -378,7 +395,7 @@
 	}
       else
 	{
-	  if (!ptrace32 (PTT_READ_SPRS, tid, (int *) &sprs32, 0, NULL))
+	  if (!ptrace32 (PTT_READ_SPRS, tid, (addr_ptr) &sprs32, 0, NULL))
 	    memset (&sprs32, 0, sizeof (sprs32));
       	  memcpy (&context->msr, &sprs32, sizeof(sprs32));
 	}
@@ -413,13 +430,13 @@
 	ptrace64aix (PTT_WRITE_GPRS, tid,
 		     (unsigned long) context->gpr, 0, NULL);
       else
-	ptrace32 (PTT_WRITE_GPRS, tid, (int *) context->gpr, 0, NULL);
+	ptrace32 (PTT_WRITE_GPRS, tid, (addr_ptr) context->gpr, 0, NULL);
     }

  /* Floating-point registers.  */
   if (flags & PTHDB_FLAG_FPRS)
     {
-      ptrace32 (PTT_WRITE_FPRS, tid, (int *) context->fpr, 0, NULL);
+      ptrace32 (PTT_WRITE_FPRS, tid, (addr_ptr) context->fpr, 0, NULL);
     }

   /* Special-purpose registers.  */
@@ -432,7 +449,7 @@
 	}
       else
 	{
-	  ptrace32 (PTT_WRITE_SPRS, tid, (void *) &context->msr, 0, NULL);
+	  ptrace32 (PTT_WRITE_SPRS, tid, (addr_ptr) &context->msr, 0, NULL);
 	}
     }
   return 0;
@@ -997,10 +1014,10 @@
       tid[1] = 0;

       if (arch64)
-	ptrace64aix (PTT_CONTINUE, tid[0], 1,
+	ptrace64aix (PTT_CONTINUE, tid[0], (long long) 1,
 		     gdb_signal_to_host (sig), (void *) tid);
       else
-	ptrace32 (PTT_CONTINUE, tid[0], (int *) 1,
+	ptrace32 (PTT_CONTINUE, tid[0], (addr_ptr) 1,
 		  gdb_signal_to_host (sig), (void *) tid);
     }
 }
@@ -1239,7 +1256,7 @@
 	}
       else
 	{
-	  if (!ptrace32 (PTT_READ_GPRS, tid, gprs32, 0, NULL))
+	  if (!ptrace32 (PTT_READ_GPRS, tid, (addr_ptr) gprs32, 0, NULL))
 	    memset (gprs32, 0, sizeof (gprs32));
 	  for (i = 0; i < ppc_num_gprs; i++)
 	    supply_reg32 (regcache, tdep->ppc_gp0_regnum + i, gprs32[i]);
@@ -1253,7 +1270,7 @@
           || (regno >= tdep->ppc_fp0_regnum
               && regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
     {
-      if (!ptrace32 (PTT_READ_FPRS, tid, (void *) fprs, 0, NULL))
+      if (!ptrace32 (PTT_READ_FPRS, tid, (addr_ptr) fprs, 0, NULL))
 	memset (fprs, 0, sizeof (fprs));
       supply_fprs (regcache, fprs);
     }
@@ -1275,7 +1292,7 @@
 	{
 	  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);

-	  if (!ptrace32 (PTT_READ_SPRS, tid, (int *) &sprs32, 0, NULL))
+	  if (!ptrace32 (PTT_READ_SPRS, tid, (addr_ptr) &sprs32, 0, NULL))
 	    memset (&sprs32, 0, sizeof (sprs32));
 	  supply_sprs32 (regcache, sprs32.pt_iar, sprs32.pt_msr,
sprs32.pt_cr,
 			 sprs32.pt_lr, sprs32.pt_ctr, sprs32.pt_xer,
@@ -1570,9 +1587,9 @@
       else
 	{
 	  /* Pre-fetch: some regs may not be in the cache.  */
-	  ptrace32 (PTT_READ_GPRS, tid, gprs32, 0, NULL);
+	  ptrace32 (PTT_READ_GPRS, tid, (addr_ptr) gprs32, 0, NULL);
 	  fill_gprs32 (regcache, gprs32);
-	  ptrace32 (PTT_WRITE_GPRS, tid, gprs32, 0, NULL);
+	  ptrace32 (PTT_WRITE_GPRS, tid, (addr_ptr) gprs32, 0, NULL);
 	}
     }

@@ -1584,9 +1601,9 @@
               && regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
     {
       /* Pre-fetch: some regs may not be in the cache.  */
-      ptrace32 (PTT_READ_FPRS, tid, (void *) fprs, 0, NULL);
+      ptrace32 (PTT_READ_FPRS, tid, (addr_ptr) fprs, 0, NULL);
       fill_fprs (regcache, fprs);
-      ptrace32 (PTT_WRITE_FPRS, tid, (void *) fprs, 0, NULL);
+      ptrace32 (PTT_WRITE_FPRS, tid, (addr_ptr) fprs, 0, NULL);
     }

   /* Special-purpose registers.  */
@@ -1618,7 +1635,7 @@
 	  gdb_assert (sizeof (sprs32.pt_iar) == 4);

 	  /* Pre-fetch: some registers won't be in the cache.  */
-	  ptrace32 (PTT_READ_SPRS, tid, (int *) &sprs32, 0, NULL);
+	  ptrace32 (PTT_READ_SPRS, tid, (addr_ptr) &sprs32, 0, NULL);

 	  fill_sprs32 (regcache, &tmp_iar, &tmp_msr, &tmp_cr, &tmp_lr,
 		       &tmp_ctr, &tmp_xer, &tmp_fpscr);
@@ -1637,7 +1654,7 @@
 	      regcache_raw_collect (regcache, tdep->ppc_mq_regnum,
 				    &sprs32.pt_mq);

-	  ptrace32 (PTT_WRITE_SPRS, tid, (int *) &sprs32, 0, NULL);
+	  ptrace32 (PTT_WRITE_SPRS, tid, (addr_ptr) &sprs32, 0, NULL);
 	}
     }
 }


  reply	other threads:[~2013-08-01 13:28 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-01 11:30 Raunaq 12
2013-08-01 13:28 ` Mark Kettenis [this message]
2013-08-07 11:29   ` Raunaq 12
2013-08-07 11:38     ` Mark Kettenis
2013-08-07 11:45       ` Raunaq 12
2013-08-07 12:03         ` Ulrich Weigand
2013-08-07 12:36           ` Raunaq 12
2013-08-07 13:27             ` Ulrich Weigand
2013-08-07 13:32               ` Mark Kettenis
2013-08-07 14:10                 ` [PATCH 1/5] config support for powerpc64-aix Raunaq 12
2013-08-07 14:45                   ` Ulrich Weigand
  -- strict thread matches above, loose matches on Subject: below --
2013-07-29  6:17 [PATCH 5/5] make calls to ptrace64 in aix-thread.c when defined Raunaq 12
2013-07-24 13:18 Raunaq 12

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201308011328.r71DS4Da001305@glazunov.sibelius.xs4all.nl \
    --to=mark.kettenis@xs4all.nl \
    --cc=gdb-patches@sourceware.org \
    --cc=raunaq12@in.ibm.com \
    --cc=tromey@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).