summaryrefslogtreecommitdiffstats
path: root/usr.bin/clang
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2015-01-10 22:22:42 +0000
committerdim <dim@FreeBSD.org>2015-01-10 22:22:42 +0000
commit5b61f6ef0155cc9877729f1128fd80f83c9c37be (patch)
treedb1ae25689918f4866618283622f6941f18315a0 /usr.bin/clang
parentc2061933939cb0699ccd6b948328ff5c20bf6885 (diff)
downloadFreeBSD-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/Makefile1
-rw-r--r--usr.bin/clang/llvm-symbolizer/Makefile22
-rw-r--r--usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1137
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.
+.
OpenPOWER on IntegriCloud