SPARC: nested static initialization

Erik Volk eriksnga@gmail.com
Wed Dec 2 02:36:00 GMT 2015


On Tue, Dec 1, 2015 at 8:31 PM, Alan Modra <amodra@gmail.com> wrote:
> On Wed, Nov 25, 2015 at 01:35:29PM -0500, Erik Volk wrote:
>> The attached small test case calls a global function during static
>> initialization in a shared library. After the function address is
>> resolved but before the function is actually being called, the global
>> initialization from main executable is triggered
>
> So the process of resolving _Z8equals42d (defined in both main and
> libshared.so) which you call from _ZL13init_shared_2v, causes the
> global init in main to run.  This is likely a glibc ld.so issue, not a
> binutils problem.

Thank you for taking a look. Truly appreciated.

FWIIW: the problem also triggers when _Z8equals42d is undefined in
libshared.so; the double definition
actually came from #include <cmath> in the original code exhibiting the problem.

>
>> and registers used to
>> hold function arguments get clobbered.
>
> This also is likely a glibc issue.  You may find it better to ask
> about this problem on the glibc list.

Will do.

Thanks again!
Erik.



More information about the Binutils mailing list