James Carlson wrote:
> Scott L. Burson writes:
>> On second thought, you're right, I should send you a tarball of objects and 
>> an ld command.  There's no reason I should put myself in the middle of your 
>> edit/compile/test loop.  Let me get that put together.  It's going to be 
>> large, probably way too large for email; is there a public FTP server I can 
>> upload it to?
> 
> If you don't an FTP site of your own, you might be able to use
> supportuploads.sun.com, as long as you're trying to contact only Sun
> employees (others can't download from there).
> 
> Another possible avenue would be putting it up as a file on
> www.opensolaris.org; all you need is 'leader' access on some project
> or community.
> 
> Still another would be filing a bug via defect.opensolaris.org, and
> then adding an attachment to the the bug.
> 


Scott sent me a couple of largish tarballs, and we're in business.
I can confirm that the link is very slow (about 18 min with profiling
turned on). Profiling shows that almost all the runtime is going into
the code that implements GNU linkonce section processing, implemented by
the fixes for:

        6354160 Solaris linker includes more than one copy of code
                in binary when linking gnu object code
        6423746 add an option to relax the resolution of COMDAT relocs
        6735939 ld(1) discarded symbol relocations errors (Studio and GNU)

GNU linkonce sections are emitted by older gcc compilers. The Sun compilers
don't emit these sections, and instead use section groups, an approach that
is also used by the newer gcc compilers (version 4).

So, we will certainly need to refine the algorithms used for this support.
Our current support assumed that GNU linkonce sections are going away, so
we used very simple linear algorithms to implement it. Clearly, they don't
hold up to a link of this size. I'll be filing a CR once I have more
information.

That said, GNU linkonce sections *are* going away, though not as fast
as I would like. You might explore using either the Sun compilers, or
the new gcc 4.3 series in order to avoid them and get around this.

- Ali


Reply via email to