[gold patch] Fix incremental update problems with shared objects and versioned symbols
Cary Coutant
ccoutant@google.com
Mon Oct 10 20:40:00 GMT 2011
>> 2011-09-27 Cary Coutant <ccoutant@google.com>
>>
>> * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
>> Check for NULL.
>> * gold/symtab.cc (Symbol_table::add_from_relobj): Ignore version
>> symbols during incremental update.
>> (Symbol_table::add_from_dynobj): Likewise.
>
> This is OK.
I've been thinking about how to fix this right, and I'm tending
towards the belief that it's fine as is. In order to track the
versions of defined symbols, I don't think it would be enough to use
the version sections in the a.out, because those won't necessarily
contain versions for all the symbols defined in shared libraries.
Therefore, I'd have to record version definitions for the symbols in
the incremental link info for each shared library. Once a full link
has resolved all the symbols, though, the only danger in ignoring
versions in subsequent incremental updates is that a changed file
might explicitly reference a different version of a library entry
point. I wonder what the likelihood is of that, and whether there
might be easier ways of detecting that and forcing a fallback to a
full link in that case.
What do you think?
-cary
More information about the Binutils
mailing list