Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Dec 2014 18:44:24 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r275912 - in projects/clang350-import: . bin/sh bin/sh/tests/execution cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/lib/libdtrace/common cddl/contrib/opensolaris/lib/libzfs...
Message-ID:  <201412181844.sBIIiOvA015492@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Thu Dec 18 18:44:22 2014
New Revision: 275912
URL: https://svnweb.freebsd.org/changeset/base/275912

Log:
  Merge ^/head r275759 through r275911.

Added:
  projects/clang350-import/bin/sh/tests/execution/set-x4.0
     - copied unchanged from r275905, head/bin/sh/tests/execution/set-x4.0
  projects/clang350-import/contrib/elftoolchain/readelf/
     - copied from r275905, head/contrib/elftoolchain/readelf/
  projects/clang350-import/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff
     - copied unchanged from r275905, head/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff
  projects/clang350-import/sys/boot/fdt/dts/mips/beripad-sockit.dts
     - copied unchanged from r275905, head/sys/boot/fdt/dts/mips/beripad-sockit.dts
  projects/clang350-import/sys/dev/ofw/ofw_cpu.c
     - copied unchanged from r275905, head/sys/dev/ofw/ofw_cpu.c
  projects/clang350-import/sys/kern/kern_procctl.c
     - copied unchanged from r275905, head/sys/kern/kern_procctl.c
  projects/clang350-import/sys/mips/conf/BERI_SOCKIT
     - copied unchanged from r275905, head/sys/mips/conf/BERI_SOCKIT
  projects/clang350-import/tools/tools/nanobsd/defaults.sh
     - copied unchanged from r275905, head/tools/tools/nanobsd/defaults.sh
  projects/clang350-import/usr.sbin/vigr/
     - copied from r275905, head/usr.sbin/vigr/
Deleted:
  projects/clang350-import/sys/powerpc/ofw/ofw_cpu.c
Modified:
  projects/clang350-import/Makefile.inc1
  projects/clang350-import/UPDATING
  projects/clang350-import/bin/sh/output.c
  projects/clang350-import/bin/sh/tests/execution/Makefile
  projects/clang350-import/cddl/contrib/opensolaris/cmd/zdb/zdb.c
  projects/clang350-import/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
  projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c
  projects/clang350-import/contrib/binutils/gas/config/tc-ppc.c
  projects/clang350-import/contrib/elftoolchain/elfcopy/main.c
  projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c
  projects/clang350-import/contrib/unbound/iterator/iterator.c
  projects/clang350-import/contrib/unbound/iterator/iterator.h
  projects/clang350-import/etc/Makefile
  projects/clang350-import/etc/devd/usb.conf
  projects/clang350-import/etc/mtree/BSD.include.dist
  projects/clang350-import/etc/mtree/BSD.tests.dist
  projects/clang350-import/etc/mtree/BSD.usr.dist
  projects/clang350-import/gnu/usr.bin/cc/cc1plus/Makefile
  projects/clang350-import/gnu/usr.bin/groff/Makefile
  projects/clang350-import/gnu/usr.bin/groff/src/Makefile
  projects/clang350-import/gnu/usr.bin/groff/src/devices/Makefile
  projects/clang350-import/gnu/usr.bin/groff/src/libs/Makefile
  projects/clang350-import/gnu/usr.bin/groff/src/preproc/Makefile
  projects/clang350-import/gnu/usr.bin/groff/src/roff/Makefile
  projects/clang350-import/gnu/usr.bin/groff/src/utils/Makefile
  projects/clang350-import/lib/libc/iconv/iconv.3
  projects/clang350-import/lib/libc/net/sctp_sys_calls.c
  projects/clang350-import/lib/libc/sys/kqueue.2
  projects/clang350-import/lib/libc/sys/procctl.2
  projects/clang350-import/lib/msun/ld128/k_expl.h
  projects/clang350-import/lib/msun/ld80/k_expl.h
  projects/clang350-import/lib/msun/src/catrig.c
  projects/clang350-import/lib/msun/src/catrigf.c
  projects/clang350-import/lib/msun/src/k_exp.c
  projects/clang350-import/lib/msun/src/k_expf.c
  projects/clang350-import/lib/msun/src/math_private.h
  projects/clang350-import/lib/msun/src/s_ccosh.c
  projects/clang350-import/lib/msun/src/s_ccoshf.c
  projects/clang350-import/lib/msun/src/s_cexp.c
  projects/clang350-import/lib/msun/src/s_cexpf.c
  projects/clang350-import/lib/msun/src/s_conj.c
  projects/clang350-import/lib/msun/src/s_conjf.c
  projects/clang350-import/lib/msun/src/s_conjl.c
  projects/clang350-import/lib/msun/src/s_cproj.c
  projects/clang350-import/lib/msun/src/s_cprojf.c
  projects/clang350-import/lib/msun/src/s_cprojl.c
  projects/clang350-import/lib/msun/src/s_csinh.c
  projects/clang350-import/lib/msun/src/s_csinhf.c
  projects/clang350-import/lib/msun/src/s_csqrt.c
  projects/clang350-import/lib/msun/src/s_csqrtf.c
  projects/clang350-import/lib/msun/src/s_csqrtl.c
  projects/clang350-import/lib/msun/src/s_ctanh.c
  projects/clang350-import/lib/msun/src/s_ctanhf.c
  projects/clang350-import/sbin/ffsinfo/ffsinfo.c
  projects/clang350-import/sbin/ifconfig/Makefile
  projects/clang350-import/sbin/ifconfig/ifconfig.8
  projects/clang350-import/sbin/ifconfig/ifvxlan.c
  projects/clang350-import/sbin/ping6/ping6.c
  projects/clang350-import/sbin/shutdown/shutdown.8
  projects/clang350-import/sbin/shutdown/shutdown.c
  projects/clang350-import/share/man/man4/vxlan.4
  projects/clang350-import/share/man/man7/build.7
  projects/clang350-import/share/man/man9/rmlock.9
  projects/clang350-import/share/man/man9/sx.9
  projects/clang350-import/sys/amd64/amd64/exception.S
  projects/clang350-import/sys/amd64/vmm/io/vatpic.c
  projects/clang350-import/sys/arm/mv/mv_common.c
  projects/clang350-import/sys/arm/mv/mv_pci.c
  projects/clang350-import/sys/boot/fdt/dts/arm/socfpga-sockit-beri.dts
  projects/clang350-import/sys/boot/fdt/dts/mips/beri-netfpga.dts
  projects/clang350-import/sys/boot/fdt/dts/mips/beri-sim.dts
  projects/clang350-import/sys/boot/fdt/dts/mips/beripad-de4.dts
  projects/clang350-import/sys/cam/ctl/ctl.c
  projects/clang350-import/sys/cam/ctl/ctl.h
  projects/clang350-import/sys/cam/ctl/ctl_backend.h
  projects/clang350-import/sys/cam/ctl/ctl_backend_block.c
  projects/clang350-import/sys/cam/ctl/ctl_cmd_table.c
  projects/clang350-import/sys/cam/ctl/ctl_frontend_iscsi.c
  projects/clang350-import/sys/cam/ctl/ctl_frontend_iscsi.h
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_bookmark.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deadlist.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock.h
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_impl.h
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_leaf.h
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
  projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
  projects/clang350-import/sys/compat/freebsd32/freebsd32.h
  projects/clang350-import/sys/compat/freebsd32/freebsd32_misc.c
  projects/clang350-import/sys/compat/linprocfs/linprocfs.c
  projects/clang350-import/sys/compat/svr4/svr4_socket.c
  projects/clang350-import/sys/conf/files
  projects/clang350-import/sys/conf/files.powerpc
  projects/clang350-import/sys/dev/cxgbe/tom/t4_ddp.c
  projects/clang350-import/sys/dev/drm/drm_sysctl.c
  projects/clang350-import/sys/dev/drm2/drm_sysctl.c
  projects/clang350-import/sys/dev/fdt/fdt_common.c
  projects/clang350-import/sys/dev/fdt/fdt_common.h
  projects/clang350-import/sys/dev/iscsi/iscsi.c
  projects/clang350-import/sys/dev/iscsi/iscsi_proto.h
  projects/clang350-import/sys/dev/malo/if_malo_pci.c
  projects/clang350-import/sys/dev/mmc/mmc.c
  projects/clang350-import/sys/dev/mwl/if_mwl_pci.c
  projects/clang350-import/sys/dev/sis/if_sis.c
  projects/clang350-import/sys/dev/usb/net/if_urndis.c
  projects/clang350-import/sys/dev/usb/serial/umodem.c
  projects/clang350-import/sys/fs/ext2fs/ext2_alloc.c
  projects/clang350-import/sys/fs/ext2fs/ext2_lookup.c
  projects/clang350-import/sys/fs/ext2fs/ext2_vnops.c
  projects/clang350-import/sys/fs/fuse/fuse_vnops.c
  projects/clang350-import/sys/fs/msdosfs/msdosfs_lookup.c
  projects/clang350-import/sys/fs/nandfs/nandfs_vnops.c
  projects/clang350-import/sys/fs/nfsclient/nfs_clvnops.c
  projects/clang350-import/sys/fs/nfsserver/nfs_nfsdserv.c
  projects/clang350-import/sys/fs/tmpfs/tmpfs_vnops.c
  projects/clang350-import/sys/fs/unionfs/union_subr.c
  projects/clang350-import/sys/fs/unionfs/union_vnops.c
  projects/clang350-import/sys/kern/init_main.c
  projects/clang350-import/sys/kern/kern_conf.c
  projects/clang350-import/sys/kern/kern_exit.c
  projects/clang350-import/sys/kern/kern_fork.c
  projects/clang350-import/sys/kern/kern_thread.c
  projects/clang350-import/sys/kern/sys_process.c
  projects/clang350-import/sys/kern/uipc_socket.c
  projects/clang350-import/sys/kern/uipc_usrreq.c
  projects/clang350-import/sys/kern/vfs_syscalls.c
  projects/clang350-import/sys/kern/vfs_vnops.c
  projects/clang350-import/sys/mips/beri/beri_machdep.c
  projects/clang350-import/sys/mips/beri/files.beri
  projects/clang350-import/sys/net80211/ieee80211_scan_sta.c
  projects/clang350-import/sys/netinet/sctp_pcb.c
  projects/clang350-import/sys/netinet6/sctp6_usrreq.c
  projects/clang350-import/sys/nfsclient/nfs_vnops.c
  projects/clang350-import/sys/nfsserver/nfs_serv.c
  projects/clang350-import/sys/security/mac_lomac/mac_lomac.c
  projects/clang350-import/sys/sys/elf_common.h
  projects/clang350-import/sys/sys/proc.h
  projects/clang350-import/sys/sys/procctl.h
  projects/clang350-import/sys/ufs/ffs/ffs_alloc.c
  projects/clang350-import/sys/ufs/ffs/ffs_snapshot.c
  projects/clang350-import/sys/ufs/ufs/ufs_lookup.c
  projects/clang350-import/tools/build/mk/OptionalObsoleteFiles.inc
  projects/clang350-import/tools/tools/nanobsd/nanobsd.sh
  projects/clang350-import/usr.bin/id/id.c
  projects/clang350-import/usr.bin/killall/killall.c
  projects/clang350-import/usr.bin/sed/compile.c
  projects/clang350-import/usr.sbin/Makefile
  projects/clang350-import/usr.sbin/bsdinstall/distextract/Makefile
  projects/clang350-import/usr.sbin/bsdinstall/distextract/distextract.c
  projects/clang350-import/usr.sbin/chkgrp/chkgrp.c
  projects/clang350-import/usr.sbin/ctladm/ctladm.8
  projects/clang350-import/usr.sbin/ctld/discovery.c
  projects/clang350-import/usr.sbin/ctld/login.c
  projects/clang350-import/usr.sbin/iscsid/discovery.c
  projects/clang350-import/usr.sbin/iscsid/login.c
  projects/clang350-import/usr.sbin/jail/command.c
  projects/clang350-import/usr.sbin/kldxref/Makefile
  projects/clang350-import/usr.sbin/lpr/lpr/lpr.c
  projects/clang350-import/usr.sbin/pw/tests/pw_useradd.sh
  projects/clang350-import/usr.sbin/pw/tests/pw_usermod.sh
Directory Properties:
  projects/clang350-import/   (props changed)
  projects/clang350-import/cddl/   (props changed)
  projects/clang350-import/cddl/contrib/opensolaris/   (props changed)
  projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/   (props changed)
  projects/clang350-import/contrib/binutils/   (props changed)
  projects/clang350-import/contrib/llvm/   (props changed)
  projects/clang350-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang350-import/contrib/unbound/   (props changed)
  projects/clang350-import/etc/   (props changed)
  projects/clang350-import/lib/libc/   (props changed)
  projects/clang350-import/sbin/   (props changed)
  projects/clang350-import/share/   (props changed)
  projects/clang350-import/share/man/man4/   (props changed)
  projects/clang350-import/sys/   (props changed)
  projects/clang350-import/sys/amd64/vmm/   (props changed)
  projects/clang350-import/sys/boot/   (props changed)
  projects/clang350-import/sys/cddl/contrib/opensolaris/   (props changed)
  projects/clang350-import/sys/conf/   (props changed)
  projects/clang350-import/usr.sbin/jail/   (props changed)

Modified: projects/clang350-import/Makefile.inc1
==============================================================================
--- projects/clang350-import/Makefile.inc1	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/Makefile.inc1	Thu Dec 18 18:44:22 2014	(r275912)
@@ -113,6 +113,8 @@ _REDUNDENT_LIB_DIRS+=    ${LOCAL_LIB_DIR
 .for _DIR in ${LOCAL_LIB_DIRS}
 .if empty(_REDUNDENT_LIB_DIRS:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile)
 SUBDIR+=	${_DIR}
+.else
+.warning ${_DIR} not added to SUBDIR list.  See UPDATING 20141121.
 .endif
 .endfor
 .endif
@@ -261,7 +263,8 @@ BMAKE=		MAKEOBJDIRPREFIX=${WORLDTMP} \
 		MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \
 		-DNO_PIC MK_PROFILE=no -DNO_SHARED \
 		-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
-		MK_CLANG_FULL=no MK_LLDB=no MK_TESTS=no
+		MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
+		MK_LLDB=no MK_TESTS=no
 
 # build-tools stage
 TMAKE=		MAKEOBJDIRPREFIX=${OBJTREE} \
@@ -271,7 +274,9 @@ TMAKE=		MAKEOBJDIRPREFIX=${OBJTREE} \
 		BOOTSTRAPPING=${OSRELDATE} \
 		SSP_CFLAGS= \
 		-DNO_LINT \
-		-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no MK_CLANG_FULL=no MK_LLDB=no MK_TESTS=no
+		-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
+		MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
+		MK_LLDB=no MK_TESTS=no
 
 # cross-tools stage
 XMAKE=		TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \
@@ -524,8 +529,9 @@ _worldtmp:
 	    -p ${WORLDTMP}/usr/lib >/dev/null
 .endif
 .if ${MK_TESTS} != "no"
+	mkdir -p ${WORLDTMP}${TESTSBASE}
 	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-	    -p ${WORLDTMP}/usr >/dev/null
+	    -p ${WORLDTMP}${TESTSBASE} >/dev/null
 .endif
 .for _mtree in ${LOCAL_MTREE}
 	mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null
@@ -788,7 +794,7 @@ _zoneinfo=	zic tzsetup
 ITOOLS=	[ awk cap_mkdb cat chflags chmod chown \
 	date echo egrep find grep id install ${_install-info} \
 	ln lockf make mkdir mtree mv pwd_mkdb \
-	rm sed services_mkdb sh sysctl test true uname wc ${_zoneinfo} \
+	rm sed services_mkdb sh strip sysctl test true uname wc ${_zoneinfo} \
 	${LOCAL_ITOOLS}
 
 # Needed for share/man
@@ -864,8 +870,9 @@ distributeworld installworld: _installch
 	    -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null
 .endif
 .if ${MK_TESTS} != "no" && ${dist} == "tests"
+	-mkdir -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE}
 	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-	    -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null
+	    -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} >/dev/null
 .endif
 .if defined(NO_ROOT)
 	${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \
@@ -1474,7 +1481,8 @@ NXBMAKE=	${NXBENV} ${MAKE} \
 		MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \
 		-DNO_PIC MK_PROFILE=no -DNO_SHARED \
 		-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
-		MK_CLANG_FULL=no MK_LLDB=no
+		MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
+		MK_LLDB=no
 
 native-xtools: .MAKE
 	mkdir -p ${OBJTREE}/nxb-bin/bin
@@ -2083,8 +2091,9 @@ _xi-mtree:
 	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
 	    -p ${XDDESTDIR}/usr/include >/dev/null
 .if ${MK_TESTS} != "no"
+	mkdir -p ${XDDESTDIR}${TESTSBASE}
 	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-	    -p ${XDDESTDIR}/usr >/dev/null
+	    -p ${XDDESTDIR}${TESTSBASE} >/dev/null
 .endif
 
 .ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries

Modified: projects/clang350-import/UPDATING
==============================================================================
--- projects/clang350-import/UPDATING	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/UPDATING	Thu Dec 18 18:44:22 2014	(r275912)
@@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20141121:
+	The handling of LOCAL_LIB_DIRS has been altered to skip addition of
+	directories to top level SUBDIR variable when their parent
+	directory is included in LOCAL_DIRS.  Users with build systems with
+	such hierarchies and without SUBDIR entries in the parent
+	directory Makefiles should add them or add the directories to
+	LOCAL_DIRS.
+
 20141109:
 	faith(4) and faithd(8) has been removed from base system. It
 	has been obsolete for a very long time.

Modified: projects/clang350-import/bin/sh/output.c
==============================================================================
--- projects/clang350-import/bin/sh/output.c	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/bin/sh/output.c	Thu Dec 18 18:44:22 2014	(r275912)
@@ -54,6 +54,8 @@ __FBSDID("$FreeBSD$");
 #include <errno.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <wchar.h>
+#include <wctype.h>
 
 #include "shell.h"
 #include "syntax.h"
@@ -111,42 +113,86 @@ outstr(const char *p, struct output *fil
 	outbin(p, strlen(p), file);
 }
 
+static void
+byteseq(int ch, struct output *file)
+{
+	char seq[4];
+
+	seq[0] = '\\';
+	seq[1] = (ch >> 6 & 0x3) + '0';
+	seq[2] = (ch >> 3 & 0x7) + '0';
+	seq[3] = (ch & 0x7) + '0';
+	outbin(seq, 4, file);
+}
+
+static void
+outdqstr(const char *p, struct output *file)
+{
+	const char *end;
+	mbstate_t mbs;
+	size_t clen;
+	wchar_t wc;
+
+	memset(&mbs, '\0', sizeof(mbs));
+	end = p + strlen(p);
+	outstr("$'", file);
+	while ((clen = mbrtowc(&wc, p, end - p + 1, &mbs)) != 0) {
+		if (clen == (size_t)-2) {
+			while (p < end)
+				byteseq(*p++, file);
+			break;
+		}
+		if (clen == (size_t)-1) {
+			memset(&mbs, '\0', sizeof(mbs));
+			byteseq(*p++, file);
+			continue;
+		}
+		if (wc == L'\n')
+			outcslow('\n', file), p++;
+		else if (wc == L'\r')
+			outstr("\\r", file), p++;
+		else if (wc == L'\t')
+			outstr("\\t", file), p++;
+		else if (!iswprint(wc)) {
+			for (; clen > 0; clen--)
+				byteseq(*p++, file);
+		} else {
+			if (wc == L'\'' || wc == L'\\')
+				outcslow('\\', file);
+			outbin(p, clen, file);
+			p += clen;
+		}
+	}
+	outcslow('\'', file);
+}
+
 /* Like outstr(), but quote for re-input into the shell. */
 void
 outqstr(const char *p, struct output *file)
 {
-	char ch;
-	int inquotes;
+	int i;
 
 	if (p[0] == '\0') {
 		outstr("''", file);
 		return;
 	}
-	if (p[strcspn(p, "|&;<>()$`\\\"' \t\n*?[~#=")] == '\0' ||
+	for (i = 0; p[i] != '\0'; i++) {
+		if ((p[i] > '\0' && p[i] < ' ' && p[i] != '\n') ||
+		    (p[i] & 0x80) != 0 || p[i] == '\'') {
+			outdqstr(p, file);
+			return;
+		}
+	}
+
+	if (p[strcspn(p, "|&;<>()$`\\\" \n*?[~#=")] == '\0' ||
 			strcmp(p, "[") == 0) {
 		outstr(p, file);
 		return;
 	}
 
-	inquotes = 0;
-	while ((ch = *p++) != '\0') {
-		switch (ch) {
-		case '\'':
-			/* Can't quote single quotes inside single quotes. */
-			if (inquotes)
-				outcslow('\'', file);
-			inquotes = 0;
-			outstr("\\'", file);
-			break;
-		default:
-			if (!inquotes)
-				outcslow('\'', file);
-			inquotes = 1;
-			outc(ch, file);
-		}
-	}
-	if (inquotes)
-		outcslow('\'', file);
+	outcslow('\'', file);
+	outstr(p, file);
+	outcslow('\'', file);
 }
 
 void

Modified: projects/clang350-import/bin/sh/tests/execution/Makefile
==============================================================================
--- projects/clang350-import/bin/sh/tests/execution/Makefile	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/bin/sh/tests/execution/Makefile	Thu Dec 18 18:44:22 2014	(r275912)
@@ -44,6 +44,7 @@ FILES+=		set-n4.0
 FILES+=		set-x1.0
 FILES+=		set-x2.0
 FILES+=		set-x3.0
+FILES+=		set-x4.0
 FILES+=		shellproc1.0
 FILES+=		subshell1.0 subshell1.0.stdout
 FILES+=		subshell2.0

Copied: projects/clang350-import/bin/sh/tests/execution/set-x4.0 (from r275905, head/bin/sh/tests/execution/set-x4.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang350-import/bin/sh/tests/execution/set-x4.0	Thu Dec 18 18:44:22 2014	(r275912, copy of r275905, head/bin/sh/tests/execution/set-x4.0)
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+key=`printf '\r\t\001\200\300'`
+r=`{ set -x; : "$key"; } 2>&1 >/dev/null`
+case $r in
+*[![:print:]]*) echo fail; exit 3
+esac

Modified: projects/clang350-import/cddl/contrib/opensolaris/cmd/zdb/zdb.c
==============================================================================
--- projects/clang350-import/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Thu Dec 18 18:44:22 2014	(r275912)
@@ -1184,7 +1184,7 @@ visit_indirect(spa_t *spa, const dnode_p
 	print_indirect(bp, zb, dnp);
 
 	if (BP_GET_LEVEL(bp) > 0 && !BP_IS_HOLE(bp)) {
-		uint32_t flags = ARC_WAIT;
+		arc_flags_t flags = ARC_FLAG_WAIT;
 		int i;
 		blkptr_t *cbp;
 		int epb = BP_GET_LSIZE(bp) >> SPA_BLKPTRSHIFT;
@@ -1884,8 +1884,8 @@ dump_dir(objset_t *os)
 	if (dds.dds_type == DMU_OST_META) {
 		dds.dds_creation_txg = TXG_INITIAL;
 		usedobjs = BP_GET_FILL(os->os_rootbp);
-		refdbytes = os->os_spa->spa_dsl_pool->
-		    dp_mos_dir->dd_phys->dd_used_bytes;
+		refdbytes = dsl_dir_phys(os->os_spa->spa_dsl_pool->dp_mos_dir)->
+		    dd_used_bytes;
 	} else {
 		dmu_objset_space(os, &refdbytes, &scratch, &usedobjs, &scratch);
 	}

Modified: projects/clang350-import/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
==============================================================================
--- projects/clang350-import/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c	Thu Dec 18 18:44:22 2014	(r275912)
@@ -110,7 +110,7 @@ dtrace_dof_init(void)
 	Elf32_Ehdr *elf;
 #endif
 	dof_helper_t dh;
-	Link_map *lmp;
+	Link_map *lmp = NULL;
 #if defined(sun)
 	Lmid_t lmid;
 #else

Modified: projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c
==============================================================================
--- projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c	Thu Dec 18 18:44:22 2014	(r275912)
@@ -24,7 +24,7 @@
  * Copyright (c) 2013 by Delphix. All rights reserved.
  * Copyright (c) 2012 Pawel Jakub Dawidek <pawel@dawidek.net>.
  * All rights reserved.
- * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
+ * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
  */
 
 #include <stdio.h>
@@ -193,9 +193,6 @@ zfs_iter_bookmarks(zfs_handle_t *zhp, zf
 	fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATETXG));
 	fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATION));
 
-	/* Allocate an nvlist to hold the bookmarks. */
-	bmarks = fnvlist_alloc();
-
 	if ((err = lzc_get_bookmarks(zhp->zfs_name, props, &bmarks)) != 0)
 		goto out;
 

Modified: projects/clang350-import/contrib/binutils/gas/config/tc-ppc.c
==============================================================================
--- projects/clang350-import/contrib/binutils/gas/config/tc-ppc.c	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/contrib/binutils/gas/config/tc-ppc.c	Thu Dec 18 18:44:22 2014	(r275912)
@@ -2509,121 +2509,168 @@ md_assemble (char *str)
 				     (char *) NULL, 0);
 	}
 #ifdef OBJ_ELF
-      else if ((reloc = ppc_elf_suffix (&str, &ex)) != BFD_RELOC_UNUSED)
+      else
 	{
-	  /* Some TLS tweaks.  */
-	  switch (reloc)
+	  if (ex.X_op == O_symbol && str[0] == '(')
 	    {
-	    default:
-	      break;
-	    case BFD_RELOC_PPC_TLS:
-	      insn = ppc_insert_operand (insn, operand, ppc_obj64 ? 13 : 2,
-					 (char *) NULL, 0);
-	      break;
-	  /* We'll only use the 32 (or 64) bit form of these relocations
-	     in constants.  Instructions get the 16 bit form.  */
-	    case BFD_RELOC_PPC_DTPREL:
-	      reloc = BFD_RELOC_PPC_DTPREL16;
-	      break;
-	    case BFD_RELOC_PPC_TPREL:
-	      reloc = BFD_RELOC_PPC_TPREL16;
-	      break;
-	    }
+	      const char *sym_name = S_GET_NAME (ex.X_add_symbol);
+	      if (sym_name[0] == '.')
+		++sym_name;
 
-	  /* For the absolute forms of branches, convert the PC
-	     relative form back into the absolute.  */
-	  if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0)
-	    {
-	      switch (reloc)
+	      if (strcasecmp (sym_name, "__tls_get_addr") == 0)
 		{
-		case BFD_RELOC_PPC_B26:
-		  reloc = BFD_RELOC_PPC_BA26;
-		  break;
-		case BFD_RELOC_PPC_B16:
-		  reloc = BFD_RELOC_PPC_BA16;
-		  break;
-		case BFD_RELOC_PPC_B16_BRTAKEN:
-		  reloc = BFD_RELOC_PPC_BA16_BRTAKEN;
-		  break;
-		case BFD_RELOC_PPC_B16_BRNTAKEN:
-		  reloc = BFD_RELOC_PPC_BA16_BRNTAKEN;
-		  break;
-		default:
-		  break;
+		  expressionS tls_exp;
+
+		  hold = input_line_pointer;
+		  input_line_pointer = str + 1;
+		  expression (&tls_exp);
+		  if (tls_exp.X_op == O_symbol)
+		    {
+		      reloc = BFD_RELOC_UNUSED;
+		      if (strncasecmp (input_line_pointer, "@tlsgd)", 7) == 0)
+			{
+			  reloc = BFD_RELOC_PPC_TLSGD;
+			  input_line_pointer += 7;
+			}
+		      else if (strncasecmp (input_line_pointer, "@tlsld)", 7) == 0)
+			{
+			  reloc = BFD_RELOC_PPC_TLSLD;
+			  input_line_pointer += 7;
+			}
+		      if (reloc != BFD_RELOC_UNUSED)
+			{
+			  SKIP_WHITESPACE ();
+			  str = input_line_pointer;
+
+			  if (fc >= MAX_INSN_FIXUPS)
+			    as_fatal (_("too many fixups"));
+			  fixups[fc].exp = tls_exp;
+			  fixups[fc].opindex = *opindex_ptr;
+			  fixups[fc].reloc = reloc;
+			  ++fc;
+			}
+		    }
+		  input_line_pointer = hold;
 		}
 	    }
 
-	  if (ppc_obj64
-	      && (operand->flags & (PPC_OPERAND_DS | PPC_OPERAND_DQ)) != 0)
+	  if ((reloc = ppc_elf_suffix (&str, &ex)) != BFD_RELOC_UNUSED)
 	    {
+	      /* Some TLS tweaks.  */
 	      switch (reloc)
 		{
-		case BFD_RELOC_16:
-		  reloc = BFD_RELOC_PPC64_ADDR16_DS;
-		  break;
-		case BFD_RELOC_LO16:
-		  reloc = BFD_RELOC_PPC64_ADDR16_LO_DS;
-		  break;
-		case BFD_RELOC_16_GOTOFF:
-		  reloc = BFD_RELOC_PPC64_GOT16_DS;
-		  break;
-		case BFD_RELOC_LO16_GOTOFF:
-		  reloc = BFD_RELOC_PPC64_GOT16_LO_DS;
-		  break;
-		case BFD_RELOC_LO16_PLTOFF:
-		  reloc = BFD_RELOC_PPC64_PLT16_LO_DS;
-		  break;
-		case BFD_RELOC_16_BASEREL:
-		  reloc = BFD_RELOC_PPC64_SECTOFF_DS;
-		  break;
-		case BFD_RELOC_LO16_BASEREL:
-		  reloc = BFD_RELOC_PPC64_SECTOFF_LO_DS;
-		  break;
-		case BFD_RELOC_PPC_TOC16:
-		  reloc = BFD_RELOC_PPC64_TOC16_DS;
-		  break;
-		case BFD_RELOC_PPC64_TOC16_LO:
-		  reloc = BFD_RELOC_PPC64_TOC16_LO_DS;
-		  break;
-		case BFD_RELOC_PPC64_PLTGOT16:
-		  reloc = BFD_RELOC_PPC64_PLTGOT16_DS;
-		  break;
-		case BFD_RELOC_PPC64_PLTGOT16_LO:
-		  reloc = BFD_RELOC_PPC64_PLTGOT16_LO_DS;
-		  break;
-		case BFD_RELOC_PPC_DTPREL16:
-		  reloc = BFD_RELOC_PPC64_DTPREL16_DS;
-		  break;
-		case BFD_RELOC_PPC_DTPREL16_LO:
-		  reloc = BFD_RELOC_PPC64_DTPREL16_LO_DS;
-		  break;
-		case BFD_RELOC_PPC_TPREL16:
-		  reloc = BFD_RELOC_PPC64_TPREL16_DS;
+		default:
 		  break;
-		case BFD_RELOC_PPC_TPREL16_LO:
-		  reloc = BFD_RELOC_PPC64_TPREL16_LO_DS;
+
+		case BFD_RELOC_PPC_TLS:
+		  insn = ppc_insert_operand (insn, operand, ppc_obj64 ? 13 : 2,
+					     (char *) NULL, 0);
 		  break;
-		case BFD_RELOC_PPC_GOT_DTPREL16:
-		case BFD_RELOC_PPC_GOT_DTPREL16_LO:
-		case BFD_RELOC_PPC_GOT_TPREL16:
-		case BFD_RELOC_PPC_GOT_TPREL16_LO:
+
+		  /* We'll only use the 32 (or 64) bit form of these relocations
+		     in constants.  Instructions get the 16 bit form.  */
+		case BFD_RELOC_PPC_DTPREL:
+		  reloc = BFD_RELOC_PPC_DTPREL16;
 		  break;
-		default:
-		  as_bad (_("unsupported relocation for DS offset field"));
+		case BFD_RELOC_PPC_TPREL:
+		  reloc = BFD_RELOC_PPC_TPREL16;
 		  break;
 		}
+
+	      /* For the absolute forms of branches, convert the PC
+		 relative form back into the absolute.  */
+	      if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0)
+		{
+		  switch (reloc)
+		    {
+		    case BFD_RELOC_PPC_B26:
+		      reloc = BFD_RELOC_PPC_BA26;
+		      break;
+		    case BFD_RELOC_PPC_B16:
+		      reloc = BFD_RELOC_PPC_BA16;
+		      break;
+		    case BFD_RELOC_PPC_B16_BRTAKEN:
+		      reloc = BFD_RELOC_PPC_BA16_BRTAKEN;
+		      break;
+		    case BFD_RELOC_PPC_B16_BRNTAKEN:
+		      reloc = BFD_RELOC_PPC_BA16_BRNTAKEN;
+		      break;
+		    default:
+		      break;
+		    }
+		}
+
+	      if (ppc_obj64
+		  && (operand->flags & (PPC_OPERAND_DS | PPC_OPERAND_DQ)) != 0)
+		{
+		  switch (reloc)
+		    {
+		    case BFD_RELOC_16:
+		      reloc = BFD_RELOC_PPC64_ADDR16_DS;
+		      break;
+		    case BFD_RELOC_LO16:
+		      reloc = BFD_RELOC_PPC64_ADDR16_LO_DS;
+		      break;
+		    case BFD_RELOC_16_GOTOFF:
+		      reloc = BFD_RELOC_PPC64_GOT16_DS;
+		      break;
+		    case BFD_RELOC_LO16_GOTOFF:
+		      reloc = BFD_RELOC_PPC64_GOT16_LO_DS;
+		      break;
+		    case BFD_RELOC_LO16_PLTOFF:
+		      reloc = BFD_RELOC_PPC64_PLT16_LO_DS;
+		      break;
+		    case BFD_RELOC_16_BASEREL:
+		      reloc = BFD_RELOC_PPC64_SECTOFF_DS;
+		      break;
+		    case BFD_RELOC_LO16_BASEREL:
+		      reloc = BFD_RELOC_PPC64_SECTOFF_LO_DS;
+		      break;
+		    case BFD_RELOC_PPC_TOC16:
+		      reloc = BFD_RELOC_PPC64_TOC16_DS;
+		      break;
+		    case BFD_RELOC_PPC64_TOC16_LO:
+		      reloc = BFD_RELOC_PPC64_TOC16_LO_DS;
+		      break;
+		    case BFD_RELOC_PPC64_PLTGOT16:
+		      reloc = BFD_RELOC_PPC64_PLTGOT16_DS;
+		      break;
+		    case BFD_RELOC_PPC64_PLTGOT16_LO:
+		      reloc = BFD_RELOC_PPC64_PLTGOT16_LO_DS;
+		      break;
+		    case BFD_RELOC_PPC_DTPREL16:
+		      reloc = BFD_RELOC_PPC64_DTPREL16_DS;
+		      break;
+		    case BFD_RELOC_PPC_DTPREL16_LO:
+		      reloc = BFD_RELOC_PPC64_DTPREL16_LO_DS;
+		      break;
+		    case BFD_RELOC_PPC_TPREL16:
+		      reloc = BFD_RELOC_PPC64_TPREL16_DS;
+		      break;
+		    case BFD_RELOC_PPC_TPREL16_LO:
+		      reloc = BFD_RELOC_PPC64_TPREL16_LO_DS;
+		      break;
+		    case BFD_RELOC_PPC_GOT_DTPREL16:
+		    case BFD_RELOC_PPC_GOT_DTPREL16_LO:
+		    case BFD_RELOC_PPC_GOT_TPREL16:
+		    case BFD_RELOC_PPC_GOT_TPREL16_LO:
+		      break;
+		    default:
+		      as_bad (_("unsupported relocation for DS offset field"));
+		      break;
+		    }
+		}
 	    }
 
 	  /* We need to generate a fixup for this expression.  */
 	  if (fc >= MAX_INSN_FIXUPS)
 	    as_fatal (_("too many fixups"));
 	  fixups[fc].exp = ex;
-	  fixups[fc].opindex = 0;
+	  fixups[fc].opindex = *opindex_ptr;
 	  fixups[fc].reloc = reloc;
 	  ++fc;
 	}
-#endif /* OBJ_ELF */
-
+#else /* OBJ_ELF */
       else
 	{
 	  /* We need to generate a fixup for this expression.  */
@@ -2634,6 +2681,7 @@ md_assemble (char *str)
 	  fixups[fc].reloc = BFD_RELOC_UNUSED;
 	  ++fc;
 	}
+#endif /* OBJ_ELF */
 
       if (need_paren)
 	{
@@ -5908,6 +5956,8 @@ md_apply_fix (fixS *fixP, valueT *valP, 
 	  break;
 
 	case BFD_RELOC_PPC_TLS:
+	case BFD_RELOC_PPC_TLSLD:
+	case BFD_RELOC_PPC_TLSGD:
 	  break;
 
 	case BFD_RELOC_PPC_DTPMOD:

Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/main.c
==============================================================================
--- projects/clang350-import/contrib/elftoolchain/elfcopy/main.c	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/contrib/elftoolchain/elfcopy/main.c	Thu Dec 18 18:44:22 2014	(r275912)
@@ -1109,7 +1109,8 @@ strip_main(struct elfcopy *ecp, int argc
 
 	if (ecp->strip == 0 &&
 	    ((ecp->flags & DISCARD_LOCAL) == 0) &&
-	    ((ecp->flags & DISCARD_LLABEL) == 0))
+	    ((ecp->flags & DISCARD_LLABEL) == 0) &&
+	    lookup_symop_list(ecp, NULL, SYMOP_STRIP) == NULL)
 		ecp->strip = STRIP_ALL;
 	if (optind == argc)
 		strip_usage();

Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c
==============================================================================
--- projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c	Thu Dec 18 18:44:22 2014	(r275912)
@@ -439,7 +439,7 @@ copy_phdr(struct elfcopy *ecp)
 		seg->fsz = seg->msz = 0;
 		for (i = 0; i < seg->nsec; i++) {
 			s = seg->v_sec[i];
-			seg->msz = s->off + s->sz - seg->off;
+			seg->msz = s->vma + s->sz - seg->addr;
 			if (s->type != SHT_NOBITS)
 				seg->fsz = seg->msz;
 		}

Copied: projects/clang350-import/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff (from r275905, head/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang350-import/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff	Thu Dec 18 18:44:22 2014	(r275912, copy of r275905, head/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff)
@@ -0,0 +1,298 @@
+Pull in r221170 from upstream clang trunk (by Roman Divacky):
+
+  Implement vaarg lowering for ppc32. Lowering of scalars and
+  aggregates is supported. Complex numbers are not.
+
+Pull in r221174 from upstream clang trunk (by Roman Divacky):
+
+  Require asserts to unbreak the buildbots.
+
+Pull in r221284 from upstream clang trunk (by Roman Divacky):
+
+  Rewrite the test to not require asserts.
+
+Pull in r221285 from upstream clang trunk (by Roman Divacky):
+
+  Since the file has both ppc and ppc64 tests in it rename it.
+
+This adds va_args support for PowerPC (32 bit) to clang.
+
+Introduced here: http://svnweb.freebsd.org/changeset/base/275759
+
+Index: tools/clang/lib/CodeGen/TargetInfo.cpp
+===================================================================
+--- tools/clang/lib/CodeGen/TargetInfo.cpp
++++ tools/clang/lib/CodeGen/TargetInfo.cpp
+@@ -2733,12 +2733,20 @@ llvm::Value *NaClX86_64ABIInfo::EmitVAArg(llvm::Va
+ 
+ 
+ // PowerPC-32
+-
+ namespace {
+-class PPC32TargetCodeGenInfo : public DefaultTargetCodeGenInfo {
++/// PPC32_SVR4_ABIInfo - The 32-bit PowerPC ELF (SVR4) ABI information.
++class PPC32_SVR4_ABIInfo : public DefaultABIInfo {
+ public:
+-  PPC32TargetCodeGenInfo(CodeGenTypes &CGT) : DefaultTargetCodeGenInfo(CGT) {}
++  PPC32_SVR4_ABIInfo(CodeGen::CodeGenTypes &CGT) : DefaultABIInfo(CGT) {}
+ 
++  llvm::Value *EmitVAArg(llvm::Value *VAListAddr, QualType Ty,
++                         CodeGenFunction &CGF) const;
++};
++
++class PPC32TargetCodeGenInfo : public TargetCodeGenInfo {
++public:
++  PPC32TargetCodeGenInfo(CodeGenTypes &CGT) : TargetCodeGenInfo(new PPC32_SVR4_ABIInfo(CGT)) {}
++
+   int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const {
+     // This is recovered from gcc output.
+     return 1; // r1 is the dedicated stack pointer
+@@ -2750,6 +2758,96 @@ namespace {
+ 
+ }
+ 
++llvm::Value *PPC32_SVR4_ABIInfo::EmitVAArg(llvm::Value *VAListAddr,
++                                           QualType Ty,
++                                           CodeGenFunction &CGF) const {
++  if (const ComplexType *CTy = Ty->getAs<ComplexType>()) {
++    // TODO: Implement this. For now ignore.
++    (void)CTy;
++    return NULL;
++  }
++
++  bool isI64 = Ty->isIntegerType() && getContext().getTypeSize(Ty) == 64;
++  bool isInt = Ty->isIntegerType() || Ty->isPointerType() || Ty->isAggregateType();
++  llvm::Type *CharPtr = CGF.Int8PtrTy;
++  llvm::Type *CharPtrPtr = CGF.Int8PtrPtrTy;
++
++  CGBuilderTy &Builder = CGF.Builder;
++  llvm::Value *GPRPtr = Builder.CreateBitCast(VAListAddr, CharPtr, "gprptr");
++  llvm::Value *GPRPtrAsInt = Builder.CreatePtrToInt(GPRPtr, CGF.Int32Ty);
++  llvm::Value *FPRPtrAsInt = Builder.CreateAdd(GPRPtrAsInt, Builder.getInt32(1));
++  llvm::Value *FPRPtr = Builder.CreateIntToPtr(FPRPtrAsInt, CharPtr);
++  llvm::Value *OverflowAreaPtrAsInt = Builder.CreateAdd(FPRPtrAsInt, Builder.getInt32(3));
++  llvm::Value *OverflowAreaPtr = Builder.CreateIntToPtr(OverflowAreaPtrAsInt, CharPtrPtr);
++  llvm::Value *RegsaveAreaPtrAsInt = Builder.CreateAdd(OverflowAreaPtrAsInt, Builder.getInt32(4));
++  llvm::Value *RegsaveAreaPtr = Builder.CreateIntToPtr(RegsaveAreaPtrAsInt, CharPtrPtr);
++  llvm::Value *GPR = Builder.CreateLoad(GPRPtr, false, "gpr");
++  // Align GPR when TY is i64.
++  if (isI64) {
++    llvm::Value *GPRAnd = Builder.CreateAnd(GPR, Builder.getInt8(1));
++    llvm::Value *CC64 = Builder.CreateICmpEQ(GPRAnd, Builder.getInt8(1));
++    llvm::Value *GPRPlusOne = Builder.CreateAdd(GPR, Builder.getInt8(1));
++    GPR = Builder.CreateSelect(CC64, GPRPlusOne, GPR);
++  }
++  llvm::Value *FPR = Builder.CreateLoad(FPRPtr, false, "fpr");
++  llvm::Value *OverflowArea = Builder.CreateLoad(OverflowAreaPtr, false, "overflow_area");
++  llvm::Value *OverflowAreaAsInt = Builder.CreatePtrToInt(OverflowArea, CGF.Int32Ty);
++  llvm::Value *RegsaveArea = Builder.CreateLoad(RegsaveAreaPtr, false, "regsave_area");
++  llvm::Value *RegsaveAreaAsInt = Builder.CreatePtrToInt(RegsaveArea, CGF.Int32Ty);
++
++  llvm::Value *CC = Builder.CreateICmpULT(isInt ? GPR : FPR,
++                                          Builder.getInt8(8), "cond");
++
++  llvm::Value *RegConstant = Builder.CreateMul(isInt ? GPR : FPR,
++                                               Builder.getInt8(isInt ? 4 : 8));
++
++  llvm::Value *OurReg = Builder.CreateAdd(RegsaveAreaAsInt, Builder.CreateSExt(RegConstant, CGF.Int32Ty));
++
++  if (Ty->isFloatingType())
++    OurReg = Builder.CreateAdd(OurReg, Builder.getInt32(32));
++
++  llvm::BasicBlock *UsingRegs = CGF.createBasicBlock("using_regs");
++  llvm::BasicBlock *UsingOverflow = CGF.createBasicBlock("using_overflow");
++  llvm::BasicBlock *Cont = CGF.createBasicBlock("cont");
++
++  Builder.CreateCondBr(CC, UsingRegs, UsingOverflow);
++
++  CGF.EmitBlock(UsingRegs);
++
++  llvm::Type *PTy = llvm::PointerType::getUnqual(CGF.ConvertType(Ty));
++  llvm::Value *Result1 = Builder.CreateIntToPtr(OurReg, PTy);
++  // Increase the GPR/FPR indexes.
++  if (isInt) {
++    GPR = Builder.CreateAdd(GPR, Builder.getInt8(isI64 ? 2 : 1));
++    Builder.CreateStore(GPR, GPRPtr);
++  } else {
++    FPR = Builder.CreateAdd(FPR, Builder.getInt8(1));
++    Builder.CreateStore(FPR, FPRPtr);
++  }
++  CGF.EmitBranch(Cont);
++
++  CGF.EmitBlock(UsingOverflow);
++
++  // Increase the overflow area.
++  llvm::Value *Result2 = Builder.CreateIntToPtr(OverflowAreaAsInt, PTy);
++  OverflowAreaAsInt = Builder.CreateAdd(OverflowAreaAsInt, Builder.getInt32(isInt ? 4 : 8));
++  Builder.CreateStore(Builder.CreateIntToPtr(OverflowAreaAsInt, CharPtr), OverflowAreaPtr);
++  CGF.EmitBranch(Cont);
++
++  CGF.EmitBlock(Cont);
++
++  llvm::PHINode *Result = CGF.Builder.CreatePHI(PTy, 2, "vaarg.addr");
++  Result->addIncoming(Result1, UsingRegs);
++  Result->addIncoming(Result2, UsingOverflow);
++
++  if (Ty->isAggregateType()) {
++    llvm::Value *AGGPtr = Builder.CreateBitCast(Result, CharPtrPtr, "aggrptr")  ;
++    return Builder.CreateLoad(AGGPtr, false, "aggr");
++  }
++
++  return Result;
++}
++
+ bool
+ PPC32TargetCodeGenInfo::initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF,
+                                                 llvm::Value *Address) const {
+Index: tools/clang/test/CodeGen/ppc64-varargs-struct.c
+===================================================================
+--- tools/clang/test/CodeGen/ppc64-varargs-struct.c
++++ tools/clang/test/CodeGen/ppc64-varargs-struct.c
+@@ -1,30 +0,0 @@
+-// REQUIRES: ppc64-registered-target
+-// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
+-
+-#include <stdarg.h>
+-
+-struct x {
+-  long a;
+-  double b;
+-};
+-
+-void testva (int n, ...)
+-{
+-  va_list ap;
+-
+-  struct x t = va_arg (ap, struct x);
+-// CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x*
+-// CHECK: bitcast %struct.x* %t to i8*
+-// CHECK: bitcast %struct.x* %{{[0-9]+}} to i8*
+-// CHECK: call void @llvm.memcpy
+-
+-  int v = va_arg (ap, int);
+-// CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64
+-// CHECK: add i64 %{{[0-9]+}}, 4
+-// CHECK: inttoptr i64 %{{[0-9]+}} to i8*
+-// CHECK: bitcast i8* %{{[0-9]+}} to i32*
+-
+-  __int128_t u = va_arg (ap, __int128_t);
+-// CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128*
+-// CHECK-NEXT: load i128* %{{[0-9]+}}
+-}
+Index: tools/clang/test/CodeGen/ppc-varargs-struct.c
+===================================================================
+--- tools/clang/test/CodeGen/ppc-varargs-struct.c
++++ tools/clang/test/CodeGen/ppc-varargs-struct.c
+@@ -0,0 +1,112 @@
++// REQUIRES: ppc64-registered-target
++// REQUIRES: asserts
++// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
++// RUN: %clang_cc1 -triple powerpc-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-PPC
++
++#include <stdarg.h>
++
++struct x {
++  long a;
++  double b;
++};
++
++void testva (int n, ...)
++{
++  va_list ap;
++
++  struct x t = va_arg (ap, struct x);
++// CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x*
++// CHECK: bitcast %struct.x* %t to i8*
++// CHECK: bitcast %struct.x* %{{[0-9]+}} to i8*
++// CHECK: call void @llvm.memcpy
++// CHECK-PPC:  [[ARRAYDECAY:%[a-z0-9]+]] = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i32 0, i32 0
++// CHECK-PPC-NEXT:  [[GPRPTR:%[a-z0-9]+]] = bitcast %struct.__va_list_tag* [[ARRAYDECAY]] to i8*
++// CHECK-PPC-NEXT:  [[ZERO:%[0-9]+]] = ptrtoint i8* [[GPRPTR]] to i32
++// CHECK-PPC-NEXT:  [[ONE:%[0-9]+]] = add i32 [[ZERO]], 1
++// CHECK-PPC-NEXT:  [[TWO:%[0-9]+]] = inttoptr i32 [[ONE]] to i8*
++// CHECK-PPC-NEXT:  [[THREE:%[0-9]+]] = add i32 [[ONE]], 3
++// CHECK-PPC-NEXT:  [[FOUR:%[0-9]+]] = inttoptr i32 [[THREE]] to i8**
++// CHECK-PPC-NEXT:  [[FIVE:%[0-9]+]] = add i32 [[THREE]], 4
++// CHECK-PPC-NEXT:  [[SIX:%[0-9]+]] = inttoptr i32 [[FIVE]] to i8**
++// CHECK-PPC-NEXT:  [[GPR:%[a-z0-9]+]] = load i8* [[GPRPTR]]
++// CHECK-PPC-NEXT:  [[FPR:%[a-z0-9]+]] = load i8* [[TWO]] 
++// CHECK-PPC-NEXT:  [[OVERFLOW_AREA:%[a-z_0-9]+]] = load i8** [[FOUR]]
++// CHECK-PPC-NEXT:  [[SEVEN:%[0-9]+]] = ptrtoint i8* [[OVERFLOW_AREA]] to i32
++// CHECK-PPC-NEXT:  [[REGSAVE_AREA:%[a-z_0-9]+]] = load i8** [[SIX]]
++// CHECK-PPC-NEXT:  [[EIGHT:%[0-9]+]] = ptrtoint i8* [[REGSAVE_AREA]] to i32
++// CHECK-PPC-NEXT:  [[COND:%[a-z0-9]+]] = icmp ult i8 [[GPR]], 8
++// CHECK-PPC-NEXT:  [[NINE:%[0-9]+]] = mul i8 [[GPR]], 4
++// CHECK-PPC-NEXT:  [[TEN:%[0-9]+]] = sext i8 [[NINE]] to i32
++// CHECK-PPC-NEXT:  [[ELEVEN:%[0-9]+]] = add i32 [[EIGHT]], [[TEN]]
++// CHECK-PPC-NEXT:  br i1 [[COND]], label [[USING_REGS:%[a-z_0-9]+]], label [[USING_OVERFLOW:%[a-z_0-9]+]]
++//
++// CHECK-PPC1:[[USING_REGS]]
++// CHECK-PPC:  [[TWELVE:%[0-9]+]] = inttoptr i32 [[ELEVEN]] to %struct.x*
++// CHECK-PPC-NEXT:  [[THIRTEEN:%[0-9]+]] = add i8 [[GPR]], 1
++// CHECK-PPC-NEXT:  store i8 [[THIRTEEN]], i8* [[GPRPTR]]
++// CHECK-PPC-NEXT:  br label [[CONT:%[a-z0-9]+]]
++//
++// CHECK-PPC1:[[USING_OVERFLOW]]
++// CHECK-PPC:  [[FOURTEEN:%[0-9]+]] = inttoptr i32 [[SEVEN]] to %struct.x*
++// CHECK-PPC-NEXT:  [[FIFTEEN:%[0-9]+]] = add i32 [[SEVEN]], 4
++// CHECK-PPC-NEXT:  [[SIXTEEN:%[0-9]+]] = inttoptr i32 [[FIFTEEN]] to i8*
++// CHECK-PPC-NEXT:  store i8* [[SIXTEEN]], i8** [[FOUR]]
++// CHECK-PPC-NEXT:  br label [[CONT]]
++//
++// CHECK-PPC1:[[CONT]]
++// CHECK-PPC:  [[VAARG_ADDR:%[a-z.0-9]+]] = phi %struct.x* [ [[TWELVE]], [[USING_REGS]] ], [ [[FOURTEEN]], [[USING_OVERFLOW]] ]
++// CHECK-PPC-NEXT:  [[AGGRPTR:%[a-z0-9]+]] = bitcast %struct.x* [[VAARG_ADDR]] to i8**
++// CHECK-PPC-NEXT:  [[AGGR:%[a-z0-9]+]] = load i8** [[AGGRPTR]]
++// CHECK-PPC-NEXT:  [[SEVENTEEN:%[0-9]+]] = bitcast %struct.x* %t to i8*
++// CHECK-PPC-NEXT:  call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[SEVENTEEN]], i8* [[AGGR]], i32 16, i32 8, i1 false)
++
++  int v = va_arg (ap, int);
++// CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64
++// CHECK: add i64 %{{[0-9]+}}, 4
++// CHECK: inttoptr i64 %{{[0-9]+}} to i8*
++// CHECK: bitcast i8* %{{[0-9]+}} to i32*
++// CHECK-PPC:  [[ARRAYDECAY1:%[a-z0-9]+]] = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i32 0, i32 0
++// CHECK-PPC-NEXT:  [[GPRPTR1:%[a-z0-9]+]] = bitcast %struct.__va_list_tag* [[ARRAYDECAY1]] to i8*
++// CHECK-PPC-NEXT:  [[EIGHTEEN:%[0-9]+]] = ptrtoint i8* [[GPRPTR1]] to i32
++// CHECK-PPC-NEXT:  [[NINETEEN:%[0-9]+]] = add i32 [[EIGHTEEN]], 1
++// CHECK-PPC-NEXT:  [[TWENTY:%[0-9]+]] = inttoptr i32 [[NINETEEN]] to i8*
++// CHECK-PPC-NEXT:  [[TWENTYONE:%[0-9]+]] = add i32 [[NINETEEN]], 3
++// CHECK-PPC-NEXT:  [[TWENTYTWO:%[0-9]+]] = inttoptr i32 [[TWENTYONE]] to i8**
++// CHECK-PPC-NEXT:  [[TWENTYTHREE:%[0-9]+]] = add i32 [[TWENTYONE]], 4
++// CHECK-PPC-NEXT:  [[TWENTYFOUR:%[0-9]+]] = inttoptr i32 [[TWENTYTHREE]] to i8**
++// CHECK-PPC-NEXT:  [[GPR1:%[a-z0-9]+]] = load i8* [[GPRPTR1]]
++// CHECK-PPC-NEXT:  [[FPR1:%[a-z0-9]+]] = load i8* [[TWENTY]]
++// CHECK-PPC-NEXT:  [[OVERFLOW_AREA1:%[a-z_0-9]+]] = load i8** [[TWENTYTWO]]
++// CHECK-PPC-NEXT:  [[TWENTYFIVE:%[0-9]+]] = ptrtoint i8* [[OVERFLOW_AREA1]] to i32
++// CHECK-PPC-NEXT:  [[REGSAVE_AREA1:%[a-z_0-9]+]] = load i8** [[TWENTYFOUR]]
++// CHECK-PPC-NEXT:  [[TWENTYSIX:%[0-9]+]] = ptrtoint i8* [[REGSAVE_AREA1]] to i32
++// CHECK-PPC-NEXT:  [[COND1:%[a-z0-9]+]] = icmp ult i8 [[GPR1]], 8
++// CHECK-PPC-NEXT:  [[TWENTYSEVEN:%[0-9]+]] = mul i8 [[GPR1]], 4
++// CHECK-PPC-NEXT:  [[TWENTYEIGHT:%[0-9]+]] = sext i8 [[TWENTYSEVEN]] to i32
++// CHECK-PPC-NEXT:  [[TWENTYNINE:%[0-9]+]] = add i32 [[TWENTYSIX]], [[TWENTYEIGHT]]
++// CHECK-PPC-NEXT:  br i1 [[COND1]], label [[USING_REGS1:%[a-z_0-9]+]], label [[USING_OVERFLOW1:%[a-z_0-9]+]]
++//
++// CHECK-PPC1:[[USING_REGS1]]:
++// CHECK-PPC:  [[THIRTY:%[0-9]+]] = inttoptr i32 [[TWENTYNINE]] to i32*
++// CHECK-PPC-NEXT:  [[THIRTYONE:%[0-9]+]] = add i8 [[GPR1]], 1
++// CHECK-PPC-NEXT:  store i8 [[THIRTYONE]], i8* [[GPRPTR1]]
++// CHECK-PPC-NEXT:  br label [[CONT1:%[a-z0-9]+]]
++//
++// CHECK-PPC1:[[USING_OVERFLOW1]]:
++// CHECK-PPC:  [[THIRTYTWO:%[0-9]+]] = inttoptr i32 [[TWENTYFIVE]] to i32*
++// CHECK-PPC-NEXT:  [[THIRTYTHREE:%[0-9]+]] = add i32 [[TWENTYFIVE]], 4
++// CHECK-PPC-NEXT:  [[THIRTYFOUR:%[0-9]+]] = inttoptr i32 [[THIRTYTHREE]] to i8*
++// CHECK-PPC-NEXT:  store i8* [[THIRTYFOUR]], i8** [[TWENTYTWO]]
++// CHECK-PPC-NEXT:  br label [[CONT1]]
++//
++// CHECK-PPC1:[[CONT1]]:
++// CHECK-PPC:  [[VAARG_ADDR1:%[a-z.0-9]+]] = phi i32* [ [[THIRTY]], [[USING_REGS1]] ], [ [[THIRTYTWO]], [[USING_OVERFLOW1]] ]
++// CHECK-PPC-NEXT:  [[THIRTYFIVE:%[0-9]+]] = load i32* [[VAARG_ADDR1]]
++// CHECK-PPC-NEXT:  store i32 [[THIRTYFIVE]], i32* %v, align 4
++
++#ifdef __powerpc64__
++  __int128_t u = va_arg (ap, __int128_t);
++#endif
++// CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128*
++// CHECK-NEXT: load i128* %{{[0-9]+}}
++}

Modified: projects/clang350-import/contrib/unbound/iterator/iterator.c
==============================================================================
--- projects/clang350-import/contrib/unbound/iterator/iterator.c	Thu Dec 18 18:35:47 2014	(r275911)
+++ projects/clang350-import/contrib/unbound/iterator/iterator.c	Thu Dec 18 18:44:22 2014	(r275912)
@@ -120,6 +120,7 @@ iter_new(struct module_qstate* qstate, i
 	iq->query_restart_count = 0;
 	iq->referral_count = 0;
 	iq->sent_count = 0;
+	iq->target_count = NULL;
 	iq->wait_priming_stub = 0;
 	iq->refetch_glue = 0;
 	iq->dnssec_expected = 0;
@@ -445,6 +446,26 @@ handle_cname_response(struct module_qsta
 	return 1;
 }
 
+/** create target count structure for this query */
+static void
+target_count_create(struct iter_qstate* iq)
+{
+	if(!iq->target_count) {
+		iq->target_count = (int*)calloc(2, sizeof(int));
+		/* if calloc fails we simply do not track this number */
+		if(iq->target_count)
+			iq->target_count[0] = 1;
+	}
+}
+
+static void
+target_count_increase(struct iter_qstate* iq, int num)
+{
+	target_count_create(iq);
+	if(iq->target_count)
+		iq->target_count[1] += num;
+}
+
 /**
  * Generate a subrequest.
  * Generate a local request event. Local events are tied to this module, and
@@ -516,6 +537,10 @@ generate_sub_request(uint8_t* qname, siz
 		subiq = (struct iter_qstate*)subq->minfo[id];
 		memset(subiq, 0, sizeof(*subiq));
 		subiq->num_target_queries = 0;
+		target_count_create(iq);
+		subiq->target_count = iq->target_count;
+		if(iq->target_count)
+			iq->target_count[0] ++; /* extra reference */
 		subiq->num_current_queries = 0;
 		subiq->depth = iq->depth+1;
 		outbound_list_init(&subiq->outlist);
@@ -1342,6 +1367,12 @@ query_for_targets(struct module_qstate* 
 
 	if(iq->depth == ie->max_dependency_depth)
 		return 0;
+	if(iq->depth > 0 && iq->target_count &&
+		iq->target_count[1] > MAX_TARGET_COUNT) {
+		verbose(VERB_QUERY, "request has exceeded the maximum "
+			"number of glue fetches %d", iq->target_count[1]);
+		return 0;
+	}
 
 	iter_mark_cycle_targets(qstate, iq->dp);
 	missing = (int)delegpt_count_missing_targets(iq->dp);
@@ -1524,6 +1555,7 @@ processLastResort(struct module_qstate* 
 			return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
 		}
 		iq->num_target_queries += qs;
+		target_count_increase(iq, qs);
 		if(qs != 0) {
 			qstate->ext_state[id] = module_wait_subquery;
 			return 0; /* and wait for them */
@@ -1533,6 +1565,12 @@ processLastResort(struct module_qstate* 
 		verbose(VERB_QUERY, "maxdepth and need more nameservers, fail");
 		return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL);
 	}
+	if(iq->depth > 0 && iq->target_count &&
+		iq->target_count[1] > MAX_TARGET_COUNT) {
+		verbose(VERB_QUERY, "request has exceeded the maximum "
+			"number of glue fetches %d", iq->target_count[1]);
+		return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL);
+	}
 	/* mark cycle targets for parent-side lookups */
 	iter_mark_pside_cycle_targets(qstate, iq->dp);
 	/* see if we can issue queries to get nameserver addresses */
@@ -1562,6 +1600,7 @@ processLastResort(struct module_qstate* 
 		if(query_count != 0) { /* suspend to await results */
 			verbose(VERB_ALGO, "try parent-side glue lookup");
 			iq->num_target_queries += query_count;
+			target_count_increase(iq, query_count);
 			qstate->ext_state[id] = module_wait_subquery;
 			return 0;
 		}
@@ -1717,6 +1756,7 @@ processQueryTargets(struct module_qstate
 			return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
 		}
 		iq->num_target_queries += extra;
+		target_count_increase(iq, extra);
 		if(iq->num_target_queries > 0) {
 			/* wait to get all targets, we want to try em */
 			verbose(VERB_ALGO, "wait for all targets for fallback");
@@ -1757,6 +1797,7 @@ processQueryTargets(struct module_qstate
 		/* errors ignored, these targets are not strictly necessary for
 		 * this result, we do not have to reply with SERVFAIL */
 		iq->num_target_queries += extra;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201412181844.sBIIiOvA015492>