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: gold's target->make_symbol()


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


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