gold patch committed: Improve special symbol version handling
Ian Lance Taylor
Tue Mar 17 07:15:00 GMT 2009
I forgot to append the patch.
Ian Lance Taylor <email@example.com> writes:
> gold uses separate routines to resolve normal symbols and symbols which
> are defined by the linker itself. The latter routine didn't do the full
> version handling of the former. This caused it to do the wrong thing in
> the case where a special symbol was seen in an object file with no
> version, and was then later defined by the linker with a version. This
> is not a normal case, but it will happen when using a linker script
> which uses "global: *;". I committed this patch to improve the
> situation. In the long run the distinction between the two types of
> symbols may be a mistake, and it may be appropriate to share more of the
> resolution routines. This would have to be done without slowing down
> the normal case, of course. I took a step toward that by having both
> version call a new define_default_version function.
> This fixes a problem on SPARC GNU/Linux, in which the
> _GLOBAL_OFFSET_TABLE_ symbol can be referenced by crti.o before any .got
> section is seen. This showed up in ver_test_8 in the gold testsuite.
> 2009-03-17 Ian Lance Taylor <firstname.lastname@example.org>
> * symtab.cc (Symbol_table::define_default_version): New function,
> broken out of add_from_object.
> (Symbol_table::add_from_object): Call define_default_version.
> (Symbol_table::define_special_symbol): Add resolve_oldsym
> parameter. Change all callers. If the version for a symbol comes
> from a version script, resolve it with the symbol with the same
> name with no version. Also add the symbol without a version if
> (do_define_in_output_data): If resolving with oldsym, don't delete
> (do_define_in_output_segment): Likewise.
> (do_define_as_constant): Likewise.
> * symtab.h (class Symbol_table): Update declarations.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 17400 bytes
Desc: Fix special symbol version handling
More information about the Binutils