diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2013-02-14 13:06:18 +0000 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2013-02-14 13:06:18 +0000 |
| commit | ef8fb72fc40b321f8b61fccfebfdde6d71d8c738 (patch) | |
| tree | 896e8cc74db2723d512ac5194375d74f18a4ff32 /llvm/tools/llvm-symbolizer/LLVMSymbolize.h | |
| parent | 594d99588be93b93e5621803a50e302a92b778e7 (diff) | |
| download | bcm5719-llvm-ef8fb72fc40b321f8b61fccfebfdde6d71d8c738.tar.gz bcm5719-llvm-ef8fb72fc40b321f8b61fccfebfdde6d71d8c738.zip | |
llvm-symbolizer: speedup symbol lookup
llvm-svn: 175158
Diffstat (limited to 'llvm/tools/llvm-symbolizer/LLVMSymbolize.h')
| -rw-r--r-- | llvm/tools/llvm-symbolizer/LLVMSymbolize.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/llvm/tools/llvm-symbolizer/LLVMSymbolize.h b/llvm/tools/llvm-symbolizer/LLVMSymbolize.h index 89684ddef25..1755e1dc882 100644 --- a/llvm/tools/llvm-symbolizer/LLVMSymbolize.h +++ b/llvm/tools/llvm-symbolizer/LLVMSymbolize.h @@ -63,11 +63,8 @@ private: }; class ModuleInfo { - OwningPtr<ObjectFile> Module; - OwningPtr<DIContext> DebugInfoContext; public: - ModuleInfo(ObjectFile *Obj, DIContext *DICtx) - : Module(Obj), DebugInfoContext(DICtx) {} + ModuleInfo(ObjectFile *Obj, DIContext *DICtx); DILineInfo symbolizeCode( uint64_t ModuleOffset, const LLVMSymbolizer::Options& Opts) const; @@ -80,6 +77,19 @@ class ModuleInfo { bool getNameFromSymbolTable(SymbolRef::Type Type, uint64_t Address, std::string &Name, uint64_t &Addr, uint64_t &Size) const; + OwningPtr<ObjectFile> Module; + OwningPtr<DIContext> DebugInfoContext; + + struct SymbolDesc { + uint64_t Addr; + uint64_t AddrEnd; + friend bool operator<(const SymbolDesc& s1, const SymbolDesc& s2) { + return s1.AddrEnd <= s2.Addr; + } + }; + typedef std::map<SymbolDesc, StringRef> SymbolMapTy; + SymbolMapTy Functions; + SymbolMapTy Objects; }; } // namespace symbolize |

