Go to file
Sergio Durigan Junior 87215ad165 Fix PR remote/21852: Remote run without specifying a local binary crashes GDB
There is an assertion that is triggering when we start GDB and
instruct it to debug a remote inferior, but don't provide a local
binary, like:

  ./gdb -nx -q --data-directory=data-directory -ex "tar ext :1234" \
    -ex "set remote exec-file /bin/ls" -ex r

In this case, when calling exec_file_locate_attach to locate the
inferior, GDB is incorrectly resetting the breakpoints without a
thread/inferior even running, which causes an assertion to be
triggered:

  binutils-gdb/gdb/thread.c:1609: internal-error: scoped_restore_current_thread::scoped_restore_current_thread(): Assertion `tp != NULL' failed.
  A problem internal to GDB has been detected,
  further debugging may prove unreliable.
  Quit this debugging session? (y or n)

This happens because add_current_inferior_and_thread (on remote.c) is
breaking an invariant: making inferior_ptid point to a non-existing
thread and then calling common code, which in this case is
breakpoint_re_set.  The fix is to make sure that inferior_ptid points
to null_ptid if there is no thread present.

A testcase is provided.  Regtested on buildbot.

gdb/ChangeLog:
2017-08-23  Pedro Alves  <palves@redhat.com>

	PR remote/21852
	* remote.c (add_current_inferior_and_thread): Set inferior_ptid
	to null_ptid and switch to thread without reading the registers
	after adding the inferior.

gdb/testsuite/ChangeLog:
2017-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>

	PR remote/21852
	* gdb.server/normal.c: New file, copied from gdb.base.
	* gdb.server/run-without-local-binary.exp: New file.
2017-08-23 17:28:02 -04:00
bfd x86-64: Properly report output type when PIC is needed 2017-08-23 13:43:45 -07:00
binutils PR21990, Integer overflow in process_version_sections 2017-08-23 19:47:29 +09:30
config picflag.m4 high bit set in comment 2017-01-05 00:02:57 +10:30
cpu Update the openrisc previous program counter (ppc) when running code in the cgen based simulator. 2017-03-20 15:33:51 +00:00
elfcpp gold: Add put_ch_reserved to 64-bit Chdr_write 2017-07-28 13:40:01 -07:00
etc update-copyright.py for binutils 2017-01-05 00:03:07 +10:30
gas gas: enable PC-relative diff relocations on sparc64 2017-08-23 05:46:45 -07:00
gdb Fix PR remote/21852: Remote run without specifying a local binary crashes GDB 2017-08-23 17:28:02 -04:00
gold Add configure flag to enable gnu hash style by default. 2017-08-08 07:25:39 +09:30
gprof Updated Serbian translation for gprof 2017-08-08 11:59:32 +01:00
include compile: Add 'set compile-gcc' 2017-08-23 11:16:35 -04:00
intl
ld x86-64: Properly report output type when PIC is needed 2017-08-23 13:43:45 -07:00
libdecnumber
libiberty Import include/+libiberty/ r249883 from upstream GCC. 2017-07-02 22:09:52 +02:00
opcodes ppc-opc.c formatting 2017-08-23 19:49:29 +09:30
readline Avoid MinGW compilation warning in readline/input.c 2017-05-19 11:05:59 +03:00
sim Correct check for endianness 2017-06-02 08:04:59 -07:00
texinfo
zlib Sync ZLIB with FSF GCC sources, bringing in version 1.2.11. 2017-02-20 12:52:22 +00:00
.cvsignore
.gitattributes
.gitignore
ChangeLog * config.sub: Sync with master version in config project. 2017-04-13 02:34:19 -07:00
compile
config-ml.in
config.guess Sync top level config files with master versions in the FSF config project. 2017-03-22 14:01:03 +00:00
config.rpath
config.sub * config.sub: Sync with master version in config project. 2017-04-13 02:34:19 -07:00
configure Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
configure.ac Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS
Makefile.def Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
Makefile.in Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
Makefile.tpl Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
README
README-maintainer-mode
setup.com
src-release.sh
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.