* linux-nat.c (kill_lwp): Minor cleanup, move definition of
	tkill_failed into ifdef HAVE_TKILL_SYSCALL.  Move setting of errno
	there too.  Delete unnecessary resetting of errno after syscall.
	Minor comment changes to match gdbserver/linux-low.c:kill_lwp.

	gdbserver/
	* linux-low.c (kill_lwp): Use __NR_tkill instead of SYS_tkill.
	Move definition of tkill_failed to ifdef __NR_tkill to avoid gcc
	warning ifndef __NR_tkill.  Move setting of errno there too.
	Delete unnecessary resetting of errno after syscall.
	Minor comment changes to match gdb/linux-nat.c:kill_lwp.
This commit is contained in:
Doug Evans 2009-12-21 21:23:43 +00:00
parent 10e86dd778
commit c5f62d5ff9
4 changed files with 47 additions and 28 deletions

View File

@ -1,3 +1,10 @@
2009-12-21 Doug Evans <dje@google.com>
* linux-nat.c (kill_lwp): Minor cleanup, move definition of
tkill_failed into ifdef HAVE_TKILL_SYSCALL. Move setting of errno
there too. Delete unnecessary resetting of errno after syscall.
Minor comment changes to match gdbserver/linux-low.c:kill_lwp.
2009-12-21 Alan Modra <amodra@gmail.com>
* MAINTAINERS: Update my email address.

View File

@ -1,5 +1,11 @@
2009-12-21 Doug Evans <dje@google.com>
* linux-low.c (kill_lwp): Use __NR_tkill instead of SYS_tkill.
Move definition of tkill_failed to ifdef __NR_tkill to avoid gcc
warning ifndef __NR_tkill. Move setting of errno there too.
Delete unnecessary resetting of errno after syscall.
Minor comment changes to match gdb/linux-nat.c:kill_lwp.
* configure.ac: Check for dladdr.
* config.in: Regenerate.
* configure: Regenerate.

View File

@ -1572,25 +1572,29 @@ linux_wait (ptid_t ptid,
return event_ptid;
}
/* Send a signal to an LWP. For LinuxThreads, kill is enough; however, if
thread groups are in use, we need to use tkill. */
/* Send a signal to an LWP. */
static int
kill_lwp (unsigned long lwpid, int signo)
{
static int tkill_failed;
/* Use tkill, if possible, in case we are using nptl threads. If tkill
fails, then we are not using nptl threads and we should be using kill. */
errno = 0;
#ifdef __NR_tkill
{
static int tkill_failed;
#ifdef SYS_tkill
if (!tkill_failed)
{
int ret = syscall (SYS_tkill, lwpid, signo);
if (errno != ENOSYS)
return ret;
errno = 0;
tkill_failed = 1;
}
if (!tkill_failed)
{
int ret;
errno = 0;
ret = syscall (__NR_tkill, lwpid, signo);
if (errno != ENOSYS)
return ret;
tkill_failed = 1;
}
}
#endif
return kill (lwpid, signo);

View File

@ -2034,27 +2034,29 @@ linux_nat_resume (struct target_ops *ops,
target_async (inferior_event_handler, 0);
}
/* Issue kill to specified lwp. */
static int tkill_failed;
/* Send a signal to an LWP. */
static int
kill_lwp (int lwpid, int signo)
{
errno = 0;
/* Use tkill, if possible, in case we are using nptl threads. If tkill
fails, then we are not using nptl threads and we should be using kill. */
/* Use tkill, if possible, in case we are using nptl threads. If tkill
fails, then we are not using nptl threads and we should be using kill. */
#ifdef HAVE_TKILL_SYSCALL
if (!tkill_failed)
{
int ret = syscall (__NR_tkill, lwpid, signo);
if (errno != ENOSYS)
return ret;
errno = 0;
tkill_failed = 1;
}
{
static int tkill_failed;
if (!tkill_failed)
{
int ret;
errno = 0;
ret = syscall (__NR_tkill, lwpid, signo);
if (errno != ENOSYS)
return ret;
tkill_failed = 1;
}
}
#endif
return kill (lwpid, signo);