Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jim Blandy <jimb@redhat.com>
To: Kevin Buettner <kevinb@redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [RFA] symtab.c: Search section table when fixing up a symbol's section
Date: Tue, 18 May 2004 17:00:00 -0000	[thread overview]
Message-ID: <vt2zn8565ey.fsf@zenia.home> (raw)
In-Reply-To: <20040517142316.3b0f4320@saguaro>

Just to make this explicit: if there are no further comments on this
by the end of Friday, feel free to commit this.

Kevin Buettner <kevinb@redhat.com> writes:
> Thanks for looking it over.
> 
> 	* symtab.c (fixup_section): Search section table when lookup by
> 	name fails.
> 
> Index: symtab.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symtab.c,v
> retrieving revision 1.129
> diff -u -p -r1.129 symtab.c
> --- symtab.c	8 Apr 2004 21:18:13 -0000	1.129
> +++ symtab.c	17 May 2004 21:13:13 -0000
> @@ -868,6 +868,62 @@ fixup_section (struct general_symbol_inf
>        ginfo->bfd_section = SYMBOL_BFD_SECTION (msym);
>        ginfo->section = SYMBOL_SECTION (msym);
>      }
> +  else if (objfile)
> +    {
> +      /* Static, function-local variables do appear in the linker
> +	 (minimal) symbols, but are frequently given names that won't
> +	 be found via lookup_minimal_symbol().  E.g., it has been
> +	 observed in frv-uclinux (ELF) executables that a static,
> +	 function-local variable named "foo" might appear in the
> +	 linker symbols as "foo.6" or "foo.3".  Thus, there is no
> +	 point in attempting to extend the lookup-by-name mechanism to
> +	 handle this case due to the fact that there can be multiple
> +	 names.
> +	 
> +	 So, instead, search the section table when lookup by name has
> +	 failed.  The ``addr'' and ``endaddr'' fields may have already
> +	 been relocated.  If so, the relocation offset (i.e. the
> +	 ANOFFSET value) needs to be subtracted from these values when
> +	 performing the comparison.  We unconditionally subtract it,
> +	 because, when no relocation has been performed, the ANOFFSET
> +	 value will simply be zero.
> +	 
> +	 The address of the symbol whose section we're fixing up HAS
> +	 NOT BEEN adjusted (relocated) yet.  It can't have been since
> +	 the section isn't yet known and knowing the section is
> +	 necessary in order to add the correct relocation value.  In
> +	 other words, we wouldn't even be in this function (attempting
> +	 to compute the section) if it were already known.
> +
> +	 Note that it is possible to search the minimal symbols
> +	 (subtracting the relocation value if necessary) to find the
> +	 matching minimal symbol, but this is overkill and much less
> +	 efficient.  It is not necessary to find the matching minimal
> +	 symbol, only its section.  
> +	 
> +	 Note that this technique (of doing a section table search)
> +	 can fail when unrelocated section addresses overlap.  For
> +	 this reason, we still attempt a lookup by name prior to doing
> +	 a search of the section table.  */
> +	 
> +      CORE_ADDR addr;
> +      struct obj_section *s;
> +
> +      addr = ginfo->value.address;
> +
> +      ALL_OBJFILE_OSECTIONS (objfile, s)
> +	{
> +	  int idx = s->the_bfd_section->index;
> +	  CORE_ADDR offset = ANOFFSET (objfile->section_offsets, idx);
> +
> +	  if (s->addr - offset <= addr && addr < s->endaddr - offset)
> +	    {
> +	      ginfo->bfd_section = s->the_bfd_section;
> +	      ginfo->section = idx;
> +	      return;
> +	    }
> +	}
> +    }
>  }
>  
>  struct symbol *


  parent reply	other threads:[~2004-05-18 17:00 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-17 19:02 [RFA] symtab.c: Search section table when fixing up a symbol'ssection Kevin Buettner
2004-05-17 21:01 ` [RFA] symtab.c: Search section table when fixing up a symbol's section Jim Blandy
2004-05-17 21:23   ` [RFA] symtab.c: Search section table when fixing up a symbol'ssection Kevin Buettner
2004-05-18  6:15     ` [RFA] symtab.c: Search section table when fixing up a symbol's section Jim Blandy
2004-05-18 17:00     ` Jim Blandy [this message]
2004-05-24 16:12       ` [RFA] symtab.c: Search section table when fixing up a symbol'ssection Kevin Buettner

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=vt2zn8565ey.fsf@zenia.home \
    --to=jimb@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=kevinb@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