SWDEV-299162 - Add new comgr API to demangle names

Change-Id: I84174d7e40e9afff9a8ea135abadb69d580478e0
Bu işleme şunda yer alıyor:
Jatin Chaudhary
2021-08-31 12:20:52 -07:00
işlemeyi yapan: Jatin Chaudhary
ebeveyn 42d33029dc
işleme b5a57327bb
4 değiştirilmiş dosya ile 56 ekleme ve 1 silme
+45
Dosyayı Görüntüle
@@ -2894,6 +2894,51 @@ const bool Program::getLoweredNames(std::vector<std::string>* mangledNames) cons
#endif
}
bool Program::getDemangledName(const std::string& mangledName, std::string& demangledName) const {
#if defined(USE_COMGR_LIBRARY)
amd_comgr_data_t mangled_data;
amd_comgr_data_t demangled_data;
if (AMD_COMGR_STATUS_SUCCESS != amd::Comgr::create_data(AMD_COMGR_DATA_KIND_BYTES, &mangled_data))
return false;
if (AMD_COMGR_STATUS_SUCCESS !=
amd::Comgr::set_data(mangled_data, mangledName.size(), mangledName.c_str())) {
amd::Comgr::release_data(mangled_data);
return false;
}
if (AMD_COMGR_STATUS_SUCCESS != amd::Comgr::demangle_symbol_name(mangled_data, &demangled_data)) {
amd::Comgr::release_data(mangled_data);
return false;
}
size_t demangled_size = 0;
if (AMD_COMGR_STATUS_SUCCESS != amd::Comgr::get_data(demangled_data, &demangled_size, NULL)) {
amd::Comgr::release_data(mangled_data);
amd::Comgr::release_data(demangled_data);
return false;
}
demangledName.resize(demangled_size);
if (AMD_COMGR_STATUS_SUCCESS !=
amd::Comgr::get_data(demangled_data, &demangled_size,
const_cast<char*>(demangledName.data()))) {
amd::Comgr::release_data(mangled_data);
amd::Comgr::release_data(demangled_data);
return false;
}
amd::Comgr::release_data(mangled_data);
amd::Comgr::release_data(demangled_data);
return true;
#else
assert(!"No COMGR loaded");
return false;
#endif
}
bool Program::getGlobalFuncFromCodeObj(std::vector<std::string>* func_names) const {
#if defined(USE_COMGR_LIBRARY)
return getSymbolsFromCodeObj(func_names, AMD_COMGR_SYMBOL_TYPE_FUNC);