[dmd-internals] Correction to name mangling doc

Sean Kelly sean at invisibleduck.org
Tue Aug 31 08:58:02 PDT 2010


Well that explains that parsing ambiguity. I guess the unqualified "Number" value would go away then. 

Sent from my iPhone

On Aug 31, 2010, at 12:06 AM, Don Clugston <dclugston at googlemail.com> wrote:

> On 31 August 2010 05:58, Sean Kelly <sean at invisibleduck.org> wrote:
>> One other thing.  The ABI has "i Number" under "Value" for templates, but demangle() doesn't handle this and the ABI is totally silent on what it is.  Any idea?  I suppose I could just check the DMD source though.
> 
> Svn 370. Which I think was a really bad idea. The i should always be
> there, for any positive number. It's a fantasy to think that the ABI
> is stable at this point (eg, bug 3398 "Attributes inside a union
> screws data alignment" has only just been fixed). We could fix all
> remaining ABI issues in one go, then declare it stable.
> 
> Comment from the code:
>    /* This is an awful hack to maintain backwards compatibility.
>     * There really always should be an 'i' before a number, but
>     * there wasn't in earlier implementations, so to maintain
>     * backwards compatibility it is only done if necessary to disambiguate.
>     * See bugzilla 3029
>     */
> 
>> 
>> On Aug 30, 2010, at 2:22 PM, Sean Kelly wrote:
>> 
>>> I'd love for the current scheme to be considered a bug because it requires arbitrary lookahead to determine whether a symbol represents a template (see demangle.parseSymbolName, for example).  If the leading Number were removed then testing for template vs. LName would basically be a matter of checking for a digit vs. underscore.  For symbol names I've always followed C conventions, but I don't think the compiler restricts symbol names at all.
>>> 
>>> On Aug 30, 2010, at 1:00 PM, Don Clugston wrote:
>>> 
>>>> I'm not sure. See bug 3034 "Template instance name wrongly mangled as
>>>> LName". I don't know if that bug report is valid -- is it legal to
>>>> have a module name which starts with double underscores??? It does
>>>> seem to be accepted, though.
>>>> 
>>>> We need to either change the spec and mark the bug as invalid, or else
>>>> change the compiler and leave the spec as-is.
>>>> Another related mangling bug is 3043 "Template symbol arg cannot be
>>>> demangled", which I think is probably invalid.
>>>> 
>>>> On 30 August 2010 21:20, Sean Kelly <sean at invisibleduck.org> wrote:
>>>>> The ABI says this:
>>>>> 
>>>>> TemplateInstanceName:
>>>>>    __T LName TemplateArgs Z
>>>>> 
>>>>> and I think it should be:
>>>>> 
>>>>> TemplateInstanceName:
>>>>>    Number __T LName TemplateArgs Z
>>>>> 
>>>>> Any objection to my fixing it?
>>>>> _______________________________________________
>>>>> dmd-internals mailing list
>>>>> dmd-internals at puremagic.com
>>>>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>>>>> 
>>>> _______________________________________________
>>>> dmd-internals mailing list
>>>> dmd-internals at puremagic.com
>>>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>>> 
>>> _______________________________________________
>>> dmd-internals mailing list
>>> dmd-internals at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>> 
>> _______________________________________________
>> dmd-internals mailing list
>> dmd-internals at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>> 
> _______________________________________________
> dmd-internals mailing list
> dmd-internals at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-internals


More information about the dmd-internals mailing list