Search code examples
c++debug-symbolsgcc4.8

un-demanglable symbol made by GCC


I found the following symbol in Factorio's binary and found passing it through C++filt couldnt demangle it, and possible reason this could be occuring?

Done using objdump, and the detected compiler version is 4.8.4.

_ZN9MplVectorIJ13PrototypeListI20CustomInputPrototypeES0_I22EquipmentGridPrototypeES0_I13ItemPrototypeES0_I13TilePrototypeES0_I19DecorativePrototypeES0_I19TechnologyPrototypeES0_I15EntityPrototypeES0_I14RecipeCategoryES0_I12ItemSubGroupES0_I9ItemGroupES0_I14FluidPrototypeES0_I22VirtualSignalPrototypeES0_I12AmmoCategoryES0_I12RailCategoryES0_I12FuelCategoryES0_I16ResourceCategoryES0_I18EquipmentPrototypeES0_I10NoiseLayerES0_I16AutoplaceControlES0_I10DamageTypeE19RecipePrototypeListS0_I20AchievementPrototypeES0_I14ModuleCategoryES0_I17EquipmentCategoryES0_I19ModSettingPrototypeEEE11forEachImplIZNK3Map4saveER13MapSerialiserP16ProgressObserverEUlT_E0_S2_JS4_S6_S8_SA_SC_SE_SG_SI_SK_SM_SO_SQ_SS_SU_SW_SY_S10_S12_S14_S15_S17_S19_S1B_S1D_EEEvOS1L_+0x1fac

Solution

  • Add an extra _ to the beginning of the symbol and it'll demangle properly. It's ridiculous enough that I won't reproduce the whole output here, but it begins with:

    void MplVector<
        PrototypeList<CustomInputPrototype>,
        PrototypeList<EquipmentGridPrototype>,