Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Mark Kettenis <kettenis@chello.nl>
To: davidm@hpl.hp.com
Cc: kevinb@redhat.com, jjohnstn@redhat.com, gdb-patches@sources.redhat.com
Subject: Re: make inferior calls work on ia64 even when syscall is pending
Date: Wed, 31 Dec 2003 23:37:00 -0000	[thread overview]
Message-ID: <200312312333.hBVNXNvg016633@elgar.kettenis.dyndns.org> (raw)
In-Reply-To: <16371.12104.503371.251351@napali.hpl.hp.com> (message from David Mosberger on Wed, 31 Dec 2003 12:19:20 -0800)

   From: David Mosberger <davidm@napali.hpl.hp.com>
   Date: Wed, 31 Dec 2003 12:19:20 -0800

   If the gdb patch looks OK, please check it in.

David, there are two issues with the patch:

* I suspect that this approach is Linux-specific.  If so, you really
  shouldn't be adding this bit of code to the generic ia64_write_pc().
  Instead you should create a Linux-specific ia64_linux_write_pc() and
  put it in ia64-linux-tdep.c; you'll probably want to call the
  generic ia64_write_pc() from there.  Then you must hook in the
  Linux-specific version if the OSABI is GDB_OSABI_LINUX.

* You should use write_register_pid() instead of write_register().

Mark

   Thanks!

	   --david

   2003-12-31  David Mosberger  <davidm@hpl.hp.com>

	   * ia64-tdep.c (ia64_write_pc): Clear r10 after writing the
	   instruction-pointer (PC) to prevent the kernel from attempting to
	   restart an interrupt system call.

   Index: ia64-tdep.c
   ===================================================================
   RCS file: /cvs/src/src/gdb/ia64-tdep.c,v
   retrieving revision 1.106
   diff -u -r1.106 ia64-tdep.c
   --- ia64-tdep.c	13 Dec 2003 03:51:56 -0000	1.106
   +++ ia64-tdep.c	31 Dec 2003 19:49:49 -0000
   @@ -683,6 +683,17 @@

      write_register_pid (IA64_PSR_REGNUM, psr_value, ptid);
      write_register_pid (IA64_IP_REGNUM, new_pc, ptid);
   +
   +  /* We must be careful with modifying the instruction-pointer: if we
   +     just interrupt a system call, the kernel would ordinarily try to
   +     restart it when we resume the inferior, which typically results
   +     in SIGSEGV or SIGILL.  We prevent this by clearing r10, which
   +     will tell the kernel that r8 does NOT contain a valid error code
   +     and hence it will skip system-call restart.
   +
   +     The clearing of r10 is safe as long as ia64_write_pc() is only
   +     called as part of setting up an inferior call.  */
   +  write_register (IA64_GR10_REGNUM, 0);
    }

    #define IS_NaT_COLLECTION_ADDR(addr) ((((addr) >> 3) & 0x3f) == 0x3f)


  reply	other threads:[~2003-12-31 23:37 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-31 19:25 RFA: ia64 portion of libunwind patch J. Johnston
2003-10-31 20:46 ` Andrew Cagney
2003-10-31 22:55   ` David Mosberger
2003-11-07 21:47     ` Andrew Cagney
2003-11-07 22:43       ` David Mosberger
2003-11-07 23:01         ` Andrew Cagney
2003-11-07 23:12           ` David Mosberger
2003-11-07 23:38             ` Andrew Cagney
2003-11-07 23:55               ` David Mosberger
2003-11-08  0:07                 ` Andrew Cagney
2003-11-08  0:13                   ` Kevin Buettner
2003-11-08  0:27                     ` Andrew Cagney
2003-11-08  7:21                       ` David Mosberger
2003-11-09  0:13                         ` Andrew Cagney
2003-11-10 22:10                           ` David Mosberger
2003-11-10 22:43                             ` Andrew Cagney
2003-11-10 23:01                               ` David Mosberger
2003-11-26  0:11                               ` David Mosberger
2003-12-04  2:15                                 ` David Mosberger
2003-12-04  3:15                                   ` Kevin Buettner
2003-12-04 23:57                                   ` J. Johnston
2003-12-05  0:39                                     ` David Mosberger
2003-12-10 20:58                                       ` J. Johnston
2003-12-10 22:15                                         ` David Mosberger
2003-12-12 22:25                                         ` Kevin Buettner
     [not found]                                 ` <davidm@napali.hpl.hp.com>
2003-12-13  4:01                                   ` Kevin Buettner
2003-12-31 20:19                                     ` make inferior calls work on ia64 even when syscall is pending David Mosberger
2003-12-31 23:37                                       ` Mark Kettenis [this message]
2004-01-01  2:43                                         ` David Mosberger
2004-02-13  1:14                                         ` David Mosberger
2004-02-13 15:00                                           ` Mark Kettenis
2004-02-13 15:09                                             ` Andrew Cagney
2004-02-13 15:12                                             ` Andrew Cagney
2004-02-13 22:07                                               ` David Mosberger
2004-02-17 16:21                                                 ` Andrew Cagney
2004-02-23 19:58                                                   ` Kevin Buettner
2004-02-23 21:15                                                 ` Kevin Buettner
2003-11-09  1:34             ` RFA: ia64 portion of libunwind patch Marcel Moolenaar
2003-11-10 21:54               ` David Mosberger
2003-11-10 23:18                 ` Marcel Moolenaar
2003-10-31 21:36 ` Marcel Moolenaar
2003-10-31 23:00   ` David Mosberger
2003-10-31 23:42     ` Andrew Cagney
2003-10-31 23:59       ` David Mosberger

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=200312312333.hBVNXNvg016633@elgar.kettenis.dyndns.org \
    --to=kettenis@chello.nl \
    --cc=davidm@hpl.hp.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=jjohnstn@redhat.com \
    --cc=kevinb@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