This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [committed] SOM linkonce/common support


>  >I have tested the patch with a modified version of gcc 3.3.4.  Using
>  >the COMDAT support below, I implemented one-only support in gcc.  This
>  >provides implicit template instantiation and vastly simplified vtable
>  >and typeinfo node handling.  I was then able to build working versions
>  >of the C++ applications groff and lyx.  Previously, this wasn't possible.
>  >
>  >Installed to the trunk about 10 years too late.
> Thanks.  I've often wondered if using the SOM comdat stuff would have
> worked and made a number of things in GCC-land easier to deal with.

The gcc patch still needs a bit of cleanup but hopefully will be installed
soon.  I had looked at the gcc C++ implementation to see if the handling
of vtables and typeinfo nodes could be improved.  However, I came to
the conclusion that this was going to be difficult if not impossible.
Basically, the adopted C++ ABI for gcc is based on one with weak support.
Having noticed the comdat and common support in the linker, I thought
it might be worthwhile to see if it might be usable to provide one
only support in gcc.

The changes needed for supporting SOM comdat are pretty straightforward
and a good part of the necessary support was already present.  I guess
the reason this didn't happen ten years ago is HP didn't expose the
is_somdat flag until hpux 11.  It also helped to have the public domain
version of the linker available to see what its capabilities were.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]