[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