This is the mail archive of the
mailing list for the binutils project.
Re: [PATCH] PR ld/17975: Useless FILE entry in symbol table for linker generated symbols
- From: Alan Modra <amodra at gmail dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: binutils at sourceware dot org
- Date: Mon, 16 Feb 2015 11:34:55 +1030
- Subject: Re: [PATCH] PR ld/17975: Useless FILE entry in symbol table for linker generated symbols
- Authentication-results: sourceware.org; auth=none
- References: <20150215184602 dot GA25935 at gmail dot com>
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
- 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
- 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
- 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.
Australia Development Lab, IBM