diff options
author | dim <dim@FreeBSD.org> | 2015-01-10 22:22:42 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2015-01-10 22:22:42 +0000 |
commit | 5b61f6ef0155cc9877729f1128fd80f83c9c37be (patch) | |
tree | db1ae25689918f4866618283622f6941f18315a0 /usr.bin/clang | |
parent | c2061933939cb0699ccd6b948328ff5c20bf6885 (diff) | |
download | FreeBSD-src-5b61f6ef0155cc9877729f1128fd80f83c9c37be.zip FreeBSD-src-5b61f6ef0155cc9877729f1128fd80f83c9c37be.tar.gz |
Add the llvm-symbolizer tool, which enables the sanitizers to report
more complete debugging information. This tools is only enabled when
WITH_CLANG_EXTRAS is on.
Submitted by: Dan McGregor <danismostlikely@gmail.com>
Diffstat (limited to 'usr.bin/clang')
-rw-r--r-- | usr.bin/clang/Makefile | 1 | ||||
-rw-r--r-- | usr.bin/clang/llvm-symbolizer/Makefile | 22 | ||||
-rw-r--r-- | usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 | 137 |
3 files changed, 160 insertions, 0 deletions
diff --git a/usr.bin/clang/Makefile b/usr.bin/clang/Makefile index 9655b06..c6a3c7a 100644 --- a/usr.bin/clang/Makefile +++ b/usr.bin/clang/Makefile @@ -20,6 +20,7 @@ SUBDIR+=bugpoint \ llvm-nm \ llvm-objdump \ llvm-rtdyld \ + llvm-symbolizer \ macho-dump \ opt .endif diff --git a/usr.bin/clang/llvm-symbolizer/Makefile b/usr.bin/clang/llvm-symbolizer/Makefile new file mode 100644 index 0000000..9e3b584 --- /dev/null +++ b/usr.bin/clang/llvm-symbolizer/Makefile @@ -0,0 +1,22 @@ +# $FreeBSD$ + +.include <bsd.own.mk> + +PROG_CXX=llvm-symbolizer + +SRCDIR= tools/llvm-symbolizer +SRCS= llvm-symbolizer.cpp \ + LLVMSymbolize.cpp + +LIBDEPS=llvmdebuginfo \ + llvmobject \ + llvmmcparser \ + llvmmc \ + llvmbitreader \ + llvmcore \ + llvmsupport + +.include "../clang.prog.mk" + +DPADD+= ${LIBZ} +LDADD+= -lz diff --git a/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 b/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 new file mode 100644 index 0000000..c763ad3 --- /dev/null +++ b/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 @@ -0,0 +1,137 @@ +.\" $FreeBSD$ +.\" Man page generated from reStructuredText. +. +.TH "LLVM-SYMBOLIZER" "1" "2015-01-10" "3.5" "LLVM" +.SH NAME +llvm-symbolizer \- convert addresses into source code locations +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.SH SYNOPSIS +.sp +\fBllvm\-symbolizer\fP [options] +.SH DESCRIPTION +.sp +\fBllvm\-symbolizer\fP reads object file names and addresses from standard +input and prints corresponding source code locations to standard output. +If object file is specified in command line, \fBllvm\-symbolizer\fP reads +only addresses from standard input. This +program uses debug info sections and symbol table in the object files. +.SH EXAMPLE +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ cat addr.txt +a.out 0x4004f4 +/tmp/b.out 0x400528 +/tmp/c.so 0x710 +/tmp/mach_universal_binary:i386 0x1f84 +/tmp/mach_universal_binary:x86_64 0x100000f24 +$ llvm\-symbolizer < addr.txt +main +/tmp/a.cc:4 + +f(int, int) +/tmp/b.cc:11 + +h_inlined_into_g +/tmp/header.h:2 +g_inlined_into_f +/tmp/header.h:7 +f_inlined_into_main +/tmp/source.cc:3 +main +/tmp/source.cc:8 + +_main +/tmp/source_i386.cc:8 + +_main +/tmp/source_x86_64.cc:8 +$ cat addr2.txt +0x4004f4 +0x401000 +$ llvm\-symbolizer \-obj=a.out < addr2.txt +main +/tmp/a.cc:4 + +foo(int) +/tmp/a.cc:12 +.ft P +.fi +.UNINDENT +.UNINDENT +.SH OPTIONS +.INDENT 0.0 +.TP +.B \-obj +Path to object file to be symbolized. +.UNINDENT +.INDENT 0.0 +.TP +.B \-functions=[none|short|linkage] +Specify the way function names are printed (omit function name, +print short function name, or print full linkage name, respectively). +Defaults to \fBlinkage\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-use\-symbol\-table +Prefer function names stored in symbol table to function names +in debug info sections. Defaults to true. +.UNINDENT +.INDENT 0.0 +.TP +.B \-demangle +Print demangled function names. Defaults to true. +.UNINDENT +.INDENT 0.0 +.TP +.B \-inlining +If a source code location is in an inlined function, prints all the +inlnied frames. Defaults to true. +.UNINDENT +.INDENT 0.0 +.TP +.B \-default\-arch +If a binary contains object files for multiple architectures (e.g. it is a +Mach\-O universal binary), symbolize the object file for a given architecture. +You can also specify architecture by writing \fBbinary_name:arch_name\fP in the +input (see example above). If architecture is not specified in either way, +address will not be symbolized. Defaults to empty string. +.UNINDENT +.SH EXIT STATUS +.sp +\fBllvm\-symbolizer\fP returns 0. Other exit codes imply internal program error. +.SH AUTHOR +Maintained by The LLVM Team (http://llvm.org/). +.SH COPYRIGHT +2003-2014, LLVM Project +.\" Generated by docutils manpage writer. +. |