Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Nov 2012 14:37:11 +0100
From:      Dimitry Andric <dim@FreeBSD.org>
To:        Navdeep Parhar <nparhar@gmail.com>
Cc:        freebsd-hackers@freebsd.org, Roman Divacky <rdivacky@freebsd.org>
Subject:   Re: clang mangling some static struct names?
Message-ID:  <50A8E487.1020105@FreeBSD.org>
In-Reply-To: <50A6B85F.6090707@gmail.com>
References:  <50A6A3BD.5000901@gmail.com> <20121116214919.GA41725@freebsd.org> <50A6B85F.6090707@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?50A8E487.1020105>