69 typedef std::map<std::string, int>
NameMap;
79 iter = addrMap.upper_bound(addr);
82 if (iter == addrMap.begin())
94 for (
const auto &symbol: symbols)
103 SymTabOp apply_filter =
105 if (filter(symbol)) {
109 return operate(apply_filter);
116 return symbol.binding ==
binding;
125 const_iterator
begin()
const {
return symbols.begin(); }
126 const_iterator
end()
const {
return symbols.end(); }
131 bool insert(
const Symbol &symbol);
133 bool load(
const std::string &file);
134 bool empty()
const {
return symbols.empty(); }
183 AddrMap::const_iterator
i = addrMap.find(address);
184 if (i == addrMap.end())
189 return symbols.begin() + i->second;
195 NameMap::const_iterator
i =
nameMap.find(name);
199 return symbols.begin() + i->second;
211 AddrMap::const_iterator
i = addrMap.end();
212 if (!upperBound(addr, i))
217 return symbols.begin() + i->second;
225 AddrMap::const_iterator
i = addrMap.end();
226 if (!upperBound(addr, i))
230 return symbols.begin() + i->second;
242 #endif // __SYMTAB_HH__ std::vector< Symbol > SymbolVector
const_iterator find(const std::string &name) const
const_iterator findNearest(Addr addr, Addr &nextaddr) const
Find the nearest symbol equal to or less than the supplied address (e.g., the label for the enclosing...
bool upperBound(Addr addr, AddrMap::const_iterator &iter) const
SymbolTablePtr globals() const
SymbolTable debugSymbolTable
Global unified debugging symbol table (for target).
const_iterator end() const
SymbolTablePtr locals() const
SymbolTablePtr weaks() const
SymbolVector::iterator iterator
std::map< std::string, int > NameMap
SymbolTablePtr offset(Addr by) const
SymbolTablePtr operate(SymTabOp op) const
const_iterator begin() const
bool insert(const Symbol &symbol)
SymbolTablePtr mask(Addr m) const
void serialize(const ThreadContext &tc, CheckpointOut &cp)
Thread context serialization helpers.
SymbolTablePtr filter(SymTabFilter filter) const
std::function< bool(const Symbol &symbol)> SymTabFilter
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,16,32,64}_t.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
std::function< void(SymbolTable &symtab, const Symbol &symbol)> SymTabOp
std::shared_ptr< SymbolTable > SymbolTablePtr
SymbolVector::const_iterator const_iterator
std::ostream CheckpointOut
const_iterator find(Addr address) const
const_iterator findNearest(Addr addr) const
Overload for findNearestSymbol() for callers who don't care about nextaddr.
void unserialize(ThreadContext &tc, CheckpointIn &cp)
SymbolTablePtr filterByBinding(Symbol::Binding binding) const
std::multimap< Addr, int > AddrMap