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