2017-07-02 32 views
0

我在Factorio的二進制文件中發現了以下符號,並發現通過C++ filt傳遞它無法將其取消並可能導致這種情況發生?由GCC製作的un-demanglable符號

使用objdump完成,檢測到的編譯器版本是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 
+0

我也遇到過C++過濾掉''C++ filt'無法取消的符號。我認爲有時候這是因爲二進制文件是由比系統上的'C++ filt'更新的編譯器構建的。這可能嗎? –

+0

我的'C++ filt'可以解除這個問題。 'GNU C++ filt(Debian的GNU Binutils)2.28' – geza

回答

0

將一個額外的_添加到該符號的開頭,它會正確地取消處理。這是荒謬的,我不會在這裏重現整個輸出,但它始於:

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