[llvm-symbolizer] Add -print-address option
[oota-llvm.git] / tools / llvm-symbolizer / llvm-symbolizer.cpp
index 9c9f3adbf60e13c9e9f122bc180f5eb29fb9caf1..b4485339b0d48a1c5590523d619a18e603febf72 100644 (file)
@@ -73,6 +73,9 @@ static cl::list<std::string>
 ClDsymHint("dsym-hint", cl::ZeroOrMore,
            cl::desc("Path to .dSYM bundles to search for debug info for the "
                     "object files"));
 ClDsymHint("dsym-hint", cl::ZeroOrMore,
            cl::desc("Path to .dSYM bundles to search for debug info for the "
                     "object files"));
+static cl::opt<bool>
+    ClPrintAddress("print-address", cl::init(false),
+                   cl::desc("Show address before line information"));
 
 static bool parseCommand(bool &IsData, std::string &ModuleName,
                          uint64_t &ModuleOffset) {
 
 static bool parseCommand(bool &IsData, std::string &ModuleName,
                          uint64_t &ModuleOffset) {
@@ -152,6 +155,11 @@ int main(int argc, char **argv) {
     std::string Result =
         IsData ? Symbolizer.symbolizeData(ModuleName, ModuleOffset)
                : Symbolizer.symbolizeCode(ModuleName, ModuleOffset);
     std::string Result =
         IsData ? Symbolizer.symbolizeData(ModuleName, ModuleOffset)
                : Symbolizer.symbolizeCode(ModuleName, ModuleOffset);
+    if (ClPrintAddress) {
+      outs() << "0x";
+      outs().write_hex(ModuleOffset);
+      outs() << "\n";
+    }
     outs() << Result << "\n";
     outs().flush();
   }
     outs() << Result << "\n";
     outs().flush();
   }