[PATCH][GOLD] Do not generate .gnu.version* if no symbol versioning is used.
Ian Lance Taylor
iant@google.com
Fri Oct 16 15:33:00 GMT 2009
"Doug Kwan (關振德)" <dougkwan@google.com> writes:
> 2009-10-10 Doug Kwan <dougkwan@google.com>
>
> * dynobj.cc (Versions::Versions): Initialize version_script_.
> Only insert base version symbol definition for a shared object
> if version script defines any version versions.
> (Versions::define_base_version): New method definition.
> (Versions::add_def): Check that base version is not needed.
> (Versions::add_need): Define base version lazily.
> * dynobj.h (Versions::define_base_version): New method declaration.
> (Versions::needs_base_version_): New data member declaration.
> * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
> (check_DATA): Add no_version_test.stdout.
> (libno_version_test.so, no_version_test.o no_version_test.stdout):
> New make rules.
> * testsuite/Makefile.in: Regenerate.
> * testsuite/no_version_test.c: New file.
> * testsuite/no_version_test.sh: Ditto.
> @@ -1422,6 +1435,9 @@ Versions::add_def(const Symbol* sym, con
> gold_error(_("symbol %s has undefined version %s"),
> sym->demangled_name().c_str(), version);
>
> + // We only insert a base version for shared library.
> + gold_assert(!this->needs_base_version_);
If using -shared, this will give an error and then an assertion. We
should only give the error; the gold_assert should be in an else
clause.
> + // Create base version defintion lazily for shared library.
> + if (this->needs_base_version_)
> + this->define_base_version(dynpool);
s/defintion/definition/
This is OK with those change.
Thanks.
Ian
More information about the Binutils
mailing list