clang mangling some static struct names?

Alfred Perlstein bright at mu.org
Sun Nov 18 16:59:12 UTC 2012


On Nov 18, 2012, at 5:37 AM, Dimitry Andric <dim at FreeBSD.org> wrote:

> On 2012-11-16 23:04, Navdeep Parhar wrote:
>> On 11/16/12 13:49, Roman Divacky wrote:
>>> Yes, it does that. iirc so that you can have things like
>>> 
>>> void foo(int cond) {
>>>   if (cond) {
>>>     static int i = 7;
>>>   } else {
>>>     static int i = 8;
>>>   }
>>> }
>>> 
>>> working correctly.
>> 
>> It's not appending the .n everywhere.  And when it does, I don't see any
>> potential collision that it prevented by doing so.  Instead, it looks
>> like the .n symbol corresponds to the nth element in the structure (so
>> this is not name mangling in the true sense).  I just don't see the
>> point in doing things this way.  It is only making things harder for
>> debuggers.
> 
> I don't think the point is making things harder for debuggers, the point
> is optimization.  Since static variables and functions can be optimized
> away, or arbitrarily moved around, you cannot count on those symbols
> being there at all.

Bro, do you even debug?



More information about the freebsd-hackers mailing list