[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
This commit is contained in:
Hemant Kulkarni 2015-10-12 19:26:44 +00:00
parent 2fef79ea96
commit e8d28f3d7a
5 changed files with 30 additions and 0 deletions

View File

@ -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
-----------

Binary file not shown.

View File

@ -0,0 +1 @@
0x40054d

View File

@ -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

View 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"));
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();
}