2017-07-02 5 views
0

J'ai trouvé le symbole suivant dans le binaire de Factorio et trouvé le passage par C++ filt ne pourrait pas le démembrer, et la raison possible que cela pourrait se produire? Fait avec objdump, et la version du compilateur détectée est 4.8.4.symbole non-démanglable fait par GCC

_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 
+0

J'ai aussi rencontré des symboles mutilés C++ que 'C++ filt' n'a pas pu démembrer. Je pense parfois que c'est parce que le binaire a été construit avec un compilateur plus récent que le «C++ filt» sur le système. Est-ce possible ici? –

+0

mon 'C++ filt' peut démembrer ceci. 'GNU C++ filt (GNU Binutils pour Debian) 2.28' – geza

Répondre

0

Ajouter un _ supplémentaire au début du symbole et il va demangle correctement. Il est assez ridicule que je ne vais pas reproduire toute la sortie ici, mais cela commence par:

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