C++/C mangleof inconsistency for OS X

Dan Olson via Digitalmars-d digitalmars-d at puremagic.com
Tue Apr 21 07:48:50 PDT 2015


Jacob Carlborg <doob at me.com> writes:

> On 2015-04-20 18:33, Dan Olson wrote:
>> An observation on OSX w/ 2.067: mangleof for C++ (and D) names produces
>> the actual object file symbol while mangleof for C names strips a
>> leading underscore.
>>
>> Is this intended?  If so what is rationale?
>
> I don't think it's intentional. The point of "mangleof" is to evaluate
> to the actual mangled name, as it appears in the object file.

Thanks Jacob.

In that case, mangleof for extern(C) names on OS X and other systems
that add a leading underscore should include the underscore.

extern(C) int x;
version(linux) pragma(msg, foo.mangleof); // "x"
version(OSX) pragma(msg, foo.mangleof);   // "_x"

I'm trying to understand because ldc is different than dmd, and it is
related to proper debugging on systems with leading underscores.
pragma(mangle, name) is wrapped up in this too.  This needs to be right
to help D expand to other systems.
-- 
Dan


More information about the Digitalmars-d mailing list