About demangling

Regan Heath regan at netmail.co.nz
Thu Nov 1 09:25:56 PDT 2012


On Thu, 01 Nov 2012 15:40:23 -0000, H. S. Teoh <hsteoh at quickfur.ath.cx>  
wrote:

> On Thu, Nov 01, 2012 at 03:16:25PM +0100, Dan wrote:
>> On Thursday, 11 October 2012 at 21:04:28 UTC, Alex Rønne Petersen
>> wrote:
>> >On 11-10-2012 22:56, Sean Kelly wrote:
>> >>On Oct 11, 2012, at 6:17 AM, Lubos Pintes
>> >><lubos.pintes at gmail.com> wrote:
>> >>
>> >>>Hi,
>> >>>Can someone point me to some source with information about
>> >>>name demangling when compiling some D program and the famous
>> >>>linker error 42 appears?
>> >>
>> >>Filter the symbol names through core.demangle.
>> >>
>> >
>> >We even have a tool for that:
>> >https://github.com/D-Programming-Language/tools/blob/master/ddemangle.d
>>
>> Does this work and if so how? I've seen a thread about the demangling
>> tool not working on types, just functions. The comment at top of this
>> file says "Replaces *all* occurrences of mangled D symbols in the
>> input..." so I assume it deals with types? The help says: 'If
>> <inputfile> is a single dash '-', standard input is read.'
> [...]
>
> This program only calls the library core.demangle. So if core.demangle
> doesn't demangle something, then it won't get demangled. The problem is,
> there's a comment in core.demangle that seems to say that some mangled
> symbols are skipped because they are not pertinent to the ABI, or
> something to that effect. Meaning that *not* all symbols are getting
> demangled.
>
> I think this should be an enhancement request in the bugtracker.

Also, running this:

dmd test.d | demangle.exe -

on windows, results in this:

invalid UTF-8 sequence

Usage: demangle.exe [options] <inputfile>
Demangles all occurrences of mangled D symbols in the input and writes to
standard output.
If <inputfile> is a single dash '-', standard input is read.
Options:
     --help, -h    Show this help

Adding writefln to demangle.d to debug the issue shows that args[1] is "-"  
and that getopt is throwing the exception "invalid UTF-8 sequence".

Omitting the - works, and demangle reads stdin.

R

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d-learn mailing list