From: Elena Zannoni <ezannoni@redhat.com>
To: Alexandre Oliva <aoliva@redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: non-contiguous files break dwarf2 init-file recognition
Date: Wed, 11 Dec 2002 14:41:00 -0000 [thread overview]
Message-ID: <15863.48536.252516.926020@localhost.redhat.com> (raw)
In-Reply-To: <orznrcjj1l.fsf@free.redhat.lsd.ic.unicamp.br>
Alexandre Oliva writes:
> If an object file contains functions in CODE sections that are mapped
> to different segments, or just non-contiguous memory areas, and the
> entry point of the program happens to be in between such areas, we may
> end up picking the wrong comp_unit as init file. This patch fixes it
> (as long as the code of the init file itself is contiguous, this
> should be fine, otherwise the whole thing has to be redesigned). Ok
> to install?
>
How odd. I am just looking at an old patch that was dealing with
DW_AT_ranges, from rth:
http://sources.redhat.com/ml/gdb-patches/2001-12/msg00616.html I am
trying tointegrate that at the moment because the lexical blocks are
broken. (see gdb gnats pr 833). Would that patch help you here?
Probably not.
Elena
> Index: gdb/ChangeLog
> from Alexandre Oliva <aoliva@redhat.com>
>
> * dwarf2read.c (read_file_scope): Handle non-contiguous
> comp_units, testing entry_point for every subprogram.
>
> Index: gdb/dwarf2read.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/dwarf2read.c,v
> retrieving revision 1.78
> diff -u -p -r1.78 dwarf2read.c
> --- gdb/dwarf2read.c 11 Dec 2002 20:55:37 -0000 1.78
> +++ gdb/dwarf2read.c 11 Dec 2002 21:42:29 -0000
> @@ -1710,9 +1710,15 @@ read_file_scope (struct die_info *die, s
> struct die_info *child_die;
> bfd *abfd = objfile->obfd;
> struct line_header *line_header = 0;
> + CORE_ADDR entry_point = objfile->ei.entry_point - baseaddr;
> + int init_file = 0;
>
> if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, objfile))
> {
> + if (entry_point >= lowpc && entry_point < highpc
> + && lowpc != ((CORE_ADDR) -1))
> + init_file = 1;
> +
> if (die->has_children)
> {
> child_die = die->next;
> @@ -1724,6 +1730,17 @@ read_file_scope (struct die_info *die, s
>
> if (dwarf2_get_pc_bounds (child_die, &low, &high, objfile))
> {
> + /* We want to do this test per subprogram, so
> + that, if the comp_unit is not contiguous
> + (e.g., it has code in several sections that
> + are not mapped to a single segment, such that
> + there is code from other comp_units
> + interspersed with code from this one), we
> + don't get false positives. */
> + if (entry_point >= low && entry_point < high
> + && lowpc != ((CORE_ADDR) -1))
> + init_file = 1;
> +
> lowpc = min (lowpc, low);
> highpc = max (highpc, high);
> }
> @@ -1760,8 +1777,7 @@ read_file_scope (struct die_info *die, s
> }
> }
>
> - if (objfile->ei.entry_point >= lowpc &&
> - objfile->ei.entry_point < highpc)
> + if (init_file)
> {
> objfile->ei.entry_file_lowpc = lowpc;
> objfile->ei.entry_file_highpc = highpc;
>
> --
> Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
> Red Hat GCC Developer aoliva@{redhat.com, gcc.gnu.org}
> CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org}
> Free Software Evangelist Professional serial bug killer
next prev parent reply other threads:[~2002-12-11 22:34 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-11 14:27 Alexandre Oliva
2002-12-11 14:41 ` Elena Zannoni [this message]
2002-12-11 20:36 ` Alexandre Oliva
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=15863.48536.252516.926020@localhost.redhat.com \
--to=ezannoni@redhat.com \
--cc=aoliva@redhat.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox