This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PR ld/17975: Useless FILE entry in symbol table for linker generated symbols


On Sun, Feb 15, 2015 at 10:46:02AM -0800, H.J. Lu wrote:
> We output a NULL STT_FILE symbol for forced local symbols so that they
> are not associated with the STT_FILE symbol for real local symbols. This
> patch makes sure that the NULL STT_FILE symbol is placed before forced
> local symbols.  OK for trunk?  I will update other expected outputs
> after this patch has been checked in.

Huh, silly me for not noticing that forced local symbols can currently
be associated with the wrong file.  Hmm, they do of course belong with
a particular file.  So...

We could keep the file association, and do away with the NULL STT_FILE
file symbol:
- In elf_link_input_bfd, replace all calls to elf_link_output_sym
  with another function that buffers up local symbols to an array
  attached to the input bfd (I think outsymbols should be free for
  this use).
- In bfd_elf_final_link, output the first all-zero symbol and section
  symbols, then follow that with a pass over globals emitting the
  forced-local symbols not associated with an input file (ie. those we
  currently output on the second pass), and buffering up other
  forced-local symbols to their input bfd.  Then loop over input bfds
  emitting the buffered local symbols.  An input bfd with locals but
  no initial STT_FILE symbol needs one to be added.  An input bfd with
  more than one STT_FILE symbol (ie. specifying more than one source
  file) needs to have another STT_FILE symbol added before the
  forced-local globals.
- Finally, output global symbols.

How does that sound?  Let me know if you're interested in implementing
this.  If not, I'll find time this week.

-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]