From e8d28f3d7a73297b28bc60fe81ab38d116f3dc6c Mon Sep 17 00:00:00 2001 From: Hemant Kulkarni Date: Mon, 12 Oct 2015 19:26:44 +0000 Subject: [PATCH 1/1] [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 --- docs/CommandGuide/llvm-symbolizer.rst | 2 ++ test/tools/llvm-symbolizer/Inputs/addr.exe | Bin 0 -> 9749 bytes test/tools/llvm-symbolizer/Inputs/addr.inp | 1 + test/tools/llvm-symbolizer/sym.test | 19 +++++++++++++++++++ tools/llvm-symbolizer/llvm-symbolizer.cpp | 8 ++++++++ 5 files changed, 30 insertions(+) create mode 100755 test/tools/llvm-symbolizer/Inputs/addr.exe create mode 100644 test/tools/llvm-symbolizer/Inputs/addr.inp create mode 100644 test/tools/llvm-symbolizer/sym.test 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 0000000000000000000000000000000000000000..0d9e87dd7232196dac17fe42d9135f0b6b1d19bb GIT binary patch literal 9749 zcmeHNZERat89w(qPMoH5+@$N0wp+c;VePcsCT$k7RcmjWrnM*cV_gCat-EnzH!(PN zWM8+*7+X+RG^_h45<(MbQpK7-aLs-js2l${T<4o{!%0DZbC6D&77uwcm^lBD`pf~k^@yhaWo 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 literal 0 HcmV?d00001 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(); } -- 2.34.1