struct SymbolizedFrame {
SymbolizedFrame() { }
- void set(const std::shared_ptr<ElfFile>& file, uintptr_t address);
+ void set(const std::shared_ptr<ElfFile>& file,
+ uintptr_t address,
+ Dwarf::LocationInfoMode mode);
+
void clear() { *this = SymbolizedFrame(); }
bool found = false;
fbstring demangledName() const {
return name ? demangle(name) : fbstring();
}
+
private:
std::shared_ptr<ElfFile> file_;
};
class Symbolizer {
public:
- explicit Symbolizer(ElfCacheBase* cache = nullptr);
+ static constexpr Dwarf::LocationInfoMode kDefaultLocationInfoMode =
+ Dwarf::LocationInfoMode::FAST;
+
+ explicit Symbolizer(Dwarf::LocationInfoMode mode = kDefaultLocationInfoMode)
+ : Symbolizer(nullptr, mode) {}
+
+ explicit Symbolizer(ElfCacheBase* cache,
+ Dwarf::LocationInfoMode mode = kDefaultLocationInfoMode);
/**
* Symbolize given addresses.
}
private:
- ElfCacheBase* const cache_ = nullptr;
+ ElfCacheBase* const cache_;
+ const Dwarf::LocationInfoMode mode_;
};
/**