Jump to page: 1 2
Thread overview
[Issue 15473] C++ mangling problem
Dec 24, 2015
Manu
Dec 24, 2015
Jacob Carlborg
Jan 02, 2016
Manu
Jan 26, 2016
Walter Bright
Jan 26, 2016
Manu
Jan 26, 2016
Walter Bright
Jan 26, 2016
Walter Bright
Oct 26, 2017
Walter Bright
Mar 23, 2018
Manu
Oct 22, 2018
Mathias LANG
Oct 23, 2018
Manu
December 24, 2015
https://issues.dlang.org/show_bug.cgi?id=15473

--- Comment #1 from Manu <turkeyman@gmail.com> ---
On a tangent, I'm having a lot of trouble with the fact that MSVC mangles classes differently than struct's... I feel like I need a way to control which to choose on the D side. UDA perhaps?

--
December 24, 2015
https://issues.dlang.org/show_bug.cgi?id=15473

Jacob Carlborg <doob@me.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |doob@me.com

--- Comment #2 from Jacob Carlborg <doob@me.com> ---
A(In reply to Manu from comment #1)
> On a tangent, I'm having a lot of trouble with the fact that MSVC mangles classes differently than struct's... I feel like I need a way to control which to choose on the D side. UDA perhaps?

An ugly workaround would be to specify the fully mangled name using
pragma(mangle).

--
January 02, 2016
https://issues.dlang.org/show_bug.cgi?id=15473

--- Comment #3 from Manu <turkeyman@gmail.com> ---
Here's another case:

C++:

?CreateImplInternal@Component@ep@@IEAAPEAXU?$BaseString@D@2@U?$SharedMap@U?$AVLTree@UVariant@ep@@U12@U?$Compare@UVariant@ep@@@2@@ep@@@2@@Z

D:

?CreateImplInternal@Component@ep@@IEAAPEAXU?$BaseString@D@2@U?$SharedMap@U?$AVLTree@UVariant@ep@@0U?$Compare@UVariant@ep@@@2@@ep@@@2@@Z

The difference being that same little '0U' which is meant to be 'U12@U' again.


C++ declaration:

namespace ep {
  class Component : public RefCounted, public IComponent
  {
    void* CreateImplInternal(String ComponentType, Variant::VarMap initParams);
  };
}

D declaration:

extern (C++, ep) class Component : RefCounted, IComponent
{
  void* CreateImplInternal(String componentType, Variant.VarMap initParams);
}


In both cases, the function involves, Variant::VarMap, which expands to:

  C++: ep::SharedMap<ep::AVLTree<ep::Variant, ep::Variant,
ep::Compare<ep::Variant>>>
  D: SharedMap!(AVLTree!(Variant, Variant, Compare!Variant))

That's the same type as the return value in the first issue, with the same
problem in the symbol name.
This is a pretty long symbol name, but the missing 'U12@' seems deterministic.

--
January 26, 2016
https://issues.dlang.org/show_bug.cgi?id=15473

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla@digitalmars.com

--- Comment #4 from Walter Bright <bugzilla@digitalmars.com> ---
Need complete examples, not undefined names.

--
January 26, 2016
https://issues.dlang.org/show_bug.cgi?id=15473

--- Comment #5 from Manu <turkeyman@gmail.com> ---
*sigh*, like everything, this only appears when the case becomes sufficient complex, and reduction takes ages.

I was hoping you'd able to look at the difference in the mangled names, and
infer what the problem is by the difference in attributes.
Assuming you understand the mangled names, it should be pretty revealing.

--
January 26, 2016
https://issues.dlang.org/show_bug.cgi?id=15473

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 OS|Linux                       |Windows

--
January 26, 2016
https://issues.dlang.org/show_bug.cgi?id=15473

--- Comment #6 from Walter Bright <bugzilla@digitalmars.com> ---
The mangler:

https://github.com/D-Programming-Language/dmd/blob/master/src/cppmangle.d

is useful for figuring out what the various things, like Q vs U, mean.

--
October 26, 2017
https://issues.dlang.org/show_bug.cgi?id=15473

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |C++, mangling

--
March 23, 2018
https://issues.dlang.org/show_bug.cgi?id=15473

Manu <turkeyman@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |industry

--
October 22, 2018
https://issues.dlang.org/show_bug.cgi?id=15473

Mathias LANG <pro.mathias.lang@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pro.mathias.lang@gmail.com

--- Comment #7 from Mathias LANG <pro.mathias.lang@gmail.com> ---
Do you still see this ? Without a proper way to reproduce, I don't know what we can do about this bug.

--
« First   ‹ Prev
1 2