Skip to content

Various incorrectly demangled symbols #4

@RootCubed

Description

@RootCubed

I came across a few symbols which weren't being demangled correctly by this tool.

  • @248@__dt__11SndAudioMgrFv: fails to demangle, should be non-virtual thunk to SndAudioMgr::~SndAudioMgr().
  • @8@4@f__2C1Fv: fails to demangle, should be virtual thunk to C1::f()
  • ptm__FM3Clsi: fails to demangle, should be ptm(int Cls::*).
    Yeah, apparently PTMs without the F are a thing.
  • f__Fr: fails to demangle, should be f(long double).
  • mDoExt_J3DModel__create__FP12J3DModelDataUlUl: fails to demangle, should be mDoExt_J3DModel__create(J3DModelData*, unsigned long, unsigned long).
    For this one, the strategy I used here was to look for the pattern __[CFQ0123456789] to find the true delimiter between method name and the rest of the symbol, but of course that could still fail. I'm not sure if there's an easy rule to always find the correct delimiter...
  • @LOCAL@drawQuad__20dDrawShadowProjMap_cFv@c_scale@3: fails to demangle, should be dDrawShadowProjMap_c::drawQuad()::c_scale
  • @STRING@__ct__19MarioLauncherLayoutFv: fails to demangle, should be MarioLauncherLayout::MarioLauncherLayout()::string literal (note that this can also have an @<number> at the end, such as @STRING@init__19MarioLauncherLayoutFRC12JMapInfoIter@1)

And a bonus symbol, if you're up for the challenge:
__opM5ClassFPCvPCv_M5ClassFPCvPCv_PA4_f__5ClassCFv, should demangle to Class::operator float (* (Class::* (Class::*)() const)() const) [4]() const (...or at least according to c++filt after compiling with g++. This isn't a valid C++ declaration, typedefs are required for this I believe)

I can provide source samples for replicating these symbols, if you need any.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions