On 14/05/2020 16:36, Jeff Law wrote:
> On Sun, 2020-05-10 at 11:10 +0200, Iain Buclaw via Gcc-patches wrote:
>> Ping
>>
>> On 03/05/2020 09:37, Iain Buclaw via Gcc-patches wrote:
>>> Ping.
>>>
>>> There is a new mangle string "Nm" in the abi to denote the @live attribute,
>>> however will add support in a follow up patch.
>>>
>>>
>>> On 15 April 2020 12:04:29 CEST, Iain Buclaw via Gcc-patches <
>>> gcc-patches@gcc.gnu.org> wrote:
>>>> Ping.
>>>>
>>>> On 04/04/2020 13:33, Iain Buclaw wrote:
>>>>> Hi,
>>>>>
>>>>> Some small improvements and clarifications have been done in the D ABI
>>>>> specification to remove all ambiguities found in the current grammar,
>>>>> this implementation now more closely resembles the spec, whilst
>>>>> maintaining compatibility with the old ABI.
>>>>>
>>>>> Three new rules have been added to the ABI.
>>>>>
>>>>> 1. Back references using 'Q', analogous to C++ substitutions, compresses
>>>>>    repeated identifiers, types, and template symbol and value parameters.
>>>>>
>>>>> 2. Template aliases to externally mangled symbols are prefixed with 'X'.
>>>>>    This includes any symbol that isn't extern(D), or has its name
>>>>>    overriden with pragma(mangle).  This fixes an ambiguity where it was
>>>>>    not clear whether 'V' was an encoded calling convention, or the next
>>>>>    template value parameter.
>>>>>
>>>>> 3. Alias parameters, templates, and tuple symbols no longer encode the
>>>>>    symbol length of its subpart.  Tuples are now terminated with 'Z'.
>>>>>    This fixes another ambiguity where the first character of the mangled
>>>>>    name can be a digit as well, so the demangler had to figure out where
>>>>>    to split the two adjacent numbers by trying out each combination.
>>>>>
>>>>> This patch was originally written by Rainer Schuetze, with clean-ups and
>>>>> backwards compatibility added by myself.
>>>>>
>>>>> Bootstrapped and regression tested on x86_linux-gnu, OK for mainline?
>>>>>
>>>>> Regards
>>>>> Iain.
>>>>>
>>>>> ---
>>>>>
>>>>> libiberty/ChangeLog:
>>>>>
>>>>> 2019-04-04  Rainer Schuetze  <r.sagita...@gmx.de>
>>>>>             Iain Buclaw  <ibuc...@gdcproject.org>
>>>>>
>>>>>   * d-demangle.c (enum dlang_symbol_kinds): Remove enum.
>>>>>   (struct dlang_info): New struct
>>>>>   (dlang_decode_backref): New function.
>>>>>   (dlang_backref): New function.
>>>>>   (dlang_symbol_backref): New function.
>>>>>   (dlang_type_backref): New function.
>>>>>   (dlang_symbol_name_p): New function.
>>>>>   (dlang_function_type_noreturn): New function.
>>>>>   (dlang_function_type): Add 'info' parameter.  Decode function
>>>>> type
>>>>>   with dlang_function_type_noreturn.
>>>>>   (dlang_function_args): Add 'info' parameter.
>>>>>   (dlang_type): Add 'info' parameter.  Handle back referenced
>>>>> types.
>>>>>   (dlang_identifier): Replace 'kind' parameter with 'info'.  Handle
>>>>> back
>>>>>   referenced symbols.  Split off decoding of plain identifiers
>>>>> to...
>>>>>   (dlang_lname): ...here.
>>>>>   (dlang_parse_mangle): Replace 'kind' parameter with
>>>>> 'info'.  Decode
>>>>>   function type and return with dlang_type.
>>>>>   (dlang_parse_qualified): Replace 'kind' parameter with 'info',
>>>>> add
>>>>>   'suffix_modifier' parameter.  Decode function type with
>>>>>   dlang_function_type_noreturn.
>>>>>   (dlang_parse_tuple): Add 'info' parameter.
>>>>>   (dlang_template_symbol_param): New function.
>>>>>   (dlang_template_args): Add 'info' parameter.  Decode symbol
>>>>> parameter
>>>>>   with dlang_template_symbol_param.  Handle back referenced values,
>>>>> and
>>>>>   externally mangled parameters.
>>>>>   (dlang_parse_template): Add 'info' parameter.
>>>>>   (dlang_demangle_init_info): New function.
>>>>>   (dlang_demangle): Initialize and pass 'info' parameter.
>>>>>   * testsuite/d-demangle-expected: Add new tests.
> OK.  I think this would fall under your "D" maintainership status.  

Thanks.  I'm not so sure about that though, despite yes this only touches the
"D" support files in libiberty.

The next two patches I have lined up will be additions of a few lines (support
for @live and variadic parameter attributes), so I feel more inclined to commit
them as obvious without review, unlike this change which is more substantial.

Iain.

Reply via email to