Jump to page: 1 2
Thread overview
About demangling
Oct 11, 2012
Lubos Pintes
Oct 11, 2012
Jacob Carlborg
Oct 11, 2012
Sean Kelly
Nov 01, 2012
Dan
Nov 01, 2012
H. S. Teoh
Nov 01, 2012
Regan Heath
Nov 01, 2012
Regan Heath
Nov 01, 2012
H. S. Teoh
Nov 01, 2012
Regan Heath
Nov 01, 2012
Regan Heath
Nov 01, 2012
H. S. Teoh
October 11, 2012
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?
Thank
October 11, 2012
On 2012-10-11 15:17, Lubos Pintes 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?
> Thank

This page contains the reference for the name mangling:

http://dlang.org/abi.html

-- 
/Jacob Carlborg
October 11, 2012
On Oct 11, 2012, at 6:17 AM, Lubos Pintes <lubos.pintes@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.

October 11, 2012
On 11-10-2012 22:56, Sean Kelly wrote:
> On Oct 11, 2012, at 6:17 AM, Lubos Pintes <lubos.pintes@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

-- 
Alex Rønne Petersen
alex@lycus.org
http://lycus.org
November 01, 2012
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@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.'

I've tried:
$ echo "this & _D56TypeInfo_xS8plusauri6bsheet13balance_sheet12BalanceSheet6__initZ unq & _D55TypeInfo_S8plusauri6bsheet13balance_sheet12BalanceSheet6__initZ" > ./goo.txt
$ ./ddmangle ./goo.txt

which just hangs, and this - which does not demangle:

$ echo "this & _D56TypeInfo_xS8plusauri6bsheet13balance_sheet12BalanceSheet6__initZ unq & _D55TypeInfo_S8plusauri6bsheet13balance_sheet12BalanceSheet6__initZ" | ./ddmangle
this & _D56TypeInfo_xS8plusauri6bsheet13balance_sheet12BalanceSheet6__initZ unq & _D55TypeInfo_S8plusauri6bsheet13balance_sheet12BalanceSheet6__initZ

What is the correct way to do this?

Thanks
Dan
November 01, 2012
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@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.


T

-- 
Let's call it an accidental feature. -- Larry Wall
November 01, 2012
On Thu, 01 Nov 2012 15:40:23 -0000, H. S. Teoh <hsteoh@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@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.

There is also a bug in demangle.d, line 55:

foreach (line; stdin.byLine())

should read:

foreach (line; f.byLine())

R

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/
November 01, 2012
On Thu, 01 Nov 2012 15:40:23 -0000, H. S. Teoh <hsteoh@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@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/
November 01, 2012
On Thu, Nov 01, 2012 at 04:25:56PM -0000, Regan Heath wrote:
> On Thu, 01 Nov 2012 15:40:23 -0000, H. S. Teoh <hsteoh@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:
[...]
> >>>We even have a tool for that: https://github.com/D-Programming-Language/tools/blob/master/ddemangle.d
[...]
> Also, running this:
> 
> dmd test.d | demangle.exe -
> 
> on windows, results in this:
> 
> invalid UTF-8 sequence
[...]
> Omitting the - works, and demangle reads stdin.
[...]

https://github.com/D-Programming-Language/tools/pull/35


T

-- 
English has the lovely word "defenestrate", meaning "to execute by throwing someone out a window", or more recently "to remove Windows from a computer and replace it with something useful". :-) -- John Cowan
November 01, 2012
On Thu, 01 Nov 2012 16:25:56 -0000, Regan Heath <regan@netmail.co.nz> wrote:
> 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".

I was wrong here, this line is the issue:
  stderr.writeln(e.msg);

For some reason, when run from command prompt and passed "-" as an arg it errors.

If I run it in debug mode in VisualD it works and outputs:
  Unrecognized option -

R

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/
« First   ‹ Prev
1 2