DLL symbol identity

Martin Nowak via Digitalmars-d digitalmars-d at puremagic.com
Mon May 11 07:21:01 PDT 2015


On Friday, 8 May 2015 at 05:26:01 UTC, Benjamin Thaut wrote:
> And Step 2) at program start up time. This means that symbols 
> don't have identity. If different shared libraries provide the 
> same symbol it may exist multiple times and multiple instances 
> might be in use.

Can you elaborate a bit on that?
How would you run into such an ODR violation, by linking against 
multiple import libraries that contain the same symbol?

> Any opinions on this? As both options would be quite some work 
> I don't wan't to start blindly with one and risking it being 
> rejected later in the PR.

Last time we thought about this we came to the conclusion that 
global uniqueness for symbols isn't possible, even on Unix when 
you have 2 comdat/weak typeinfos for template classes in 2 
different shared libraries but not in the executable. I suggested 
that we could wrap typeinfos for template types in something like 
TypeInfo_Comdat that would do a equality comparison based on name 
and type size.


More information about the Digitalmars-d mailing list