[cxx-abi-dev] Non-cloned [cd]tors

Mark Mitchell mark at codesourcery.com
Thu Nov 19 15:02:08 UTC 2009


de Dinechin, Christophe (Integrity VM) wrote:

>> My recollection is that they were all supposed to be emitted in a
>> single COMDAT group, and that if you provided a definition of any one, you had
>> to provide all of them.  That way it doesn't matter which of those
>> COMDAT groups you ended up with.  The expectation was that they were in
>> fact multiple entry points, and thus the fact that you had to emit all
>> of them together was no big deal.
> 
> That's also my recollection, and Dennis confirmed that this is how we did it.

That's my recollection of how EDG did it too, in the sense that I think
there were fields in the IL for COMDAT group, and a COMDAT-capable
back-end could thus emit them in the right group.

For G++, I believe that there was no support for actual COMDAT groups at
the time this got implemented, and so we fell back to weak/linkonce as
the closest equivalent.  In other words, I think this is was a
quasi-known bug in the G++ implementation.  The decision to make now,
then, is whether to fix G++, or change the ABI to permit the G++
implementation.

-- 
Mark Mitchell
CodeSourcery
mark at codesourcery.com
(650) 331-3385 x713



More information about the cxx-abi-dev mailing list