This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: gold's target->make_symbol()
- From: Ian Lance Taylor <iant at google dot com>
- To: David Miller <davem at davemloft dot net>
- Cc: binutils at sourceware dot org
- Date: Thu, 17 Apr 2008 00:27:42 -0700
- Subject: Re: gold's target->make_symbol()
- References: <20080416.232536.65810145.davem@davemloft.net>
David Miller <davem@davemloft.net> writes:
> Gold has a target hook that seems to exist to facilitate the things
> that BFD elf backends use the BFD add symbol hook for.
>
> I need to use this to add proper support for STT_REGISTER symbols on
> sparc.
>
> But it's missing arguments :-) For example a reference to the symbol
> table entry isn't even provided. I guess this was just never
> finished.
Right.
> There are two call sites for this target hook, one has a symtab
> reference available, the second does not. But in the second case I
> don't think the hook is even needed as that function
> Symbol_table::define_special_symbol() probably does run for cases the
> target would care about. Furthermore we would need to pass different
> args as a elfcpp::Sym to parse isn't available in this case.
What I was thinking at the time was that some targets might want to
record extra information for every Symbol, and this was a good hook
for them to do so. But since Symbol is intentionally not a virtual
class, now I'm not sure this makes sense.
Maybe we should switch to a different approach. When we see an ELF
symbol with a type between STT_LOOS and STT_HIPROC we should create an
ordinary Sized_symbol, and then call a target hook to initialize it.
Unfortunately this general approach will require target hooks for
every case where we make a decision based on the symbol's type. I
can't think of a clean way to do this while keeping Symbol from having
a virtual table.
Ian