| 273 | } |
| 274 | |
| 275 | const char* |
| 276 | AbstractUnwinder::getNonInlineSymbolName(Dwfl_Module* mod, Dwarf_Addr pc) const |
| 277 | { |
| 278 | auto item = d_symbol_by_pc_cache.find(pc); |
| 279 | if (item != d_symbol_by_pc_cache.end()) { |
| 280 | return item->second; |
| 281 | } |
| 282 | |
| 283 | GElf_Sym sym; |
| 284 | GElf_Off offset; |
| 285 | const char* raw_symname = dwfl_module_addrinfo(mod, pc, &offset, &sym, nullptr, nullptr, nullptr); |
| 286 | d_symbol_by_pc_cache.emplace(pc, raw_symname); |
| 287 | return raw_symname; |
| 288 | } |
| 289 | |
| 290 | std::vector<NativeFrame> |
| 291 | AbstractUnwinder::gatherFrames(const std::vector<Frame>& frames) const |
nothing calls this directly
no outgoing calls
no test coverage detected