www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 14956] New: C++ Mangling incompatible with C++11

https://issues.dlang.org/show_bug.cgi?id=14956

          Issue ID: 14956
           Summary: C++ Mangling incompatible with C++11
           Product: D
           Version: D2
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: blocker
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: ibuclaw gdcproject.org

DMD cannot link with C++ code compiled with GCC-5 because the mangling of the
mangling for basic_string has changed.

Reference: https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html

Affects the following tests:

extern(C++)
{
  void foo14a(std.basic_string!(char) *p);
  void foo14b(std.basic_string!(int) *p);
  void foo14f(std.char_traits!char* x, std.basic_string!char* p,
std.basic_string!char* q);
}


Before (C++-98):
  _Z6foo14aPSs
  _Z6foo14bPSbIiSt11char_traitsIiESaIiEE
  _Z6foo14fPSt11char_traitsIcEPSsS2_

After (C++-11):
  _Z6foo14aPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
  _Z6foo14bPNSt7__cxx1112basic_stringIiSt11char_traitsIiESaIiEEE
  _Z6foo14fPSt11char_traitsIcEPNSt7__cxx1112basic_stringIcS0_SaIcEEES6_

--
Aug 24 2015