svn commit: r293687 - in projects/clang380-import: . bin/sh bin/sh/tests/builtins contrib/hyperv/tools gnu/lib/libgcc include lib/csu/arm lib/libc/sys lib/libstand release share/man/man4 share/man/...

Dimitry Andric dim at FreeBSD.org
Mon Jan 11 19:36:48 UTC 2016


Author: dim
Date: Mon Jan 11 19:36:44 2016
New Revision: 293687
URL: https://svnweb.freebsd.org/changeset/base/293687

Log:
  Merge ^/head r293430 through r293685.

Added:
  projects/clang380-import/bin/sh/tests/builtins/local5.0
     - copied unchanged from r293685, head/bin/sh/tests/builtins/local5.0
  projects/clang380-import/tools/build/options/WITHOUT_LLVM_LIBUNWIND
     - copied unchanged from r293685, head/tools/build/options/WITHOUT_LLVM_LIBUNWIND
  projects/clang380-import/tools/build/options/WITH_LLVM_LIBUNWIND
     - copied unchanged from r293685, head/tools/build/options/WITH_LLVM_LIBUNWIND
  projects/clang380-import/tools/regression/geom_eli/conf.sh
     - copied unchanged from r293685, head/tools/regression/geom_eli/conf.sh
  projects/clang380-import/tools/regression/geom_uzip/conf.sh
     - copied unchanged from r293685, head/tools/regression/geom_uzip/conf.sh
  projects/clang380-import/tools/regression/geom_uzip/test-1.t
     - copied unchanged from r293685, head/tools/regression/geom_uzip/test-1.t
Deleted:
  projects/clang380-import/tools/regression/geom_gate/Makefile
  projects/clang380-import/tools/regression/geom_gate/runtests.sh
  projects/clang380-import/tools/regression/geom_gate/test-1.sh
  projects/clang380-import/tools/regression/geom_gate/test-2.sh
  projects/clang380-import/tools/regression/geom_gate/test-3.sh
  projects/clang380-import/tools/regression/geom_uzip/runtests.sh
  projects/clang380-import/tools/regression/geom_uzip/test-1.sh
  projects/clang380-import/tools/regression/geom_uzip/test-2.sh
Modified:
  projects/clang380-import/Makefile.inc1
  projects/clang380-import/bin/sh/eval.c
  projects/clang380-import/bin/sh/tests/builtins/Makefile
  projects/clang380-import/bin/sh/var.c
  projects/clang380-import/contrib/hyperv/tools/hv_kvp_daemon.c
  projects/clang380-import/gnu/lib/libgcc/Makefile
  projects/clang380-import/include/limits.h
  projects/clang380-import/lib/csu/arm/Makefile
  projects/clang380-import/lib/libc/sys/sendfile.2
  projects/clang380-import/lib/libstand/uuid_to_string.c
  projects/clang380-import/release/release.sh
  projects/clang380-import/share/man/man4/ismt.4
  projects/clang380-import/share/man/man5/src.conf.5
  projects/clang380-import/share/misc/committers-src.dot
  projects/clang380-import/share/mk/src.opts.mk
  projects/clang380-import/sys/amd64/amd64/elf_machdep.c
  projects/clang380-import/sys/amd64/amd64/trap.c
  projects/clang380-import/sys/amd64/linux/linux_sysvec.c
  projects/clang380-import/sys/amd64/linux32/linux32_sysvec.c
  projects/clang380-import/sys/arm/arm/elf_machdep.c
  projects/clang380-import/sys/arm64/arm64/elf_machdep.c
  projects/clang380-import/sys/boot/common/ufsread.c
  projects/clang380-import/sys/boot/efi/boot1/Makefile
  projects/clang380-import/sys/boot/efi/boot1/boot1.c
  projects/clang380-import/sys/boot/i386/loader/main.c
  projects/clang380-import/sys/boot/powerpc/boot1.chrp/boot1.c
  projects/clang380-import/sys/boot/userboot/libstand/Makefile
  projects/clang380-import/sys/boot/userboot/libstand/Makefile.depend
  projects/clang380-import/sys/boot/userboot/userboot/main.c
  projects/clang380-import/sys/boot/zfs/zfs.c
  projects/clang380-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
  projects/clang380-import/sys/compat/ia32/ia32_sysvec.c
  projects/clang380-import/sys/compat/linux/linux_futex.c
  projects/clang380-import/sys/compat/svr4/svr4_sysvec.c
  projects/clang380-import/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c   (contents, props changed)
  projects/clang380-import/sys/dev/cxgbe/t4_main.c
  projects/clang380-import/sys/dev/ic/ns16550.h
  projects/clang380-import/sys/dev/iscsi/iscsi.c
  projects/clang380-import/sys/dev/iscsi/iscsi.h
  projects/clang380-import/sys/dev/puc/pucdata.c
  projects/clang380-import/sys/dev/rtwn/if_rtwn.c
  projects/clang380-import/sys/dev/sfxge/common/efsys.h
  projects/clang380-import/sys/dev/ti/if_ti.c
  projects/clang380-import/sys/dev/vt/hw/ofwfb/ofwfb.c
  projects/clang380-import/sys/fs/ext2fs/ext2_bmap.c
  projects/clang380-import/sys/fs/ext2fs/ext2_extents.c
  projects/clang380-import/sys/fs/ext2fs/ext2_extents.h
  projects/clang380-import/sys/fs/ext2fs/ext2_vfsops.c
  projects/clang380-import/sys/fs/ext2fs/ext2_vnops.c
  projects/clang380-import/sys/fs/smbfs/smbfs_smb.c
  projects/clang380-import/sys/fs/smbfs/smbfs_subr.h
  projects/clang380-import/sys/fs/smbfs/smbfs_vnops.c
  projects/clang380-import/sys/i386/i386/elf_machdep.c
  projects/clang380-import/sys/i386/ibcs2/ibcs2_sysvec.c
  projects/clang380-import/sys/i386/linux/linux_sysvec.c
  projects/clang380-import/sys/kern/imgact_aout.c
  projects/clang380-import/sys/kern/init_main.c
  projects/clang380-import/sys/kern/kern_condvar.c
  projects/clang380-import/sys/kern/uipc_mbuf.c
  projects/clang380-import/sys/kern/uipc_sockbuf.c
  projects/clang380-import/sys/kern/uipc_syscalls.c
  projects/clang380-import/sys/kern/uipc_usrreq.c
  projects/clang380-import/sys/mips/mips/elf_machdep.c
  projects/clang380-import/sys/mips/mips/freebsd32_machdep.c
  projects/clang380-import/sys/net/if_arcsubr.c
  projects/clang380-import/sys/net/if_ethersubr.c
  projects/clang380-import/sys/net/if_fddisubr.c
  projects/clang380-import/sys/net/if_fwsubr.c
  projects/clang380-import/sys/net/if_iso88025subr.c
  projects/clang380-import/sys/net/if_loop.c
  projects/clang380-import/sys/net/radix_mpath.c
  projects/clang380-import/sys/net/radix_mpath.h
  projects/clang380-import/sys/net/route.c
  projects/clang380-import/sys/net/route.h
  projects/clang380-import/sys/net80211/ieee80211_freebsd.c
  projects/clang380-import/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c
  projects/clang380-import/sys/netgraph/netflow/netflow.c
  projects/clang380-import/sys/netgraph/netflow/netflow_v9.c
  projects/clang380-import/sys/netgraph/netflow/ng_netflow.c
  projects/clang380-import/sys/netinet/in_fib.c
  projects/clang380-import/sys/netinet/in_pcb.c
  projects/clang380-import/sys/netinet/ip_encap.c
  projects/clang380-import/sys/netinet/ip_mroute.c
  projects/clang380-import/sys/netinet/ip_output.c
  projects/clang380-import/sys/netinet/raw_ip.c
  projects/clang380-import/sys/netinet/tcp_reass.c
  projects/clang380-import/sys/netinet/tcp_subr.c
  projects/clang380-import/sys/netinet/toecore.c
  projects/clang380-import/sys/netinet6/frag6.c
  projects/clang380-import/sys/netinet6/icmp6.c
  projects/clang380-import/sys/netinet6/in6_fib.c
  projects/clang380-import/sys/netinet6/in6_pcb.c
  projects/clang380-import/sys/netinet6/in6_rmx.c
  projects/clang380-import/sys/netinet6/in6_src.c
  projects/clang380-import/sys/netinet6/ip6_var.h
  projects/clang380-import/sys/netinet6/nd6_nbr.c
  projects/clang380-import/sys/netinet6/raw_ip6.c
  projects/clang380-import/sys/netinet6/udp6_usrreq.c
  projects/clang380-import/sys/netpfil/ipfw/ip_fw_table.c
  projects/clang380-import/sys/netpfil/ipfw/ip_fw_table_algo.c
  projects/clang380-import/sys/netpfil/pf/pf_if.c
  projects/clang380-import/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
  projects/clang380-import/sys/ofed/drivers/infiniband/ulp/sdp/sdp_rx.c
  projects/clang380-import/sys/powerpc/aim/locore32.S
  projects/clang380-import/sys/powerpc/aim/locore64.S
  projects/clang380-import/sys/powerpc/aim/trap_subr64.S
  projects/clang380-import/sys/powerpc/booke/booke_machdep.c
  projects/clang380-import/sys/powerpc/booke/locore.S
  projects/clang380-import/sys/powerpc/include/pcb.h
  projects/clang380-import/sys/powerpc/include/setjmp.h
  projects/clang380-import/sys/powerpc/ofw/rtas.c
  projects/clang380-import/sys/powerpc/powermac/grackle.c
  projects/clang380-import/sys/powerpc/powerpc/copyinout.c
  projects/clang380-import/sys/powerpc/powerpc/elf32_machdep.c
  projects/clang380-import/sys/powerpc/powerpc/elf64_machdep.c
  projects/clang380-import/sys/powerpc/powerpc/mp_machdep.c
  projects/clang380-import/sys/powerpc/powerpc/setjmp.S
  projects/clang380-import/sys/powerpc/powerpc/trap.c
  projects/clang380-import/sys/sparc64/sparc64/elf_machdep.c
  projects/clang380-import/sys/sys/mbuf.h
  projects/clang380-import/sys/sys/sf_buf.h
  projects/clang380-import/sys/sys/sockbuf.h
  projects/clang380-import/sys/sys/socket.h
  projects/clang380-import/sys/sys/sysent.h
  projects/clang380-import/sys/vm/vm_domain.c
  projects/clang380-import/tools/regression/geom_concat/conf.sh
  projects/clang380-import/tools/regression/geom_concat/test-1.t
  projects/clang380-import/tools/regression/geom_concat/test-2.t
  projects/clang380-import/tools/regression/geom_eli/attach-d.t
  projects/clang380-import/tools/regression/geom_eli/configure-b-B.t
  projects/clang380-import/tools/regression/geom_eli/delkey.t
  projects/clang380-import/tools/regression/geom_eli/detach-l.t
  projects/clang380-import/tools/regression/geom_eli/init-B.t
  projects/clang380-import/tools/regression/geom_eli/init-J.t
  projects/clang380-import/tools/regression/geom_eli/init-a.t
  projects/clang380-import/tools/regression/geom_eli/init-i-P.t
  projects/clang380-import/tools/regression/geom_eli/init.t
  projects/clang380-import/tools/regression/geom_eli/integrity-copy.t
  projects/clang380-import/tools/regression/geom_eli/integrity-data.t
  projects/clang380-import/tools/regression/geom_eli/integrity-hmac.t
  projects/clang380-import/tools/regression/geom_eli/kill.t
  projects/clang380-import/tools/regression/geom_eli/nokey.t
  projects/clang380-import/tools/regression/geom_eli/onetime-a.t
  projects/clang380-import/tools/regression/geom_eli/onetime-d.t
  projects/clang380-import/tools/regression/geom_eli/onetime.t
  projects/clang380-import/tools/regression/geom_eli/readonly.t
  projects/clang380-import/tools/regression/geom_eli/resize.t
  projects/clang380-import/tools/regression/geom_eli/setkey.t
  projects/clang380-import/tools/regression/geom_gate/test-1.t
  projects/clang380-import/tools/regression/geom_gate/test-2.t
  projects/clang380-import/tools/regression/geom_gate/test-3.t
  projects/clang380-import/tools/regression/geom_nop/conf.sh
  projects/clang380-import/tools/regression/geom_nop/test-1.t
  projects/clang380-import/tools/regression/geom_nop/test-2.t
  projects/clang380-import/tools/regression/geom_raid3/conf.sh
  projects/clang380-import/tools/regression/geom_raid3/test-1.t
  projects/clang380-import/tools/regression/geom_raid3/test-10.t
  projects/clang380-import/tools/regression/geom_raid3/test-11.t
  projects/clang380-import/tools/regression/geom_raid3/test-12.t
  projects/clang380-import/tools/regression/geom_raid3/test-2.t
  projects/clang380-import/tools/regression/geom_raid3/test-3.t
  projects/clang380-import/tools/regression/geom_raid3/test-4.t
  projects/clang380-import/tools/regression/geom_raid3/test-5.t
  projects/clang380-import/tools/regression/geom_raid3/test-6.t
  projects/clang380-import/tools/regression/geom_raid3/test-7.t
  projects/clang380-import/tools/regression/geom_raid3/test-8.t
  projects/clang380-import/tools/regression/geom_raid3/test-9.t
  projects/clang380-import/tools/regression/geom_shsec/conf.sh
  projects/clang380-import/tools/regression/geom_shsec/test-1.t
  projects/clang380-import/tools/regression/geom_shsec/test-2.t
  projects/clang380-import/tools/regression/geom_stripe/conf.sh
  projects/clang380-import/tools/regression/geom_stripe/test-1.t
  projects/clang380-import/tools/regression/geom_stripe/test-2.t
  projects/clang380-import/tools/regression/geom_subr.sh
  projects/clang380-import/tools/regression/geom_uzip/Makefile
  projects/clang380-import/usr.bin/netstat/mbuf.c
  projects/clang380-import/usr.sbin/bhyve/pci_virtio_net.c
  projects/clang380-import/usr.sbin/bsdconfig/share/dialog.subr
  projects/clang380-import/usr.sbin/ntp/scripts/mkver
Directory Properties:
  projects/clang380-import/   (props changed)
  projects/clang380-import/gnu/lib/   (props changed)
  projects/clang380-import/include/   (props changed)
  projects/clang380-import/lib/libc/   (props changed)
  projects/clang380-import/share/   (props changed)
  projects/clang380-import/share/man/man4/   (props changed)
  projects/clang380-import/sys/   (props changed)
  projects/clang380-import/sys/boot/   (props changed)
  projects/clang380-import/sys/boot/powerpc/boot1.chrp/   (props changed)
  projects/clang380-import/sys/cddl/contrib/opensolaris/   (props changed)
  projects/clang380-import/sys/contrib/ipfilter/   (props changed)
  projects/clang380-import/usr.sbin/bhyve/   (props changed)

Modified: projects/clang380-import/Makefile.inc1
==============================================================================
--- projects/clang380-import/Makefile.inc1	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/Makefile.inc1	Mon Jan 11 19:36:44 2016	(r293687)
@@ -570,9 +570,8 @@ _worldtmp: .PHONY
 .else
 	rm -rf ${WORLDTMP}/legacy/usr/include
 #	XXX - These three can depend on any header file.
-	rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/ioctl.c
+	rm -f ${OBJTREE}${.CURDIR}/lib/libsysdecode/ioctl.c
 	rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/kdump_subr.c
-	rm -f ${OBJTREE}${.CURDIR}/usr.bin/truss/ioctl.c
 .endif
 .for _dir in \
     lib usr legacy/bin legacy/usr
@@ -1425,11 +1424,13 @@ _vtfontcvt=	usr.bin/vtfontcvt
 _sed=		usr.bin/sed
 .endif
 
-.if ${BOOTSTRAPPING} < 1000002
+.if ${BOOTSTRAPPING} < 1000033
 _libopenbsd=	lib/libopenbsd
 _m4=		usr.bin/m4
+_lex=		usr.bin/lex
 
 ${_bt}-usr.bin/m4: ${_bt}-lib/libopenbsd
+${_bt}-usr.bin/lex: ${_bt}-usr.bin/m4
 .endif
 
 .if ${BOOTSTRAPPING} < 1000026
@@ -1443,12 +1444,6 @@ ${_bt}-usr.sbin/nmtree: ${_bt}-lib/libne
 _cat=		bin/cat
 .endif
 
-.if ${BOOTSTRAPPING} < 1000033
-_lex=		usr.bin/lex
-
-${_bt}-usr.bin/lex: ${_bt}-usr.bin/m4
-.endif
-
 # r277259 crunchide: Correct 64-bit section header offset
 # r281674 crunchide: always include both 32- and 64-bit ELF support
 # r285986 crunchen: use STRIPBIN rather than STRIP

Modified: projects/clang380-import/bin/sh/eval.c
==============================================================================
--- projects/clang380-import/bin/sh/eval.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/bin/sh/eval.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -1039,12 +1039,12 @@ evalcommand(union node *cmd, int flags, 
 		reffunc(cmdentry.u.func);
 		savehandler = handler;
 		if (setjmp(jmploc.loc)) {
-			freeparam(&shellparam);
-			shellparam = saveparam;
 			popredir();
 			unreffunc(cmdentry.u.func);
 			poplocalvars();
 			localvars = savelocalvars;
+			freeparam(&shellparam);
+			shellparam = saveparam;
 			funcnest--;
 			handler = savehandler;
 			longjmp(handler->loc, 1);

Modified: projects/clang380-import/bin/sh/tests/builtins/Makefile
==============================================================================
--- projects/clang380-import/bin/sh/tests/builtins/Makefile	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/bin/sh/tests/builtins/Makefile	Mon Jan 11 19:36:44 2016	(r293687)
@@ -111,6 +111,7 @@ FILES+=		local1.0
 FILES+=		local2.0
 FILES+=		local3.0
 FILES+=		local4.0
+FILES+=		local5.0
 .if ${MK_NLS} != "no"
 FILES+=		locale1.0
 .endif

Copied: projects/clang380-import/bin/sh/tests/builtins/local5.0 (from r293685, head/bin/sh/tests/builtins/local5.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang380-import/bin/sh/tests/builtins/local5.0	Mon Jan 11 19:36:44 2016	(r293687, copy of r293685, head/bin/sh/tests/builtins/local5.0)
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+f() {
+	local PATH IFS elem
+	IFS=:
+	for elem in ''$PATH''; do
+		PATH=/var/empty/$elem:$PATH
+	done
+	ls -d / >/dev/null
+}
+
+p1=$(command -v ls)
+f
+p2=$(command -v ls)
+[ "$p1" = "$p2" ]

Modified: projects/clang380-import/bin/sh/var.c
==============================================================================
--- projects/clang380-import/bin/sh/var.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/bin/sh/var.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -791,6 +791,7 @@ poplocalvars(void)
 {
 	struct localvar *lvp;
 	struct var *vp;
+	int islocalevar;
 
 	INTOFF;
 	while ((lvp = localvars) != NULL) {
@@ -803,10 +804,20 @@ poplocalvars(void)
 		} else if ((lvp->flags & (VUNSET|VSTRFIXED)) == VUNSET) {
 			(void)unsetvar(vp->text);
 		} else {
+			islocalevar = (vp->flags | lvp->flags) & VEXPORT &&
+			    localevar(lvp->text);
 			if ((vp->flags & VTEXTFIXED) == 0)
 				ckfree(vp->text);
 			vp->flags = lvp->flags;
 			vp->text = lvp->text;
+			if (vp->func)
+				(*vp->func)(vp->text + vp->name_len + 1);
+			if (islocalevar) {
+				change_env(vp->text, vp->flags & VEXPORT &&
+				    (vp->flags & VUNSET) == 0);
+				setlocale(LC_ALL, "");
+				updatecharset();
+			}
 		}
 		ckfree(lvp);
 	}

Modified: projects/clang380-import/contrib/hyperv/tools/hv_kvp_daemon.c
==============================================================================
--- projects/clang380-import/contrib/hyperv/tools/hv_kvp_daemon.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/contrib/hyperv/tools/hv_kvp_daemon.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -1437,7 +1437,7 @@ main(int argc, char *argv[])
 
 
 	for (;;) {
-		r = poll (hv_kvp_poll_fd, 1, 100);
+		r = poll (hv_kvp_poll_fd, 1, INFTIM);
 
 		KVP_LOG(LOG_DEBUG, "poll returned r = %d, revent = 0x%x\n",
 		    r, hv_kvp_poll_fd[0].revents);

Modified: projects/clang380-import/gnu/lib/libgcc/Makefile
==============================================================================
--- projects/clang380-import/gnu/lib/libgcc/Makefile	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/gnu/lib/libgcc/Makefile	Mon Jan 11 19:36:44 2016	(r293687)
@@ -2,6 +2,9 @@
 
 GCCDIR=	${.CURDIR}/../../../contrib/gcc
 GCCLIB=	${.CURDIR}/../../../contrib/gcclibs
+COMPILERRTDIR=	${.CURDIR}/../../../contrib/compiler-rt
+UNWINDINCDIR=	${.CURDIR}/../../../contrib/llvm/projects/libunwind/include
+UNWINDSRCDIR=	${.CURDIR}/../../../contrib/llvm/projects/libunwind/src
 
 SHLIB_NAME=	libgcc_s.so.1
 SHLIBDIR?=	/lib
@@ -67,8 +70,37 @@ LIB2ADD = $(LIB2FUNCS_EXTRA)
 LIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA)
 
 # Additional sources to handle exceptions; overridden by targets as needed.
+.if ${MK_LLVM_LIBUNWIND} != "no"
+
+.PATH: ${COMPILERRTDIR}/lib/builtins
+.PATH: ${UNWINDSRCDIR}
+LIB2ADDEH = gcc_personality_v0.c \
+	int_util.c \
+	Unwind-EHABI.cpp \
+	Unwind-sjlj.c \
+	UnwindLevel1-gcc-ext.c \
+	UnwindLevel1.c \
+	UnwindRegistersRestore.S \
+	UnwindRegistersSave.S \
+	libunwind.cpp
+
+CFLAGS+=	-I${UNWINDINCDIR} -I${.CURDIR}
+.if empty(CXXFLAGS:M-std=*)
+CXXFLAGS+=	-std=c++11
+.endif
+CXXFLAGS+=	-fno-rtti
+
+.else # MK_LLVM_LIBUNWIND
+
+.if ${TARGET_CPUARCH} == "arm"
+LIB2ADDEH =	unwind-arm.c libunwind.S pr-support.c unwind-c.c
+.else
 LIB2ADDEH = unwind-dw2.c unwind-dw2-fde-glibc.c unwind-sjlj.c gthr-gnat.c \
 	unwind-c.c
+.endif
+
+.endif # MK_LLVM_LIBUNWIND
+
 LIB2ADDEHSTATIC = $(LIB2ADDEH)
 LIB2ADDEHSHARED = $(LIB2ADDEH)
 
@@ -116,7 +148,6 @@ CFLAGS.clang+=	-fheinous-gnu-extensions
 
 LIB1ASMSRC =	lib1funcs.asm
 LIB1ASMFUNCS =  _dvmd_tls _bb_init_func
-LIB2ADDEH =	unwind-arm.c libunwind.S pr-support.c unwind-c.c
 # Some compilers generate __aeabi_ functions libgcc_s is missing
 LIBADD+=	compiler_rt
 .endif
@@ -160,7 +191,10 @@ LIB2_DIVMOD_FUNCS:= ${LIB2_DIVMOD_FUNCS:
 .endfor
 .endif
 
-COMMONHDRS=	tm.h tconfig.h options.h unwind.h gthr-default.h
+COMMONHDRS=	tm.h tconfig.h options.h gthr-default.h
+.if ${MK_LLVM_LIBUNWIND} == no
+COMMONHDRS+=	unwind.h
+.endif
 
 #-----------------------------------------------------------------------
 #
@@ -170,6 +204,9 @@ HIDE =  -fvisibility=hidden -DHIDE_EXPOR
 CC_T =	${CC} -c ${CFLAGS} ${HIDE} -fPIC
 CC_P =	${CC} -c ${CFLAGS} ${HIDE} -p -fPIC
 CC_S =	${CC} -c ${CFLAGS} ${PICFLAG} -DSHARED
+CXX_T =	${CXX} -c ${CXXFLAGS} ${HIDE} -fPIC
+CXX_P =	${CXX} -c ${CXXFLAGS} ${HIDE} -p -fPIC
+CXX_S =	${CXX} -c ${CXXFLAGS} ${PICFLAG} -DSHARED
 
 #-----------------------------------------------------------------------
 #
@@ -284,16 +321,26 @@ EH_OBJS_S = ${LIB2ADDEHSHARED:R:S/$/.So/
 EH_CFLAGS = -fexceptions -D__GLIBC__=3 -DElfW=__ElfN
 SOBJS    += ${EH_OBJS_S}
 
-.for _src in ${LIB2ADDEHSTATIC}
+.for _src in ${LIB2ADDEHSTATIC:M*.c}
 ${_src:R:S/$/.o/}: ${_src} ${COMMONHDRS}
 	${CC_T} ${EH_CFLAGS} -o ${.TARGET} ${.IMPSRC}
 ${_src:R:S/$/.po/}: ${_src} ${COMMONHDRS}
 	${CC_P} ${EH_CFLAGS} -o ${.TARGET} ${.IMPSRC}
 .endfor
-.for _src in ${LIB2ADDEHSHARED}
+.for _src in ${LIB2ADDEHSTATIC:M*.cpp}
+${_src:R:S/$/.o/}: ${_src} ${COMMONHDRS}
+	${CXX_T} ${EH_CFLAGS} -o ${.TARGET} ${.IMPSRC}
+${_src:R:S/$/.po/}: ${_src} ${COMMONHDRS}
+	${CXX_P} ${EH_CFLAGS} -o ${.TARGET} ${.IMPSRC}
+.endfor
+.for _src in ${LIB2ADDEHSHARED:M*.c}
 ${_src:R:S/$/.So/}: ${_src} ${COMMONHDRS}
 	${CC_S} ${EH_CFLAGS} -o ${.TARGET} ${.IMPSRC}
 .endfor
+.for _src in ${LIB2ADDEHSHARED:M*.cpp}
+${_src:R:S/$/.So/}: ${_src} ${COMMONHDRS}
+	${CXX_S} ${EH_CFLAGS} -o ${.TARGET} ${.IMPSRC}
+.endfor
 
 
 #-----------------------------------------------------------------------

Modified: projects/clang380-import/include/limits.h
==============================================================================
--- projects/clang380-import/include/limits.h	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/include/limits.h	Mon Jan 11 19:36:44 2016	(r293687)
@@ -59,10 +59,12 @@
 #define	_POSIX_TZNAME_MAX	3
 #endif
 
+#if __POSIX_VISIBLE >= 200112
 #define	BC_BASE_MAX		   99	/* max ibase/obase values in bc(1) */
 #define	BC_DIM_MAX		 2048	/* max array elements in bc(1) */
 #define	BC_SCALE_MAX		   99	/* max scale value in bc(1) */
 #define	BC_STRING_MAX		 1000	/* max const string length in bc(1) */
+#define	CHARCLASS_NAME_MAX	   14	/* max character class name size */
 #define	COLL_WEIGHTS_MAX	   10	/* max weights for order keyword */
 #define	EXPR_NEST_MAX		   32	/* max expressions nested in expr(1) */
 #define	LINE_MAX		 2048	/* max bytes in an input line */
@@ -72,11 +74,14 @@
 #define	_POSIX2_BC_DIM_MAX	2048
 #define	_POSIX2_BC_SCALE_MAX	99
 #define	_POSIX2_BC_STRING_MAX	1000
+#define	_POSIX2_CHARCLASS_NAME_MAX 14
+#define	_POSIX2_COLL_WEIGHTS_MAX 2
 #define	_POSIX2_EQUIV_CLASS_MAX	2
 #define	_POSIX2_EXPR_NEST_MAX	32
 #define	_POSIX2_LINE_MAX	2048
 #define	_POSIX2_RE_DUP_MAX	255
 #endif
+#endif
 
 #if __POSIX_VISIBLE >= 199309
 #define	_POSIX_AIO_LISTIO_MAX	2
@@ -110,8 +115,6 @@
 #define	_POSIX_TRACE_SYS_MAX	8
 #define	_POSIX_TRACE_USER_EVENT_MAX 32
 #define	_POSIX_TTY_NAME_MAX	9
-#define	_POSIX2_CHARCLASS_NAME_MAX 14
-#define	_POSIX2_COLL_WEIGHTS_MAX 2
 
 #define	_POSIX_RE_DUP_MAX	_POSIX2_RE_DUP_MAX
 #endif

Modified: projects/clang380-import/lib/csu/arm/Makefile
==============================================================================
--- projects/clang380-import/lib/csu/arm/Makefile	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/lib/csu/arm/Makefile	Mon Jan 11 19:36:44 2016	(r293687)
@@ -7,6 +7,7 @@ OBJS=		${SRCS:N*.h:R:S/$/.o/g}
 OBJS+=		Scrt1.o gcrt1.o
 CFLAGS+=	-I${.CURDIR}/../common \
 		-I${.CURDIR}/../../libc/include
+STATIC_CFLAGS+=	-mlong-calls
 
 FILES=		${OBJS}
 FILESMODE=	${LIBMODE}
@@ -23,14 +24,14 @@ CLEANFILES+=	crt1.s gcrt1.s Scrt1.s
 # directly compiled to .o files.
 
 crt1.s: crt1.c
-	${CC} ${CFLAGS} -S -o ${.TARGET} ${.CURDIR}/crt1.c
+	${CC} ${CFLAGS} ${STATIC_CFLAGS} -S -o ${.TARGET} ${.CURDIR}/crt1.c
 	sed ${SED_FIX_NOTE} ${.TARGET}
 
 crt1.o: crt1.s
 	${CC} ${ACFLAGS} -c -o ${.TARGET} crt1.s
 
 gcrt1.s: crt1.c
-	${CC} ${CFLAGS} -DGCRT -S -o ${.TARGET} ${.CURDIR}/crt1.c
+	${CC} ${CFLAGS} ${STATIC_CFLAGS} -DGCRT -S -o ${.TARGET} ${.CURDIR}/crt1.c
 	sed ${SED_FIX_NOTE} ${.TARGET}
 
 gcrt1.o: gcrt1.s

Modified: projects/clang380-import/lib/libc/sys/sendfile.2
==============================================================================
--- projects/clang380-import/lib/libc/sys/sendfile.2	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/lib/libc/sys/sendfile.2	Mon Jan 11 19:36:44 2016	(r293687)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 7, 2010
+.Dd January 7, 2016
 .Dt SENDFILE 2
 .Os
 .Sh NAME
@@ -46,7 +46,7 @@
 The
 .Fn sendfile
 system call
-sends a regular file specified by descriptor
+sends a regular file or shared memory object specified by descriptor
 .Fa fd
 out a stream socket specified by descriptor
 .Fa s .
@@ -101,32 +101,55 @@ the system will write the total number o
 variable pointed to by
 .Fa sbytes .
 .Pp
-The
+The least significant 16 bits of
 .Fa flags
 argument is a bitmap of these values:
-.Bl -item -offset indent
-.It
-.Dv SF_NODISKIO .
-This flag causes any
-.Fn sendfile
-call which would block on disk I/O to instead
-return
-.Er EBUSY .
-Busy servers may benefit by transferring requests that would
-block to a separate I/O worker thread.
-.It
-.Dv SF_MNOWAIT .
-Do not wait for some kernel resource to become available,
-in particular,
-.Vt mbuf
-and
-.Vt sf_buf .
-The flag does not make the
-.Fn sendfile
-syscall truly non-blocking, since other resources are still allocated
-in a blocking fashion.
-.It
-.Dv SF_SYNC .
+.Bl -tag -offset indent
+.It Dv SF_NODISKIO
+This flag causes
+.Nm
+to return
+.Er EBUSY
+instead of blocking when a busy page is encountered.
+This rare situation can happen if some other process is now working
+with the same region of the file.
+It is advised to retry the operation after a short period.
+.Pp
+Note that in older
+.Fx
+versions the
+.Dv SF_NODISKIO
+had slightly different notion.
+The flag prevented
+.Nm
+to run I/O operations in case if an invalid (not cached) page is encountered,
+thus avoiding blocking on I/O.
+Starting with
+.Fx 11
+.Nm
+sending files off the
+.Xr ffs 7
+filesystem doesn't block on I/O
+(see 
+.Sx IMPLEMENTATION NOTES
+), so the condition no longer applies.
+However, it is safe if an application utilizes
+.Dv SF_NODISKIO
+and on
+.Er EBUSY
+performs the same action as it did in
+older
+.Fx
+versions, e.g.
+.Xr aio_read 2,
+.Xr read 2
+or
+.Nm
+in a different context.
+.It Dv SF_NOCACHE
+The data sent to socket will not be cached by the virtual memory system,
+and will be freed directly to the pool of free pages.
+.It Dv SF_SYNC
 .Nm
 sleeps until the network stack no longer references the VM pages
 of the file, making subsequent modifications to it safe.
@@ -134,6 +157,22 @@ Please note that this is not a guarantee
 been sent.
 .El
 .Pp
+The most significant 16 bits of
+.Fa flags
+specify amount of pages that
+.Nm
+may read ahead when reading the file.
+A macro
+.Fn SF_FLAGS
+is provided to combine readahead amount and flags.
+Example shows specifing readahead of 16 pages and
+.Dv SF_NOCACHE
+flag:
+.Pp
+.Bd -literal -offset indent -compact
+	SF_FLAGS(16, SF_NOCACHE)
+.Ed
+.Pp
 When using a socket marked for non-blocking I/O,
 .Fn sendfile
 may send fewer bytes than requested.
@@ -149,6 +188,18 @@ The
 .Fx
 implementation of
 .Fn sendfile
+doesn't block on disk I/O when it sends a file off the
+.Xr ffs 7
+filesystem.
+The syscall returns success before the actual I/O completes, and data
+is put into the socket later unattended.
+However, the order of data in the socket is preserved, so it is safe
+to do further writes to the socket.
+.Pp
+The
+.Fx
+implementation of
+.Fn sendfile
 is "zero-copy", meaning that it has been optimized so that copying of the file data is avoided.
 .Sh TUNING
 On some architectures, this system call internally uses a special
@@ -232,12 +283,10 @@ The
 argument
 is not a valid socket descriptor.
 .It Bq Er EBUSY
-Completing the entire transfer would have required disk I/O, so
-it was aborted.
-Partial data may have been sent.
-(This error can only occur when
+A busy page was encountered and
 .Dv SF_NODISKIO
-is specified.)
+had been specified.
+Partial data may have been sent.
 .It Bq Er EFAULT
 An invalid address was specified for an argument.
 .It Bq Er EINTR
@@ -310,9 +359,19 @@ first appeared in
 .Fx 3.0 .
 This manual page first appeared in
 .Fx 3.1 .
+In
+.Fx 10
+support for sending shared memory descriptors had been introduced.
+In
+.Fx 11
+a non-blocking implementation had been introduced.
 .Sh AUTHORS
-The
+The initial implementation of
 .Fn sendfile
 system call
 and this manual page were written by
 .An David G. Lawrence Aq Mt dg at dglawrence.com .
+The
+.Fx 11
+implementation was written by
+.An Gleb Smirnoff Aq Mt glebius at FreeBSD.org .

Modified: projects/clang380-import/lib/libstand/uuid_to_string.c
==============================================================================
--- projects/clang380-import/lib/libstand/uuid_to_string.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/lib/libstand/uuid_to_string.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -46,7 +46,7 @@ tohex(char **buf, int len, uint32_t val)
 	char *walker = *buf;
 	int i;
 
-	for (i = len - 1; i >= 0; i++) {
+	for (i = len - 1; i >= 0; i--) {
 		walker[i] = hexstr[val & 0xf];
 		val >>= 4;
 	}
@@ -107,5 +107,5 @@ uuid_to_string(const uuid_t *u, char **s
 	tohex(&w, 2, u->node[3]);
 	tohex(&w, 2, u->node[4]);
 	tohex(&w, 2, u->node[5]);
-	*w++ - '\0';
+	*w++ = '\0';
 }

Modified: projects/clang380-import/release/release.sh
==============================================================================
--- projects/clang380-import/release/release.sh	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/release/release.sh	Mon Jan 11 19:36:44 2016	(r293687)
@@ -275,6 +275,7 @@ extra_chroot_setup() {
 			PBUILD_FLAGS="${PBUILD_FLAGS} OSREL=${REVISION}"
 			chroot ${CHROOTDIR} make -C /usr/ports/textproc/docproj \
 				${PBUILD_FLAGS} OPTIONS_UNSET="FOP IGOR" \
+				FORCE_PKG_REGISTER=1 \
 				install clean distclean
 		fi
 	fi

Modified: projects/clang380-import/share/man/man4/ismt.4
==============================================================================
--- projects/clang380-import/share/man/man4/ismt.4	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/share/man/man4/ismt.4	Mon Jan 11 19:36:44 2016	(r293687)
@@ -33,7 +33,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 9, 2014
+.Dd January 11, 2016
 .Dt ISMT 4
 .Os
 .Sh NAME
@@ -54,6 +54,6 @@ in the Intel Atom S1200 and C2000 CPUs.
 The
 .Nm
 driver first appeared in
-.Fx 11.0 .
+.Fx 10.3 .
 .Sh AUTHORS
 .An Jim Harris Aq Mt jimharris at FreeBSD.org

Modified: projects/clang380-import/share/man/man5/src.conf.5
==============================================================================
--- projects/clang380-import/share/man/man5/src.conf.5	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/share/man/man5/src.conf.5	Mon Jan 11 19:36:44 2016	(r293687)
@@ -1,7 +1,7 @@
 .\" DO NOT EDIT-- this file is automatically generated.
 .\" from FreeBSD: head/tools/build/options/makeman 292283 2015-12-15 18:42:30Z bdrewery
 .\" $FreeBSD$
-.Dd December 15, 2015
+.Dd January 9, 2016
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -948,9 +948,30 @@ Set to not build the
 .Nm libthr
 (1:1 threading)
 library.
+.It Va WITHOUT_LLDB
+.\" from FreeBSD: head/tools/build/options/WITHOUT_LLDB 289275 2015-10-14 00:23:31Z emaste
+Set to not build the LLDB debugger.
+.Pp
+It is a default setting on
+arm/arm, arm/armeb, arm/armv6, arm/armv6hf, i386/i386, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, pc98/i386, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
 .It Va WITH_LLDB
 .\" from FreeBSD: head/tools/build/options/WITH_LLDB 255722 2013-09-20 01:52:02Z emaste
 Set to build the LLDB debugger.
+.Pp
+It is a default setting on
+amd64/amd64 and arm64/aarch64.
+.It Va WITHOUT_LLVM_LIBUNWIND
+.\" from FreeBSD: head/tools/build/options/WITHOUT_LLVM_LIBUNWIND 293450 2016-01-09 00:42:07Z emaste
+Set to use GCC's stack unwinder (instead of LLVM's libunwind).
+.Pp
+It is a default setting on
+amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv6hf, i386/i386, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, pc98/i386, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
+.It Va WITH_LLVM_LIBUNWIND
+.\" from FreeBSD: head/tools/build/options/WITH_LLVM_LIBUNWIND 293450 2016-01-09 00:42:07Z emaste
+Set to use LLVM's libunwind stack unwinder (instead of GCC's unwinder).
+.Pp
+It is a default setting on
+arm64/aarch64.
 .It Va WITHOUT_LOCALES
 .\" from FreeBSD: head/tools/build/options/WITHOUT_LOCALES 156932 2006-03-21 07:50:50Z ru
 Set to not build localization files; see

Modified: projects/clang380-import/share/misc/committers-src.dot
==============================================================================
--- projects/clang380-import/share/misc/committers-src.dot	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/share/misc/committers-src.dot	Mon Jan 11 19:36:44 2016	(r293687)
@@ -344,6 +344,7 @@ adrian -> loos
 adrian -> monthadar
 adrian -> ray
 adrian -> rmh
+adrian -> sephe
 
 ae -> melifaro
 
@@ -404,6 +405,7 @@ das -> rodrigc
 
 delphij -> gabor
 delphij -> rafan
+delphij -> sephe
 
 des -> anholt
 des -> hmp

Modified: projects/clang380-import/share/mk/src.opts.mk
==============================================================================
--- projects/clang380-import/share/mk/src.opts.mk	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/share/mk/src.opts.mk	Mon Jan 11 19:36:44 2016	(r293687)
@@ -231,9 +231,9 @@ __DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTST
 # In-tree binutils/gcc are older versions without modern architecture support.
 .if ${__T} == "aarch64" || ${__T} == "riscv64"
 BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GCC GCC_BOOTSTRAP GDB
-__DEFAULT_YES_OPTIONS+=ELFCOPY_AS_OBJCOPY
+__DEFAULT_YES_OPTIONS+=ELFCOPY_AS_OBJCOPY LLVM_LIBUNWIND
 .else
-__DEFAULT_NO_OPTIONS+=ELFCOPY_AS_OBJCOPY
+__DEFAULT_NO_OPTIONS+=ELFCOPY_AS_OBJCOPY LLVM_LIBUNWIND
 .endif
 .if ${__T} == "riscv64"
 BROKEN_OPTIONS+=PROFILE # "sorry, unimplemented: profiler support for RISC-V"

Modified: projects/clang380-import/sys/amd64/amd64/elf_machdep.c
==============================================================================
--- projects/clang380-import/sys/amd64/amd64/elf_machdep.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/sys/amd64/amd64/elf_machdep.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -80,6 +80,7 @@ struct sysentvec elf64_freebsd_sysvec = 
 	.sv_shared_page_len = PAGE_SIZE,
 	.sv_schedtail	= NULL,
 	.sv_thread_detach = NULL,
+	.sv_trap	= NULL,
 };
 INIT_SYSENTVEC(elf64_sysvec, &elf64_freebsd_sysvec);
 

Modified: projects/clang380-import/sys/amd64/amd64/trap.c
==============================================================================
--- projects/clang380-import/sys/amd64/amd64/trap.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/sys/amd64/amd64/trap.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -322,6 +322,13 @@ trap(struct trapframe *frame)
 			break;
 
 		case T_PAGEFLT:		/* page fault */
+			/*
+			 * Emulator can take care about this trap?
+			 */
+			if (*p->p_sysent->sv_trap != NULL &&
+			    (*p->p_sysent->sv_trap)(td) == 0)
+				goto userout;
+
 			addr = frame->tf_addr;
 			i = trap_pfault(frame, TRUE);
 			if (i == -1)

Modified: projects/clang380-import/sys/amd64/linux/linux_sysvec.c
==============================================================================
--- projects/clang380-import/sys/amd64/linux/linux_sysvec.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/sys/amd64/linux/linux_sysvec.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -129,6 +129,7 @@ static void	linux_set_syscall_retval(str
 static int	linux_fetch_syscall_args(struct thread *td, struct syscall_args *sa);
 static void	linux_exec_setregs(struct thread *td, struct image_params *imgp,
 		    u_long stack);
+static int	linux_vsyscall(struct thread *td);
 
 /*
  * Linux syscalls return negative errno's, we do positive and map them
@@ -746,6 +747,53 @@ exec_linux_imgact_try(struct image_param
 	return(error);
 }
 
+#define	LINUX_VSYSCALL_START		(-10UL << 20)
+#define	LINUX_VSYSCALL_SZ		1024
+
+const unsigned long linux_vsyscall_vector[] = {
+	LINUX_SYS_gettimeofday,
+	LINUX_SYS_linux_time,
+				/* getcpu not implemented */
+};
+
+static int
+linux_vsyscall(struct thread *td)
+{
+	struct trapframe *frame;
+	uint64_t retqaddr;
+	int code, traced;
+	int error; 
+
+	frame = td->td_frame;
+
+	/* Check %rip for vsyscall area */
+	if (__predict_true(frame->tf_rip < LINUX_VSYSCALL_START))
+		return (EINVAL);
+	if ((frame->tf_rip & (LINUX_VSYSCALL_SZ - 1)) != 0)
+		return (EINVAL);
+	code = (frame->tf_rip - LINUX_VSYSCALL_START) / LINUX_VSYSCALL_SZ;
+	if (code >= nitems(linux_vsyscall_vector))
+		return (EINVAL);
+
+	/*
+	 * vsyscall called as callq *(%rax), so we must
+	 * use return address from %rsp and also fixup %rsp
+	 */
+	error = copyin((void *)frame->tf_rsp, &retqaddr, sizeof(retqaddr));
+	if (error)
+		return (error);
+
+	frame->tf_rip = retqaddr;
+	frame->tf_rax = linux_vsyscall_vector[code];
+	frame->tf_rsp += 8;
+
+	traced = (frame->tf_flags & PSL_T);
+
+	amd64_syscall(td, traced);
+
+	return (0);
+}
+
 struct sysentvec elf_linux_sysvec = {
 	.sv_size	= LINUX_SYS_MAXSYSCALL,
 	.sv_table	= linux_sysent,
@@ -778,7 +826,8 @@ struct sysentvec elf_linux_sysvec = {
 	.sv_shared_page_base = SHAREDPAGE,
 	.sv_shared_page_len = PAGE_SIZE,
 	.sv_schedtail	= linux_schedtail,
-	.sv_thread_detach = linux_thread_detach
+	.sv_thread_detach = linux_thread_detach,
+	.sv_trap	= linux_vsyscall,
 };
 
 static void

Modified: projects/clang380-import/sys/amd64/linux32/linux32_sysvec.c
==============================================================================
--- projects/clang380-import/sys/amd64/linux32/linux32_sysvec.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/sys/amd64/linux32/linux32_sysvec.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -1040,6 +1040,7 @@ struct sysentvec elf_linux_sysvec = {
 	.sv_shared_page_len = PAGE_SIZE,
 	.sv_schedtail	= linux_schedtail,
 	.sv_thread_detach = linux_thread_detach,
+	.sv_trap	= NULL,	
 };
 
 static void

Modified: projects/clang380-import/sys/arm/arm/elf_machdep.c
==============================================================================
--- projects/clang380-import/sys/arm/arm/elf_machdep.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/sys/arm/arm/elf_machdep.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -86,6 +86,7 @@ struct sysentvec elf32_freebsd_sysvec = 
 	.sv_shared_page_len = PAGE_SIZE,
 	.sv_schedtail	= NULL,
 	.sv_thread_detach = NULL,
+	.sv_trap	= NULL,
 };
 INIT_SYSENTVEC(elf32_sysvec, &elf32_freebsd_sysvec);
 

Modified: projects/clang380-import/sys/arm64/arm64/elf_machdep.c
==============================================================================
--- projects/clang380-import/sys/arm64/arm64/elf_machdep.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/sys/arm64/arm64/elf_machdep.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -87,6 +87,8 @@ static struct sysentvec elf64_freebsd_sy
 	.sv_shared_page_base = SHAREDPAGE,
 	.sv_shared_page_len = PAGE_SIZE,
 	.sv_schedtail	= NULL,
+	.sv_thread_detach = NULL,
+	.sv_trap	= NULL,
 };
 INIT_SYSENTVEC(elf64_sysvec, &elf64_freebsd_sysvec);
 

Modified: projects/clang380-import/sys/boot/common/ufsread.c
==============================================================================
--- projects/clang380-import/sys/boot/common/ufsread.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/sys/boot/common/ufsread.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -211,7 +211,6 @@ fsread(ufs_ino_t inode, void *buf, size_
 				break;
 		}
 		if (sblock_try[n] == -1) {
-			printf("Not ufs\n");
 			return -1;
 		}
 		dsk_meta++;

Modified: projects/clang380-import/sys/boot/efi/boot1/Makefile
==============================================================================
--- projects/clang380-import/sys/boot/efi/boot1/Makefile	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/sys/boot/efi/boot1/Makefile	Mon Jan 11 19:36:44 2016	(r293687)
@@ -41,14 +41,13 @@ CFLAGS+=	-fPIC
 LDFLAGS+=	-Wl,-znocombreloc
 .endif
 
-.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "i386"
 #
 # Add libstand for the runtime functions used by the compiler - for example
 # __aeabi_* (arm) or __divdi3 (i386).
+# as well as required string and memory functions for all platforms.
 #
 DPADD+=		${LIBSTAND}
 LDADD+=		-lstand
-.endif
 
 DPADD+=		${LDSCRIPT}
 

Modified: projects/clang380-import/sys/boot/efi/boot1/boot1.c
==============================================================================
--- projects/clang380-import/sys/boot/efi/boot1/boot1.c	Mon Jan 11 19:32:07 2016	(r293686)
+++ projects/clang380-import/sys/boot/efi/boot1/boot1.c	Mon Jan 11 19:36:44 2016	(r293687)
@@ -24,6 +24,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/dirent.h>
 #include <machine/elf.h>
 #include <machine/stdarg.h>
+#include <stand.h>
 
 #include <efi.h>
 #include <eficonsctl.h>
@@ -33,28 +34,8 @@ __FBSDID("$FreeBSD$");
 
 #define BSIZEMAX	16384
 
-typedef int putc_func_t(char c, void *arg);
-
-struct sp_data {
-	char	*sp_buf;
-	u_int	sp_len;
-	u_int	sp_size;
-};
-
-static const char digits[] = "0123456789abcdef";
-
-static void panic(const char *fmt, ...) __dead2;
-static int printf(const char *fmt, ...);
-static int putchar(char c, void *arg);
-static int vprintf(const char *fmt, va_list ap);
-static int vsnprintf(char *str, size_t sz, const char *fmt, va_list ap);
-
-static int __printf(const char *fmt, putc_func_t *putc, void *arg, va_list ap);
-static int __putc(char c, void *arg);
-static int __puts(const char *s, putc_func_t *putc, void *arg);
-static int __sputc(char c, void *arg);
-static char *__uitoa(char *buf, u_int val, int base);
-static char *__ultoa(char *buf, u_long val, int base);
+void panic(const char *fmt, ...) __dead2;
+void putchar(int c);
 
 static int domount(EFI_DEVICE_PATH *device, EFI_BLOCK_IO *blkio, int quiet);
 static void load(const char *fname);
@@ -62,39 +43,6 @@ static void load(const char *fname);
 static EFI_SYSTEM_TABLE *systab;
 static EFI_HANDLE *image;
 
-static void
-bcopy(const void *src, void *dst, size_t len)
-{
-	const char *s = src;
-	char *d = dst;
-
-	while (len-- != 0)
-		*d++ = *s++;
-}
-
-static void
-memcpy(void *dst, const void *src, size_t len)
-{
-	bcopy(src, dst, len);
-}
-
-static void
-bzero(void *b, size_t len)
-{
-	char *p = b;
-
-	while (len-- != 0)
-		*p++ = 0;
-}
-
-static int
-strcmp(const char *s1, const char *s2)
-{
-	for (; *s1 == *s2 && *s1; s1++, s2++)
-		;
-	return ((u_char)*s1 - (u_char)*s2);
-}
-
 static EFI_GUID BlockIoProtocolGUID = BLOCK_IO_PROTOCOL;
 static EFI_GUID DevicePathGUID = DEVICE_PATH_PROTOCOL;
 static EFI_GUID LoadedImageGUID = LOADED_IMAGE_PROTOCOL;
@@ -250,7 +198,6 @@ fsstat(ufs_ino_t inode)
 				break;
 		}
 		if (sblock_try[n] == -1) {
-			printf("Not ufs\n");
 			return -1;
 		}
 		dsk_meta++;
@@ -346,38 +293,22 @@ load(const char *fname)
 		    EFI_ERROR_CODE(status));
 }
 
-static void
+void
 panic(const char *fmt, ...)
 {
-	char buf[128];
 	va_list ap;
 
+	printf("panic: ");
 	va_start(ap, fmt);
-	vsnprintf(buf, sizeof buf, fmt, ap);
-	printf("panic: %s\n", buf);
+	vprintf(fmt, ap);
 	va_end(ap);
+	printf("\n");
 
 	while (1) {}
 }
 
-static int
-printf(const char *fmt, ...)
-{
-	va_list ap;
-	int ret;
-
-	/* Don't annoy the user as we probe for partitions */
-	if (strcmp(fmt,"Not ufs\n") == 0)
-		return 0;
-
-	va_start(ap, fmt);
-	ret = vprintf(fmt, ap);
-	va_end(ap);
-	return (ret);
-}
-
-static int
-putchar(char c, void *arg)
+void
+putchar(int c)
 {
 	CHAR16 buf[2];
 
@@ -389,187 +320,4 @@ putchar(char c, void *arg)
 	buf[0] = c;
 	buf[1] = 0;
 	systab->ConOut->OutputString(systab->ConOut, buf);
-	return (1);
-}
-
-static int
-vprintf(const char *fmt, va_list ap)
-{
-	int ret;
-
-	ret = __printf(fmt, putchar, 0, ap);
-	return (ret);
-}
-
-static int
-vsnprintf(char *str, size_t sz, const char *fmt, va_list ap)
-{
-	struct sp_data sp;
-	int ret;
-
-	sp.sp_buf = str;
-	sp.sp_len = 0;
-	sp.sp_size = sz;
-	ret = __printf(fmt, __sputc, &sp, ap);
-	return (ret);
-}
-
-static int
-__printf(const char *fmt, putc_func_t *putc, void *arg, va_list ap)
-{
-	char buf[(sizeof(long) * 8) + 1];
-	char *nbuf;
-	u_long ul;
-	u_int ui;
-	int lflag;
-	int sflag;
-	char *s;
-	int pad;
-	int ret;
-	int c;
-
-	nbuf = &buf[sizeof buf - 1];
-	ret = 0;
-	while ((c = *fmt++) != 0) {
-		if (c != '%') {
-			ret += putc(c, arg);
-			continue;
-		}
-		lflag = 0;
-		sflag = 0;
-		pad = 0;
-reswitch:	c = *fmt++;
-		switch (c) {
-		case '#':
-			sflag = 1;
-			goto reswitch;
-		case '%':
-			ret += putc('%', arg);
-			break;
-		case 'c':
-			c = va_arg(ap, int);
-			ret += putc(c, arg);
-			break;
-		case 'd':
-			if (lflag == 0) {
-				ui = (u_int)va_arg(ap, int);
-				if (ui < (int)ui) {
-					ui = -ui;
-					ret += putc('-', arg);
-				}
-				s = __uitoa(nbuf, ui, 10);
-			} else {
-				ul = (u_long)va_arg(ap, long);
-				if (ul < (long)ul) {
-					ul = -ul;
-					ret += putc('-', arg);
-				}
-				s = __ultoa(nbuf, ul, 10);
-			}
-			ret += __puts(s, putc, arg);
-			break;
-		case 'l':
-			lflag = 1;
-			goto reswitch;
-		case 'o':
-			if (lflag == 0) {
-				ui = (u_int)va_arg(ap, u_int);
-				s = __uitoa(nbuf, ui, 8);
-			} else {
-				ul = (u_long)va_arg(ap, u_long);
-				s = __ultoa(nbuf, ul, 8);
-			}
-			ret += __puts(s, putc, arg);
-			break;
-		case 'p':
-			ul = (u_long)va_arg(ap, void *);
-			s = __ultoa(nbuf, ul, 16);
-			ret += __puts("0x", putc, arg);
-			ret += __puts(s, putc, arg);
-			break;
-		case 's':
-			s = va_arg(ap, char *);

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


More information about the svn-src-projects mailing list