diff options
| author | Hemant Kulkarni <khemant@codeaurora.org> | 2015-10-12 17:31:22 +0000 |
|---|---|---|
| committer | Hemant Kulkarni <khemant@codeaurora.org> | 2015-10-12 17:31:22 +0000 |
| commit | c07c7eddadc39a3eff299cfa4ace0d424c30cede (patch) | |
| tree | 87e625f5047420784b941b1010602e71ad1d2df7 /llvm | |
| parent | 71797c043f4ed7f53d2557f93a5f8a68c7b19a1e (diff) | |
| download | bcm5719-llvm-c07c7eddadc39a3eff299cfa4ace0d424c30cede.tar.gz bcm5719-llvm-c07c7eddadc39a3eff299cfa4ace0d424c30cede.zip | |
[llvm-symbolizer] Add -print-address option
Differential Revision http://reviews.llvm.org/D13518
llvm-svn: 250067
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/docs/CommandGuide/llvm-symbolizer.rst | 2 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-symbolizer/Inputs/addr.inp | 1 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-symbolizer/sym.test | 19 | ||||
| -rw-r--r-- | llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp | 8 |
4 files changed, 30 insertions, 0 deletions
diff --git a/llvm/docs/CommandGuide/llvm-symbolizer.rst b/llvm/docs/CommandGuide/llvm-symbolizer.rst index 96720e633f2..9d6571d5c4c 100644 --- a/llvm/docs/CommandGuide/llvm-symbolizer.rst +++ b/llvm/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/llvm/test/tools/llvm-symbolizer/Inputs/addr.inp b/llvm/test/tools/llvm-symbolizer/Inputs/addr.inp new file mode 100644 index 00000000000..4de096479da --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/addr.inp @@ -0,0 +1 @@ +0x40054d diff --git a/llvm/test/tools/llvm-symbolizer/sym.test b/llvm/test/tools/llvm-symbolizer/sym.test new file mode 100644 index 00000000000..559124a44c0 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/sym.test @@ -0,0 +1,19 @@ +#Source: +##include <stdio.h> +#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/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp index 9c9f3adbf60..b4485339b0d 100644 --- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -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")); +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) { @@ -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(); } |

