[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