fall back to .debug_info scan in fatal signal handler
[folly.git] / folly / experimental / symbolizer / Symbolizer.cpp
index 365aff41378d4a700bc0b7e04a506f6e8b3c850d..13fe68fa38d4ab054f7b039ccbd301a1353d0941 100644 (file)
@@ -60,7 +60,8 @@ ElfCache* defaultElfCache() {
 }  // namespace
 
 void SymbolizedFrame::set(const std::shared_ptr<ElfFile>& file,
-                          uintptr_t address) {
+                          uintptr_t address,
+                          Dwarf::LocationInfoMode mode) {
   clear();
   found = true;
 
@@ -73,12 +74,11 @@ void SymbolizedFrame::set(const std::shared_ptr<ElfFile>& file,
   file_ = file;
   name = file->getSymbolName(sym);
 
-  Dwarf(file.get()).findAddress(address, location);
+  Dwarf(file.get()).findAddress(address, location, mode);
 }
 
-
-Symbolizer::Symbolizer(ElfCacheBase* cache)
-  : cache_(cache ?: defaultElfCache()) {
+Symbolizer::Symbolizer(ElfCacheBase* cache, Dwarf::LocationInfoMode mode)
+  : cache_(cache ?: defaultElfCache()), mode_(mode) {
 }
 
 void Symbolizer::symbolize(const uintptr_t* addresses,
@@ -143,7 +143,7 @@ void Symbolizer::symbolize(const uintptr_t* addresses,
       auto const adjusted = addr - base;
 
       if (elfFile->getSectionContainingAddress(adjusted)) {
-        frame.set(elfFile, adjusted);
+        frame.set(elfFile, adjusted, mode_);
         --remaining;
       }
     }