| 2099 | } |
| 2100 | |
| 2101 | bool Program::getDemangledName(const std::string& mangledName, std::string& demangledName) const { |
| 2102 | amd_comgr_data_t mangled_data; |
| 2103 | amd_comgr_data_t demangled_data; |
| 2104 | |
| 2105 | if (AMD_COMGR_STATUS_SUCCESS != amd::Comgr::create_data(AMD_COMGR_DATA_KIND_BYTES, &mangled_data)) |
| 2106 | return false; |
| 2107 | |
| 2108 | if (AMD_COMGR_STATUS_SUCCESS != |
| 2109 | amd::Comgr::set_data(mangled_data, mangledName.size(), mangledName.c_str())) { |
| 2110 | amd::Comgr::release_data(mangled_data); |
| 2111 | return false; |
| 2112 | } |
| 2113 | |
| 2114 | if (AMD_COMGR_STATUS_SUCCESS != amd::Comgr::demangle_symbol_name(mangled_data, &demangled_data)) { |
| 2115 | amd::Comgr::release_data(mangled_data); |
| 2116 | return false; |
| 2117 | } |
| 2118 | |
| 2119 | size_t demangled_size = 0; |
| 2120 | if (AMD_COMGR_STATUS_SUCCESS != amd::Comgr::get_data(demangled_data, &demangled_size, NULL)) { |
| 2121 | amd::Comgr::release_data(mangled_data); |
| 2122 | amd::Comgr::release_data(demangled_data); |
| 2123 | return false; |
| 2124 | } |
| 2125 | |
| 2126 | demangledName.resize(demangled_size); |
| 2127 | |
| 2128 | if (AMD_COMGR_STATUS_SUCCESS != amd::Comgr::get_data(demangled_data, &demangled_size, |
| 2129 | const_cast<char*>(demangledName.data()))) { |
| 2130 | amd::Comgr::release_data(mangled_data); |
| 2131 | amd::Comgr::release_data(demangled_data); |
| 2132 | return false; |
| 2133 | } |
| 2134 | |
| 2135 | amd::Comgr::release_data(mangled_data); |
| 2136 | amd::Comgr::release_data(demangled_data); |
| 2137 | return true; |
| 2138 | } |
| 2139 | |
| 2140 | bool Program::getGlobalFuncFromCodeObj(std::vector<std::string>* func_names) const { |
| 2141 | return getSymbolsFromCodeObj(func_names, AMD_COMGR_SYMBOL_TYPE_FUNC); |
no test coverage detected