Go to file
Joel Brobecker d631c5a779 gdbserver/lynx178: spurious SIG61 signal when resuming inferior.
On ppc-lynx178, resuming the execution of a program after hitting
a breakpoint sometimes triggers a spurious SIG61 event:

    (gdb) cont
    Continuing.

    Program received signal SIG61, Real-time event 61.
    [Switching to Thread 39]
    0x10002324 in a_test.task1 (<_task>=0x3ffff774) at a_test.adb:30
    30          select  -- Task 1

From this point on, continuing again lets the signal kill the program.
Using "signal 0" or configuring GDB to discard the signal does not
help either, as the program immediately reports the same signal again.

What happens is the following:

  - GDB sends a single-step order to gdbserver: $vCont;s:31
    This tells GDBserver to do a step using thread 0x31=49.
    GDBserver does the step, and thread 49 receives the SIGTRAP
    indicating that the step has finished.

  - GDB then sends a "continue", but this time does not specify
    which thread to continue: $vCont;c
    GDBserver uses an arbitrary thread's ptid to resume the program's
    execution (the current_inferior's ptid was chosen for that).
    See lynx-low.c:lynx_resume:

        if (ptid_equal (ptid, minus_one_ptid))
          ptid = thread_to_gdb_id (current_inferior);

So far on all LynxOS platforms, this has been good enough. But
not so on LynxOS 178. If the ptid used to resume the execution
is not the same as the thread that did the step, we get the weird
signal.

This patch fixes the problem by saving the ptid of the thread
that last caused an event, received during a call to waitpid.
The ptid is saved in per-process private data.

gdb/gdbserver/ChangeLog:

        * lynx-low.c (struct process_info_private): New type.
        (lynx_add_process): New function.
        (lynx_create_inferior, lynx_attach): Replace calls to
        add_process by calls to lynx_add_process.
        (lynx_resume): If PTID is null, then try using
        current_process()->private->last_wait_event_ptid.
        Add comments.
        (lynx_clear_inferiors): Delete.  The contents of that function
        has been inlined in lynx_mourn;
        (lynx_wait_1): Save the ptid in the process's private data.
        (lynx_mourn): Free the process' private data.  Replace call
        to lynx_clear_inferiors by call to clear_inferiors.
2013-05-17 06:47:44 +00:00
bfd daily update 2013-05-17 00:00:06 +00:00
binutils binutils/ 2013-05-15 16:36:38 +00:00
config 2013-04-30 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-04-30 12:40:42 +00:00
cpu PR binutils/15241 2013-03-08 17:25:12 +00:00
elfcpp elfcpp/ 2013-03-01 22:45:56 +00:00
etc
gas * doc/c-msp430.texi: Fix typo. 2013-05-16 16:47:14 +00:00
gdb gdbserver/lynx178: spurious SIG61 signal when resuming inferior. 2013-05-17 06:47:44 +00:00
gold gold/ 2013-05-13 17:35:22 +00:00
gprof Rotate binutils ChangeLog for 2013 2013-01-02 17:06:32 +00:00
include binutils/ChangeLog: 2013-05-10 01:08:48 +00:00
intl
ld XCOFF/AIX: Remove SEC_ALLOC flags for unmapped sections. 2013-05-10 13:08:24 +00:00
libdecnumber merge from gcc 2013-03-28 02:00:05 +00:00
libiberty merge from gcc 2013-05-10 03:03:04 +00:00
opcodes gas/ 2013-05-15 05:06:23 +00:00
readline Remove some extraneous changes in readline/terminal.c 2012-10-18 18:55:41 +00:00
sim sim: arm: add support for MOVW and MOVT instructions 2013-05-15 17:49:44 +00:00
texinfo
.cvsignore
.gitignore Sync the root .gitignore file with GCC's. 2013-01-11 15:17:35 +00:00
ChangeLog 2013-05-06 Sandra Loosemore <sandra@codesourcery.com> 2013-05-06 18:31:56 +00:00
compile
config-ml.in
config.guess * config.guess: Update from config repo. 2013-04-29 15:13:53 +00:00
config.rpath
config.sub * config.guess: Update from config repo. 2013-04-29 15:13:53 +00:00
configure 2013-04-22 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-04-22 15:25:09 +00:00
configure.ac 2013-04-22 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-04-22 15:25:09 +00:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS 2013-01-07 Jeff Johnston <jjohnstn@redhat.com> 2013-01-07 21:39:26 +00:00
COPYING.NEWLIB 2013-05-06 Sandra Loosemore <sandra@codesourcery.com> 2013-05-06 18:31:56 +00:00
depcomp
djunpack.bat
install-sh
libtool.m4 PR target/38607 2012-09-14 23:55:22 +00:00
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS MAINTAINERS: clarify policy with config/ (and other top level files) 2012-05-12 03:10:17 +00:00
Makefile.def 2013-04-22 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-04-22 17:11:22 +00:00
Makefile.in 2013-04-22 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-04-22 17:11:22 +00:00
Makefile.tpl * Makefile.tpl (BOOT_ADAFLAGS): Remove -gnata. 2013-01-11 11:48:54 +00:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
README
README-maintainer-mode
setup.com
src-release src-release: fix version look up for bfd based projects 2013-03-22 23:16:40 +00:00
symlink-tree
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.