Go to file
Joel Brobecker 2df4d1d5c4 Dandling memory pointers in Ada catchpoints with GDB/MI.
When using the GDB/MI commands to insert a catchpoint on a specific
Ada exception, any re-evaluation of that catchpoint (for instance
a re-evaluation performed after a shared library got mapped by the
inferior) fails. For instance, with any Ada program:

    (gdb)
    -catch-exception -e program_error
    ^done,bkptno="1",bkpt={[...]}
    (gdb)
    -exec-run
    =thread-group-started,id="i1",pid="28315"
    =thread-created,id="1",group-id="i1"
    ^running
    *running,thread-id="all"
    (gdb)
    =library-loaded,[...]
    &"warning: failed to reevaluate internal exception condition for catchpoint 1: No definition of \"exec\" in current context.\n"
    &"warning: failed to reevaluate internal exception condition for catchpoint 1: No definition of \"exec\" in current context.\n"
    [...]

The same is true if using an Ada exception catchpoint.

The problem comes from the fact that that we deallocate the strings
given as arguments to create_ada_exception_catchpoint, while the latter
just makes shallow copies of those strings, thus creating dandling
pointers.

This patch fixes the issue by passing freshly allocated strings to
create_ada_exception_catchpoint, while at the same time updating
create_ada_exception_catchpoint's documentation to make it clear
that deallocating the strings is no longer the responsibility of
the caller.

gdb/ChangeLog:

        * ada-lang.c (create_ada_exception_catchpoint): Enhance
        the documentation of fields "except_string" and "condition".
        * mi/mi-cmd-catch.c (mi_cmd_catch_assert): Reallocate
        CONDITION on the heap before passing it to
        create_ada_exception_catchpoint.
        (mi_cmd_catch_exception): Likewise for EXCEPTION_NAME and
        CONDITION.

gdb/testsuite/ChangeLog:

        * gdb.ada/mi_ex_cond: New testcase.

Tested on x86_64-linux.  The "-break-list" test FAILs without
this patch.
2013-11-11 19:19:07 +04:00
bfd * elfxx-aarch64.c (_bfd_aarch64_elf_grok_prstatus): Fix hard-coded 2013-11-11 10:26:41 +00:00
binutils Add pretty-printing of .debug_gnu_pubnames, .debug_gnu_pubtypes. 2013-11-07 15:37:44 -08:00
config 2013-10-16 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-10-16 20:45:20 +00:00
cpu PR binutils/15241 2013-03-08 17:25:12 +00:00
elfcpp PowerPC64 ELFv2 support for gold. 2013-10-30 13:45:05 +10:30
etc PR other/46202: implement install-strip. 2010-11-20 19:37:58 +00:00
gas 2013-11-08 Jan-Benedict Glaw <jbglaw@lug-owl.de 2013-11-11 09:35:51 +01:00
gdb Dandling memory pointers in Ada catchpoints with GDB/MI. 2013-11-11 19:19:07 +04:00
gold Fix assert failure with --emit-relocs and .eh_frame sections. 2013-11-06 10:37:45 -08:00
gprof ChangeLog fix. 2013-11-02 17:12:59 +10:30
include 2013-10-29 Marc Glisse <marc.glisse@inria.fr> 2013-11-08 11:11:41 -07:00
intl
ld Set CPU type in BFD backend for x86_64-nacl* and i?86-nacl* targets 2013-11-07 10:00:32 -08:00
libdecnumber merge from gcc 2013-10-16 00:29:48 +00:00
libiberty 2013-10-29 Marc Glisse <marc.glisse@inria.fr> 2013-11-08 11:11:41 -07:00
opcodes Remove CpuNop from CPU_K6_2_FLAGS 2013-11-08 09:42:08 -08:00
readline * readline.c (bind_arrow_keys_internal): 2013-09-24 14:49:48 +00:00
sim sim/ChangeLog: Correct bug number in previous commit. 2013-11-07 16:14:51 +00:00
texinfo
.cvsignore
.gitignore Sync the root .gitignore file with GCC's. 2013-01-11 15:17:35 +00:00
ChangeLog * Makefile.in: Regenerate. 2013-11-08 11:11:42 -07:00
compile
config-ml.in * config-ml.in: Don't handle arc-*-elf*. 2011-03-22 20:01:13 +00:00
config.guess * config.guess: Update from config repo. 2013-04-29 15:13:53 +00:00
config.rpath Remove freebsd1 from libtool.m4 macros and config.rpath. 2011-02-13 21:00:14 +00:00
config.sub * config.guess: Update from config repo. 2013-04-29 15:13:53 +00:00
configure Disable libcilkrts when C++ is not used. 2013-11-08 11:11:42 -07:00
configure.ac Disable libcilkrts when C++ is not used. 2013-11-08 11:11:42 -07: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-10-01 Jeff Johnston <jjohnstn@redhat.com> 2013-10-01 18:14:04 +00:00
depcomp
djunpack.bat
install-sh
libtool.m4 * libtool.m4 (_LT_ENABLE_LOCK <ld -m flags>): Remove non-canonical 2013-09-20 09:51:25 +00:00
lt~obsolete.m4
ltgcc.m4
ltmain.sh Backport from Libtool: Fix relink mode to use absolute path if hardcode_minus_L. 2011-01-13 18:52:53 +00:00
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 Added Cilk runtime library (libcilkrts) into GCC. 2013-11-08 11:11:41 -07:00
Makefile.in * Makefile.in: Regenerate. 2013-11-08 11:11:42 -07:00
Makefile.tpl * Makefile.tpl: Fix typo. * Makefile.in: Regenerate. 2013-11-08 11:11:42 -07:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change Import move-if-change script from gnulib. 2011-02-12 15:47:02 +00:00
README
README-maintainer-mode
setup.com
src-release * src-release (do-proto-toplevel): Support subdir-path-prefixed 2013-10-15 20:45:52 +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.