[Zrouter-src-freebsd] ZRouter.org: push to FreeBSD HEAD tree

zrouter-src-freebsd at zrouter.org zrouter-src-freebsd at zrouter.org
Fri Mar 2 15:38:45 UTC 2012


details:   http://zrouter.org/hg/FreeBSD/head//rev/a085b3559102
changeset: 373:a085b3559102
user:      ray at terran.dlink.ua
date:      Fri Mar 02 17:02:21 2012 +0200
description:
Update to FreeBSD-HEAD @232391

diffstat:

 head/usr.bin/ar/ar.c                                 |    6 +-
 head/usr.bin/chkey/chkey.c                           |    8 +-
 head/usr.bin/chpass/util.c                           |    6 +-
 head/usr.bin/clang/bugpoint/Makefile                 |   34 +
 head/usr.bin/clang/bugpoint/bugpoint.1               |  291 +++++++++++
 head/usr.bin/clang/llc/Makefile                      |   45 +
 head/usr.bin/clang/llc/llc.1                         |  285 +++++++++++
 head/usr.bin/clang/lli/Makefile                      |   35 +
 head/usr.bin/clang/lli/lli.1                         |  310 ++++++++++++
 head/usr.bin/clang/llvm-ar/Makefile                  |   14 +
 head/usr.bin/clang/llvm-ar/llvm-ar.1                 |  461 +++++++++++++++++++
 head/usr.bin/clang/llvm-as/Makefile                  |   14 +
 head/usr.bin/clang/llvm-as/llvm-as.1                 |  182 +++++++
 head/usr.bin/clang/llvm-bcanalyzer/Makefile          |   13 +
 head/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1 |  370 +++++++++++++++
 head/usr.bin/clang/llvm-diff/Makefile                |   16 +
 head/usr.bin/clang/llvm-diff/llvm-diff.1             |  175 +++++++
 head/usr.bin/clang/llvm-dis/Makefile                 |   17 +
 head/usr.bin/clang/llvm-dis/llvm-dis.1               |  175 +++++++
 head/usr.bin/clang/llvm-extract/Makefile             |   22 +
 head/usr.bin/clang/llvm-extract/llvm-extract.1       |  195 ++++++++
 head/usr.bin/clang/llvm-ld/Makefile                  |   25 +
 head/usr.bin/clang/llvm-ld/llvm-ld.1                 |  319 +++++++++++++
 head/usr.bin/clang/llvm-link/Makefile                |   21 +
 head/usr.bin/clang/llvm-link/llvm-link.1             |  190 +++++++
 head/usr.bin/clang/llvm-mc/Makefile                  |   46 +
 head/usr.bin/clang/llvm-nm/Makefile                  |   14 +
 head/usr.bin/clang/llvm-nm/llvm-nm.1                 |  219 +++++++++
 head/usr.bin/clang/llvm-objdump/Makefile             |   49 ++
 head/usr.bin/clang/llvm-prof/Makefile                |   15 +
 head/usr.bin/clang/llvm-prof/llvm-prof.1             |  173 +++++++
 head/usr.bin/clang/llvm-ranlib/Makefile              |   14 +
 head/usr.bin/clang/llvm-ranlib/llvm-ranlib.1         |  167 ++++++
 head/usr.bin/clang/llvm-rtdyld/Makefile              |   48 +
 head/usr.bin/clang/llvm-stub/Makefile                |    9 +
 head/usr.bin/clang/macho-dump/Makefile               |   12 +
 head/usr.bin/clang/opt/Makefile                      |   27 +
 head/usr.bin/clang/opt/opt.1                         |  250 ++++++++++
 head/usr.bin/cpio/Makefile                           |   11 +-
 head/usr.bin/cpio/config_freebsd.h                   |   57 --
 head/usr.bin/cpio/test/Makefile                      |    3 +-
 head/usr.bin/csup/auth.c                             |    4 +-
 head/usr.bin/elfdump/elfdump.c                       |    4 +-
 head/usr.bin/enigma/enigma.c                         |   10 +-
 head/usr.bin/fetch/fetch.1                           |   11 +-
 head/usr.bin/fstat/fstat.c                           |    2 +-
 head/usr.bin/gencat/gencat.c                         |   85 +---
 head/usr.bin/lock/lock.c                             |    7 +-
 head/usr.bin/login/login_fbtab.c                     |    8 +-
 head/usr.bin/m4/lib/ohash_interval.3                 |    4 +-
 head/usr.bin/make/job.c                              |   25 +-
 head/usr.bin/ncal/ncal.c                             |    4 +-
 head/usr.bin/netstat/Makefile                        |    6 +-
 head/usr.bin/netstat/route.c                         |   31 +-
 head/usr.bin/newgrp/newgrp.c                         |   10 +-
 head/usr.bin/procstat/procstat.1                     |    6 +-
 head/usr.bin/procstat/procstat_cred.c                |   34 +-
 head/usr.bin/rctl/rctl.8                             |    8 +-
 head/usr.bin/rpcgen/rpc_main.c                       |   83 +-
 head/usr.bin/rpcgen/rpcgen.1                         |    7 +-
 head/usr.bin/sockstat/sockstat.c                     |   15 +-
 head/usr.bin/tar/Makefile                            |   10 +-
 head/usr.bin/tar/config_freebsd.h                    |   82 ---
 head/usr.bin/tar/test/Makefile                       |   21 +-
 head/usr.bin/tee/tee.c                               |    2 +-
 head/usr.bin/touch/touch.1                           |    9 +-
 head/usr.bin/touch/touch.c                           |   70 +--
 head/usr.bin/vacation/Makefile                       |    6 +-
 head/usr.bin/who/who.1                               |   11 +-
 head/usr.bin/who/who.c                               |   33 +-
 head/usr.bin/write/write.1                           |    8 +-
 head/usr.bin/write/write.c                           |   41 +-
 head/usr.bin/xargs/xargs.c                           |   17 +-
 73 files changed, 4529 insertions(+), 488 deletions(-)

diffs (6145 lines):

diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/ar/ar.c
--- a/head/usr.bin/ar/ar.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/ar/ar.c	Fri Mar 02 17:02:21 2012 +0200
@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/ar/ar.c 222122 2011-05-20 11:29:09Z bcr $");
+__FBSDID("$FreeBSD: head/usr.bin/ar/ar.c 232153 2012-02-25 10:58:02Z mm $");
 
 #include <sys/queue.h>
 #include <sys/types.h>
@@ -386,13 +386,13 @@
 static void
 bsdar_version(void)
 {
-	(void)printf("BSD ar %s - %s\n", BSDAR_VERSION, archive_version());
+	(void)printf("BSD ar %s - %s\n", BSDAR_VERSION, archive_version_string());
 	exit(EX_OK);
 }
 
 static void
 ranlib_version(void)
 {
-	(void)printf("ranlib %s - %s\n", BSDAR_VERSION, archive_version());
+	(void)printf("ranlib %s - %s\n", BSDAR_VERSION, archive_version_string());
 	exit(EX_OK);
 }
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/chkey/chkey.c
--- a/head/usr.bin/chkey/chkey.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/chkey/chkey.c	Fri Mar 02 17:02:21 2012 +0200
@@ -35,7 +35,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/usr.bin/chkey/chkey.c 231994 2012-02-22 06:27:20Z kevlo $");
 
 /*
  * Copyright (C) 1986, Sun Microsystems, Inc.
@@ -94,6 +94,9 @@
 #ifdef YP
 	char *master;
 #endif
+#ifdef YPPASSWD
+	char *cryptpw;
+#endif
 
 	while ((ch = getopt(argc, argv, "f")) != -1)
 		switch(ch) {
@@ -149,7 +152,8 @@
 	pass = getpass("Password:");
 #ifdef YPPASSWD
 	if (!force) {
-		if (strcmp(crypt(pass, pw->pw_passwd), pw->pw_passwd) != 0)
+		cryptpw = crypt(pass, pw->pw_passwd);
+		if (cryptpw == NULL || strcmp(cryptpw, pw->pw_passwd) != 0)
 			errx(1, "invalid password");
 	}
 #else
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/chpass/util.c
--- a/head/usr.bin/chpass/util.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/chpass/util.c	Fri Mar 02 17:02:21 2012 +0200
@@ -44,7 +44,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/usr.bin/chpass/util.c 231651 2012-02-14 10:11:45Z kevlo $");
 
 #include <sys/types.h>
 
@@ -110,10 +110,10 @@
 			}
 		}
 	}
-	if (!(t = strtok((char *)NULL, " \t,")) || !isdigit(*t))
+	if (!(t = strtok(NULL, " \t,")) || !isdigit(*t))
 		goto bad;
 	day = atoi(t);
-	if (!(t = strtok((char *)NULL, " \t,")) || !isdigit(*t))
+	if (!(t = strtok(NULL, " \t,")) || !isdigit(*t))
 		goto bad;
 	year = atoi(t);
 	if (day < 1 || day > 31 || month < 1 || month > 12)
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/bugpoint/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/bugpoint/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,34 @@
+# $FreeBSD: head/usr.bin/clang/bugpoint/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=bugpoint
+
+SRCDIR=	tools/bugpoint
+SRCS=	BugDriver.cpp \
+	CrashDebugger.cpp \
+	ExecutionDriver.cpp \
+	ExtractFunction.cpp \
+	FindBugs.cpp \
+	Miscompilation.cpp \
+	OptimizerDriver.cpp \
+	ToolRunner.cpp \
+	bugpoint.cpp
+
+TGHDRS=	Intrinsics
+LIBDEPS=llvmbitwriter \
+	llvmlinker \
+	llvmarchive \
+	llvmbitreader \
+	llvmipo \
+	llvmscalaropts \
+	llvminstcombine \
+	llvminstrumentation \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmtarget \
+	llvmmc \
+	llvmasmparser \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/bugpoint/bugpoint.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/bugpoint/bugpoint.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,291 @@
+.\" $FreeBSD: head/usr.bin/clang/bugpoint/bugpoint.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "BUGPOINT 1"
+.TH BUGPOINT 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+bugpoint \- automatic test case reduction tool
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBbugpoint\fR [\fIoptions\fR] [\fIinput \s-1LLVM\s0 ll/bc files\fR] [\fI\s-1LLVM\s0 passes\fR] \fB\-\-args\fR
+\&\fIprogram arguments\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBbugpoint\fR narrows down the source of problems in \s-1LLVM\s0 tools and passes.  It
+can be used to debug three types of failures: optimizer crashes, miscompilations
+by optimizers, or bad native code generation (including problems in the static
+and \s-1JIT\s0 compilers).  It aims to reduce large test cases to small, useful ones.
+For more information on the design and inner workings of \fBbugpoint\fR, as well as
+advice for using bugpoint, see \fIllvm/docs/Bugpoint.html\fR in the \s-1LLVM\s0
+distribution.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-\-additional\-so\fR \fIlibrary\fR" 4
+.IX Item "--additional-so library"
+Load the dynamic shared object \fIlibrary\fR into the test program whenever it is
+run.  This is useful if you are debugging programs which depend on non-LLVM
+libraries (such as the X or curses libraries) to run.
+.IP "\fB\-\-append\-exit\-code\fR=\fI{true,false}\fR" 4
+.IX Item "--append-exit-code={true,false}"
+Append the test programs exit code to the output file so that a change in exit
+code is considered a test failure. Defaults to false.
+.IP "\fB\-\-args\fR \fIprogram args\fR" 4
+.IX Item "--args program args"
+Pass all arguments specified after \-args to the test program whenever it runs.
+Note that if any of the \fIprogram args\fR start with a '\-', you should use:
+.Sp
+.Vb 1
+\&    bugpoint [bugpoint args] \-\-args \-\- [program args]
+.Ve
+.Sp
+The \*(L"\-\-\*(R" right after the \fB\-\-args\fR option tells \fBbugpoint\fR to consider any
+options starting with \f(CW\*(C`\-\*(C'\fR to be part of the \fB\-\-args\fR option, not as options to
+\&\fBbugpoint\fR itself.
+.IP "\fB\-\-tool\-args\fR \fItool args\fR" 4
+.IX Item "--tool-args tool args"
+Pass all arguments specified after \-\-tool\-args to the \s-1LLVM\s0 tool under test
+(\fBllc\fR, \fBlli\fR, etc.) whenever it runs.  You should use this option in the
+following way:
+.Sp
+.Vb 1
+\&    bugpoint [bugpoint args] \-\-tool\-args \-\- [tool args]
+.Ve
+.Sp
+The \*(L"\-\-\*(R" right after the \fB\-\-tool\-args\fR option tells \fBbugpoint\fR to consider any
+options starting with \f(CW\*(C`\-\*(C'\fR to be part of the \fB\-\-tool\-args\fR option, not as
+options to \fBbugpoint\fR itself. (See \fB\-\-args\fR, above.)
+.IP "\fB\-\-safe\-tool\-args\fR \fItool args\fR" 4
+.IX Item "--safe-tool-args tool args"
+Pass all arguments specified after \fB\-\-safe\-tool\-args\fR to the \*(L"safe\*(R" execution
+tool.
+.IP "\fB\-\-gcc\-tool\-args\fR \fIgcc tool args\fR" 4
+.IX Item "--gcc-tool-args gcc tool args"
+Pass all arguments specified after \fB\-\-gcc\-tool\-args\fR to the invocation of
+\&\fBgcc\fR.
+.IP "\fB\-\-opt\-args\fR \fIopt args\fR" 4
+.IX Item "--opt-args opt args"
+Pass all arguments specified after \fB\-\-opt\-args\fR to the invocation of \fBopt\fR.
+.IP "\fB\-\-disable\-{dce,simplifycfg}\fR" 4
+.IX Item "--disable-{dce,simplifycfg}"
+Do not run the specified passes to clean up and reduce the size of the test
+program. By default, \fBbugpoint\fR uses these passes internally when attempting to
+reduce test programs.  If you're trying to find a bug in one of these passes,
+\&\fBbugpoint\fR may crash.
+.IP "\fB\-\-enable\-valgrind\fR" 4
+.IX Item "--enable-valgrind"
+Use valgrind to find faults in the optimization phase. This will allow
+bugpoint to find otherwise asymptomatic problems caused by memory
+mis-management.
+.IP "\fB\-find\-bugs\fR" 4
+.IX Item "-find-bugs"
+Continually randomize the specified passes and run them on the test program
+until a bug is found or the user kills \fBbugpoint\fR.
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-\-input\fR \fIfilename\fR" 4
+.IX Item "--input filename"
+Open \fIfilename\fR and redirect the standard input of the test program, whenever
+it runs, to come from that file.
+.IP "\fB\-\-load\fR \fIplugin\fR" 4
+.IX Item "--load plugin"
+Load the dynamic object \fIplugin\fR into \fBbugpoint\fR itself.  This object should
+register new optimization passes.  Once loaded, the object will add new command
+line options to enable various optimizations.  To see the new complete list of
+optimizations, use the \fB\-help\fR and \fB\-\-load\fR options together; for example:
+.Sp
+.Vb 1
+\&    bugpoint \-\-load myNewPass.so \-help
+.Ve
+.IP "\fB\-\-mlimit\fR \fImegabytes\fR" 4
+.IX Item "--mlimit megabytes"
+Specifies an upper limit on memory usage of the optimization and codegen. Set
+to zero to disable the limit.
+.IP "\fB\-\-output\fR \fIfilename\fR" 4
+.IX Item "--output filename"
+Whenever the test program produces output on its standard output stream, it
+should match the contents of \fIfilename\fR (the \*(L"reference output\*(R"). If you
+do not use this option, \fBbugpoint\fR will attempt to generate a reference output
+by compiling the program with the \*(L"safe\*(R" backend and running it.
+.IP "\fB\-\-profile\-info\-file\fR \fIfilename\fR" 4
+.IX Item "--profile-info-file filename"
+Profile file loaded by \fB\-\-profile\-loader\fR.
+.IP "\fB\-\-run\-{int,jit,llc,cbe,custom}\fR" 4
+.IX Item "--run-{int,jit,llc,cbe,custom}"
+Whenever the test program is compiled, \fBbugpoint\fR should generate code for it
+using the specified code generator.  These options allow you to choose the
+interpreter, the \s-1JIT\s0 compiler, the static native code compiler, the C
+backend, or a custom command (see \fB\-\-exec\-command\fR) respectively.
+.IP "\fB\-\-safe\-{llc,cbe,custom}\fR" 4
+.IX Item "--safe-{llc,cbe,custom}"
+When debugging a code generator, \fBbugpoint\fR should use the specified code
+generator as the \*(L"safe\*(R" code generator. This is a known-good code generator
+used to generate the \*(L"reference output\*(R" if it has not been provided, and to
+compile portions of the program that as they are excluded from the testcase.
+These options allow you to choose the
+static native code compiler, the C backend, or a custom command,
+(see \fB\-\-exec\-command\fR) respectively. The interpreter and the \s-1JIT\s0 backends
+cannot currently be used as the \*(L"safe\*(R" backends.
+.IP "\fB\-\-exec\-command\fR \fIcommand\fR" 4
+.IX Item "--exec-command command"
+This option defines the command to use with the \fB\-\-run\-custom\fR and
+\&\fB\-\-safe\-custom\fR options to execute the bitcode testcase. This can
+be useful for cross-compilation.
+.IP "\fB\-\-compile\-command\fR \fIcommand\fR" 4
+.IX Item "--compile-command command"
+This option defines the command to use with the \fB\-\-compile\-custom\fR
+option to compile the bitcode testcase. This can be useful for
+testing compiler output without running any link or execute stages. To
+generate a reduced unit test, you may add \s-1CHECK\s0 directives to the
+testcase and pass the name of an executable compile-command script in this form:
+.Sp
+.Vb 3
+\&    #!/bin/sh
+\&    llc "$@"
+\&    not FileCheck [bugpoint input file].ll < bugpoint\-test\-program.s
+.Ve
+.Sp
+This script will \*(L"fail\*(R" as long as FileCheck passes. So the result
+will be the minimum bitcode that passes FileCheck.
+.IP "\fB\-\-safe\-path\fR \fIpath\fR" 4
+.IX Item "--safe-path path"
+This option defines the path to the command to execute with the
+\&\fB\-\-safe\-{int,jit,llc,cbe,custom}\fR
+option.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBbugpoint\fR succeeds in finding a problem, it will exit with 0.  Otherwise,
+if an error occurs, it will exit with a non-zero value.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+opt
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llc/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llc/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,45 @@
+# $FreeBSD: head/usr.bin/clang/llc/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llc
+
+SRCDIR=	tools/llc
+SRCS=	llc.cpp
+
+LIBDEPS=llvmasmparser \
+	llvmbitreader \
+	llvmarmdisassembler \
+	llvmarmasmparser \
+	llvmarmcodegen \
+	llvmarmdesc \
+	llvmarminstprinter \
+	llvmarminfo \
+	llvmmipscodegen \
+	llvmmipsdesc \
+	llvmmipsinstprinter \
+	llvmmipsinfo \
+	llvmpowerpccodegen \
+	llvmpowerpcdesc \
+	llvmpowerpcinstprinter \
+	llvmpowerpcinfo \
+	llvmx86disassembler \
+	llvmx86asmparser \
+	llvmx86codegen \
+	llvmx86desc \
+	llvmselectiondag \
+	llvmasmprinter \
+	llvmmcparser \
+	llvmcodegen \
+	llvmscalaropts \
+	llvminstcombine \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmtarget \
+	llvmx86instprinter \
+	llvmx86utils \
+	llvmcore \
+	llvmx86info \
+	llvmmc \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llc/llc.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llc/llc.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,285 @@
+.\" $FreeBSD: head/usr.bin/clang/llc/llc.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLC 1"
+.TH LLC 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llc \- LLVM static compiler
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllc\fR [\fIoptions\fR] [\fIfilename\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBllc\fR command compiles \s-1LLVM\s0 source inputs into assembly language for a
+specified architecture.  The assembly language output can then be passed through
+a native assembler and linker to generate a native executable.
+.PP
+The choice of architecture for the output assembly code is automatically
+determined from the input file, unless the \fB\-march\fR option is used to override
+the default.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+If \fIfilename\fR is \- or omitted, \fBllc\fR reads from standard input.  Otherwise, it
+will from \fIfilename\fR.  Inputs can be in either the \s-1LLVM\s0 assembly language
+format (.ll) or the \s-1LLVM\s0 bitcode format (.bc).
+.PP
+If the \fB\-o\fR option is omitted, then \fBllc\fR will send its output to standard
+output if the input is from standard input.  If the \fB\-o\fR option specifies \-,
+then the output will also be sent to standard output.
+.PP
+If no \fB\-o\fR option is specified and an input file other than \- is specified,
+then \fBllc\fR creates the output filename by taking the input filename,
+removing any existing \fI.bc\fR extension, and adding a \fI.s\fR suffix.
+.PP
+Other \fBllc\fR options are as follows:
+.SS "End-user Options"
+.IX Subsection "End-user Options"
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-O\fR=\fIuint\fR" 4
+.IX Item "-O=uint"
+Generate code at different optimization levels. These correspond to the \fI\-O0\fR,
+\&\fI\-O1\fR, \fI\-O2\fR, \fI\-O3\fR, and \fI\-O4\fR optimization levels used by \fBllvm-gcc\fR and
+\&\fBclang\fR.
+.IP "\fB\-mtriple\fR=\fItarget triple\fR" 4
+.IX Item "-mtriple=target triple"
+Override the target triple specified in the input file with the specified
+string.
+.IP "\fB\-march\fR=\fIarch\fR" 4
+.IX Item "-march=arch"
+Specify the architecture for which to generate assembly, overriding the target
+encoded in the input file.  See the output of \fBllc \-help\fR for a list of
+valid architectures.  By default this is inferred from the target triple or
+autodetected to the current architecture.
+.IP "\fB\-mcpu\fR=\fIcpuname\fR" 4
+.IX Item "-mcpu=cpuname"
+Specify a specific chip in the current architecture to generate code for.
+By default this is inferred from the target triple and autodetected to 
+the current architecture.  For a list of available CPUs, use:
+\&\fBllvm-as < /dev/null | llc \-march=xyz \-mcpu=help\fR
+.IP "\fB\-mattr\fR=\fIa1,+a2,\-a3,...\fR" 4
+.IX Item "-mattr=a1,+a2,-a3,..."
+Override or control specific attributes of the target, such as whether \s-1SIMD\s0
+operations are enabled or not.  The default set of attributes is set by the
+current \s-1CPU\s0.  For a list of available attributes, use:
+\&\fBllvm-as < /dev/null | llc \-march=xyz \-mattr=help\fR
+.IP "\fB\-\-disable\-fp\-elim\fR" 4
+.IX Item "--disable-fp-elim"
+Disable frame pointer elimination optimization.
+.IP "\fB\-\-disable\-excess\-fp\-precision\fR" 4
+.IX Item "--disable-excess-fp-precision"
+Disable optimizations that may produce excess precision for floating point.
+Note that this option can dramatically slow down code on some systems
+(e.g. X86).
+.IP "\fB\-\-enable\-no\-infs\-fp\-math\fR" 4
+.IX Item "--enable-no-infs-fp-math"
+Enable optimizations that assume no Inf values.
+.IP "\fB\-\-enable\-no\-nans\-fp\-math\fR" 4
+.IX Item "--enable-no-nans-fp-math"
+Enable optimizations that assume no \s-1NAN\s0 values.
+.IP "\fB\-\-enable\-unsafe\-fp\-math\fR" 4
+.IX Item "--enable-unsafe-fp-math"
+Enable optimizations that make unsafe assumptions about \s-1IEEE\s0 math (e.g. that
+addition is associative) or may not work for all input ranges.  These
+optimizations allow the code generator to make use of some instructions which
+would otherwise not be usable (such as fsin on X86).
+.IP "\fB\-\-enable\-correct\-eh\-support\fR" 4
+.IX Item "--enable-correct-eh-support"
+Instruct the \fBlowerinvoke\fR pass to insert code for correct exception handling
+support.  This is expensive and is by default omitted for efficiency.
+.IP "\fB\-\-stats\fR" 4
+.IX Item "--stats"
+Print statistics recorded by code-generation passes.
+.IP "\fB\-\-time\-passes\fR" 4
+.IX Item "--time-passes"
+Record the amount of time needed for each pass and print a report to standard
+error.
+.IP "\fB\-\-load\fR=\fIdso_path\fR" 4
+.IX Item "--load=dso_path"
+Dynamically load \fIdso_path\fR (a path to a dynamically shared object) that
+implements an \s-1LLVM\s0 target. This will permit the target name to be used with the
+\&\fB\-march\fR option so that code can be generated for that target.
+.SS "Tuning/Configuration Options"
+.IX Subsection "Tuning/Configuration Options"
+.IP "\fB\-\-print\-machineinstrs\fR" 4
+.IX Item "--print-machineinstrs"
+Print generated machine code between compilation phases (useful for debugging).
+.IP "\fB\-\-regalloc\fR=\fIallocator\fR" 4
+.IX Item "--regalloc=allocator"
+Specify the register allocator to use. The default \fIallocator\fR is \fIlocal\fR.
+Valid register allocators are:
+.RS 4
+.IP "\fIsimple\fR" 4
+.IX Item "simple"
+Very simple \*(L"always spill\*(R" register allocator
+.IP "\fIlocal\fR" 4
+.IX Item "local"
+Local register allocator
+.IP "\fIlinearscan\fR" 4
+.IX Item "linearscan"
+Linear scan global register allocator
+.IP "\fIiterativescan\fR" 4
+.IX Item "iterativescan"
+Iterative scan global register allocator
+.RE
+.RS 4
+.RE
+.IP "\fB\-\-spiller\fR=\fIspiller\fR" 4
+.IX Item "--spiller=spiller"
+Specify the spiller to use for register allocators that support it.  Currently
+this option is used only by the linear scan register allocator. The default
+\&\fIspiller\fR is \fIlocal\fR.  Valid spillers are:
+.RS 4
+.IP "\fIsimple\fR" 4
+.IX Item "simple"
+Simple spiller
+.IP "\fIlocal\fR" 4
+.IX Item "local"
+Local spiller
+.RE
+.RS 4
+.RE
+.SS "Intel IA\-32\-specific Options"
+.IX Subsection "Intel IA-32-specific Options"
+.IP "\fB\-\-x86\-asm\-syntax=att|intel\fR" 4
+.IX Item "--x86-asm-syntax=att|intel"
+Specify whether to emit assembly code in \s-1AT&T\s0 syntax (the default) or intel
+syntax.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllc\fR succeeds, it will exit with 0.  Otherwise, if an error occurs,
+it will exit with a non-zero value.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+lli
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/lli/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/lli/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,35 @@
+# $FreeBSD: head/usr.bin/clang/lli/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=lli
+
+SRCDIR=	tools/lli
+SRCS=	lli.cpp
+
+LIBDEPS=llvmasmparser \
+	llvmbitreader \
+	llvmx86codegen \
+	llvmx86desc \
+	llvmx86info \
+	llvmx86instprinter \
+	llvmx86utils \
+	llvmselectiondag \
+	llvmasmprinter \
+	llvmmcparser \
+	llvminterpreter \
+	llvmjit \
+	llvmcodegen \
+	llvmscalaropts \
+	llvminstcombine \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmmcjit \
+	llvmruntimedyld \
+	llvmobject \
+	llvmexecutionengine \
+	llvmtarget \
+	llvmmc \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/lli/lli.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/lli/lli.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,310 @@
+.\" $FreeBSD: head/usr.bin/clang/lli/lli.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLI 1"
+.TH LLI 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+lli \- directly execute programs from LLVM bitcode
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBlli\fR [\fIoptions\fR] [\fIfilename\fR] [\fIprogram args\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBlli\fR directly executes programs in \s-1LLVM\s0 bitcode format.  It takes a program
+in \s-1LLVM\s0 bitcode format and executes it using a just-in-time compiler, if one is
+available for the current architecture, or an interpreter.  \fBlli\fR takes all of
+the same code generator options as llc, but they are only effective when
+\&\fBlli\fR is using the just-in-time compiler.
+.PP
+If \fIfilename\fR is not specified, then \fBlli\fR reads the \s-1LLVM\s0 bitcode for the
+program from standard input.
+.PP
+The optional \fIargs\fR specified on the command line are passed to the program as
+arguments.
+.SH "GENERAL OPTIONS"
+.IX Header "GENERAL OPTIONS"
+.IP "\fB\-fake\-argv0\fR=\fIexecutable\fR" 4
+.IX Item "-fake-argv0=executable"
+Override the \f(CW\*(C`argv[0]\*(C'\fR value passed into the executing program.
+.IP "\fB\-force\-interpreter\fR=\fI{false,true}\fR" 4
+.IX Item "-force-interpreter={false,true}"
+If set to true, use the interpreter even if a just-in-time compiler is available
+for this architecture. Defaults to false.
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-load\fR=\fIpuginfilename\fR" 4
+.IX Item "-load=puginfilename"
+Causes \fBlli\fR to load the plugin (shared object) named \fIpluginfilename\fR and use
+it for optimization.
+.IP "\fB\-stats\fR" 4
+.IX Item "-stats"
+Print statistics from the code-generation passes. This is only meaningful for
+the just-in-time compiler, at present.
+.IP "\fB\-time\-passes\fR" 4
+.IX Item "-time-passes"
+Record the amount of time needed for each code-generation pass and print it to
+standard error.
+.IP "\fB\-version\fR" 4
+.IX Item "-version"
+Print out the version of \fBlli\fR and exit without doing anything else.
+.SH "TARGET OPTIONS"
+.IX Header "TARGET OPTIONS"
+.IP "\fB\-mtriple\fR=\fItarget triple\fR" 4
+.IX Item "-mtriple=target triple"
+Override the target triple specified in the input bitcode file with the 
+specified string.  This may result in a crash if you pick an
+architecture which is not compatible with the current system.
+.IP "\fB\-march\fR=\fIarch\fR" 4
+.IX Item "-march=arch"
+Specify the architecture for which to generate assembly, overriding the target
+encoded in the bitcode file.  See the output of \fBllc \-help\fR for a list of
+valid architectures.  By default this is inferred from the target triple or
+autodetected to the current architecture.
+.IP "\fB\-mcpu\fR=\fIcpuname\fR" 4
+.IX Item "-mcpu=cpuname"
+Specify a specific chip in the current architecture to generate code for.
+By default this is inferred from the target triple and autodetected to 
+the current architecture.  For a list of available CPUs, use:
+\&\fBllvm-as < /dev/null | llc \-march=xyz \-mcpu=help\fR
+.IP "\fB\-mattr\fR=\fIa1,+a2,\-a3,...\fR" 4
+.IX Item "-mattr=a1,+a2,-a3,..."
+Override or control specific attributes of the target, such as whether \s-1SIMD\s0
+operations are enabled or not.  The default set of attributes is set by the
+current \s-1CPU\s0.  For a list of available attributes, use:
+\&\fBllvm-as < /dev/null | llc \-march=xyz \-mattr=help\fR
+.SH "FLOATING POINT OPTIONS"
+.IX Header "FLOATING POINT OPTIONS"
+.IP "\fB\-disable\-excess\-fp\-precision\fR" 4
+.IX Item "-disable-excess-fp-precision"
+Disable optimizations that may increase floating point precision.
+.IP "\fB\-enable\-no\-infs\-fp\-math\fR" 4
+.IX Item "-enable-no-infs-fp-math"
+Enable optimizations that assume no Inf values.
+.IP "\fB\-enable\-no\-nans\-fp\-math\fR" 4
+.IX Item "-enable-no-nans-fp-math"
+Enable optimizations that assume no \s-1NAN\s0 values.
+.IP "\fB\-enable\-unsafe\-fp\-math\fR" 4
+.IX Item "-enable-unsafe-fp-math"
+Causes \fBlli\fR to enable optimizations that may decrease floating point
+precision.
+.IP "\fB\-soft\-float\fR" 4
+.IX Item "-soft-float"
+Causes \fBlli\fR to generate software floating point library calls instead of
+equivalent hardware instructions.
+.SH "CODE GENERATION OPTIONS"
+.IX Header "CODE GENERATION OPTIONS"
+.IP "\fB\-code\-model\fR=\fImodel\fR" 4
+.IX Item "-code-model=model"
+Choose the code model from:
+.Sp
+.Vb 5
+\&    default: Target default code model
+\&    small: Small code model
+\&    kernel: Kernel code model
+\&    medium: Medium code model
+\&    large: Large code model
+.Ve
+.IP "\fB\-disable\-post\-RA\-scheduler\fR" 4
+.IX Item "-disable-post-RA-scheduler"
+Disable scheduling after register allocation.
+.IP "\fB\-disable\-spill\-fusing\fR" 4
+.IX Item "-disable-spill-fusing"
+Disable fusing of spill code into instructions.
+.IP "\fB\-enable\-correct\-eh\-support\fR" 4
+.IX Item "-enable-correct-eh-support"
+Make the \-lowerinvoke pass insert expensive, but correct, \s-1EH\s0 code.
+.IP "\fB\-jit\-enable\-eh\fR" 4
+.IX Item "-jit-enable-eh"
+Exception handling should be enabled in the just-in-time compiler.
+.IP "\fB\-join\-liveintervals\fR" 4
+.IX Item "-join-liveintervals"
+Coalesce copies (default=true).
+.IP "\fB\-nozero\-initialized\-in\-bss\fR Don't place zero-initialized symbols into the \s-1BSS\s0 section." 4
+.IX Item "-nozero-initialized-in-bss Don't place zero-initialized symbols into the BSS section."
+.PD 0
+.IP "\fB\-pre\-RA\-sched\fR=\fIscheduler\fR" 4
+.IX Item "-pre-RA-sched=scheduler"
+.PD
+Instruction schedulers available (before register allocation):
+.Sp
+.Vb 7
+\&    =default: Best scheduler for the target 
+\&    =none: No scheduling: breadth first sequencing 
+\&    =simple: Simple two pass scheduling: minimize critical path and maximize processor utilization 
+\&    =simple\-noitin: Simple two pass scheduling: Same as simple except using generic latency 
+\&    =list\-burr: Bottom\-up register reduction list scheduling 
+\&    =list\-tdrr: Top\-down register reduction list scheduling 
+\&    =list\-td: Top\-down list scheduler \-print\-machineinstrs \- Print generated machine code
+.Ve
+.IP "\fB\-regalloc\fR=\fIallocator\fR" 4
+.IX Item "-regalloc=allocator"
+Register allocator to use (default=linearscan)
+.Sp
+.Vb 3
+\&    =bigblock: Big\-block register allocator 
+\&    =linearscan: linear scan register allocator =local \-   local register allocator 
+\&    =simple: simple register allocator
+.Ve
+.IP "\fB\-relocation\-model\fR=\fImodel\fR" 4
+.IX Item "-relocation-model=model"
+Choose relocation model from:
+.Sp
+.Vb 3
+\&    =default: Target default relocation model 
+\&    =static: Non\-relocatable code =pic \-   Fully relocatable, position independent code 
+\&    =dynamic\-no\-pic: Relocatable external references, non\-relocatable code
+.Ve
+.IP "\fB\-spiller\fR" 4
+.IX Item "-spiller"
+Spiller to use (default=local)
+.Sp
+.Vb 2
+\&    =simple: simple spiller 
+\&    =local: local spiller
+.Ve
+.IP "\fB\-x86\-asm\-syntax\fR=\fIsyntax\fR" 4
+.IX Item "-x86-asm-syntax=syntax"
+Choose style of code to emit from X86 backend:
+.Sp
+.Vb 2
+\&    =att: Emit AT&T\-style assembly 
+\&    =intel: Emit Intel\-style assembly
+.Ve
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBlli\fR fails to load the program, it will exit with an exit code of 1.
+Otherwise, it will return the exit code of the program it executes.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+llc
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-ar/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-ar/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,14 @@
+# $FreeBSD: head/usr.bin/clang/llvm-ar/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-ar
+
+SRCDIR=	tools/llvm-ar
+SRCS=	llvm-ar.cpp
+LLVM_REQUIRES_EH=
+
+LIBDEPS=llvmarchive \
+	llvmbitreader \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-ar/llvm-ar.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-ar/llvm-ar.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,461 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-ar/llvm-ar.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-AR 1"
+.TH LLVM-AR 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-ar \- LLVM archiver
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-ar\fR [\-]{dmpqrtx}[Rabfikouz] [relpos] [count] <archive> [files...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBllvm-ar\fR command is similar to the common Unix utility, \f(CW\*(C`ar\*(C'\fR. It 
+archives several files together into a single file. The intent for this is
+to produce archive libraries by \s-1LLVM\s0 bitcode that can be linked into an
+\&\s-1LLVM\s0 program. However, the archive can contain any kind of file. By default,
+\&\fBllvm-ar\fR generates a symbol table that makes linking faster because
+only the symbol table needs to be consulted, not each individual file member
+of the archive.
+.PP
+The \fBllvm-ar\fR command can be used to \fIread\fR both \s-1SVR4\s0 and \s-1BSD\s0 style archive
+files. However, it cannot be used to write them.  While the \fBllvm-ar\fR command 
+produces files that are \fIalmost\fR identical to the format used by other \f(CW\*(C`ar\*(C'\fR 
+implementations, it has two significant departures in order to make the 
+archive appropriate for \s-1LLVM\s0. The first departure is that \fBllvm-ar\fR only
+uses \s-1BSD4\s0.4 style long path names (stored immediately after the header) and
+never contains a string table for long names. The second departure is that the
+symbol table is formated for efficient construction of an in-memory data
+structure that permits rapid (red-black tree) lookups. Consequently, archives 
+produced with \fBllvm-ar\fR usually won't be readable or editable with any
+\&\f(CW\*(C`ar\*(C'\fR implementation or useful for linking.  Using the \f(CW\*(C`f\*(C'\fR modifier to flatten
+file names will make the archive readable by other \f(CW\*(C`ar\*(C'\fR implementations
+but not for linking because the symbol table format for \s-1LLVM\s0 is unique. If an
+\&\s-1SVR4\s0 or \s-1BSD\s0 style archive is used with the \f(CW\*(C`r\*(C'\fR (replace) or \f(CW\*(C`q\*(C'\fR (quick
+update) operations, the archive will be reconstructed in \s-1LLVM\s0 format. This 
+means that the string table will be dropped (in deference to \s-1BSD\s0 4.4 long names)
+and an \s-1LLVM\s0 symbol table will be added (by default). The system symbol table
+will be retained.
+.PP
+Here's where \fBllvm-ar\fR departs from previous \f(CW\*(C`ar\*(C'\fR implementations:
+.IP "\fISymbol Table\fR" 4
+.IX Item "Symbol Table"
+Since \fBllvm-ar\fR is intended to archive bitcode files, the symbol table
+won't make much sense to anything but \s-1LLVM\s0. Consequently, the symbol table's
+format has been simplified. It consists simply of a sequence of pairs
+of a file member index number as an \s-1LSB\s0 4byte integer and a null-terminated 
+string.
+.IP "\fILong Paths\fR" 4
+.IX Item "Long Paths"
+Some \f(CW\*(C`ar\*(C'\fR implementations (\s-1SVR4\s0) use a separate file member to record long
+path names (> 15 characters). \fBllvm-ar\fR takes the \s-1BSD\s0 4.4 and Mac \s-1OS\s0 X 
+approach which is to simply store the full path name immediately preceding
+the data for the file. The path name is null terminated and may contain the
+slash (/) character.
+.IP "\fICompression\fR" 4
+.IX Item "Compression"
+\&\fBllvm-ar\fR can compress the members of an archive to save space. The 
+compression used depends on what's available on the platform and what choices
+the \s-1LLVM\s0 Compressor utility makes. It generally favors bzip2 but will select
+between \*(L"no compression\*(R" or bzip2 depending on what makes sense for the
+file's content.
+.IP "\fIDirectory Recursion\fR" 4
+.IX Item "Directory Recursion"
+Most \f(CW\*(C`ar\*(C'\fR implementations do not recurse through directories but simply
+ignore directories if they are presented to the program in the \fIfiles\fR 
+option. \fBllvm-ar\fR, however, can recurse through directory structures and
+add all the files under a directory, if requested.
+.IP "\fI\s-1TOC\s0 Verbose Output\fR" 4
+.IX Item "TOC Verbose Output"
+When \fBllvm-ar\fR prints out the verbose table of contents (\f(CW\*(C`tv\*(C'\fR option), it
+precedes the usual output with a character indicating the basic kind of 
+content in the file. A blank means the file is a regular file. A 'Z' means
+the file is compressed. A 'B' means the file is an \s-1LLVM\s0 bitcode file. An
+\&'S' means the file is the symbol table.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The options to \fBllvm-ar\fR are compatible with other \f(CW\*(C`ar\*(C'\fR implementations.
+However, there are a few modifiers (\fIzR\fR) that are not found in other
+\&\f(CW\*(C`ar\*(C'\fRs. The options to \fBllvm-ar\fR specify a single basic operation to 
+perform on the archive, a variety of modifiers for that operation, the
+name of the archive file, and an optional list of file names. These options
+are used to determine how \fBllvm-ar\fR should process the archive file.
+.PP
+The Operations and Modifiers are explained in the sections below. The minimal
+set of options is at least one operator and the name of the archive. Typically
+archive files end with a \f(CW\*(C`.a\*(C'\fR suffix, but this is not required. Following
+the \fIarchive-name\fR comes a list of \fIfiles\fR that indicate the specific members
+of the archive to operate on. If the \fIfiles\fR option is not specified, it
+generally means either \*(L"none\*(R" or \*(L"all\*(R" members, depending on the operation.
+.SS "Operations"
+.IX Subsection "Operations"
+.IP "d" 4
+.IX Item "d"
+Delete files from the archive. No modifiers are applicable to this operation.
+The \fIfiles\fR options specify which members should be removed from the
+archive. It is not an error if a specified file does not appear in the archive.
+If no \fIfiles\fR are specified, the archive is not modified.
+.IP "m[abi]" 4
+.IX Item "m[abi]"
+Move files from one location in the archive to another. The \fIa\fR, \fIb\fR, and 
+\&\fIi\fR modifiers apply to this operation. The \fIfiles\fR will all be moved
+to the location given by the modifiers. If no modifiers are used, the files
+will be moved to the end of the archive. If no \fIfiles\fR are specified, the
+archive is not modified.
+.IP "p[k]" 4
+.IX Item "p[k]"
+Print files to the standard output. The \fIk\fR modifier applies to this
+operation. This operation simply prints the \fIfiles\fR indicated to the
+standard output. If no \fIfiles\fR are specified, the entire archive is printed.
+Printing bitcode files is ill-advised as they might confuse your terminal
+settings. The \fIp\fR operation never modifies the archive.
+.IP "q[Rfz]" 4
+.IX Item "q[Rfz]"
+Quickly append files to the end of the archive. The \fIR\fR, \fIf\fR, and \fIz\fR
+modifiers apply to this operation.  This operation quickly adds the 
+\&\fIfiles\fR to the archive without checking for duplicates that should be 
+removed first. If no \fIfiles\fR are specified, the archive is not modified. 
+Because of the way that \fBllvm-ar\fR constructs the archive file, its dubious 
+whether the \fIq\fR operation is any faster than the \fIr\fR operation.
+.IP "r[Rabfuz]" 4
+.IX Item "r[Rabfuz]"
+Replace or insert file members. The \fIR\fR, \fIa\fR, \fIb\fR, \fIf\fR, \fIu\fR, and \fIz\fR
+modifiers apply to this operation. This operation will replace existing
+\&\fIfiles\fR or insert them at the end of the archive if they do not exist. If no
+\&\fIfiles\fR are specified, the archive is not modified.
+.IP "t[v]" 4
+.IX Item "t[v]"
+Print the table of contents. Without any modifiers, this operation just prints
+the names of the members to the standard output. With the \fIv\fR modifier,
+\&\fBllvm-ar\fR also prints out the file type (B=bitcode, Z=compressed, S=symbol
+table, blank=regular file), the permission mode, the owner and group, the
+size, and the date. If any \fIfiles\fR are specified, the listing is only for
+those files. If no \fIfiles\fR are specified, the table of contents for the
+whole archive is printed.
+.IP "x[oP]" 4
+.IX Item "x[oP]"
+Extract archive members back to files. The \fIo\fR modifier applies to this
+operation. This operation retrieves the indicated \fIfiles\fR from the archive 
+and writes them back to the operating system's file system. If no 
+\&\fIfiles\fR are specified, the entire archive is extract.
+.SS "Modifiers (operation specific)"
+.IX Subsection "Modifiers (operation specific)"
+The modifiers below are specific to certain operations. See the Operations
+section (above) to determine which modifiers are applicable to which operations.
+.IP "[a]" 4
+.IX Item "[a]"
+When inserting or moving member files, this option specifies the destination of
+the new files as being \f(CW\*(C`a\*(C'\fRfter the \fIrelpos\fR member. If \fIrelpos\fR is not found,
+the files are placed at the end of the archive.
+.IP "[b]" 4
+.IX Item "[b]"
+When inserting or moving member files, this option specifies the destination of
+the new files as being \f(CW\*(C`b\*(C'\fRefore the \fIrelpos\fR member. If \fIrelpos\fR is not 
+found, the files are placed at the end of the archive. This modifier is 
+identical to the the \fIi\fR modifier.
+.IP "[f]" 4
+.IX Item "[f]"
+Normally, \fBllvm-ar\fR stores the full path name to a file as presented to it on
+the command line. With this option, truncated (15 characters max) names are
+used. This ensures name compatibility with older versions of \f(CW\*(C`ar\*(C'\fR but may also
+thwart correct extraction of the files (duplicates may overwrite). If used with
+the \fIR\fR option, the directory recursion will be performed but the file names
+will all be \f(CW\*(C`f\*(C'\fRlattened to simple file names.
+.IP "[i]" 4
+.IX Item "[i]"
+A synonym for the \fIb\fR option.
+.IP "[k]" 4
+.IX Item "[k]"
+Normally, \fBllvm-ar\fR will not print the contents of bitcode files when the 
+\&\fIp\fR operation is used. This modifier defeats the default and allows the 
+bitcode members to be printed.
+.IP "[N]" 4
+.IX Item "[N]"
+This option is ignored by \fBllvm-ar\fR but provided for compatibility.
+.IP "[o]" 4
+.IX Item "[o]"
+When extracting files, this option will cause \fBllvm-ar\fR to preserve the
+original modification times of the files it writes.
+.IP "[P]" 4
+.IX Item "[P]"
+use full path names when matching
+.IP "[R]" 4
+.IX Item "[R]"
+This modifier instructions the \fIr\fR option to recursively process directories.
+Without \fIR\fR, directories are ignored and only those \fIfiles\fR that refer to
+files will be added to the archive. When \fIR\fR is used, any directories specified
+with \fIfiles\fR will be scanned (recursively) to find files to be added to the
+archive. Any file whose name begins with a dot will not be added.
+.IP "[u]" 4
+.IX Item "[u]"
+When replacing existing files in the archive, only replace those files that have
+a time stamp than the time stamp of the member in the archive.
+.IP "[z]" 4
+.IX Item "[z]"
+When inserting or replacing any file in the archive, compress the file first.
+This
+modifier is safe to use when (previously) compressed bitcode files are added to
+the archive; the compressed bitcode files will not be doubly compressed.
+.SS "Modifiers (generic)"
+.IX Subsection "Modifiers (generic)"
+The modifiers below may be applied to any operation.
+.IP "[c]" 4
+.IX Item "[c]"
+For all operations, \fBllvm-ar\fR will always create the archive if it doesn't 
+exist. Normally, \fBllvm-ar\fR will print a warning message indicating that the
+archive is being created. Using this modifier turns off that warning.
+.IP "[s]" 4
+.IX Item "[s]"
+This modifier requests that an archive index (or symbol table) be added to the
+archive. This is the default mode of operation. The symbol table will contain
+all the externally visible functions and global variables defined by all the
+bitcode files in the archive. Using this modifier is more efficient that using
+llvm-ranlib which also creates the symbol table.
+.IP "[S]" 4
+.IX Item "[S]"
+This modifier is the opposite of the \fIs\fR modifier. It instructs \fBllvm-ar\fR to
+not build the symbol table. If both \fIs\fR and \fIS\fR are used, the last modifier to
+occur in the options will prevail.
+.IP "[v]" 4
+.IX Item "[v]"
+This modifier instructs \fBllvm-ar\fR to be verbose about what it is doing. Each
+editing operation taken against the archive will produce a line of output saying
+what is being done.
+.SH "STANDARDS"
+.IX Header "STANDARDS"
+The \fBllvm-ar\fR utility is intended to provide a superset of the \s-1IEEE\s0 Std 1003.2
+(\s-1POSIX\s0.2) functionality for \f(CW\*(C`ar\*(C'\fR. \fBllvm-ar\fR can read both \s-1SVR4\s0 and \s-1BSD4\s0.4 (or
+Mac \s-1OS\s0 X) archives. If the \f(CW\*(C`f\*(C'\fR modifier is given to the \f(CW\*(C`x\*(C'\fR or \f(CW\*(C`r\*(C'\fR operations
+then \fBllvm-ar\fR will write \s-1SVR4\s0 compatible archives. Without this modifier, 
+\&\fBllvm-ar\fR will write \s-1BSD4\s0.4 compatible archives that have long names
+immediately after the header and indicated using the \*(L"#1/ddd\*(R" notation for the
+name in the header.
+.SH "FILE FORMAT"
+.IX Header "FILE FORMAT"
+The file format for \s-1LLVM\s0 Archive files is similar to that of \s-1BSD\s0 4.4 or Mac \s-1OSX\s0
+archive files. In fact, except for the symbol table, the \f(CW\*(C`ar\*(C'\fR commands on those
+operating systems should be able to read \s-1LLVM\s0 archive files. The details of the
+file format follow.
+.PP
+Each archive begins with the archive magic number which is the eight printable
+characters \*(L"!<arch>\en\*(R" where \en represents the newline character (0x0A). 
+Following the magic number, the file is composed of even length members that 
+begin with an archive header and end with a \en padding character if necessary 
+(to make the length even). Each file member is composed of a header (defined 
+below), an optional newline-terminated \*(L"long file name\*(R" and the contents of 
+the file.
+.PP
+The fields of the header are described in the items below. All fields of the
+header contain only \s-1ASCII\s0 characters, are left justified and are right padded 
+with space characters.
+.IP "name \- char[16]" 4
+.IX Item "name - char[16]"
+This field of the header provides the name of the archive member. If the name is
+longer than 15 characters or contains a slash (/) character, then this field
+contains \f(CW\*(C`#1/nnn\*(C'\fR where \f(CW\*(C`nnn\*(C'\fR provides the length of the name and the \f(CW\*(C`#1/\*(C'\fR
+is literal.  In this case, the actual name of the file is provided in the \f(CW\*(C`nnn\*(C'\fR
+bytes immediately following the header. If the name is 15 characters or less, it
+is contained directly in this field and terminated with a slash (/) character.
+.IP "date \- char[12]" 4
+.IX Item "date - char[12]"
+This field provides the date of modification of the file in the form of a
+decimal encoded number that provides the number of seconds since the epoch 
+(since 00:00:00 Jan 1, 1970) per Posix specifications.
+.IP "uid \- char[6]" 4
+.IX Item "uid - char[6]"
+This field provides the user id of the file encoded as a decimal \s-1ASCII\s0 string.
+This field might not make much sense on non-Unix systems. On Unix, it is the
+same value as the st_uid field of the stat structure returned by the \fIstat\fR\|(2)
+operating system call.
+.IP "gid \- char[6]" 4
+.IX Item "gid - char[6]"
+This field provides the group id of the file encoded as a decimal \s-1ASCII\s0 string.
+This field might not make much sense on non-Unix systems. On Unix, it is the
+same value as the st_gid field of the stat structure returned by the \fIstat\fR\|(2)
+operating system call.
+.IP "mode \- char[8]" 4
+.IX Item "mode - char[8]"
+This field provides the access mode of the file encoded as an octal \s-1ASCII\s0 
+string. This field might not make much sense on non-Unix systems. On Unix, it 
+is the same value as the st_mode field of the stat structure returned by the 
+\&\fIstat\fR\|(2) operating system call.
+.IP "size \- char[10]" 4
+.IX Item "size - char[10]"
+This field provides the size of the file, in bytes, encoded as a decimal \s-1ASCII\s0
+string. If the size field is negative (starts with a minus sign, 0x02D), then
+the archive member is stored in compressed form. The first byte of the archive
+member's data indicates the compression type used. A value of 0 (0x30) indicates
+that no compression was used. A value of 2 (0x32) indicates that bzip2
+compression was used.
+.IP "fmag \- char[2]" 4
+.IX Item "fmag - char[2]"
+This field is the archive file member magic number. Its content is always the
+two characters back tick (0x60) and newline (0x0A). This provides some measure 
+utility in identifying archive files that have been corrupted.
+.PP
+The \s-1LLVM\s0 symbol table has the special name \*(L"#_LLVM_SYM_TAB_#\*(R". It is presumed
+that no regular archive member file will want this name. The \s-1LLVM\s0 symbol table 
+is simply composed of a sequence of triplets: byte offset, length of symbol, 
+and the symbol itself. Symbols are not null or newline terminated. Here are 
+the details on each of these items:
+.IP "offset \- vbr encoded 32\-bit integer" 4
+.IX Item "offset - vbr encoded 32-bit integer"
+The offset item provides the offset into the archive file where the bitcode
+member is stored that is associated with the symbol. The offset value is 0
+based at the start of the first \*(L"normal\*(R" file member. To derive the actual
+file offset of the member, you must add the number of bytes occupied by the file
+signature (8 bytes) and the symbol tables. The value of this item is encoded
+using variable bit rate encoding to reduce the size of the symbol table.
+Variable bit rate encoding uses the high bit (0x80) of each byte to indicate 
+if there are more bytes to follow. The remaining 7 bits in each byte carry bits
+from the value. The final byte does not have the high bit set.
+.IP "length \- vbr encoded 32\-bit integer" 4
+.IX Item "length - vbr encoded 32-bit integer"
+The length item provides the length of the symbol that follows. Like this
+\&\fIoffset\fR item, the length is variable bit rate encoded.
+.IP "symbol \- character array" 4
+.IX Item "symbol - character array"
+The symbol item provides the text of the symbol that is associated with the
+\&\fIoffset\fR. The symbol is not terminated by any character. Its length is provided
+by the \fIlength\fR field. Note that is allowed (but unwise) to use non-printing
+characters (even 0x00) in the symbol. This allows for multiple encodings of 
+symbol names.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllvm-ar\fR succeeds, it will exit with 0.  A usage error, results
+in an exit code of 1. A hard (file system typically) error results in an
+exit code of 2. Miscellaneous or unknown errors result in an
+exit code of 3.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+llvm-ranlib, \fIar\fR\|(1)
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-as/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-as/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,14 @@
+# $FreeBSD: head/usr.bin/clang/llvm-as/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-as
+
+SRCDIR=	tools/llvm-as
+SRCS=	llvm-as.cpp
+LLVM_REQUIRES_EH=
+
+LIBDEPS=llvmbitwriter \
+	llvmasmparser \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-as/llvm-as.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-as/llvm-as.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,182 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-as/llvm-as.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-AS 1"
+.TH LLVM-AS 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-as \- LLVM assembler
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-as\fR [\fIoptions\fR] [\fIfilename\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBllvm-as\fR is the \s-1LLVM\s0 assembler.  It reads a file containing human-readable
+\&\s-1LLVM\s0 assembly language, translates it to \s-1LLVM\s0 bitcode, and writes the result
+into a file or to standard output.
+.PP
+If \fIfilename\fR is omitted or is \f(CW\*(C`\-\*(C'\fR, then \fBllvm-as\fR reads its input from
+standard input.
+.PP
+If an output file is not specified with the \fB\-o\fR option, then
+\&\fBllvm-as\fR sends its output to a file or standard output by following
+these rules:
+.IP "\(bu" 4
+If the input is standard input, then the output is standard output.
+.IP "\(bu" 4
+If the input is a file that ends with \f(CW\*(C`.ll\*(C'\fR, then the output file is of
+the same name, except that the suffix is changed to \f(CW\*(C`.bc\*(C'\fR.
+.IP "\(bu" 4
+If the input is a file that does not end with the \f(CW\*(C`.ll\*(C'\fR suffix, then the
+output file has the same name as the input file, except that the \f(CW\*(C`.bc\*(C'\fR
+suffix is appended.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+Enable binary output on terminals.  Normally, \fBllvm-as\fR will refuse to
+write raw bitcode output if the output stream is a terminal. With this option,
+\&\fBllvm-as\fR will write raw bitcode regardless of the output device.
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-o\fR \fIfilename\fR" 4
+.IX Item "-o filename"
+Specify the output file name.  If \fIfilename\fR is \f(CW\*(C`\-\*(C'\fR, then \fBllvm-as\fR
+sends its output to standard output.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllvm-as\fR succeeds, it will exit with 0.  Otherwise, if an error
+occurs, it will exit with a non-zero value.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+llvm-dis, gccas
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-bcanalyzer/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-bcanalyzer/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,13 @@
+# $FreeBSD: head/usr.bin/clang/llvm-bcanalyzer/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-bcanalyzer
+
+SRCDIR=	tools/llvm-bcanalyzer
+SRCS=	llvm-bcanalyzer.cpp
+LLVM_REQUIRES_EH=
+
+LIBDEPS=llvmbitreader \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,370 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-bcanalyzer/llvm-bcanalyzer.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-BCANALYZER 1"
+.TH LLVM-BCANALYZER 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-bcanalyzer \- LLVM bitcode analyzer
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-bcanalyzer\fR [\fIoptions\fR] [\fIfilename\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBllvm-bcanalyzer\fR command is a small utility for analyzing bitcode files.
+The tool reads a bitcode file (such as generated with the \fBllvm-as\fR tool) and
+produces a statistical report on the contents of the bitcode file.  The tool
+can also dump a low level but human readable version of the bitcode file. 
+This tool is probably not of much interest or utility except for those working 
+directly with the bitcode file format. Most \s-1LLVM\s0 users can just ignore
+this tool.
+.PP
+If \fIfilename\fR is omitted or is \f(CW\*(C`\-\*(C'\fR, then \fBllvm-bcanalyzer\fR reads its input 
+from standard input. This is useful for combining the tool into a pipeline.
+Output is written to the standard output.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-nodetails\fR" 4
+.IX Item "-nodetails"
+Causes \fBllvm-bcanalyzer\fR to abbreviate its output by writing out only a module 
+level summary. The details for individual functions are not displayed.
+.IP "\fB\-dump\fR" 4
+.IX Item "-dump"
+Causes \fBllvm-bcanalyzer\fR to dump the bitcode in a human readable format. This 
+format is significantly different from \s-1LLVM\s0 assembly and provides details about 
+the encoding of the bitcode file.
+.IP "\fB\-verify\fR" 4
+.IX Item "-verify"
+Causes \fBllvm-bcanalyzer\fR to verify the module produced by reading the 
+bitcode. This ensures that the statistics generated are based on a consistent
+module.
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllvm-bcanalyzer\fR succeeds, it will exit with 0.  Otherwise, if an error
+occurs, it will exit with a non-zero value, usually 1.
+.SH "SUMMARY OUTPUT DEFINITIONS"
+.IX Header "SUMMARY OUTPUT DEFINITIONS"
+The following items are always printed by llvm-bcanalyzer. They comprize the
+summary output.
+.IP "\fBBitcode Analysis Of Module\fR" 4
+.IX Item "Bitcode Analysis Of Module"
+This just provides the name of the module for which bitcode analysis is being
+generated.
+.IP "\fBBitcode Version Number\fR" 4
+.IX Item "Bitcode Version Number"
+The bitcode version (not \s-1LLVM\s0 version) of the file read by the analyzer.
+.IP "\fBFile Size\fR" 4
+.IX Item "File Size"
+The size, in bytes, of the entire bitcode file.
+.IP "\fBModule Bytes\fR" 4
+.IX Item "Module Bytes"
+The size, in bytes, of the module block. Percentage is relative to File Size.
+.IP "\fBFunction Bytes\fR" 4
+.IX Item "Function Bytes"
+The size, in bytes, of all the function blocks. Percentage is relative to File
+Size.
+.IP "\fBGlobal Types Bytes\fR" 4
+.IX Item "Global Types Bytes"
+The size, in bytes, of the Global Types Pool. Percentage is relative to File
+Size. This is the size of the definitions of all types in the bitcode file.
+.IP "\fBConstant Pool Bytes\fR" 4
+.IX Item "Constant Pool Bytes"
+The size, in bytes, of the Constant Pool Blocks Percentage is relative to File
+Size.
+.IP "\fBModule Globals Bytes\fR" 4
+.IX Item "Module Globals Bytes"
+Ths size, in bytes, of the Global Variable Definitions and their initializers.
+Percentage is relative to File Size.
+.IP "\fBInstruction List Bytes\fR" 4
+.IX Item "Instruction List Bytes"
+The size, in bytes, of all the instruction lists in all the functions.
+Percentage is relative to File Size. Note that this value is also included in
+the Function Bytes.
+.IP "\fBCompaction Table Bytes\fR" 4
+.IX Item "Compaction Table Bytes"
+The size, in bytes, of all the compaction tables in all the functions.
+Percentage is relative to File Size. Note that this value is also included in
+the Function Bytes.
+.IP "\fBSymbol Table Bytes\fR" 4
+.IX Item "Symbol Table Bytes"
+The size, in bytes, of all the symbol tables in all the functions. Percentage is
+relative to File Size. Note that this value is also included in the Function
+Bytes.
+.IP "\fBDependent Libraries Bytes\fR" 4
+.IX Item "Dependent Libraries Bytes"
+The size, in bytes, of the list of dependent libraries in the module. Percentage
+is relative to File Size. Note that this value is also included in the Module
+Global Bytes.
+.IP "\fBNumber Of Bitcode Blocks\fR" 4
+.IX Item "Number Of Bitcode Blocks"
+The total number of blocks of any kind in the bitcode file.
+.IP "\fBNumber Of Functions\fR" 4
+.IX Item "Number Of Functions"
+The total number of function definitions in the bitcode file.
+.IP "\fBNumber Of Types\fR" 4
+.IX Item "Number Of Types"
+The total number of types defined in the Global Types Pool.
+.IP "\fBNumber Of Constants\fR" 4
+.IX Item "Number Of Constants"
+The total number of constants (of any type) defined in the Constant Pool.
+.IP "\fBNumber Of Basic Blocks\fR" 4
+.IX Item "Number Of Basic Blocks"
+The total number of basic blocks defined in all functions in the bitcode file.
+.IP "\fBNumber Of Instructions\fR" 4
+.IX Item "Number Of Instructions"
+The total number of instructions defined in all functions in the bitcode file.
+.IP "\fBNumber Of Long Instructions\fR" 4
+.IX Item "Number Of Long Instructions"
+The total number of long instructions defined in all functions in the bitcode
+file. Long instructions are those taking greater than 4 bytes. Typically long
+instructions are GetElementPtr with several indices, \s-1PHI\s0 nodes, and calls to
+functions with large numbers of arguments.
+.IP "\fBNumber Of Operands\fR" 4
+.IX Item "Number Of Operands"
+The total number of operands used in all instructions in the bitcode file.
+.IP "\fBNumber Of Compaction Tables\fR" 4
+.IX Item "Number Of Compaction Tables"
+The total number of compaction tables in all functions in the bitcode file.
+.IP "\fBNumber Of Symbol Tables\fR" 4
+.IX Item "Number Of Symbol Tables"
+The total number of symbol tables in all functions in the bitcode file.
+.IP "\fBNumber Of Dependent Libs\fR" 4
+.IX Item "Number Of Dependent Libs"
+The total number of dependent libraries found in the bitcode file.
+.IP "\fBTotal Instruction Size\fR" 4
+.IX Item "Total Instruction Size"
+The total size of the instructions in all functions in the bitcode file.
+.IP "\fBAverage Instruction Size\fR" 4
+.IX Item "Average Instruction Size"
+The average number of bytes per instruction across all functions in the bitcode
+file. This value is computed by dividing Total Instruction Size by Number Of
+Instructions.
+.IP "\fBMaximum Type Slot Number\fR" 4
+.IX Item "Maximum Type Slot Number"
+The maximum value used for a type's slot number. Larger slot number values take 
+more bytes to encode.
+.IP "\fBMaximum Value Slot Number\fR" 4
+.IX Item "Maximum Value Slot Number"
+The maximum value used for a value's slot number. Larger slot number values take 
+more bytes to encode.
+.IP "\fBBytes Per Value\fR" 4
+.IX Item "Bytes Per Value"
+The average size of a Value definition (of any type). This is computed by
+dividing File Size by the total number of values of any type.
+.IP "\fBBytes Per Global\fR" 4
+.IX Item "Bytes Per Global"
+The average size of a global definition (constants and global variables).
+.IP "\fBBytes Per Function\fR" 4
+.IX Item "Bytes Per Function"
+The average number of bytes per function definition. This is computed by
+dividing Function Bytes by Number Of Functions.
+.IP "\fB# of \s-1VBR\s0 32\-bit Integers\fR" 4
+.IX Item "# of VBR 32-bit Integers"
+The total number of 32\-bit integers encoded using the Variable Bit Rate
+encoding scheme.
+.IP "\fB# of \s-1VBR\s0 64\-bit Integers\fR" 4
+.IX Item "# of VBR 64-bit Integers"
+The total number of 64\-bit integers encoded using the Variable Bit Rate encoding
+scheme.
+.IP "\fB# of \s-1VBR\s0 Compressed Bytes\fR" 4
+.IX Item "# of VBR Compressed Bytes"
+The total number of bytes consumed by the 32\-bit and 64\-bit integers that use
+the Variable Bit Rate encoding scheme.
+.IP "\fB# of \s-1VBR\s0 Expanded Bytes\fR" 4
+.IX Item "# of VBR Expanded Bytes"
+The total number of bytes that would have been consumed by the 32\-bit and 64\-bit
+integers had they not been compressed with the Variable Bit Rage encoding
+scheme.
+.IP "\fBBytes Saved With \s-1VBR\s0\fR" 4
+.IX Item "Bytes Saved With VBR"
+The total number of bytes saved by using the Variable Bit Rate encoding scheme.
+The percentage is relative to # of \s-1VBR\s0 Expanded Bytes.
+.SH "DETAILED OUTPUT DEFINITIONS"
+.IX Header "DETAILED OUTPUT DEFINITIONS"
+The following definitions occur only if the \-nodetails option was not given.
+The detailed output provides additional information on a per-function basis.
+.IP "\fBType\fR" 4
+.IX Item "Type"
+The type signature of the function.
+.IP "\fBByte Size\fR" 4
+.IX Item "Byte Size"
+The total number of bytes in the function's block.
+.IP "\fBBasic Blocks\fR" 4
+.IX Item "Basic Blocks"
+The number of basic blocks defined by the function.
+.IP "\fBInstructions\fR" 4
+.IX Item "Instructions"
+The number of instructions defined by the function.
+.IP "\fBLong Instructions\fR" 4
+.IX Item "Long Instructions"
+The number of instructions using the long instruction format in the function.
+.IP "\fBOperands\fR" 4
+.IX Item "Operands"
+The number of operands used by all instructions in the function.
+.IP "\fBInstruction Size\fR" 4
+.IX Item "Instruction Size"
+The number of bytes consumed by instructions in the function.
+.IP "\fBAverage Instruction Size\fR" 4
+.IX Item "Average Instruction Size"
+The average number of bytes consumed by the instructions in the function. This
+value is computed by dividing Instruction Size by Instructions.
+.IP "\fBBytes Per Instruction\fR" 4
+.IX Item "Bytes Per Instruction"
+The average number of bytes used by the function per instruction. This value is
+computed by dividing Byte Size by Instructions. Note that this is not the same
+as Average Instruction Size. It computes a number relative to the total function
+size not just the size of the instruction list.
+.IP "\fBNumber of \s-1VBR\s0 32\-bit Integers\fR" 4
+.IX Item "Number of VBR 32-bit Integers"
+The total number of 32\-bit integers found in this function (for any use).
+.IP "\fBNumber of \s-1VBR\s0 64\-bit Integers\fR" 4
+.IX Item "Number of VBR 64-bit Integers"
+The total number of 64\-bit integers found in this function (for any use).
+.IP "\fBNumber of \s-1VBR\s0 Compressed Bytes\fR" 4
+.IX Item "Number of VBR Compressed Bytes"
+The total number of bytes in this function consumed by the 32\-bit and 64\-bit 
+integers that use the Variable Bit Rate encoding scheme.
+.IP "\fBNumber of \s-1VBR\s0 Expanded Bytes\fR" 4
+.IX Item "Number of VBR Expanded Bytes"
+The total number of bytes in this function that would have been consumed by 
+the 32\-bit and 64\-bit integers had they not been compressed with the Variable 
+Bit Rate encoding scheme.
+.IP "\fBBytes Saved With \s-1VBR\s0\fR" 4
+.IX Item "Bytes Saved With VBR"
+The total number of bytes saved in this function by using the Variable Bit 
+Rate encoding scheme. The percentage is relative to # of \s-1VBR\s0 Expanded Bytes.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+llvm-dis, <http://llvm.org/docs/BitCodeFormat.html>
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-diff/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-diff/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,16 @@
+# $FreeBSD: head/usr.bin/clang/llvm-diff/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-diff
+
+SRCDIR=	tools/llvm-diff
+SRCS=	llvm-diff.cpp \
+	DiffConsumer.cpp \
+	DiffLog.cpp \
+	DifferenceEngine.cpp
+
+LIBDEPS=llvmbitreader \
+	llvmasmparser \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-diff/llvm-diff.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-diff/llvm-diff.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,175 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-diff/llvm-diff.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-DIFF 1"
+.TH LLVM-DIFF 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-diff \- LLVM structural 'diff'
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-diff\fR [\fIoptions\fR] \fImodule 1\fR \fImodule 2\fR [\fIglobal name ...\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBllvm-diff\fR compares the structure of two \s-1LLVM\s0 modules, primarily
+focusing on differences in function definitions.  Insignificant
+differences, such as changes in the ordering of globals or in the
+names of local values, are ignored.
+.PP
+An input module will be interpreted as an assembly file if its name
+ends in '.ll';  otherwise it will be read in as a bitcode file.
+.PP
+If a list of global names is given, just the values with those names
+are compared; otherwise, all global values are compared, and
+diagnostics are produced for globals which only appear in one module
+or the other.
+.PP
+\&\fBllvm-diff\fR compares two functions by comparing their basic blocks,
+beginning with the entry blocks.  If the terminators seem to match,
+then the corresponding successors are compared; otherwise they are
+ignored.  This algorithm is very sensitive to changes in control flow,
+which tend to stop any downstream changes from being detected.
+.PP
+\&\fBllvm-diff\fR is intended as a debugging tool for writers of \s-1LLVM\s0
+passes and frontends.  It does not have a stable output format.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllvm-diff\fR finds no differences between the modules, it will exit
+with 0 and produce no output.  Otherwise it will exit with a non-zero
+value.
+.SH "BUGS"
+.IX Header "BUGS"
+Many important differences, like changes in linkage or function
+attributes, are not diagnosed.
+.PP
+Changes in memory behavior (for example, coalescing loads) can cause
+massive detected differences in blocks.
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-dis/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-dis/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,17 @@
+# $FreeBSD: head/usr.bin/clang/llvm-dis/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-dis
+
+SRCDIR=	tools/llvm-dis
+SRCS=	llvm-dis.cpp
+LLVM_REQUIRES_EH=
+
+TGHDRS=	Intrinsics
+LIBDEPS=llvmanalysis \
+	llvmtarget \
+	llvmmc \
+	llvmbitreader \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-dis/llvm-dis.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-dis/llvm-dis.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,175 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-dis/llvm-dis.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-DIS 1"
+.TH LLVM-DIS 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-dis \- LLVM disassembler
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-dis\fR [\fIoptions\fR] [\fIfilename\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBllvm-dis\fR command is the \s-1LLVM\s0 disassembler.  It takes an \s-1LLVM\s0
+bitcode file and converts it into human-readable \s-1LLVM\s0 assembly language.
+.PP
+If filename is omitted or specified as \f(CW\*(C`\-\*(C'\fR, \fBllvm-dis\fR reads its
+input from standard input.
+.PP
+If the input is being read from standard input, then \fBllvm-dis\fR
+will send its output to standard output by default.  Otherwise, the
+output will be written to a file named after the input file, with
+a \f(CW\*(C`.ll\*(C'\fR suffix added (any existing \f(CW\*(C`.bc\*(C'\fR suffix will first be
+removed).  You can override the choice of output file using the
+\&\fB\-o\fR option.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+Enable binary output on terminals.  Normally, \fBllvm-dis\fR will refuse to
+write raw bitcode output if the output stream is a terminal. With this option,
+\&\fBllvm-dis\fR will write raw bitcode regardless of the output device.
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-o\fR \fIfilename\fR" 4
+.IX Item "-o filename"
+Specify the output file name.  If \fIfilename\fR is \-, then the output is sent
+to standard output.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllvm-dis\fR succeeds, it will exit with 0.  Otherwise, if an error
+occurs, it will exit with a non-zero value.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+llvm-as
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-extract/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-extract/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,22 @@
+# $FreeBSD: head/usr.bin/clang/llvm-extract/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-extract
+
+SRCDIR=	tools/llvm-extract
+SRCS=	llvm-extract.cpp
+
+LIBDEPS=llvmasmparser \
+	llvmbitwriter \
+	llvmbitreader \
+	llvmipo \
+	llvmscalaropts \
+	llvminstcombine \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmtarget \
+	llvmmc \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-extract/llvm-extract.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-extract/llvm-extract.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,195 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-extract/llvm-extract.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-EXTRACT 1"
+.TH LLVM-EXTRACT 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-extract \- extract a function from an LLVM module
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-extract\fR [\fIoptions\fR] \fB\-\-func\fR \fIfunction-name\fR [\fIfilename\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBllvm-extract\fR command takes the name of a function and extracts it from
+the specified \s-1LLVM\s0 bitcode file.  It is primarily used as a debugging tool to
+reduce test cases from larger programs that are triggering a bug.
+.PP
+In addition to extracting the bitcode of the specified function,
+\&\fBllvm-extract\fR will also remove unreachable global variables, prototypes, and
+unused types.
+.PP
+The \fBllvm-extract\fR command reads its input from standard input if filename is
+omitted or if filename is \-.  The output is always written to standard output,
+unless the \fB\-o\fR option is specified (see below).
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+Enable binary output on terminals.  Normally, \fBllvm-extract\fR will refuse to
+write raw bitcode output if the output stream is a terminal. With this option,
+\&\fBllvm-extract\fR will write raw bitcode regardless of the output device.
+.IP "\fB\-\-func\fR \fIfunction-name\fR" 4
+.IX Item "--func function-name"
+Extract the function named \fIfunction-name\fR from the \s-1LLVM\s0 bitcode. May be
+specified multiple times to extract multiple functions at once.
+.IP "\fB\-\-rfunc\fR \fIfunction-regular-expr\fR" 4
+.IX Item "--rfunc function-regular-expr"
+Extract the function(s) matching \fIfunction-regular-expr\fR from the \s-1LLVM\s0 bitcode.
+All functions matching the regular expression will be extracted.  May be 
+specified multiple times.
+.IP "\fB\-\-glob\fR \fIglobal-name\fR" 4
+.IX Item "--glob global-name"
+Extract the global variable named \fIglobal-name\fR from the \s-1LLVM\s0 bitcode. May be
+specified multiple times to extract multiple global variables at once.
+.IP "\fB\-\-rglob\fR \fIglob-regular-expr\fR" 4
+.IX Item "--rglob glob-regular-expr"
+Extract the global variable(s) matching \fIglobal-regular-expr\fR from the \s-1LLVM\s0
+bitcode. All global variables matching the regular expression will be extracted.
+May be specified multiple times.
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-o\fR \fIfilename\fR" 4
+.IX Item "-o filename"
+Specify the output filename.  If filename is \*(L"\-\*(R" (the default), then
+\&\fBllvm-extract\fR sends its output to standard output.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+Write output in \s-1LLVM\s0 intermediate language (instead of bitcode).
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllvm-extract\fR succeeds, it will exit with 0.  Otherwise, if an error
+occurs, it will exit with a non-zero value.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+bugpoint
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-ld/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-ld/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,25 @@
+# $FreeBSD: head/usr.bin/clang/llvm-ld/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-ld
+
+SRCDIR=	tools/llvm-ld
+SRCS=	Optimize.cpp \
+	llvm-ld.cpp
+
+TGHDRS=	Intrinsics
+LIBDEPS=llvmbitwriter \
+	llvmlinker \
+	llvmarchive \
+	llvmbitreader \
+	llvmipo \
+	llvmscalaropts \
+	llvminstcombine \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmtarget \
+	llvmmc \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-ld/llvm-ld.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-ld/llvm-ld.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,319 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-ld/llvm-ld.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-LD 1"
+.TH LLVM-LD 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-ld \- LLVM linker
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-ld\fR <options> <files>
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBllvm-ld\fR tool takes a set of \s-1LLVM\s0 bitcode files and links them
+together into a single \s-1LLVM\s0 bitcode file.  The output bitcode file can be
+another bitcode file or an executable bitcode program.  Using additional
+options, \fBllvm-ld\fR is able to produce native code executables.
+.PP
+The \fBllvm-ld\fR tool is the main linker for \s-1LLVM\s0. It is used to link together
+the output of \s-1LLVM\s0 front-end compilers and run \*(L"link time\*(R" optimizations (mostly
+the inter-procedural kind).
+.PP
+The \fBllvm-ld\fR tools attempts to mimic the interface provided by the default
+system linker so that it can act as a \fIdrop-in\fR replacement.
+.SS "Search Order"
+.IX Subsection "Search Order"
+When looking for objects specified on the command line, \fBllvm-ld\fR will search 
+for the object first in the current directory and then in the directory 
+specified by the \fB\s-1LLVM_LIB_SEARCH_PATH\s0\fR environment variable.  If it cannot 
+find the object, it fails.
+.PP
+When looking for a library specified with the \fB\-l\fR option, \fBllvm-ld\fR first
+attempts to load a file with that name from the current directory.  If that
+fails, it looks for lib\fIlibrary\fR.bc, lib\fIlibrary\fR.a, or lib\fIlibrary\fR.\fIshared
+library extension\fR, in that order, in each directory added to the library search
+path with the \fB\-L\fR option.  These directories are searched in the order they
+are specified.  If the library cannot be located, then \fBllvm-ld\fR looks in the
+directory specified by the \fB\s-1LLVM_LIB_SEARCH_PATH\s0\fR environment variable.  If it
+does not find a library there, it fails.
+.PP
+The \fIshared library extension\fR may be \fI.so\fR, \fI.dyld\fR, \fI.dll\fR, or something
+different, depending upon the system.
+.PP
+The \fB\-L\fR option is global.  It does not matter where it is specified in the
+list of command line arguments; the directory is simply added to the search path
+and is applied to all libraries, preceding or succeeding, in the command line.
+.SS "Link order"
+.IX Subsection "Link order"
+All object and bitcode files are linked first in the order they were 
+specified on the command line.  All library files are linked next.  
+Some libraries may not be linked into the object program; see below.
+.SS "Library Linkage"
+.IX Subsection "Library Linkage"
+Object files and static bitcode objects are always linked into the output
+file.  Library archives (.a files) load only the objects within the archive
+that define symbols needed by the output file.  Hence, libraries should be
+listed after the object files and libraries which need them; otherwise, the
+library may not be linked in, and the dependent library will not have its
+undefined symbols defined.
+.SS "Native code generation"
+.IX Subsection "Native code generation"
+The \fBllvm-ld\fR program has limited support for native code generation, when
+using the \fB\-native\fR or \fB\-native\-cbe\fR options. Native code generation is
+performed by converting the linked bitcode into native assembly (.s) or C code
+and running the system compiler (typically gcc) on the result.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.SS "General Options"
+.IX Subsection "General Options"
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+Specifies verbose mode. In this mode the linker will print additional
+information about the actions it takes, programs it executes, etc.
+.IP "\fB\-stats\fR" 4
+.IX Item "-stats"
+Print statistics.
+.IP "\fB\-time\-passes\fR" 4
+.IX Item "-time-passes"
+Record the amount of time needed for each pass and print it to standard
+error.
+.SS "Input/Output Options"
+.IX Subsection "Input/Output Options"
+.IP "\fB\-o\fR \fIfilename\fR" 4
+.IX Item "-o filename"
+This overrides the default output file and specifies the name of the file that
+should be generated by the linker. By default, \fBllvm-ld\fR generates a file named
+\&\fIa.out\fR for compatibility with \fBld\fR. The output will be written to
+\&\fIfilename\fR.
+.IP "\fB\-b\fR \fIfilename\fR" 4
+.IX Item "-b filename"
+This option can be used to override the output bitcode file name. By default, 
+the name of the bitcode output file is one more \*(L".bc\*(R" suffix added to the name 
+specified by \fB\-o filename\fR option.
+.IP "\fB\-l\fR\fIname\fR" 4
+.IX Item "-lname"
+This option specifies the \fIname\fR of a library to search when resolving symbols
+for the program. Only the base name should be specified as \fIname\fR, without a
+\&\fIlib\fR prefix or any suffix.
+.IP "\fB\-L\fR\fIPath\fR" 4
+.IX Item "-LPath"
+This option tells \fBllvm-ld\fR to look in \fIPath\fR to find any library subsequently
+specified with the \fB\-l\fR option. The paths will be searched in the order in
+which they are specified on the command line. If the library is still not found,
+a small set of system specific directories will also be searched. Note that
+libraries specified with the \fB\-l\fR option that occur \fIbefore\fR any \fB\-L\fR options
+will not search the paths given by the \fB\-L\fR options following it.
+.IP "\fB\-link\-as\-library\fR" 4
+.IX Item "-link-as-library"
+Link the bitcode files together as a library, not an executable. In this mode,
+undefined symbols will be permitted.
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+An alias for \-link\-as\-library.
+.IP "\fB\-native\fR" 4
+.IX Item "-native"
+Generate a native machine code executable.
+.Sp
+When generating native executables, \fBllvm-ld\fR first checks for a bitcode
+version of the library and links it in, if necessary.  If the library is
+missing, \fBllvm-ld\fR skips it.  Then, \fBllvm-ld\fR links in the same
+libraries as native code.
+.Sp
+In this way, \fBllvm-ld\fR should be able to link in optimized bitcode
+subsets of common libraries and then link in any part of the library that
+hasn't been converted to bitcode.
+.IP "\fB\-native\-cbe\fR" 4
+.IX Item "-native-cbe"
+Generate a native machine code executable with the \s-1LLVM\s0 C backend.
+.Sp
+This option is identical to the \fB\-native\fR option, but uses the
+C backend to generate code for the program instead of an \s-1LLVM\s0 native
+code generator.
+.SS "Optimization Options"
+.IX Subsection "Optimization Options"
+.IP "\fB\-disable\-inlining\fR" 4
+.IX Item "-disable-inlining"
+Do not run the inlining pass. Functions will not be inlined into other
+functions.
+.IP "\fB\-disable\-opt\fR" 4
+.IX Item "-disable-opt"
+Completely disable optimization.
+.IP "\fB\-disable\-internalize\fR" 4
+.IX Item "-disable-internalize"
+Do not mark all symbols as internal.
+.IP "\fB\-verify\-each\fR" 4
+.IX Item "-verify-each"
+Run the verification pass after each of the passes to verify intermediate
+results.
+.IP "\fB\-strip\-all\fR" 4
+.IX Item "-strip-all"
+Strip all debug and symbol information from the executable to make it smaller.
+.IP "\fB\-strip\-debug\fR" 4
+.IX Item "-strip-debug"
+Strip all debug information from the executable to make it smaller.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+An alias for \fB\-strip\-all\fR.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+An alias for \fB\-strip\-debug\fR.
+.IP "\fB\-export\-dynamic\fR" 4
+.IX Item "-export-dynamic"
+An alias for \fB\-disable\-internalize\fR
+.IP "\fB\-post\-link\-opt\fR\fIPath\fR" 4
+.IX Item "-post-link-optPath"
+Run post-link optimization program. After linking is completed a bitcode file
+will be generated. It will be passed to the program specified by \fIPath\fR as the
+first argument. The second argument to the program will be the name of a
+temporary file into which the program should place its optimized output. For
+example, the \*(L"no-op optimization\*(R" would be a simple shell script:
+.Sp
+.Vb 2
+\&    #!/bin/bash
+\&    cp $1 $2
+.Ve
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllvm-ld\fR succeeds, it will exit with 0 return code.  If an error occurs,
+it will exit with a non-zero return code.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The \f(CW\*(C`LLVM_LIB_SEARCH_PATH\*(C'\fR environment variable is used to find bitcode
+libraries. Any paths specified in this variable will be searched after the \f(CW\*(C`\-L\*(C'\fR
+options.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+llvm-link
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-link/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-link/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,21 @@
+# $FreeBSD: head/usr.bin/clang/llvm-link/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-link
+
+SRCDIR=	tools/llvm-link
+SRCS=	llvm-link.cpp
+
+LIBDEPS=llvmasmparser \
+	llvmbitwriter \
+	llvmlinker \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmtarget \
+	llvmmc \
+	llvmarchive \
+	llvmbitreader \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-link/llvm-link.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-link/llvm-link.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,190 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-link/llvm-link.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-LINK 1"
+.TH LLVM-LINK 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-link \- LLVM linker
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-link\fR [\fIoptions\fR] \fIfilename ...\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBllvm-link\fR takes several \s-1LLVM\s0 bitcode files and links them together into a
+single \s-1LLVM\s0 bitcode file.  It writes the output file to standard output, unless
+the \fB\-o\fR option is used to specify a filename.
+.PP
+\&\fBllvm-link\fR attempts to load the input files from the current directory.  If
+that fails, it looks for each file in each of the directories specified by the
+\&\fB\-L\fR options on the command line.  The library search paths are global; each
+one is searched for every input file if necessary.  The directories are searched
+in the order they were specified on the command line.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-L\fR \fIdirectory\fR" 4
+.IX Item "-L directory"
+Add the specified \fIdirectory\fR to the library search path.  When looking for
+libraries, \fBllvm-link\fR will look in path name for libraries.  This option can be
+specified multiple times; \fBllvm-link\fR will search inside these directories in
+the order in which they were specified on the command line.
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+Enable binary output on terminals.  Normally, \fBllvm-link\fR will refuse to
+write raw bitcode output if the output stream is a terminal. With this option,
+\&\fBllvm-link\fR will write raw bitcode regardless of the output device.
+.IP "\fB\-o\fR \fIfilename\fR" 4
+.IX Item "-o filename"
+Specify the output file name.  If \fIfilename\fR is \f(CW\*(C`\-\*(C'\fR, then \fBllvm-link\fR will
+write its output to standard output.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+Write output in \s-1LLVM\s0 intermediate language (instead of bitcode).
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+If specified, \fBllvm-link\fR prints a human-readable version of the output
+bitcode file to standard error.
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+Verbose mode.  Print information about what \fBllvm-link\fR is doing.  This
+typically includes a message for each bitcode file linked in and for each
+library found.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllvm-link\fR succeeds, it will exit with 0.  Otherwise, if an error
+occurs, it will exit with a non-zero value.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+gccld
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-mc/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-mc/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,46 @@
+# $FreeBSD: head/usr.bin/clang/llvm-mc/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-mc
+NO_MAN=
+
+SRCDIR=	tools/llvm-mc
+SRCS=	llvm-mc.cpp \
+	Disassembler.cpp
+
+LIBDEPS=llvmmcdisassembler \
+	llvmarmdisassembler \
+	llvmarmasmparser \
+	llvmarmcodegen \
+	llvmarmdesc \
+	llvmarminstprinter \
+	llvmarminfo \
+	llvmmipscodegen \
+	llvmmipsdesc \
+	llvmmipsinstprinter \
+	llvmmipsinfo \
+	llvmpowerpccodegen \
+	llvmpowerpcdesc \
+	llvmpowerpcinstprinter \
+	llvmpowerpcinfo \
+	llvmx86disassembler \
+	llvmx86asmparser \
+	llvmx86codegen \
+	llvmx86desc \
+	llvmselectiondag \
+	llvmasmprinter \
+	llvmmcparser \
+	llvmcodegen \
+	llvmscalaropts \
+	llvminstcombine \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmtarget \
+	llvmx86instprinter \
+	llvmx86utils \
+	llvmcore \
+	llvmx86info \
+	llvmmc \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-nm/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-nm/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,14 @@
+# $FreeBSD: head/usr.bin/clang/llvm-nm/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-nm
+
+SRCDIR=	tools/llvm-nm
+SRCS=	llvm-nm.cpp
+
+LIBDEPS=llvmobject \
+	llvmarchive \
+	llvmbitreader \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-nm/llvm-nm.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-nm/llvm-nm.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,219 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-nm/llvm-nm.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-NM 1"
+.TH LLVM-NM 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-nm \- list LLVM bitcode file's symbol table
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-nm\fR [\fIoptions\fR] [\fIfilenames...\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBllvm-nm\fR utility lists the names of symbols from the \s-1LLVM\s0 bitcode files,
+or \fBar\fR archives containing \s-1LLVM\s0 bitcode files, named on the command line.
+Each symbol is listed along with some simple information about its provenance.
+If no file name is specified, or \fI\-\fR is used as a file name, \fBllvm-nm\fR will
+process a bitcode file on its standard input stream.
+.PP
+\&\fBllvm-nm\fR's default output format is the traditional \s-1BSD\s0 \fBnm\fR output format.
+Each such output record consists of an (optional) 8\-digit hexadecimal address,
+followed by a type code character, followed by a name, for each symbol. One
+record is printed per line; fields are separated by spaces. When the address is
+omitted, it is replaced by 8 spaces.
+.PP
+Type code characters currently supported, and their meanings, are as follows:
+.IP "U" 4
+.IX Item "U"
+Named object is referenced but undefined in this bitcode file
+.IP "C" 4
+.IX Item "C"
+Common (multiple definitions link together into one def)
+.IP "W" 4
+.IX Item "W"
+Weak reference (multiple definitions link together into zero or one definitions)
+.IP "t" 4
+.IX Item "t"
+Local function (text) object
+.IP "T" 4
+.IX Item "T"
+Global function (text) object
+.IP "d" 4
+.IX Item "d"
+Local data object
+.IP "D" 4
+.IX Item "D"
+Global data object
+.IP "?" 4
+Something unrecognizable
+.PP
+Because \s-1LLVM\s0 bitcode files typically contain objects that are not considered to
+have addresses until they are linked into an executable image or dynamically
+compiled \*(L"just-in-time\*(R", \fBllvm-nm\fR does not print an address for any symbol,
+even symbols which are defined in the bitcode file.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-P\fR" 4
+.IX Item "-P"
+Use \s-1POSIX\s0.2 output format. Alias for \fB\-\-format=posix\fR.
+.IP "\fB\-B\fR    (default)" 4
+.IX Item "-B    (default)"
+Use \s-1BSD\s0 output format. Alias for \fB\-\-format=bsd\fR.
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command-line options and their meanings.
+.IP "\fB\-\-defined\-only\fR" 4
+.IX Item "--defined-only"
+Print only symbols defined in this bitcode file (as opposed to
+symbols which may be referenced by objects in this file, but not
+defined in this file.)
+.IP "\fB\-\-extern\-only\fR, \fB\-g\fR" 4
+.IX Item "--extern-only, -g"
+Print only symbols whose definitions are external; that is, accessible
+from other bitcode files.
+.IP "\fB\-\-undefined\-only\fR, \fB\-u\fR" 4
+.IX Item "--undefined-only, -u"
+Print only symbols referenced but not defined in this bitcode file.
+.IP "\fB\-\-format=\fR\fIfmt\fR, \fB\-f\fR" 4
+.IX Item "--format=fmt, -f"
+Select an output format; \fIfmt\fR may be \fIsysv\fR, \fIposix\fR, or \fIbsd\fR. The
+default is \fIbsd\fR.
+.SH "BUGS"
+.IX Header "BUGS"
+\&\fBllvm-nm\fR cannot demangle \*(C+ mangled names, like \s-1GNU\s0 \fBnm\fR can.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+\&\fBllvm-nm\fR exits with an exit code of zero.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+llvm-dis, \fIar\fR\|(1), \fInm\fR\|(1)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-objdump/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-objdump/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,49 @@
+# $FreeBSD: head/usr.bin/clang/llvm-objdump/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-objdump
+NO_MAN=
+
+SRCDIR=	tools/llvm-objdump
+SRCS=	llvm-objdump.cpp \
+	MachODump.cpp \
+	MCFunction.cpp \
+
+LIBDEPS=llvmobject \
+	llvmmcdisassembler \
+	llvmdebuginfo \
+	llvmarmdisassembler \
+	llvmarmasmparser \
+	llvmarmcodegen \
+	llvmarmdesc \
+	llvmarminstprinter \
+	llvmarminfo \
+	llvmmipscodegen \
+	llvmmipsdesc \
+	llvmmipsinstprinter \
+	llvmmipsinfo \
+	llvmpowerpccodegen \
+	llvmpowerpcdesc \
+	llvmpowerpcinstprinter \
+	llvmpowerpcinfo \
+	llvmx86disassembler \
+	llvmx86asmparser \
+	llvmx86codegen \
+	llvmx86desc \
+	llvmselectiondag \
+	llvmasmprinter \
+	llvmmcparser \
+	llvmcodegen \
+	llvmscalaropts \
+	llvminstcombine \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmtarget \
+	llvmx86instprinter \
+	llvmx86utils \
+	llvmcore \
+	llvmx86info \
+	llvmmc \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-prof/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-prof/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,15 @@
+# $FreeBSD: head/usr.bin/clang/llvm-prof/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-prof
+
+SRCDIR=	tools/llvm-prof
+SRCS=	llvm-prof.cpp
+
+LIBDEPS=llvmanalysis \
+	llvmtarget \
+	llvmmc \
+	llvmbitreader \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-prof/llvm-prof.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-prof/llvm-prof.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,173 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-prof/llvm-prof.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-PROF 1"
+.TH LLVM-PROF 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-prof \- print execution profile of LLVM program
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-prof\fR [\fIoptions\fR] [\fIbitcode file\fR] [\fIllvmprof.out\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBllvm-prof\fR tool reads in an \fIllvmprof.out\fR file (which can
+optionally use a specific file with the third program argument), a bitcode file
+for the program, and produces a human readable report, suitable for determining
+where the program hotspots are.
+.PP
+This program is often used in conjunction with the \fIutils/profile.pl\fR
+script.  This script automatically instruments a program, runs it with the \s-1JIT\s0,
+then runs \fBllvm-prof\fR to format a report.  To get more information about
+\&\fIutils/profile.pl\fR, execute it with the \fB\-help\fR option.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-\-annotated\-llvm\fR or \fB\-A\fR" 4
+.IX Item "--annotated-llvm or -A"
+In addition to the normal report printed, print out the code for the
+program, annotated with execution frequency information. This can be
+particularly useful when trying to visualize how frequently basic blocks
+are executed.  This is most useful with basic block profiling
+information or better.
+.IP "\fB\-\-print\-all\-code\fR" 4
+.IX Item "--print-all-code"
+Using this option enables the \fB\-\-annotated\-llvm\fR option, but it
+prints the entire module, instead of just the most commonly executed
+functions.
+.IP "\fB\-\-time\-passes\fR" 4
+.IX Item "--time-passes"
+Record the amount of time needed for each pass and print it to standard
+error.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+\&\fBllvm-prof\fR returns 1 if it cannot load the bitcode file or the profile
+information. Otherwise, it exits with zero.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+\&\fBllvm-prof\fR is maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-ranlib/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-ranlib/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,14 @@
+# $FreeBSD: head/usr.bin/clang/llvm-ranlib/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-ranlib
+
+SRCDIR=	tools/llvm-ranlib
+SRCS=	llvm-ranlib.cpp
+LLVM_REQUIRES_EH=
+
+LIBDEPS=llvmarchive \
+	llvmbitreader \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-ranlib/llvm-ranlib.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-ranlib/llvm-ranlib.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,167 @@
+.\" $FreeBSD: head/usr.bin/clang/llvm-ranlib/llvm-ranlib.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LLVM-RANLIB 1"
+.TH LLVM-RANLIB 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+llvm\-ranlib \- Generate index for LLVM archive
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBllvm-ranlib\fR [\-\-version] [\-help] <archive\-file>
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBllvm-ranlib\fR command is similar to the common Unix utility, \f(CW\*(C`ranlib\*(C'\fR. It
+adds or updates the symbol table in an \s-1LLVM\s0 archive file. Note that using the
+\&\fBllvm-ar\fR modifier \fIs\fR is usually more efficient than running \fBllvm-ranlib\fR
+which is only provided only for completness and compatibility. Unlike other 
+implementations of \f(CW\*(C`ranlib\*(C'\fR, \fBllvm-ranlib\fR indexes \s-1LLVM\s0 bitcode files, not
+native object modules. You can list the contents of the symbol table with the
+\&\f(CW\*(C`llvm\-nm \-s\*(C'\fR command.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fIarchive-file\fR" 4
+.IX Item "archive-file"
+Specifies the archive-file to which the symbol table is added or updated.
+.IP "\fI\-\-version\fR" 4
+.IX Item "--version"
+Print the version of \fBllvm-ranlib\fR and exit without building a symbol table.
+.IP "\fI\-help\fR" 4
+.IX Item "-help"
+Print usage help for \fBllvm-ranlib\fR and exit without building a symbol table.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBllvm-ranlib\fR succeeds, it will exit with 0.  If an error occurs, a non-zero
+exit code will be returned.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+llvm-ar, \fIranlib\fR\|(1)
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-rtdyld/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-rtdyld/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,48 @@
+# $FreeBSD: head/usr.bin/clang/llvm-rtdyld/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=llvm-rtdyld
+NO_MAN=
+
+SRCDIR=	tools/llvm-rtdyld
+SRCS=	llvm-rtdyld.cpp
+
+LIBDEPS=llvmjit \
+	llvmexecutionengine \
+	llvmruntimedyld \
+	llvmobject \
+	llvmarmdisassembler \
+	llvmarmasmparser \
+	llvmarmcodegen \
+	llvmarmdesc \
+	llvmarminstprinter \
+	llvmarminfo \
+	llvmmipscodegen \
+	llvmmipsdesc \
+	llvmmipsinstprinter \
+	llvmmipsinfo \
+	llvmpowerpccodegen \
+	llvmpowerpcdesc \
+	llvmpowerpcinstprinter \
+	llvmpowerpcinfo \
+	llvmx86disassembler \
+	llvmx86asmparser \
+	llvmx86codegen \
+	llvmx86desc \
+	llvmselectiondag \
+	llvmasmprinter \
+	llvmmcparser \
+	llvmcodegen \
+	llvmscalaropts \
+	llvminstcombine \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmtarget \
+	llvmx86instprinter \
+	llvmx86utils \
+	llvmcore \
+	llvmx86info \
+	llvmmc \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/llvm-stub/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/llvm-stub/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,9 @@
+# $FreeBSD: head/usr.bin/clang/llvm-stub/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG=	llvm-stub
+NO_MAN=
+
+SRCDIR=	tools/llvm-stub
+SRCS=	llvm-stub.c
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/macho-dump/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/macho-dump/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,12 @@
+# $FreeBSD: head/usr.bin/clang/macho-dump/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=macho-dump
+NO_MAN=
+
+SRCDIR=	tools/macho-dump
+SRCS=	macho-dump.cpp
+
+LIBDEPS=llvmobject \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/opt/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/opt/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,27 @@
+# $FreeBSD: head/usr.bin/clang/opt/Makefile 231057 2012-02-05 23:56:22Z dim $
+
+PROG_CXX=opt
+
+SRCDIR=	tools/opt
+SRCS=	AnalysisWrappers.cpp \
+	GraphPrinters.cpp \
+	PrintSCC.cpp \
+	opt.cpp
+
+TGHDRS=	Intrinsics
+LIBDEPS=llvmipo \
+	llvmscalaropts \
+	llvminstcombine \
+	llvminstrumentation \
+	llvmtransformutils \
+	llvmipa \
+	llvmanalysis \
+	llvmtarget \
+	llvmmc \
+	llvmasmparser \
+	llvmbitwriter \
+	llvmbitreader \
+	llvmcore \
+	llvmsupport
+
+.include "../clang.prog.mk"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/clang/opt/opt.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/usr.bin/clang/opt/opt.1	Fri Mar 02 17:02:21 2012 +0200
@@ -0,0 +1,250 @@
+.\" $FreeBSD: head/usr.bin/clang/opt/opt.1 231057 2012-02-05 23:56:22Z dim $
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "OPT 1"
+.TH OPT 1 "2011-10-17" "LLVM 3.0" "LLVM Command Guide"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+opt \- LLVM optimizer
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBopt\fR [\fIoptions\fR] [\fIfilename\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBopt\fR command is the modular \s-1LLVM\s0 optimizer and analyzer.  It takes \s-1LLVM\s0 
+source files as input, runs the specified optimizations or analyses on it, and then
+outputs the optimized file or the analysis results.  The function of 
+\&\fBopt\fR depends on whether the \fB\-analyze\fR option is given.
+.PP
+When \fB\-analyze\fR is specified, \fBopt\fR performs various analyses of the input
+source.  It will usually print the results on standard output, but in a few
+cases, it will print output to standard error or generate a file with the
+analysis output, which is usually done when the output is meant for another
+program.
+.PP
+While \fB\-analyze\fR is \fInot\fR given, \fBopt\fR attempts to produce an optimized 
+output file.  The optimizations available via \fBopt\fR depend upon what 
+libraries were linked into it as well as any additional libraries that have 
+been loaded with the \fB\-load\fR option.  Use the \fB\-help\fR option to determine 
+what optimizations you can use.
+.PP
+If \fIfilename\fR is omitted from the command line or is \fI\-\fR, \fBopt\fR reads its
+input from standard input. Inputs can be in either the \s-1LLVM\s0 assembly language
+format (.ll) or the \s-1LLVM\s0 bitcode format (.bc).
+.PP
+If an output filename is not specified with the \fB\-o\fR option, \fBopt\fR
+writes its output to the standard output.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+Enable binary output on terminals.  Normally, \fBopt\fR will refuse to
+write raw bitcode output if the output stream is a terminal. With this option,
+\&\fBopt\fR will write raw bitcode regardless of the output device.
+.IP "\fB\-help\fR" 4
+.IX Item "-help"
+Print a summary of command line options.
+.IP "\fB\-o\fR \fIfilename\fR" 4
+.IX Item "-o filename"
+Specify the output filename.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+Write output in \s-1LLVM\s0 intermediate language (instead of bitcode).
+.IP "\fB\-{passname}\fR" 4
+.IX Item "-{passname}"
+\&\fBopt\fR provides the ability to run any of \s-1LLVM\s0's optimization or analysis passes
+in any order. The \fB\-help\fR option lists all the passes available. The order in
+which the options occur on the command line are the order in which they are
+executed (within pass constraints).
+.IP "\fB\-std\-compile\-opts\fR" 4
+.IX Item "-std-compile-opts"
+This is short hand for a standard list of \fIcompile time optimization\fR passes.
+This is typically used to optimize the output from the llvm-gcc front end. It
+might be useful for other front end compilers as well. To discover the full set
+of options available, use the following command:
+.Sp
+.Vb 1
+\&   llvm\-as < /dev/null | opt \-std\-compile\-opts \-disable\-output \-debug\-pass=Arguments
+.Ve
+.IP "\fB\-disable\-inlining\fR" 4
+.IX Item "-disable-inlining"
+This option is only meaningful when \fB\-std\-compile\-opts\fR is given. It simply
+removes the inlining pass from the standard list.
+.IP "\fB\-disable\-opt\fR" 4
+.IX Item "-disable-opt"
+This option is only meaningful when \fB\-std\-compile\-opts\fR is given. It disables
+most, but not all, of the \fB\-std\-compile\-opts\fR. The ones that remain are
+\&\fB\-verify\fR, \fB\-lower\-setjmp\fR, and \fB\-funcresolve\fR.
+.IP "\fB\-strip\-debug\fR" 4
+.IX Item "-strip-debug"
+This option causes opt to strip debug information from the module before 
+applying other optimizations. It is essentially the same as \fB\-strip\fR but it
+ensures that stripping of debug information is done first.
+.IP "\fB\-verify\-each\fR" 4
+.IX Item "-verify-each"
+This option causes opt to add a verify pass after every pass otherwise specified
+on the command line (including \fB\-verify\fR).  This is useful for cases where it 
+is suspected that a pass is creating an invalid module but it is not clear which
+pass is doing it. The combination of \fB\-std\-compile\-opts\fR and \fB\-verify\-each\fR
+can quickly track down this kind of problem.
+.IP "\fB\-profile\-info\-file\fR \fIfilename\fR" 4
+.IX Item "-profile-info-file filename"
+Specify the name of the file loaded by the \-profile\-loader option.
+.IP "\fB\-stats\fR" 4
+.IX Item "-stats"
+Print statistics.
+.IP "\fB\-time\-passes\fR" 4
+.IX Item "-time-passes"
+Record the amount of time needed for each pass and print it to standard
+error.
+.IP "\fB\-debug\fR" 4
+.IX Item "-debug"
+If this is a debug build, this option will enable debug printouts
+from passes which use the \fI\s-1\fIDEBUG\s0()\fI\fR macro.  See the \fB\s-1LLVM\s0 Programmer's
+Manual\fR, section \fI#DEBUG\fR for more information.
+.IP "\fB\-load\fR=\fIplugin\fR" 4
+.IX Item "-load=plugin"
+Load the dynamic object \fIplugin\fR.  This object should register new optimization
+or analysis passes. Once loaded, the object will add new command line options to
+enable various optimizations or analyses.  To see the new complete list of 
+optimizations, use the \fB\-help\fR and \fB\-load\fR options together. For example:
+.Sp
+.Vb 1
+\&   opt \-load=plugin.so \-help
+.Ve
+.IP "\fB\-p\fR" 4
+.IX Item "-p"
+Print module after each transformation.
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+If \fBopt\fR succeeds, it will exit with 0.  Otherwise, if an error
+occurs, it will exit with a non-zero value.
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Maintained by the \s-1LLVM\s0 Team (<http://llvm.org/>).
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/cpio/Makefile
--- a/head/usr.bin/cpio/Makefile	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/cpio/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -1,11 +1,12 @@
-# $FreeBSD: head/usr.bin/cpio/Makefile 228797 2011-12-22 08:42:07Z mm $
+# $FreeBSD: head/usr.bin/cpio/Makefile 232153 2012-02-25 10:58:02Z mm $
 
 .include <bsd.own.mk>
 
 LIBARCHIVEDIR=	${.CURDIR}/../../contrib/libarchive
+LIBARCHIVECONFDIR=	${.CURDIR}/../../lib/libarchive
 
 PROG=	bsdcpio
-BSDCPIO_VERSION_STRING=2.8.5
+BSDCPIO_VERSION_STRING=	3.0.3
 
 .PATH:	${LIBARCHIVEDIR}/cpio
 SRCS=	cpio.c cmdline.c
@@ -14,7 +15,7 @@
 SRCS+=	err.c line_reader.c matching.c pathmatch.c
 
 CFLAGS+= -DBSDCPIO_VERSION_STRING=\"${BSDCPIO_VERSION_STRING}\"
-CFLAGS+= -DPLATFORM_CONFIG_H=\"${.CURDIR}/config_freebsd.h\"
+CFLAGS+= -DPLATFORM_CONFIG_H=\"${LIBARCHIVECONFDIR}/config_freebsd.h\"
 CFLAGS+= -I${LIBARCHIVEDIR}/cpio -I${LIBARCHIVEDIR}/libarchive_fe
 
 .ifdef RELEASE_CRUNCH
@@ -32,6 +33,10 @@
 LDADD+= -lmd
 .endif
 
+.if ${MK_ICONV} != "no"
+CFLAGS+=	-DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DICONV_CONST=const
+.endif
+
 SYMLINKS=bsdcpio ${BINDIR}/cpio
 MLINKS= bsdcpio.1 cpio.1
 
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/cpio/config_freebsd.h
--- a/head/usr.bin/cpio/config_freebsd.h	Fri Mar 02 17:01:51 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD: head/usr.bin/cpio/config_freebsd.h 224154 2011-07-17 21:42:22Z mm $
- */
-
-/* A hand-tooled configuration for FreeBSD. */
-
-#include <sys/param.h>  /* __FreeBSD_version */
-
-#define	HAVE_DIRENT_H 1
-#define	HAVE_ERRNO_H 1
-#define	HAVE_FCNTL_H 1
-#define	HAVE_FUTIMES 1
-#define	HAVE_GRP_H 1
-#define	HAVE_LIBARCHIVE 1
-#define	HAVE_LINK 1
-#define	HAVE_LSTAT 1
-#define	HAVE_LUTIMES 1
-#define	HAVE_PWD_H 1
-#define	HAVE_READLINK 1
-#define	HAVE_STDARG_H 1
-#define	HAVE_STDLIB_H 1
-#define	HAVE_STRING_H 1
-#define	HAVE_SYMLINK 1
-#define	HAVE_SYS_CDEFS_H 1
-#define	HAVE_SYS_STAT_H 1
-#define	HAVE_SYS_TIME_H 1
-#define	HAVE_TIME_H 1
-#define	HAVE_UINTMAX_T 1
-#define	HAVE_UNISTD_H 1
-#define	HAVE_UNSIGNED_LONG_LONG 1
-#define	HAVE_UTIME_H 1
-#define	HAVE_UTIMES 1
-#define	HAVE_WCSCMP 1
-
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/cpio/test/Makefile
--- a/head/usr.bin/cpio/test/Makefile	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/cpio/test/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -1,4 +1,4 @@
-# $FreeBSD: head/usr.bin/cpio/test/Makefile 228797 2011-12-22 08:42:07Z mm $
+# $FreeBSD: head/usr.bin/cpio/test/Makefile 232153 2012-02-25 10:58:02Z mm $
 
 LIBARCHIVEDIR=	${.CURDIR}/../../../contrib/libarchive
 
@@ -14,6 +14,7 @@
 	test_basic.c				\
 	test_format_newc.c			\
 	test_gcpio_compat.c			\
+	test_option_0.c				\
 	test_option_B_upper.c			\
 	test_option_C_upper.c			\
 	test_option_J_upper.c			\
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/csup/auth.c
--- a/head/usr.bin/csup/auth.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/csup/auth.c	Fri Mar 02 17:02:21 2012 +0200
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: head/usr.bin/csup/auth.c 228857 2011-12-24 12:16:38Z marius $
+ * $FreeBSD: head/usr.bin/csup/auth.c 232320 2012-02-29 22:35:09Z cognet $
  */
 
 #include <sys/param.h>
@@ -293,7 +293,7 @@
 	gettimeofday(&tv, NULL);
 	pid = getpid();
 	ppid = getppid();
-	srand(tv.tv_usec ^ tv.tv_sec ^ pid);
+	srandom(tv.tv_usec ^ tv.tv_sec ^ pid);
 	addrlen = sizeof(laddr);
 	error = getsockname(config->socket, (struct sockaddr *)&laddr, &addrlen);
 	if (error < 0) {
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/elfdump/elfdump.c
--- a/head/usr.bin/elfdump/elfdump.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/elfdump/elfdump.c	Fri Mar 02 17:02:21 2012 +0200
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/elfdump/elfdump.c 226434 2011-10-16 14:11:05Z marcel $");
+__FBSDID("$FreeBSD: head/usr.bin/elfdump/elfdump.c 231815 2012-02-16 05:16:55Z eadler $");
 
 #include <sys/types.h>
 #include <sys/elf32.h>
@@ -904,7 +904,6 @@
 	u_int64_t name;
 	u_int32_t namesz;
 	u_int32_t descsz;
-	u_int32_t type;
 	u_int32_t desc;
 	char *n, *s;
 
@@ -916,7 +915,6 @@
  	while (n < ((char *)e + offset + size)) {
 		namesz = elf_get_word(e, n, N_NAMESZ);
 		descsz = elf_get_word(e, n, N_DESCSZ);
-		type = elf_get_word(e, n, N_TYPE);
  		s = n + sizeof(Elf_Note);
  		desc = elf_get_word(e, n + sizeof(Elf_Note) + namesz, 0);
 		fprintf(out, "\t%s %d\n", s, desc);
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/enigma/enigma.c
--- a/head/usr.bin/enigma/enigma.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/enigma/enigma.c	Fri Mar 02 17:02:21 2012 +0200
@@ -11,7 +11,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/enigma/enigma.c 227237 2011-11-06 18:49:23Z ed $");
+__FBSDID("$FreeBSD: head/usr.bin/enigma/enigma.c 231994 2012-02-22 06:27:20Z kevlo $");
 
 #include <sys/types.h>
 
@@ -41,9 +41,15 @@
 	char salt[3];
 	unsigned rnd;
 	int32_t seed;
+	char *cryptpw;
 
 	strlcpy(salt, pw, sizeof(salt));
-	memcpy(buf, crypt(pw, salt), sizeof(buf));
+	cryptpw = crypt(pw, salt);
+	if (cryptpw == NULL) {
+		fprintf(stderr, "crypt(3) failure\n");
+		exit(1);
+	}
+	memcpy(buf, cryptpw, sizeof(buf));
 	seed = 123;
 	for (i=0; i<13; i++)
 		seed = seed*buf[i] + i;
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/fetch/fetch.1
--- a/head/usr.bin/fetch/fetch.1	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/fetch/fetch.1	Fri Mar 02 17:02:21 2012 +0200
@@ -1,5 +1,5 @@
 .\"-
-.\" Copyright (c) 2000-2011 Dag-Erling Smørgrav
+.\" Copyright (c) 2000-2012 Dag-Erling Smørgrav
 .\" All rights reserved.
 .\" Portions Copyright (c) 1999 Massachusetts Institute of Technology; used
 .\" by permission.
@@ -27,9 +27,9 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/usr.bin/fetch/fetch.1 225982 2011-10-04 15:00:54Z des $
+.\" $FreeBSD: head/usr.bin/fetch/fetch.1 232274 2012-02-28 22:15:46Z obrien $
 .\"
-.Dd September 27, 2011
+.Dd February 28, 2012
 .Dt FETCH 1
 .Os
 .Sh NAME
@@ -214,6 +214,11 @@
 flag is specified, wait this many seconds between successive retries.
 .El
 .Pp
+.Ar URL
+.Bd -literal
+    <scheme>:(//(<user>(:<pwd>)?@)?<host>(:<port>)?)?/(<document>)?
+.Ed
+.Pp
 If
 .Nm
 receives a
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/fstat/fstat.c
--- a/head/usr.bin/fstat/fstat.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/fstat/fstat.c	Fri Mar 02 17:02:21 2012 +0200
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/fstat/fstat.c 228992 2011-12-30 11:02:40Z uqs $");
+__FBSDID("$FreeBSD: head/usr.bin/fstat/fstat.c 232233 2012-02-27 17:39:34Z pluknet $");
 
 #include <sys/param.h>
 #include <sys/user.h>
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/gencat/gencat.c
--- a/head/usr.bin/gencat/gencat.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/gencat/gencat.c	Fri Mar 02 17:02:21 2012 +0200
@@ -65,7 +65,7 @@
 ******************************************************************/
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/usr.bin/gencat/gencat.c 231816 2012-02-16 05:17:01Z eadler $");
 
 #define _NLS_PRIVATE
 
@@ -462,89 +462,6 @@
 	}
 }
 
-void
-MCReadCat(int fd)
-{
-	fd = 0;
-#if 0
-	MCHeaderT mcHead;
-	MCMsgT  mcMsg;
-	MCSetT  mcSet;
-	msgT   *msg;
-	setT   *set;
-	int     i;
-	char   *data;
-
-	/* XXX init sethead? */
-
-	if (read(fd, &mcHead, sizeof(mcHead)) != sizeof(mcHead))
-		CORRUPT();
-	if (strncmp(mcHead.magic, MCMagic, MCMagicLen) != 0)
-		CORRUPT();
-	if (mcHead.majorVer != MCMajorVer)
-		error("unrecognized catalog version");
-	if ((mcHead.flags & MCGetByteOrder()) == 0)
-		error("wrong byte order");
-
-	if (lseek(fd, mcHead.firstSet, SEEK_SET) == -1)
-		CORRUPT();
-
-	for (;;) {
-		if (read(fd, &mcSet, sizeof(mcSet)) != sizeof(mcSet))
-			CORRUPT();
-		if (mcSet.invalid)
-			continue;
-
-		set = xmalloc(sizeof(setT));
-		memset(set, '\0', sizeof(*set));
-		if (cat->first) {
-			cat->last->next = set;
-			set->prev = cat->last;
-			cat->last = set;
-		} else
-			cat->first = cat->last = set;
-
-		set->setId = mcSet.setId;
-
-		/* Get the data */
-		if (mcSet.dataLen) {
-			data = xmalloc(mcSet.dataLen);
-			if (lseek(fd, mcSet.data.off, SEEK_SET) == -1)
-				CORRUPT();
-			if (read(fd, data, mcSet.dataLen) != mcSet.dataLen)
-				CORRUPT();
-			if (lseek(fd, mcSet.u.firstMsg, SEEK_SET) == -1)
-				CORRUPT();
-
-			for (i = 0; i < mcSet.numMsgs; ++i) {
-				if (read(fd, &mcMsg, sizeof(mcMsg)) != sizeof(mcMsg))
-					CORRUPT();
-				if (mcMsg.invalid) {
-					--i;
-					continue;
-				}
-				msg = xmalloc(sizeof(msgT));
-				memset(msg, '\0', sizeof(*msg));
-				if (set->first) {
-					set->last->next = msg;
-					msg->prev = set->last;
-					set->last = msg;
-				} else
-					set->first = set->last = msg;
-
-				msg->msgId = mcMsg.msgId;
-				msg->str = xstrdup((char *) (data + mcMsg.msg.off));
-			}
-			free(data);
-		}
-		if (!mcSet.nextSet)
-			break;
-		if (lseek(fd, mcSet.nextSet, SEEK_SET) == -1)
-			CORRUPT();
-	}
-#endif
-}
-
 /*
  * Write message catalog.
  *
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/lock/lock.c
--- a/head/usr.bin/lock/lock.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/lock/lock.c	Fri Mar 02 17:02:21 2012 +0200
@@ -42,7 +42,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/lock/lock.c 227169 2011-11-06 08:15:48Z ed $");
+__FBSDID("$FreeBSD: head/usr.bin/lock/lock.c 231994 2012-02-22 06:27:20Z kevlo $");
 
 /*
  * Lock a terminal up until the given key is entered or the given
@@ -94,7 +94,7 @@
 	struct itimerval ntimer, otimer;
 	struct tm *timp;
 	int ch, failures, sectimeout, usemine, vtylock;
-	char *ap, *mypw, *ttynam, *tzn;
+	char *ap, *cryptpw, *mypw, *ttynam, *tzn;
 	char hostname[MAXHOSTNAMELEN], s[BUFSIZ], s1[BUFSIZ];
 
 	openlog("lock", LOG_ODELAY, LOG_AUTH);
@@ -222,7 +222,8 @@
 		}
 		if (usemine) {
 			s[strlen(s) - 1] = '\0';
-			if (!strcmp(mypw, crypt(s, mypw)))
+			cryptpw = crypt(s, mypw);
+			if (cryptpw == NULL || !strcmp(mypw, cryptpw))
 				break;
 		}
 		else if (!strcmp(s, s1))
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/login/login_fbtab.c
--- a/head/usr.bin/login/login_fbtab.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/login/login_fbtab.c	Fri Mar 02 17:02:21 2012 +0200
@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/login/login_fbtab.c 228992 2011-12-30 11:02:40Z uqs $");
+__FBSDID("$FreeBSD: head/usr.bin/login/login_fbtab.c 231651 2012-02-14 10:11:45Z kevlo $");
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -100,17 +100,17 @@
 	if ((cp = devname = strtok(buf, WSPACE)) == 0)
 	    continue;				/* empty or comment */
 	if (strncmp(devname, _PATH_DEV, sizeof _PATH_DEV - 1) != 0
-	       || (cp = strtok((char *) 0, WSPACE)) == 0
+	       || (cp = strtok(NULL, WSPACE)) == 0
 	       || *cp != '0'
 	       || sscanf(cp, "%o", &prot) == 0
 	       || prot == 0
 	       || (prot & 0777) != prot
-	       || (cp = strtok((char *) 0, WSPACE)) == 0) {
+	       || (cp = strtok(NULL, WSPACE)) == 0) {
 	    syslog(LOG_ERR, "%s: bad entry: %s", table, cp ? cp : "(null)");
 	    continue;
 	}
 	if (strcmp(devname + 5, tty) == 0) {
-	    for (cp = strtok(cp, ":"); cp; cp = strtok((char *) 0, ":")) {
+	    for (cp = strtok(cp, ":"); cp; cp = strtok(NULL, ":")) {
 		login_protect(table, cp, prot, uid, gid);
 	    }
 	}
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/m4/lib/ohash_interval.3
--- a/head/usr.bin/m4/lib/ohash_interval.3	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/m4/lib/ohash_interval.3	Fri Mar 02 17:02:21 2012 +0200
@@ -13,7 +13,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.\" $FreeBSD: head/usr.bin/m4/lib/ohash_interval.3 228063 2011-11-28 13:32:39Z bapt $
+.\" $FreeBSD: head/usr.bin/m4/lib/ohash_interval.3 231564 2012-02-12 18:29:56Z ed $
 .\"
 .Dd $Mdocdate: May 31 2007 $
 .Dt OPEN_HASH_HELPER 3
@@ -28,7 +28,7 @@
 .Fd #include <stdint.h>
 .Fd #include <stddef.h>
 .Fd #include <ohash.h>
-.Ft u_int32_t
+.Ft uint32_t
 .Fn ohash_interval "const char *start" "const char **pend"
 .Ft "void *"
 .Fn ohash_create_entry "struct ohash_info *info" "const char *start" "const char **pend"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/make/job.c
--- a/head/usr.bin/make/job.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/make/job.c	Fri Mar 02 17:02:21 2012 +0200
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/make/job.c 228992 2011-12-30 11:02:40Z uqs $");
+__FBSDID("$FreeBSD: head/usr.bin/make/job.c 231544 2012-02-12 05:34:01Z fjoe $");
 
 /*-
  * job.c --
@@ -954,17 +954,19 @@
 						lastNode = job->node;
 					}
 					fprintf(out,
-					    "*** Completed successfully\n");
+					    "*** [%s] Completed successfully\n",
+					    job->node->name);
 				}
 			} else {
 				if (usePipes && job->node != lastNode) {
 					MESSAGE(out, job->node);
 					lastNode = job->node;
 				}
-				fprintf(out, "*** Error code %d%s\n",
+				fprintf(out, "*** [%s] Error code %d%s\n",
+					job->node->name,
 					WEXITSTATUS(*status),
 					(job->flags & JOB_IGNERR) ?
-					"(ignored)" : "");
+					" (ignored)" : "");
 
 				if (job->flags & JOB_IGNERR) {
 					*status = 0;
@@ -1005,7 +1007,8 @@
 						MESSAGE(out, job->node);
 						lastNode = job->node;
 					}
-					fprintf(out, "*** Continued\n");
+					fprintf(out, "*** [%s] Continued\n",
+					    job->node->name);
 				}
 				if (!(job->flags & JOB_CONTINUING)) {
 					DEBUGF(JOB, ("Warning: process %jd was not "
@@ -1029,7 +1032,8 @@
 					lastNode = job->node;
 				}
 				fprintf(out,
-				    "*** Signal %d\n", WTERMSIG(*status));
+				    "*** [%s] Signal %d\n", job->node->name,
+				    WTERMSIG(*status));
 				fflush(out);
 			}
 		}
@@ -1056,7 +1060,8 @@
 			MESSAGE(out, job->node);
 			lastNode = job->node;
 		}
-		fprintf(out, "*** Stopped -- signal %d\n", WSTOPSIG(*status));
+		fprintf(out, "*** [%s] Stopped -- signal %d\n",
+		    job->node->name, WSTOPSIG(*status));
 		job->flags |= JOB_RESUME;
 		TAILQ_INSERT_TAIL(&stoppedJobs, job, link);
 		fflush(out);
@@ -3034,13 +3039,15 @@
 			if (status == 0) {
 				return (0);
   			} else {
-				printf("*** Error code %d", status);
+				printf("*** [%s] Error code %d",
+				    gn->name, status);
   			}
 		} else if (WIFSTOPPED(reason)) {
 			status = WSTOPSIG(reason);
 		} else {
 			status = WTERMSIG(reason);
-			printf("*** Signal %d", status);
+			printf("*** [%s] Signal %d",
+			    gn->name, status);
   		}
   
 		if (ps.errCheck) {
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/ncal/ncal.c
--- a/head/usr.bin/ncal/ncal.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/ncal/ncal.c	Fri Mar 02 17:02:21 2012 +0200
@@ -26,7 +26,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-  "$FreeBSD: head/usr.bin/ncal/ncal.c 223931 2011-07-11 10:41:08Z edwin $";
+  "$FreeBSD: head/usr.bin/ncal/ncal.c 232004 2012-02-22 21:08:58Z maxim $";
 #endif /* not lint */
 
 #include <calendar.h>
@@ -105,7 +105,7 @@
 	{"RO", "Romania",       {1919,  3, 31}},
 	{"RU", "Russia",        {1918,  1, 31}},
 	{"SI", "Slovenia",      {1919,  3,  4}},
-	{"SW", "Sweden",        {1753,  2, 17}},
+	{"SE", "Sweden",        {1753,  2, 17}},
 	{"TR", "Turkey",        {1926, 12, 18}},
 	{"US", "United States", {1752,  9,  2}},
 	{"YU", "Yugoslavia",    {1919,  3,  4}}
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/netstat/Makefile
--- a/head/usr.bin/netstat/Makefile	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/netstat/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -1,5 +1,5 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/12/93
-# $FreeBSD: head/usr.bin/netstat/Makefile 228668 2011-12-17 22:32:00Z dim $
+# $FreeBSD: head/usr.bin/netstat/Makefile 232263 2012-02-28 18:30:18Z dim $
 
 .include <bsd.own.mk>
 
@@ -8,11 +8,9 @@
 	unix.c atalk.c mroute6.c ipsec.c bpf.c pfkey.c sctp.c
 
 WARNS?=	3
-.if ${CC:T:Mclang} == "clang"
 # XXX: Work around a clang false positive with format string warnings
 # and ntohs macros (see LLVM PR 11313).
-NO_WFORMAT=
-.endif
+NO_WFORMAT.clang=
 CFLAGS+=-fno-strict-aliasing
 
 CFLAGS+=-DIPSEC
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/netstat/route.c
--- a/head/usr.bin/netstat/route.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/netstat/route.c	Fri Mar 02 17:02:21 2012 +0200
@@ -34,7 +34,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/usr.bin/netstat/route.c 231852 2012-02-17 02:39:58Z bz $");
 
 #include <sys/param.h>
 #include <sys/protosw.h>
@@ -113,7 +113,6 @@
 
 static sa_u pt_u;
 
-int	fibnum;
 int	do_rtent = 0;
 struct	rtentry rtentry;
 struct	radix_node rnode;
@@ -148,8 +147,7 @@
 {
 	struct radix_node_head **rnhp, *rnh, head;
 	size_t intsize;
-	int i;
-	int numfibs;
+	int fam, fibnum, numfibs;
 
 	intsize = sizeof(int);
 	if (sysctlbyname("net.my_fibnum", &fibnum, &intsize, NULL, 0) == -1)
@@ -181,15 +179,20 @@
 		if (kread((u_long)(rtree), (char *)(rt_tables), (numfibs *
 		    (AF_MAX+1) * sizeof(struct radix_node_head *))) != 0)
 			return;
-		for (i = 0; i <= AF_MAX; i++) {
+		for (fam = 0; fam <= AF_MAX; fam++) {
 			int tmpfib;
-			if (i != AF_INET)
+
+			switch (fam) {
+			case AF_INET6:
+			case AF_INET:
+				tmpfib = fibnum;
+				break;
+			default:
 				tmpfib = 0;
-			else
-				tmpfib = fibnum;
+			}
 			rnhp = (struct radix_node_head **)*rt_tables;
 			/* Calculate the in-kernel address. */
-			rnhp += tmpfib * (AF_MAX+1) + i;
+			rnhp += tmpfib * (AF_MAX+1) + fam;
 			/* Read the in kernel rhn pointer. */
 			if (kget(rnhp, rnh) != 0)
 				continue;
@@ -198,16 +201,16 @@
 			/* Read the rnh data. */
 			if (kget(rnh, head) != 0)
 				continue;
-			if (i == AF_UNSPEC) {
+			if (fam == AF_UNSPEC) {
 				if (Aflag && af == 0) {
 					printf("Netmasks:\n");
 					p_tree(head.rnh_treetop);
 				}
-			} else if (af == AF_UNSPEC || af == i) {
-				size_cols(i, head.rnh_treetop);
-				pr_family(i);
+			} else if (af == AF_UNSPEC || af == fam) {
+				size_cols(fam, head.rnh_treetop);
+				pr_family(fam);
 				do_rtent = 1;
-				pr_rthdr(i);
+				pr_rthdr(fam);
 				p_tree(head.rnh_treetop);
 			}
 		}
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/newgrp/newgrp.c
--- a/head/usr.bin/newgrp/newgrp.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/newgrp/newgrp.c	Fri Mar 02 17:02:21 2012 +0200
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/newgrp/newgrp.c 229668 2012-01-05 23:08:11Z ghelmer $");
+__FBSDID("$FreeBSD: head/usr.bin/newgrp/newgrp.c 231994 2012-02-22 06:27:20Z kevlo $");
 
 #include <sys/types.h>
 
@@ -151,7 +151,7 @@
 	int dbmember, i, ngrps;
 	gid_t egid;
 	struct group *grp;
-	char *ep, *pass;
+	char *ep, *pass, *cryptpw;
 	char **p;
 
 	egid = getegid();
@@ -178,8 +178,10 @@
 		}
 	if (!dbmember && *grp->gr_passwd != '\0' && getuid() != 0) {
 		pass = getpass("Password:");
-		if (pass == NULL ||
-		    strcmp(grp->gr_passwd, crypt(pass, grp->gr_passwd)) != 0) {
+		if (pass == NULL)
+			return;
+		cryptpw = crypt(pass, grp->gr_passwd);
+		if (cryptpw == NULL || strcmp(grp->gr_passwd, cryptpw) != 0) {
 			fprintf(stderr, "Sorry\n");
 			return;
 		}
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/procstat/procstat.1
--- a/head/usr.bin/procstat/procstat.1	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/procstat/procstat.1	Fri Mar 02 17:02:21 2012 +0200
@@ -23,9 +23,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/usr.bin/procstat/procstat.1 228090 2011-11-28 19:45:47Z trociny $
+.\" $FreeBSD: head/usr.bin/procstat/procstat.1 232300 2012-02-29 15:06:40Z pluknet $
 .\"
-.Dd November 28, 2011
+.Dd February 29, 2012
 .Dt PROCSTAT 1
 .Os
 .Sh NAME
@@ -329,6 +329,8 @@
 real group ID
 .It SVGID
 saved group ID
+.It UMASK
+file creation mode mask
 .It FLAGS
 credential flags
 .It GROUPS
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/procstat/procstat_cred.c
--- a/head/usr.bin/procstat/procstat_cred.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/procstat/procstat_cred.c	Fri Mar 02 17:02:21 2012 +0200
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: head/usr.bin/procstat/procstat_cred.c 224859 2011-08-14 00:42:09Z rwatson $
+ * $FreeBSD: head/usr.bin/procstat/procstat_cred.c 232182 2012-02-26 14:27:34Z trociny $
  */
 
 #include <sys/param.h>
@@ -38,6 +38,8 @@
 
 #include "procstat.h"
 
+static const char *get_umask(struct kinfo_proc *kipp);
+
 void
 procstat_cred(struct kinfo_proc *kipp)
 {
@@ -48,9 +50,9 @@
 	gid_t *groups = NULL;
 
 	if (!hflag)
-		printf("%5s %-16s %5s %5s %5s %5s %5s %5s %5s %-15s\n", "PID",
-		    "COMM", "EUID", "RUID", "SVUID", "EGID", "RGID", "SVGID",
-		    "FLAGS", "GROUPS");
+		printf("%5s %-16s %5s %5s %5s %5s %5s %5s %5s %5s %-15s\n",
+		    "PID", "COMM", "EUID", "RUID", "SVUID", "EGID", "RGID",
+		    "SVGID", "UMASK", "FLAGS", "GROUPS");
 
 	printf("%5d ", kipp->ki_pid);
 	printf("%-16s ", kipp->ki_comm);
@@ -60,6 +62,7 @@
 	printf("%5d ", kipp->ki_groups[0]);
 	printf("%5d ", kipp->ki_rgid);
 	printf("%5d ", kipp->ki_svgid);
+	printf("%5s ", get_umask(kipp));
 	printf("%s", kipp->ki_cr_flags & CRED_FLAG_CAPMODE ? "C" : "-");
 	printf("     ");
 
@@ -98,3 +101,26 @@
 
 	printf("\n");
 }
+
+static const char *
+get_umask(struct kinfo_proc *kipp)
+{
+	int error;
+	int mib[4];
+	size_t len;
+	u_short fd_cmask;
+	static char umask[4];
+
+	mib[0] = CTL_KERN;
+	mib[1] = KERN_PROC;
+	mib[2] = KERN_PROC_UMASK;
+	mib[3] = kipp->ki_pid;
+	len = sizeof(fd_cmask);
+	error = sysctl(mib, 4, &fd_cmask, &len, NULL, 0);
+	if (error == 0) {
+		snprintf(umask, 4, "%03o", fd_cmask);
+		return (umask);
+	} else {
+		return ("-");
+	}
+}
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/rctl/rctl.8
--- a/head/usr.bin/rctl/rctl.8	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/rctl/rctl.8	Fri Mar 02 17:02:21 2012 +0200
@@ -23,9 +23,9 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/usr.bin/rctl/rctl.8 228823 2011-12-23 00:29:01Z gjb $
+.\" $FreeBSD: head/usr.bin/rctl/rctl.8 232329 2012-03-01 10:21:10Z trasz $
 .\"
-.Dd December 22, 2011
+.Dd March 1, 2012
 .Dt RCTL 8
 .Os
 .Sh NAME
@@ -117,8 +117,8 @@
 For example, a filter that matches every rule could be written as ":::=/",
 or, in short, ":".
 A filter that matches all the login classes would be "loginclass:".
-A filter that matches all defined rules for nproc resource would be
-"::nproc".
+A filter that matches all defined rules for maxproc resource would be
+"::maxproc".
 .Pp
 .Sh RESOURCES
 .Bl -column -offset 3n "pseudoterminals"
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/rpcgen/rpc_main.c
--- a/head/usr.bin/rpcgen/rpc_main.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/rpcgen/rpc_main.c	Fri Mar 02 17:02:21 2012 +0200
@@ -36,7 +36,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/rpcgen/rpc_main.c 229403 2012-01-03 18:51:58Z ed $");
+__FBSDID("$FreeBSD: head/usr.bin/rpcgen/rpc_main.c 231101 2012-02-06 21:35:11Z dim $");
 
 /*
  * rpc_main.c, Top level of the RPC protocol compiler.
@@ -75,13 +75,8 @@
 #define	EXTEND	1		/* alias for TRUE */
 #define	DONT_EXTEND	0		/* alias for FALSE */
 
-#define	SVR4_CPP "/usr/ccs/lib/cpp"
-#define SUNOS_CPP "/usr/bin/cpp"
-
-static int cppDefined = 0;	/* explicit path for C preprocessor */
-
 static const char *svcclosetime = "120";
-static const char *CPP = SVR4_CPP;
+static const char *CPP = NULL;
 static const char CPPFLAGS[] = "-C";
 static char pathbuf[MAXPATHLEN + 1];
 static const char *allv[] = {
@@ -97,7 +92,7 @@
  * machinations for handling expanding argument list
  */
 static void addarg(const char *);	/* add another argument to the list */
-static void putarg(int, const char *);	/* put argument at specified location */
+static void insarg(int, const char *);	/* insert arg at specified location */
 static void clear_args(void);		/* clear argument list */
 static void checkfiles(const char *, const char *);
 					/* check if out file already exists */
@@ -105,7 +100,7 @@
 
 
 #define	ARGLISTLEN	20
-#define	FIXEDARGS	2
+#define	FIXEDARGS	0
 
 static char *arglist[ARGLISTLEN];
 static int argcount = FIXEDARGS;
@@ -288,24 +283,29 @@
 	argcount = FIXEDARGS;
 }
 
-/* make sure that a CPP exists */
+/* prepend C-preprocessor and flags before arguments */
 static void
-find_cpp(void)
+prepend_cpp(void)
 {
-	struct stat buf;
+	int idx = 1;
+	const char *var;
+	char *dupvar, *s, *t;
 
-	if (stat(CPP, &buf) < 0)  { /* SVR4 or explicit cpp does not exist */
-		if (cppDefined) {
-			warnx("cannot find C preprocessor: %s", CPP);
-			crash();
-		} else {	/* try the other one */
-			CPP = SUNOS_CPP;
-			if (stat(CPP, &buf) < 0) { /* can't find any cpp */
-				warnx("cannot find C preprocessor: %s", CPP);
-				crash();
-			}
+	if (CPP != NULL)
+		insarg(0, CPP);
+	else if ((var = getenv("RPCGEN_CPP")) == NULL)
+		insarg(0, "/usr/bin/cpp");
+	else {
+		/* Parse command line in a rudimentary way */
+		dupvar = xstrdup(var);
+		for (s = dupvar, idx = 0; (t = strsep(&s, " \t")) != NULL; ) {
+			if (t[0])
+				insarg(idx++, t);
 		}
+		free(dupvar);
 	}
+
+	insarg(idx, CPPFLAGS);
 }
 
 /*
@@ -320,9 +320,7 @@
 	(void) pipe(pd);
 	switch (childpid = fork()) {
 	case 0:
-		find_cpp();
-		putarg(0, CPP);
-		putarg(1, CPPFLAGS);
+		prepend_cpp();
 		addarg(define);
 		if (infile)
 			addarg(infile);
@@ -330,8 +328,8 @@
 		(void) close(1);
 		(void) dup2(pd[1], 1);
 		(void) close(pd[0]);
-		execv(arglist[0], arglist);
-		err(1, "execv");
+		execvp(arglist[0], arglist);
+		err(1, "execvp %s", arglist[0]);
 	case -1:
 		err(1, "fork");
 	}
@@ -934,18 +932,26 @@
 
 }
 
+/*
+ * Insert an argument at the specified location
+ */
 static void
-putarg(int place, const char *cp)
+insarg(int place, const char *cp)
 {
-	if (place >= ARGLISTLEN) {
-		warnx("arglist coding error");
+	int i;
+
+	if (argcount >= ARGLISTLEN) {
+		warnx("too many defines");
 		crash();
 		/*NOTREACHED*/
 	}
-	if (cp != NULL)
-		arglist[place] = xstrdup(cp);
-	else
-		arglist[place] = NULL;
+
+	/* Move up existing arguments */
+	for (i = argcount - 1; i >= place; i--)
+		arglist[i + 1] = arglist[i];
+
+	arglist[place] = xstrdup(cp);
+	argcount++;
 }
 
 /*
@@ -1125,14 +1131,15 @@
 					if (++i == argc) {
 						return (0);
 					}
-					(void) strlcpy(pathbuf, argv[i], sizeof(pathbuf));
-					if (strlcat(pathbuf, "/cpp", sizeof(pathbuf))
-					    >= sizeof(pathbuf)) {
+					if (strlcpy(pathbuf, argv[i],
+					    sizeof(pathbuf)) >= sizeof(pathbuf)
+					    || strlcat(pathbuf, "/cpp",
+					    sizeof(pathbuf)) >=
+					    sizeof(pathbuf)) {
 						warnx("argument too long");
 						return (0);
 					}
 					CPP = pathbuf;
-					cppDefined = 1;
 					goto nextarg;
 
 
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/rpcgen/rpcgen.1
--- a/head/usr.bin/rpcgen/rpcgen.1	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/rpcgen/rpcgen.1	Fri Mar 02 17:02:21 2012 +0200
@@ -1,5 +1,5 @@
 .\" @(#)rpcgen.1 1.35 93/06/02 SMI
-.\" $FreeBSD$
+.\" $FreeBSD: head/usr.bin/rpcgen/rpcgen.1 231079 2012-02-06 12:03:21Z dim $
 .\" Copyright 1985-1993 Sun Microsystems, Inc.
 .\"
 .Dd September 2, 2005
@@ -490,6 +490,11 @@
 .Nm
 will start looking for the C-preprocessor.
 .El
+.Sh ENVIRONMENT
+If the
+.Ev RPCGEN_CPP
+environment variable is set, its value is used as the command line of the
+C preprocessor to be run on the input file.
 .Sh EXAMPLES
 The following example:
 .Dl example% rpcgen -T prot.x
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/sockstat/sockstat.c
--- a/head/usr.bin/sockstat/sockstat.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/sockstat/sockstat.c	Fri Mar 02 17:02:21 2012 +0200
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/sockstat/sockstat.c 230512 2012-01-24 21:33:34Z jilles $");
+__FBSDID("$FreeBSD: head/usr.bin/sockstat/sockstat.c 230874 2012-02-01 18:03:21Z trociny $");
 
 #include <sys/param.h>
 #include <sys/socket.h>
@@ -296,7 +296,7 @@
 				break;
 			if (errno == ENOENT)
 				goto out;
-			if (errno != ENOMEM)
+			if (errno != ENOMEM || len != bufsize)
 				err(1, "sysctlbyname()");
 			bufsize *= 2;
 		}
@@ -424,7 +424,7 @@
 			len = bufsize;
 			if (sysctlbyname(varname, buf, &len, NULL, 0) == 0)
 				break;
-			if (errno != ENOMEM)
+			if (errno != ENOMEM || len != bufsize)
 				err(1, "sysctlbyname()");
 			bufsize *= 2;
 		}
@@ -476,14 +476,15 @@
 static void
 getfiles(void)
 {
-	size_t len;
+	size_t len, olen;
 
-	if ((xfiles = malloc(len = sizeof *xfiles)) == NULL)
+	olen = len = sizeof *xfiles;
+	if ((xfiles = malloc(len)) == NULL)
 		err(1, "malloc()");
 	while (sysctlbyname("kern.file", xfiles, &len, 0, 0) == -1) {
-		if (errno != ENOMEM)
+		if (errno != ENOMEM || len != olen)
 			err(1, "sysctlbyname()");
-		len *= 2;
+		olen = len *= 2;
 		if ((xfiles = realloc(xfiles, len)) == NULL)
 			err(1, "realloc()");
 	}
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/tar/Makefile
--- a/head/usr.bin/tar/Makefile	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/tar/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -1,10 +1,10 @@
-# $FreeBSD: head/usr.bin/tar/Makefile 228797 2011-12-22 08:42:07Z mm $
+# $FreeBSD: head/usr.bin/tar/Makefile 232153 2012-02-25 10:58:02Z mm $
 .include <bsd.own.mk>
 
 LIBARCHIVEDIR=	${.CURDIR}/../../contrib/libarchive
 
 PROG=	bsdtar
-BSDTAR_VERSION_STRING=2.8.5
+BSDTAR_VERSION_STRING=	3.0.3
 
 .PATH: ${LIBARCHIVEDIR}/tar
 SRCS=	bsdtar.c	\
@@ -32,8 +32,12 @@
 LDADD+= -lmd
 .endif
 
+.if ${MK_ICONV} != "no"
+CFLAGS+=	-DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DICONV_CONST=const
+.endif
+
 CFLAGS+=	-DBSDTAR_VERSION_STRING=\"${BSDTAR_VERSION_STRING}\"
-CFLAGS+=	-DPLATFORM_CONFIG_H=\"${.CURDIR}/config_freebsd.h\"
+CFLAGS+=	-DPLATFORM_CONFIG_H=\"${.CURDIR}/../../lib/libarchive/config_freebsd.h\"
 CFLAGS+=	-I${LIBARCHIVEDIR}/tar -I${LIBARCHIVEDIR}/libarchive
 CFLAGS+=	-I${LIBARCHIVEDIR}/libarchive_fe
 SYMLINKS=	bsdtar ${BINDIR}/tar
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/tar/config_freebsd.h
--- a/head/usr.bin/tar/config_freebsd.h	Fri Mar 02 17:01:51 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD: head/usr.bin/tar/config_freebsd.h 224153 2011-07-17 21:33:15Z mm $
- */
-
-/* A default configuration for FreeBSD, used if there is no config.h. */
-#include <sys/param.h>  /* __FreeBSD_version */
-
-#undef	HAVE_ATTR_XATTR_H
-#define	HAVE_CHROOT 1
-#undef	HAVE_DIRECT_H
-#define	HAVE_DIRENT_D_NAMLEN 1
-#define	HAVE_DIRENT_H 1
-#define	HAVE_D_MD_ORDER 1
-#define	HAVE_ERRNO_H 1
-#undef	HAVE_EXT2FS_EXT2_FS_H
-#define	HAVE_FCHDIR 1
-#define	HAVE_FCNTL_H 1
-#define	HAVE_GRP_H 1
-#undef	HAVE_IO_H
-#define	HAVE_LANGINFO_H 1
-#undef	HAVE_LIBACL
-#define	HAVE_LIBARCHIVE 1
-#define	HAVE_LIMITS_H 1
-#define	HAVE_LINK 1
-#undef	HAVE_LINUX_EXT2_FS_H
-#undef	HAVE_LINUX_FS_H
-#define	HAVE_LOCALE_H 1
-#define	HAVE_MBTOWC 1
-#undef	HAVE_NDIR_H
-#define	HAVE_NL_LANGINFO 1
-#define	HAVE_PATHS_H 1
-#define	HAVE_PWD_H 1
-#define	HAVE_REGEX_H 1
-#define	HAVE_SETLOCALE 1
-#define	HAVE_SIGACTION 1
-#define	HAVE_SIGNAL_H 1
-#define	HAVE_STDARG_H 1
-#define	HAVE_STDINT_H 1
-#define	HAVE_STDLIB_H 1
-#define	HAVE_STRING_H 1
-#undef	HAVE_STRNCPY_S
-#define	HAVE_STRUCT_STAT_ST_FLAGS 1
-#define	HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 1
-#undef	HAVE_STRUCT_STAT_ST_MTIME_N
-#undef	HAVE_STRUCT_STAT_ST_MTIME_USEC
-#undef	HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
-#undef	HAVE_STRUCT_STAT_ST_UMTIME
-#define	HAVE_SYS_CDEFS_H 1
-#define	HAVE_SYS_DIR_H 1
-#define	HAVE_SYS_IOCTL_H 1
-#undef	HAVE_SYS_NDIR_H
-#define	HAVE_SYS_PARAM_H 1
-#define	HAVE_SYS_STAT_H 1
-#define	HAVE_SYS_TYPES_H 1
-#define	HAVE_TIME_H 1
-#define	HAVE_UNISTD_H 1
-#define	HAVE_WCTYPE_H 1
-#define	HAVE_WCSCMP 1
-#undef	HAVE_WINDOWS_H
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/tar/test/Makefile
--- a/head/usr.bin/tar/test/Makefile	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/tar/test/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -1,4 +1,4 @@
-# $FreeBSD: head/usr.bin/tar/test/Makefile 228797 2011-12-22 08:42:07Z mm $
+# $FreeBSD: head/usr.bin/tar/test/Makefile 232153 2012-02-25 10:58:02Z mm $
 
 LIBARCHIVEDIR=	${.CURDIR}/../../../contrib/libarchive
 
@@ -15,11 +15,26 @@
 	test_empty_mtree.c			\
 	test_getdate.c				\
 	test_help.c				\
+	test_option_C_upper.c			\
+	test_option_H_upper.c			\
+	test_option_L_upper.c			\
+	test_option_O_upper.c			\
 	test_option_T_upper.c			\
+	test_option_U_upper.c			\
+	test_option_X_upper.c			\
+	test_option_b.c				\
+	test_option_exclude.c			\
+	test_option_gid_gname.c			\
+	test_option_k.c				\
+	test_option_keep_newer_files.c		\
+	test_option_n.c				\
+	test_option_newer_than.c		\
 	test_option_q.c				\
 	test_option_r.c				\
 	test_option_s.c				\
+	test_option_uid_uname.c			\
 	test_patterns.c				\
+	test_print_longpath.c			\
 	test_stdio.c				\
 	test_strip_components.c			\
 	test_symlink_dir.c			\
@@ -37,10 +52,10 @@
 
 PROG=bsdtar_test
 DPADD=${LIBARCHIVE} ${LIBBZ2} ${LIBZ} ${LIBLZMA}
-CFLAGS+=	-DPLATFORM_CONFIG_H=\"${.CURDIR}/../config_freebsd.h\"
+CFLAGS+=	-DPLATFORM_CONFIG_H=\"${.CURDIR}/../../../lib/libarchive/config_freebsd.h\"
 LDADD= -larchive -lz -lbz2 -llzma
 CFLAGS+= -static -g -O2 -Wall
-CFLAGS+= -I${.CURDIR}/.. -I${.OBJDIR}
+CFLAGS+= -I${.CURDIR}/../../../lib/libarchive -I${.OBJDIR}
 CFLAGS+= -I${LIBARCHIVEDIR}/tar
 
 # Uncomment to link against dmalloc
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/tee/tee.c
--- a/head/usr.bin/tee/tee.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/tee/tee.c	Fri Mar 02 17:02:21 2012 +0200
@@ -38,7 +38,7 @@
 static char sccsid[] = "@(#)tee.c	8.1 (Berkeley) 6/6/93";
 #endif
 static const char rcsid[] =
-  "$FreeBSD: head/usr.bin/tee/tee.c 227187 2011-11-06 08:17:35Z ed $";
+  "$FreeBSD: head/usr.bin/tee/tee.c 231524 2012-02-11 16:34:03Z cracauer $";
 #endif /* not lint */
 
 #include <sys/types.h>
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/touch/touch.1
--- a/head/usr.bin/touch/touch.1	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/touch/touch.1	Fri Mar 02 17:02:21 2012 +0200
@@ -29,9 +29,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)touch.1	8.3 (Berkeley) 4/28/95
-.\" $FreeBSD$
+.\" $FreeBSD: head/usr.bin/touch/touch.1 230979 2012-02-04 13:37:31Z jh $
 .\"
-.Dd April 28, 1995
+.Dd February 4, 2012
 .Dt TOUCH 1
 .Os
 .Sh NAME
@@ -40,7 +40,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl A Ar [-][[hh]mm]SS
-.Op Fl acfhm
+.Op Fl achm
 .Op Fl r Ar file
 .Op Fl t Ar [[CC]YY]MMDDhhmm[.SS]
 .Ar
@@ -109,9 +109,6 @@
 .Nm
 utility does not treat this as an error.
 No error messages are displayed and the exit value is not affected.
-.It Fl f
-Attempt to force the update, even if the file permissions do not
-currently permit it.
 .It Fl h
 If the file is a symbolic link, change the times of the link
 itself rather than the file that the link points to.
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/touch/touch.c
--- a/head/usr.bin/touch/touch.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/touch/touch.c	Fri Mar 02 17:02:21 2012 +0200
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>
 
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/usr.bin/touch/touch.c 230979 2012-02-04 13:37:31Z jh $");
 
 #ifndef lint
 static const char copyright[] =
@@ -55,7 +55,6 @@
 #include <time.h>
 #include <unistd.h>
 
-int	rw(char *, struct stat *, int);
 void	stime_arg1(char *, struct timeval *);
 void	stime_arg2(char *, int, struct timeval *);
 void	stime_file(char *, struct timeval *);
@@ -69,12 +68,12 @@
 	struct timeval tv[2];
 	int (*stat_f)(const char *, struct stat *);
 	int (*utimes_f)(const char *, const struct timeval *);
-	int Aflag, aflag, cflag, fflag, mflag, ch, fd, len, rval, timeset;
+	int Aflag, aflag, cflag, mflag, ch, fd, len, rval, timeset;
 	char *p;
 	char *myname;
 
 	myname = basename(argv[0]);
-	Aflag = aflag = cflag = fflag = mflag = timeset = 0;
+	Aflag = aflag = cflag = mflag = timeset = 0;
 	stat_f = stat;
 	utimes_f = utimes;
 	if (gettimeofday(&tv[0], NULL))
@@ -92,7 +91,7 @@
 			cflag = 1;
 			break;
 		case 'f':
-			fflag = 1;
+			/* No-op for compatibility. */
 			break;
 		case 'h':
 			cflag = 1;
@@ -222,14 +221,8 @@
 		 if (!utimes_f(*argv, NULL))
 			continue;
 
-		/* Try reading/writing. */
-		if (!S_ISLNK(sb.st_mode) && !S_ISDIR(sb.st_mode)) {
-			if (rw(*argv, &sb, fflag))
-				rval = 1;
-		} else {
-			rval = 1;
-			warn("%s", *argv);
-		}
+		rval = 1;
+		warn("%s", *argv);
 	}
 	exit(rval);
 }
@@ -368,59 +361,10 @@
 	TIMESPEC_TO_TIMEVAL(tvp + 1, &sb.st_mtim);
 }
 
-int
-rw(char *fname, struct stat *sbp, int force)
-{
-	int fd, needed_chmod, rval;
-	u_char byte;
-
-	/* Try regular files. */
-	if (!S_ISREG(sbp->st_mode)) {
-		warnx("%s: %s", fname, strerror(EFTYPE));
-		return (1);
-	}
-
-	needed_chmod = rval = 0;
-	if ((fd = open(fname, O_RDWR, 0)) == -1) {
-		if (!force || chmod(fname, DEFFILEMODE))
-			goto err;
-		if ((fd = open(fname, O_RDWR, 0)) == -1)
-			goto err;
-		needed_chmod = 1;
-	}
-
-	if (sbp->st_size != 0) {
-		if (read(fd, &byte, sizeof(byte)) != sizeof(byte))
-			goto err;
-		if (lseek(fd, (off_t)0, SEEK_SET) == -1)
-			goto err;
-		if (write(fd, &byte, sizeof(byte)) != sizeof(byte))
-			goto err;
-	} else {
-		if (write(fd, &byte, sizeof(byte)) != sizeof(byte)) {
-err:			rval = 1;
-			warn("%s", fname);
-		} else if (ftruncate(fd, (off_t)0)) {
-			rval = 1;
-			warn("%s: file modified", fname);
-		}
-	}
-
-	if (close(fd) && rval != 1) {
-		rval = 1;
-		warn("%s", fname);
-	}
-	if (needed_chmod && chmod(fname, sbp->st_mode) && rval != 1) {
-		rval = 1;
-		warn("%s: permissions modified", fname);
-	}
-	return (rval);
-}
-
 void
 usage(char *myname)
 {
-	fprintf(stderr, "usage:\n" "%s [-A [-][[hh]mm]SS] [-acfhm] [-r file] "
+	fprintf(stderr, "usage:\n" "%s [-A [-][[hh]mm]SS] [-achm] [-r file] "
 		"[-t [[CC]YY]MMDDhhmm[.SS]] file ...\n", myname);
 	exit(1);
 }
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/vacation/Makefile
--- a/head/usr.bin/vacation/Makefile	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/vacation/Makefile	Fri Mar 02 17:02:21 2012 +0200
@@ -1,4 +1,4 @@
-# $FreeBSD: head/usr.bin/vacation/Makefile 228708 2011-12-19 13:38:28Z dim $
+# $FreeBSD: head/usr.bin/vacation/Makefile 232263 2012-02-28 18:30:18Z dim $
 
 SENDMAIL_DIR=${.CURDIR}/../../contrib/sendmail
 .PATH:	${SENDMAIL_DIR}/vacation
@@ -11,12 +11,10 @@
 
 WARNS?=	2
 
-.if ${CC:T:Mclang} == "clang"
 # Unfortunately, clang gives warnings about sendmail code that cannot
 # be turned off yet.  Since this is contrib code, and we don't really
 # care about the warnings, just make them non-fatal for now.
-NO_WERROR=
-.endif
+NO_WERROR.clang=
 
 LIBSMDIR=	${.OBJDIR}/../../lib/libsm
 LIBSM=		${LIBSMDIR}/libsm.a
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/who/who.1
--- a/head/usr.bin/who/who.1	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/who/who.1	Fri Mar 02 17:02:21 2012 +0200
@@ -26,9 +26,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)who.1	8.2 (Berkeley) 12/30/93
-.\" $FreeBSD: head/usr.bin/who/who.1 226881 2011-10-28 12:47:37Z pluknet $
+.\" $FreeBSD: head/usr.bin/who/who.1 231536 2012-02-11 21:49:23Z ed $
 .\"
-.Dd Oct 28, 2011
+.Dd February 11, 2012
 .Dt WHO 1
 .Os
 .Sh NAME
@@ -36,7 +36,7 @@
 .Nd display who is on the system
 .Sh SYNOPSIS
 .Nm
-.Op Fl bHmqsTu
+.Op Fl abHmqsTu
 .Op Cm am I
 .Op Ar file
 .Sh DESCRIPTION
@@ -48,6 +48,11 @@
 .Pp
 The options are as follows:
 .Bl -tag -width indent
+.It Fl a
+Equivalent to
+.Fl bTu ,
+with the exception that output isn't restricted to the time and date of
+the last system reboot.
 .It Fl b
 Write the time and date of the last system reboot.
 .It Fl H
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/who/who.c
--- a/head/usr.bin/who/who.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/who/who.c	Fri Mar 02 17:02:21 2012 +0200
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/usr.bin/who/who.c 226881 2011-10-28 12:47:37Z pluknet $");
+__FBSDID("$FreeBSD: head/usr.bin/who/who.c 231537 2012-02-11 21:50:44Z ed $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -48,7 +48,6 @@
 #include <utmpx.h>
 
 static void	heading(void);
-static void	boottime(void);
 static void	process_utmp(void);
 static void	quick(void);
 static void	row(const struct utmpx *);
@@ -57,6 +56,7 @@
 static void	whoami(void);
 
 static int	Hflag;			/* Write column headings */
+static int	aflag;			/* Print all entries */
 static int	bflag;			/* Show date of the last reboot */
 static int	mflag;			/* Show info about current terminal */
 static int	qflag;			/* "Quick" mode */
@@ -71,7 +71,7 @@
 
 	setlocale(LC_TIME, "");
 
-	while ((ch = getopt(argc, argv, "HTbmqsu")) != -1) {
+	while ((ch = getopt(argc, argv, "HTabmqsu")) != -1) {
 		switch (ch) {
 		case 'H':		/* Write column headings */
 			Hflag = 1;
@@ -79,6 +79,9 @@
 		case 'T':		/* Show terminal state */
 			Tflag = 1;
 			break;
+		case 'a':		/* Same as -bdlprtTu */
+			aflag = bflag = Tflag = uflag = 1;
+			break;
 		case 'b':		/* Show date of the last reboot */
 			bflag = 1;
 			break;
@@ -126,8 +129,6 @@
 			heading();
 		if (mflag)
 			whoami();
-		else if (bflag)
-			boottime();
 		else
 			process_utmp();
 	}
@@ -141,7 +142,7 @@
 usage(void)
 {
 
-	fprintf(stderr, "usage: who [-bHmqsTu] [am I] [file]\n");
+	fprintf(stderr, "usage: who [-abHmqsTu] [am I] [file]\n");
 	exit(1);
 }
 
@@ -226,26 +227,14 @@
 	struct utmpx *utx;
 
 	while ((utx = getutxent()) != NULL) {
-		if (utx->ut_type != USER_PROCESS)
-			continue;
-		if (ttystat(utx->ut_line) != 0)
-			continue;
-		row(utx);
+		if (((aflag || !bflag) && utx->ut_type == USER_PROCESS) ||
+		    (bflag && utx->ut_type == BOOT_TIME))
+			if (ttystat(utx->ut_line) == 0)
+				row(utx);
 	}
 }
 
 static void
-boottime(void)
-{
-	struct utmpx u1, *u2;
-
-	u1.ut_type = BOOT_TIME;
-	if ((u2 = getutxid(&u1)) == NULL)
-		return;
-	row(u2);
-}
-
-static void
 quick(void)
 {
 	struct utmpx *utx;
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/write/write.1
--- a/head/usr.bin/write/write.1	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/write/write.1	Fri Mar 02 17:02:21 2012 +0200
@@ -29,9 +29,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)write.1	8.1 (Berkeley) 6/6/93
-.\" $FreeBSD$
+.\" $FreeBSD: head/usr.bin/write/write.1 231586 2012-02-13 14:40:15Z glebius $
 .\"
-.Dd July 17, 2004
+.Dd February 13, 2012
 .Dt WRITE 1
 .Os
 .Sh NAME
@@ -107,7 +107,3 @@
 terminal, not the receiver's (which
 .Nm
 has no way of knowing).
-.Pp
-The
-.Nm
-utility does not recognize multibyte characters.
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/write/write.c
--- a/head/usr.bin/write/write.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/write/write.c	Fri Mar 02 17:02:21 2012 +0200
@@ -43,7 +43,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/usr.bin/write/write.c 231586 2012-02-13 14:40:15Z glebius $");
 
 #include <sys/param.h>
 #include <sys/signal.h>
@@ -60,12 +60,14 @@
 #include <string.h>
 #include <unistd.h>
 #include <utmpx.h>
+#include <wchar.h>
+#include <wctype.h>
 
 void done(int);
 void do_write(char *, char *, uid_t);
 static void usage(void);
 int term_chk(char *, int *, time_t *, int);
-void wr_fputs(unsigned char *s);
+void wr_fputs(wchar_t *s);
 void search_utmp(char *, char *, char *, uid_t);
 int utmp_chk(char *, char *);
 
@@ -243,7 +245,8 @@
 	char *nows;
 	struct passwd *pwd;
 	time_t now;
-	char path[MAXPATHLEN], host[MAXHOSTNAMELEN], line[512];
+	char path[MAXPATHLEN], host[MAXHOSTNAMELEN];
+	wchar_t line[512];
 
 	/* Determine our login name before we reopen() stdout */
 	if ((login = getlogin()) == NULL) {
@@ -269,7 +272,7 @@
 	(void)printf("\r\n\007\007\007Message from %s@%s on %s at %s ...\r\n",
 	    login, host, mytty, nows + 11);
 
-	while (fgets(line, sizeof(line), stdin) != NULL)
+	while (fgetws(line, sizeof(line)/sizeof(wchar_t), stdin) != NULL)
 		wr_fputs(line);
 }
 
@@ -288,30 +291,20 @@
  *     turns \n into \r\n
  */
 void
-wr_fputs(unsigned char *s)
+wr_fputs(wchar_t *s)
 {
 
-#define	PUTC(c)	if (putchar(c) == EOF) err(1, NULL);
+#define	PUTC(c)	if (putwchar(c) == WEOF) err(1, NULL);
 
-	for (; *s != '\0'; ++s) {
-		if (*s == '\n') {
-			PUTC('\r');
-		} else if (((*s & 0x80) && *s < 0xA0) ||
-			   /* disable upper controls */
-			   (!isprint(*s) && !isspace(*s) &&
-			    *s != '\a' && *s != '\b')
-			  ) {
-			if (*s & 0x80) {
-				*s &= ~0x80;
-				PUTC('M');
-				PUTC('-');
-			}
-			if (iscntrl(*s)) {
-				*s ^= 0x40;
-				PUTC('^');
-			}
+	for (; *s != L'\0'; ++s) {
+		if (*s == L'\n') {
+			PUTC(L'\r');
+			PUTC(L'\n');
+		} else if (iswprint(*s) || iswspace(*s)) {
+			PUTC(*s);
+		} else {
+			wprintf(L"<0x%X>", *s);
 		}
-		PUTC(*s);
 	}
 	return;
 #undef PUTC
diff -r f47f7c6f7737 -r a085b3559102 head/usr.bin/xargs/xargs.c
--- a/head/usr.bin/xargs/xargs.c	Fri Mar 02 17:01:51 2012 +0200
+++ b/head/usr.bin/xargs/xargs.c	Fri Mar 02 17:02:21 2012 +0200
@@ -44,7 +44,7 @@
 #endif /* not lint */
 #endif
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/usr.bin/xargs/xargs.c 232201 2012-02-26 23:06:30Z jilles $");
 
 #include <sys/param.h>
 #include <sys/wait.h>
@@ -281,7 +281,7 @@
 	case EOF:
 		/* No arguments since last exec. */
 		if (p == bbp) {
-			waitchildren(*argv, 1);
+			waitchildren(*av, 1);
 			exit(rval);
 		}
 		goto arg1;
@@ -368,7 +368,7 @@
 			}
 			prerun(argc, av);
 			if (ch == EOF || foundeof) {
-				waitchildren(*argv, 1);
+				waitchildren(*av, 1);
 				exit(rval);
 			}
 			p = bbp;
@@ -604,12 +604,11 @@
 			errno = childerr;
 			err(errno == ENOENT ? 127 : 126, "%s", name);
 		}
-		/*
-		 * If utility signaled or exited with a value of 255,
-		 * exit 1-125.
-		 */
-		if (WIFSIGNALED(status) || WEXITSTATUS(status) == 255)
-			exit(1);
+		if (WIFSIGNALED(status))
+			errx(1, "%s: terminated with signal %d; aborting",
+			    name, WTERMSIG(status));
+		if (WEXITSTATUS(status) == 255)
+			errx(1, "%s: exited with status 255; aborting", name);
 		if (WEXITSTATUS(status))
 			rval = 1;
 	}


More information about the Zrouter-src-freebsd mailing list