Go to file
Joel Brobecker 50f8ea949d missing check against overlay_debugging in objfiles.c
This fixes a problem where the debugger is trying to locate a minimal
symbol from its address, when the symbol is inside a section whose
VMA is different from its LMA.

We have a program that was built on ppc-elf using a linker script
such that data sections are placed in ROM, and then loaded onto RAM
at execution.  So their VMA addresses are indeed different from
their LMA address.

Unfortunately, there is one place where GDB gets slightly confused
into thinking that these data sections are overlayed, while it's
not the case here.  This show up when trying to print the list of
Ada tasks, where GDB is unable to determine their names, and thus
prints a generic `Ravenscar task' instead:

    (gdb) info tasks
       ID       TID P-ID Pri State                  Name
        1     1d580      127 Delay Sleep            Ravenscar task
        2     183f8      127 Delay Sleep            Ravenscar task
    *   3     13268      127 Runnable               Ravenscar task

We expected:

    (gdb) info tasks
       ID       TID P-ID Pri State                  Name
        1     1d580      127 Delay Sleep            environment_task
        2     183f8      127 Delay Sleep            raven2
    *   3     13268      127 Runnable               raven1

The name of the task is determined by looking up the symbol table
using the task ID, which is the address where the symbol is defined.
So, ada-tasks calls...

    msym = lookup_minimal_symbol_by_pc (task_id);

... which in turn first tries to determine the section associated
to this address (find_pc_section), which itself uses a map of sections
to find it. The map itself is recomputed every time objfiles are
loaded/changed by `update_section_map'. And `update_section_map'
relies on `insert_section_p' to determine whether the section should
be inserted in the map or not.

This is where things get interesting for us, because `insert_section_p'
simply rejects overlay sections:

  if (lma != 0 && lma != bfd_section_vma (abfd, section)
      && (bfd_get_file_flags (abfd) & BFD_IN_MEMORY) == 0)
    /* This is an overlay section.  IN_MEMORY check is needed to avoid
       discarding sections from the "system supplied DSO" (aka vdso)
       on some Linux systems (e.g. Fedora 11).  */
    return 0;

However, it shouldn't reject our section in this case, since overlay
debugging is off.  The fix is to add a check that overlay debugging
is active before rejecting the section.  This is similar to what is
done in `section_is_overlay' (which takes obj_section objects), for
instance.

gdb/Changelog:

        * objfiles.c (insert_section_p): Do not detect overlay sections
        if overlay debugging is off.
2011-12-21 07:11:52 +00:00
bfd bfd: 2011-12-19 15:42:37 +00:00
binutils binutils/ 2011-12-16 10:23:01 +00:00
config config/: 2011-12-20 17:01:30 +00:00
cpu * frv.opc (parse_uhi16): Fix handling of %hi operator on 64-bit 2011-12-15 10:21:51 +00:00
elfcpp ELFOSABI_GNU 2011-07-03 13:45:32 +00:00
etc PR other/46202: implement install-strip. 2010-11-20 19:37:58 +00:00
gas bfd: 2011-12-19 15:42:37 +00:00
gdb missing check against overlay_debugging in objfiles.c 2011-12-21 07:11:52 +00:00
gold * object.h (Relobj::local_symbol_value): New function. 2011-12-19 21:07:16 +00:00
gprof * hist.c (hist_assign_samples_1): Update comment. 2011-10-26 09:51:57 +00:00
include 2011-12-19 Chung-Lin Tang <cltang@codesourcery.com> 2011-12-19 07:58:02 +00:00
intl merge from gcc 2010-09-27 21:01:18 +00:00
ld * emulparams/elf32bmip.sh (OTHER_SECTIONS): Put .mdebug.* and 2011-12-20 17:55:24 +00:00
libdecnumber config/: 2011-12-20 17:01:30 +00:00
libiberty merge from gcc 2011-12-20 19:02:08 +00:00
opcodes * frv.opc (parse_uhi16): Fix handling of %hi operator on 64-bit 2011-12-15 10:21:51 +00:00
readline 2011-05-11 Sterling Augustine <saugustine@google.com> 2011-10-12 00:23:23 +00:00
sim Work around Solaris bourne shell limitation when building the sim 2011-12-19 04:33:39 +00:00
texinfo
.cvsignore
.gitignore start a gitignore 2010-11-17 19:34:59 +00:00
ChangeLog * configure: Regenerate. 2011-12-18 10:20:52 +00:00
compile
config-ml.in * config-ml.in: Don't handle arc-*-elf*. 2011-03-22 20:01:13 +00:00
config.guess Sync from upstream: 2011-06-06 10:36:06 +00:00
config.rpath Remove freebsd1 from libtool.m4 macros and config.rpath. 2011-02-13 21:00:14 +00:00
config.sub * config.sub: Update to version 2011-10-29 (added rl78) 2011-11-02 00:56:53 +00:00
configure * configure: Regenerate. 2011-12-18 10:20:52 +00:00
configure.ac 2011-11-09 Roland McGrath <mcgrathr@google.com> 2011-11-09 18:57:30 +00:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS 2011-12-15 Jeff Johnston <jjohnstn@redhat.com> 2011-12-15 22:59:14 +00:00
COPYING.NEWLIB 2010-12-02 Jeff Johnston <jjohnstn@redhat.com> 2010-12-02 20:05:11 +00:00
depcomp
djunpack.bat
install-sh
libtool.m4 Remove freebsd1 from libtool.m4 macros and config.rpath. 2011-02-13 21:00:14 +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 Import move-if-change script from gnulib. 2011-02-12 15:47:02 +00:00
Makefile.def 2011-11-09 Roland McGrath <mcgrathr@google.com> 2011-11-09 18:57:30 +00:00
Makefile.in 2011-11-09 Roland McGrath <mcgrathr@google.com> 2011-11-09 18:57:30 +00:00
Makefile.tpl 2011-11-09 Roland McGrath <mcgrathr@google.com> 2011-11-09 18:57:30 +00: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 Include the <root>/cpu/ dir in GDB releases 2011-08-19 15:48:36 +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.