From owner-svn-src-head@FreeBSD.ORG Sat Jan 10 22:22:44 2015 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 81528CD7; Sat, 10 Jan 2015 22:22:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6CC92CB2; Sat, 10 Jan 2015 22:22:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0AMMiZn097535; Sat, 10 Jan 2015 22:22:44 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0AMMhjf097530; Sat, 10 Jan 2015 22:22:43 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201501102222.t0AMMhjf097530@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 10 Jan 2015 22:22:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r276945 - in head: tools/build/mk usr.bin/clang usr.bin/clang/llvm-symbolizer X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Jan 2015 22:22:44 -0000 Author: dim Date: Sat Jan 10 22:22:42 2015 New Revision: 276945 URL: https://svnweb.freebsd.org/changeset/base/276945 Log: 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 Added: head/usr.bin/clang/llvm-symbolizer/ head/usr.bin/clang/llvm-symbolizer/Makefile (contents, props changed) head/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 (contents, props changed) Modified: head/tools/build/mk/OptionalObsoleteFiles.inc head/usr.bin/clang/Makefile Modified: head/tools/build/mk/OptionalObsoleteFiles.inc ============================================================================== --- head/tools/build/mk/OptionalObsoleteFiles.inc Sat Jan 10 22:11:49 2015 (r276944) +++ head/tools/build/mk/OptionalObsoleteFiles.inc Sat Jan 10 22:22:42 2015 (r276945) @@ -548,13 +548,12 @@ OLD_FILES+=usr/bin/llvm-bcanalyzer OLD_FILES+=usr/bin/llvm-diff OLD_FILES+=usr/bin/llvm-dis OLD_FILES+=usr/bin/llvm-extract -OLD_FILES+=usr/bin/llvm-ld OLD_FILES+=usr/bin/llvm-link OLD_FILES+=usr/bin/llvm-mc OLD_FILES+=usr/bin/llvm-nm OLD_FILES+=usr/bin/llvm-objdump OLD_FILES+=usr/bin/llvm-rtdyld -OLD_FILES+=usr/bin/llvm-stub +OLD_FILES+=usr/bin/llvm-symbolizer OLD_FILES+=usr/bin/macho-dump OLD_FILES+=usr/bin/opt OLD_FILES+=usr/share/man/man1/bugpoint.1.gz @@ -566,9 +565,9 @@ OLD_FILES+=usr/share/man/man1/llvm-bcana OLD_FILES+=usr/share/man/man1/llvm-diff.1.gz OLD_FILES+=usr/share/man/man1/llvm-dis.1.gz OLD_FILES+=usr/share/man/man1/llvm-extract.1.gz -OLD_FILES+=usr/share/man/man1/llvm-ld.1.gz OLD_FILES+=usr/share/man/man1/llvm-link.1.gz OLD_FILES+=usr/share/man/man1/llvm-nm.1.gz +OLD_FILES+=usr/share/man/man1/llvm-symbolizer.1.gz OLD_FILES+=usr/share/man/man1/opt.1.gz .endif Modified: head/usr.bin/clang/Makefile ============================================================================== --- head/usr.bin/clang/Makefile Sat Jan 10 22:11:49 2015 (r276944) +++ head/usr.bin/clang/Makefile Sat Jan 10 22:22:42 2015 (r276945) @@ -20,6 +20,7 @@ SUBDIR+=bugpoint \ llvm-nm \ llvm-objdump \ llvm-rtdyld \ + llvm-symbolizer \ macho-dump \ opt .endif Added: head/usr.bin/clang/llvm-symbolizer/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.bin/clang/llvm-symbolizer/Makefile Sat Jan 10 22:22:42 2015 (r276945) @@ -0,0 +1,22 @@ +# $FreeBSD$ + +.include + +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 Added: head/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.bin/clang/llvm-symbolizer/llvm-symbolizer.1 Sat Jan 10 22:22:42 2015 (r276945) @@ -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. +.