This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Solaris -z combreloc bug?
- From: "Antti Kerola" <antti dot kerola at insta dot fi>
- To: <binutils at sources dot redhat dot com>
- Cc: "Rantala Jukka-Pekka" <Jukka-Pekka dot Rantala at insta dot fi>,"Kaitajarvi Sami" <Sami dot Kaitajarvi at insta dot fi>,"Koski Aapo" <Aapo dot Koski at insta dot fi>
- Date: Thu, 21 Oct 2004 11:31:06 +0300
- Subject: Re: Solaris -z combreloc bug?
- References: <052a01c4b72b$1ced3180$4511a8c0@INSTA> <20041021074041.GK8150@bubble.modra.org>
> On Thu, Oct 21, 2004 at 08:02:06AM +0300, Antti Kerola wrote:
> > I tried to find out whether combreloc is on by default on Solaris or
not,
> > but I was unable to find anything either from the
> > source code, mailing lists or the documentation. I am obviously not
familiar
> > with binutils internals. I also could not find
> > the combreloc bug in Bugzilla.
>
> Use readelf -S or objdump -h, and look for .rela.dyn in the executable.
> If you have one, -zcombreloc was on.
>
Thank you! I tried that one out and I found .rela.dyn in both the executable
and
the shared libraries. So my analysis has not been correct.
What could then explain what I am seeing?
We are experiencing very long application start up times which is due to the
fact that the runtime
linker is spending a _lot_ of time binding symbols. Stacktrace of the
process proves that the
application is just sitting in the runtime linker. I verified this with the
LD_DEBUG variable of the
Solaris runtime linker. For example, the constructor for std::string is
bound once for each single place
where it is used. Same goes for our own symbols. With objdump -R std::string
is printed hundreds
of times in the library. Normal C-functions are just printed once even
though they are used a lot.
Antti