Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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


  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