From: Hemant Kulkarni Date: Mon, 12 Oct 2015 19:26:44 +0000 (+0000) Subject: [llvm-symbolizer] Add -print-address option X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=e8d28f3d7a73297b28bc60fe81ab38d116f3dc6c [llvm-symbolizer] Add -print-address option Differential Revision: http://reviews.llvm.org/D13518 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250086 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/CommandGuide/llvm-symbolizer.rst b/docs/CommandGuide/llvm-symbolizer.rst index 96720e633f2..9d6571d5c4c 100644 --- a/docs/CommandGuide/llvm-symbolizer.rst +++ b/docs/CommandGuide/llvm-symbolizer.rst @@ -98,6 +98,8 @@ OPTIONS location, look for the debug info at the .dSYM path provided via the ``-dsym-hint`` flag. This flag can be used multiple times. +.. option:: -print-address + Print address before the source code location. Defaults to false. EXIT STATUS ----------- diff --git a/test/tools/llvm-symbolizer/Inputs/addr.exe b/test/tools/llvm-symbolizer/Inputs/addr.exe new file mode 100755 index 00000000000..0d9e87dd723 Binary files /dev/null and b/test/tools/llvm-symbolizer/Inputs/addr.exe differ diff --git a/test/tools/llvm-symbolizer/Inputs/addr.inp b/test/tools/llvm-symbolizer/Inputs/addr.inp new file mode 100644 index 00000000000..4de096479da --- /dev/null +++ b/test/tools/llvm-symbolizer/Inputs/addr.inp @@ -0,0 +1 @@ +0x40054d diff --git a/test/tools/llvm-symbolizer/sym.test b/test/tools/llvm-symbolizer/sym.test new file mode 100644 index 00000000000..559124a44c0 --- /dev/null +++ b/test/tools/llvm-symbolizer/sym.test @@ -0,0 +1,19 @@ +#Source: +##include +#static inline int inc (int *a) { +# printf ("%d\n",(*a)++); +# return (*a)++; +#} +# +#int main () { +# int x = 1; +# return inc(&x); +#} +#Build as : clang -g -O2 addr.c + +RUN: llvm-symbolizer -inlining -print-address -obj=%p/Inputs/addr.exe < %p/Inputs/addr.inp | FileCheck %s + +#CHECK: 0x40054d +#CHECK: main +#CHECK: {{[/\]+}}tmp{{[/\]+}}x.c:9:0 + diff --git a/tools/llvm-symbolizer/llvm-symbolizer.cpp b/tools/llvm-symbolizer/llvm-symbolizer.cpp index 9c9f3adbf60..b4485339b0d 100644 --- a/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ b/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -73,6 +73,9 @@ static cl::list ClDsymHint("dsym-hint", cl::ZeroOrMore, cl::desc("Path to .dSYM bundles to search for debug info for the " "object files")); +static cl::opt + ClPrintAddress("print-address", cl::init(false), + cl::desc("Show address before line information")); 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); + if (ClPrintAddress) { + outs() << "0x"; + outs().write_hex(ModuleOffset); + outs() << "\n"; + } outs() << Result << "\n"; outs().flush(); }