svn commit: r277660 - in projects/building-blocks: . bin/cp bin/ln bin/mv contrib/gdb/gdb contrib/netbsd-tests/lib/libc/c063 contrib/tcpdump etc/mtree etc/tests etc/tests/rc.d lib/libc/include lib/...

Garrett Cooper ngie at FreeBSD.org
Sat Jan 24 21:21:47 UTC 2015


Author: ngie
Date: Sat Jan 24 21:21:39 2015
New Revision: 277660
URL: https://svnweb.freebsd.org/changeset/base/277660

Log:
  MFhead @ r277659

Added:
  projects/building-blocks/etc/tests/rc.d/
     - copied from r277659, head/etc/tests/rc.d/
  projects/building-blocks/lib/libc/sys/futimens.c
     - copied unchanged from r277659, head/lib/libc/sys/futimens.c
  projects/building-blocks/lib/libc/sys/utimensat.2
     - copied unchanged from r277659, head/lib/libc/sys/utimensat.2
  projects/building-blocks/lib/libc/sys/utimensat.c
     - copied unchanged from r277659, head/lib/libc/sys/utimensat.c
  projects/building-blocks/sys/arm/freescale/imx/imx6_audmux.c
     - copied unchanged from r277659, head/sys/arm/freescale/imx/imx6_audmux.c
  projects/building-blocks/sys/arm/freescale/imx/imx6_sdma.c
     - copied unchanged from r277659, head/sys/arm/freescale/imx/imx6_sdma.c
  projects/building-blocks/sys/arm/freescale/imx/imx6_sdma.h
     - copied unchanged from r277659, head/sys/arm/freescale/imx/imx6_sdma.h
  projects/building-blocks/sys/arm/freescale/imx/imx6_ssi.c
     - copied unchanged from r277659, head/sys/arm/freescale/imx/imx6_ssi.c
  projects/building-blocks/usr.sbin/pw/tests/pw_groupshow.sh
     - copied unchanged from r277659, head/usr.sbin/pw/tests/pw_groupshow.sh
  projects/building-blocks/usr.sbin/pw/tests/pw_usershow.sh
     - copied unchanged from r277659, head/usr.sbin/pw/tests/pw_usershow.sh
Modified:
  projects/building-blocks/Makefile.inc1
  projects/building-blocks/bin/cp/utils.c
  projects/building-blocks/bin/ln/symlink.7
  projects/building-blocks/bin/mv/mv.c
  projects/building-blocks/contrib/gdb/gdb/corelow.c
  projects/building-blocks/contrib/gdb/gdb/dwarf2expr.c
  projects/building-blocks/contrib/gdb/gdb/remote.c
  projects/building-blocks/contrib/gdb/gdb/std-regs.c
  projects/building-blocks/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c
  projects/building-blocks/contrib/tcpdump/tcpdump.c
  projects/building-blocks/etc/mtree/BSD.tests.dist
  projects/building-blocks/etc/tests/Makefile
  projects/building-blocks/lib/libc/include/libc_private.h
  projects/building-blocks/lib/libc/sys/Makefile.inc
  projects/building-blocks/lib/libc/sys/Symbol.map
  projects/building-blocks/lib/libc/tests/c063/Makefile
  projects/building-blocks/lib/libstand/libstand.3
  projects/building-blocks/lib/libstand/printf.c
  projects/building-blocks/release/Makefile
  projects/building-blocks/release/Makefile.vm
  projects/building-blocks/release/doc/en_US.ISO8859-1/relnotes/article.xml
  projects/building-blocks/release/picobsd/build/picobsd
  projects/building-blocks/sbin/ping/ping.c
  projects/building-blocks/share/man/man3/tree.3
  projects/building-blocks/share/man/man4/rights.4
  projects/building-blocks/share/man/man9/printf.9
  projects/building-blocks/sys/amd64/vmm/amd/svm.c
  projects/building-blocks/sys/arm/arm/mem.c
  projects/building-blocks/sys/arm/freescale/imx/files.imx6
  projects/building-blocks/sys/arm/freescale/imx/imx6_anatop.c
  projects/building-blocks/sys/arm/freescale/imx/imx6_anatopreg.h
  projects/building-blocks/sys/arm/freescale/imx/imx6_anatopvar.h
  projects/building-blocks/sys/arm/freescale/imx/imx6_ccm.c
  projects/building-blocks/sys/arm/freescale/imx/imx6_ccmreg.h
  projects/building-blocks/sys/arm/freescale/imx/imx_ccmvar.h
  projects/building-blocks/sys/arm/freescale/imx/imx_iomux.c
  projects/building-blocks/sys/arm/ti/am335x/am335x_lcd.c
  projects/building-blocks/sys/boot/fdt/dts/arm/apalis-imx6.dts
  projects/building-blocks/sys/boot/fdt/dts/arm/imx6.dtsi
  projects/building-blocks/sys/boot/i386/libfirewire/firewire.c
  projects/building-blocks/sys/cam/ctl/ctl_tpc.c
  projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
  projects/building-blocks/sys/compat/freebsd32/freebsd32_misc.c
  projects/building-blocks/sys/compat/freebsd32/freebsd32_proto.h
  projects/building-blocks/sys/compat/freebsd32/freebsd32_syscall.h
  projects/building-blocks/sys/compat/freebsd32/freebsd32_syscalls.c
  projects/building-blocks/sys/compat/freebsd32/freebsd32_sysent.c
  projects/building-blocks/sys/compat/freebsd32/freebsd32_systrace_args.c
  projects/building-blocks/sys/compat/freebsd32/syscalls.master
  projects/building-blocks/sys/conf/files
  projects/building-blocks/sys/dev/acpica/acpi_ec.c
  projects/building-blocks/sys/dev/agp/agp_nvidia.c
  projects/building-blocks/sys/dev/cx/cxddk.c
  projects/building-blocks/sys/dev/dc/if_dc.c
  projects/building-blocks/sys/dev/fdt/fdt_clock.c
  projects/building-blocks/sys/dev/mem/memdev.c
  projects/building-blocks/sys/dev/netmap/netmap.c
  projects/building-blocks/sys/i386/i386/mem.c
  projects/building-blocks/sys/kern/capabilities.conf
  projects/building-blocks/sys/kern/init_sysent.c
  projects/building-blocks/sys/kern/subr_prf.c
  projects/building-blocks/sys/kern/syscalls.c
  projects/building-blocks/sys/kern/syscalls.master
  projects/building-blocks/sys/kern/systrace_args.c
  projects/building-blocks/sys/kern/vfs_syscalls.c
  projects/building-blocks/sys/mips/mips/mem.c
  projects/building-blocks/sys/modules/cxgbe/if_cxgbe/Makefile
  projects/building-blocks/sys/netinet/ip_carp.c
  projects/building-blocks/sys/powerpc/aim/machdep.c
  projects/building-blocks/sys/powerpc/aim/trap_subr32.S
  projects/building-blocks/sys/powerpc/aim/trap_subr64.S
  projects/building-blocks/sys/sparc64/sparc64/mem.c
  projects/building-blocks/sys/sys/capsicum.h
  projects/building-blocks/sys/sys/param.h
  projects/building-blocks/sys/sys/stat.h
  projects/building-blocks/sys/sys/syscall.h
  projects/building-blocks/sys/sys/syscall.mk
  projects/building-blocks/sys/sys/syscallsubr.h
  projects/building-blocks/sys/sys/sysproto.h
  projects/building-blocks/sys/sys/tree.h
  projects/building-blocks/sys/vm/vm_map.c
  projects/building-blocks/sys/vm/vm_pageout.c
  projects/building-blocks/tools/regression/file/flock/flock.c
  projects/building-blocks/usr.bin/kdump/kdump.c
  projects/building-blocks/usr.bin/touch/touch.c
  projects/building-blocks/usr.bin/vmstat/vmstat.c
  projects/building-blocks/usr.sbin/config/config.y
  projects/building-blocks/usr.sbin/config/configvers.h
  projects/building-blocks/usr.sbin/iostat/iostat.c
  projects/building-blocks/usr.sbin/pw/pw_group.c
  projects/building-blocks/usr.sbin/pw/pw_user.c
  projects/building-blocks/usr.sbin/pw/tests/Makefile
Directory Properties:
  projects/building-blocks/   (props changed)
  projects/building-blocks/contrib/gdb/   (props changed)
  projects/building-blocks/contrib/tcpdump/   (props changed)
  projects/building-blocks/etc/   (props changed)
  projects/building-blocks/lib/libc/   (props changed)
  projects/building-blocks/sbin/   (props changed)
  projects/building-blocks/share/   (props changed)
  projects/building-blocks/share/man/man4/   (props changed)
  projects/building-blocks/sys/   (props changed)
  projects/building-blocks/sys/amd64/vmm/   (props changed)
  projects/building-blocks/sys/boot/   (props changed)
  projects/building-blocks/sys/cddl/contrib/opensolaris/   (props changed)
  projects/building-blocks/sys/conf/   (props changed)

Modified: projects/building-blocks/Makefile.inc1
==============================================================================
--- projects/building-blocks/Makefile.inc1	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/Makefile.inc1	Sat Jan 24 21:21:39 2015	(r277660)
@@ -1460,6 +1460,9 @@ _elftctools=	lib/libelftc \
 		usr.bin/nm \
 		usr.bin/size \
 		usr.bin/strings
+# These are not required by the build, but can be useful for developers who
+# cross-build on a FreeBSD 10 host:
+_elftctools+=	usr.bin/addr2line
 .endif
 .endif
 

Modified: projects/building-blocks/bin/cp/utils.c
==============================================================================
--- projects/building-blocks/bin/cp/utils.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/bin/cp/utils.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -330,7 +330,7 @@ copy_special(struct stat *from_stat, int
 int
 setfile(struct stat *fs, int fd)
 {
-	static struct timeval tv[2];
+	static struct timespec tspec[2];
 	struct stat ts;
 	int rval, gotstat, islink, fdval;
 
@@ -340,10 +340,11 @@ setfile(struct stat *fs, int fd)
 	fs->st_mode &= S_ISUID | S_ISGID | S_ISVTX |
 		       S_IRWXU | S_IRWXG | S_IRWXO;
 
-	TIMESPEC_TO_TIMEVAL(&tv[0], &fs->st_atim);
-	TIMESPEC_TO_TIMEVAL(&tv[1], &fs->st_mtim);
-	if (islink ? lutimes(to.p_path, tv) : utimes(to.p_path, tv)) {
-		warn("%sutimes: %s", islink ? "l" : "", to.p_path);
+	tspec[0] = fs->st_atim;
+	tspec[1] = fs->st_mtim;
+	if (utimensat(AT_FDCWD, to.p_path, tspec,
+	    islink ? AT_SYMLINK_NOFOLLOW : 0)) {
+		warn("utimensat: %s", to.p_path);
 		rval = 1;
 	}
 	if (fdval ? fstat(fd, &ts) :

Modified: projects/building-blocks/bin/ln/symlink.7
==============================================================================
--- projects/building-blocks/bin/ln/symlink.7	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/bin/ln/symlink.7	Sat Jan 24 21:21:39 2015	(r277660)
@@ -29,7 +29,7 @@
 .\"	@(#)symlink.7	8.3 (Berkeley) 3/31/94
 .\" $FreeBSD$
 .\"
-.Dd December 29, 2014
+.Dd January 23, 2015
 .Dt SYMLINK 7
 .Os
 .Sh NAME
@@ -147,9 +147,10 @@ unless given the
 .Dv AT_SYMLINK_NOFOLLOW
 flag:
 .Xr fchmodat 2 ,
-.Xr fchownat 2
+.Xr fchownat 2 ,
+.Xr fstatat 2
 and
-.Xr fstatat 2 .
+.Xr utimensat 2 .
 .Pp
 The owner and group of an existing symbolic link can be changed by
 means of the

Modified: projects/building-blocks/bin/mv/mv.c
==============================================================================
--- projects/building-blocks/bin/mv/mv.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/bin/mv/mv.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -273,7 +273,7 @@ do_move(const char *from, const char *to
 static int
 fastcopy(const char *from, const char *to, struct stat *sbp)
 {
-	struct timeval tval[2];
+	struct timespec ts[2];
 	static u_int blen = MAXPHYS;
 	static char *bp = NULL;
 	mode_t oldmode;
@@ -350,10 +350,9 @@ err:		if (unlink(to))
 	} else
 		warn("%s: cannot stat", to);
 
-	tval[0].tv_sec = sbp->st_atime;
-	tval[1].tv_sec = sbp->st_mtime;
-	tval[0].tv_usec = tval[1].tv_usec = 0;
-	if (utimes(to, tval))
+	ts[0] = sbp->st_atim;
+	ts[1] = sbp->st_mtim;
+	if (utimensat(AT_FDCWD, to, ts, 0))
 		warn("%s: set times", to);
 
 	if (close(to_fd)) {

Modified: projects/building-blocks/contrib/gdb/gdb/corelow.c
==============================================================================
--- projects/building-blocks/contrib/gdb/gdb/corelow.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/contrib/gdb/gdb/corelow.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -432,15 +432,16 @@ get_core_register_section (char *name,
 			   char *human_name,
 			   int required)
 {
-  char section_name[100];
+  static char *section_name = NULL;
   struct bfd_section *section;
   bfd_size_type size;
   char *contents;
 
+  xfree (section_name);
   if (PIDGET (inferior_ptid))
-    sprintf (section_name, "%s/%d", name, PIDGET (inferior_ptid));
+    section_name = xstrprintf ("%s/%d", name, PIDGET (inferior_ptid));
   else
-    strcpy (section_name, name);
+    section_name = xstrdup (name);
 
   section = bfd_get_section_by_name (core_bfd, section_name);
   if (! section)

Modified: projects/building-blocks/contrib/gdb/gdb/dwarf2expr.c
==============================================================================
--- projects/building-blocks/contrib/gdb/gdb/dwarf2expr.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/contrib/gdb/gdb/dwarf2expr.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -575,6 +575,7 @@ execute_stack_op (struct dwarf_expr_cont
 		break;
 	      case DW_OP_div:
 		binop = BINOP_DIV;
+                break;
 	      case DW_OP_minus:
 		binop = BINOP_SUB;
 		break;
@@ -595,6 +596,7 @@ execute_stack_op (struct dwarf_expr_cont
 		break;
 	      case DW_OP_shr:
 		binop = BINOP_RSH;
+                break;
 	      case DW_OP_shra:
 		binop = BINOP_RSH;
 		val1 = value_from_longest (signed_address_type (), first);

Modified: projects/building-blocks/contrib/gdb/gdb/remote.c
==============================================================================
--- projects/building-blocks/contrib/gdb/gdb/remote.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/contrib/gdb/gdb/remote.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -3463,7 +3463,7 @@ remote_store_registers (int regnum)
   {
     int i;
     regs = alloca (rs->sizeof_g_packet);
-    memset (regs, rs->sizeof_g_packet, 0);
+    memset (regs, 0, rs->sizeof_g_packet);
     for (i = 0; i < NUM_REGS + NUM_PSEUDO_REGS; i++)
       {
 	struct packet_reg *r = &rs->regs[i];

Modified: projects/building-blocks/contrib/gdb/gdb/std-regs.c
==============================================================================
--- projects/building-blocks/contrib/gdb/gdb/std-regs.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/contrib/gdb/gdb/std-regs.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -61,7 +61,7 @@ value_of_builtin_frame_reg (struct frame
   val = allocate_value (builtin_type_frame_reg);
   VALUE_LVAL (val) = not_lval;
   buf = VALUE_CONTENTS_RAW (val);
-  memset (buf, TYPE_LENGTH (VALUE_TYPE (val)), 0);
+  memset (buf, 0, TYPE_LENGTH (VALUE_TYPE (val)));
   /* frame.base.  */
   if (frame != NULL)
     ADDRESS_TO_POINTER (builtin_type_void_data_ptr, buf,
@@ -87,7 +87,7 @@ value_of_builtin_frame_fp_reg (struct fr
       struct value *val = allocate_value (builtin_type_void_data_ptr);
       char *buf = VALUE_CONTENTS_RAW (val);
       if (frame == NULL)
-	memset (buf, TYPE_LENGTH (VALUE_TYPE (val)), 0);
+	memset (buf, 0, TYPE_LENGTH (VALUE_TYPE (val)));
       else
 	ADDRESS_TO_POINTER (builtin_type_void_data_ptr, buf,
 			    get_frame_base_address (frame));
@@ -105,7 +105,7 @@ value_of_builtin_frame_pc_reg (struct fr
       struct value *val = allocate_value (builtin_type_void_data_ptr);
       char *buf = VALUE_CONTENTS_RAW (val);
       if (frame == NULL)
-	memset (buf, TYPE_LENGTH (VALUE_TYPE (val)), 0);
+	memset (buf, 0, TYPE_LENGTH (VALUE_TYPE (val)));
       else
 	ADDRESS_TO_POINTER (builtin_type_void_data_ptr, buf,
 			    get_frame_pc (frame));

Modified: projects/building-blocks/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c
==============================================================================
--- projects/building-blocks/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -40,6 +40,9 @@ __RCSID("$NetBSD: t_utimensat.c,v 1.5 20
 #include <string.h>
 #include <unistd.h>
 #include <sys/param.h>
+#ifdef __FreeBSD__
+#include <sys/stat.h>
+#endif
 #include <sys/time.h>
 
 #define DIR "dir"

Modified: projects/building-blocks/contrib/tcpdump/tcpdump.c
==============================================================================
--- projects/building-blocks/contrib/tcpdump/tcpdump.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/contrib/tcpdump/tcpdump.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -77,12 +77,12 @@ extern int SIZE_BUF;
 #ifdef __FreeBSD__
 #include <sys/capsicum.h>
 #include <sys/sysctl.h>
+#endif /* __FreeBSD__ */
+#ifdef HAVE_CAPSICUM
 #include <libcapsicum.h>
 #include <libcapsicum_dns.h>
 #include <libcapsicum_service.h>
 #include <nv.h>
-#endif /* __FreeBSD__ */
-#ifdef HAVE_CAPSICUM
 #include <sys/capability.h>
 #include <sys/ioccom.h>
 #include <net/bpf.h>
@@ -966,8 +966,8 @@ main(int argc, char **argv)
 	FILE *VFile;
 #ifdef HAVE_CAPSICUM
 	cap_rights_t rights;
-	int cansandbox;
 #endif	/* HAVE_CAPSICUM */
+	int cansandbox;
 
 #ifdef WIN32
 	if(wsockinit() != 0) return 1;

Modified: projects/building-blocks/etc/mtree/BSD.tests.dist
==============================================================================
--- projects/building-blocks/etc/mtree/BSD.tests.dist	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/etc/mtree/BSD.tests.dist	Sat Jan 24 21:21:39 2015	(r277660)
@@ -52,6 +52,8 @@
         ..
     ..
     etc
+        rc.d
+        ..
     ..
     games
     ..

Modified: projects/building-blocks/etc/tests/Makefile
==============================================================================
--- projects/building-blocks/etc/tests/Makefile	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/etc/tests/Makefile	Sat Jan 24 21:21:39 2015	(r277660)
@@ -7,4 +7,6 @@ TESTSDIR=	${TESTSBASE}/etc
 .PATH:		${.CURDIR:H:H}/tests
 KYUAFILE=	yes
 
+TESTS_SUBDIRS+=	rc.d
+
 .include <bsd.test.mk>

Modified: projects/building-blocks/lib/libc/include/libc_private.h
==============================================================================
--- projects/building-blocks/lib/libc/include/libc_private.h	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/lib/libc/include/libc_private.h	Sat Jan 24 21:21:39 2015	(r277660)
@@ -357,6 +357,10 @@ int		__libc_system(const char *);
 int		__libc_tcdrain(int);
 int		__fcntl_compat(int fd, int cmd, ...);
 
+int		__sys_futimens(int fd, const struct timespec *times) __hidden;
+int		__sys_utimensat(int fd, const char *path,
+		    const struct timespec *times, int flag) __hidden;
+
 /* execve() with PATH processing to implement posix_spawnp() */
 int _execvpe(const char *, char * const *, char * const *);
 

Modified: projects/building-blocks/lib/libc/sys/Makefile.inc
==============================================================================
--- projects/building-blocks/lib/libc/sys/Makefile.inc	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/lib/libc/sys/Makefile.inc	Sat Jan 24 21:21:39 2015	(r277660)
@@ -38,6 +38,10 @@ SRCS+=	${SYSCALL_COMPAT_SRCS}
 NOASM+=	${SYSCALL_COMPAT_SRCS:S/.c/.o/}
 .endif
 
+SRCS+= futimens.c utimensat.c
+NOASM+= futimens.o utimensat.o
+PSEUDO+= _futimens.o _utimensat.o
+
 INTERPOSED = \
 	accept \
 	accept4 \
@@ -310,6 +314,7 @@ MAN+=	sctp_generic_recvmsg.2 \
 	umask.2 \
 	undelete.2 \
 	unlink.2 \
+	utimensat.2 \
 	utimes.2 \
 	utrace.2 \
 	uuidgen.2 \
@@ -442,6 +447,7 @@ MLINKS+=timer_settime.2 timer_getoverrun
 	timer_settime.2 timer_gettime.2
 MLINKS+=truncate.2 ftruncate.2
 MLINKS+=unlink.2 unlinkat.2
+MLINKS+=utimensat.2 futimens.2
 MLINKS+=utimes.2 futimes.2 \
 	utimes.2 futimesat.2 \
 	utimes.2 lutimes.2

Modified: projects/building-blocks/lib/libc/sys/Symbol.map
==============================================================================
--- projects/building-blocks/lib/libc/sys/Symbol.map	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/lib/libc/sys/Symbol.map	Sat Jan 24 21:21:39 2015	(r277660)
@@ -397,7 +397,9 @@ FBSD_1.3 {
 };
 
 FBSD_1.4 {
+	futimens;
 	ppoll;
+	utimensat;
 };
 
 FBSDprivate_1.0 {

Copied: projects/building-blocks/lib/libc/sys/futimens.c (from r277659, head/lib/libc/sys/futimens.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/building-blocks/lib/libc/sys/futimens.c	Sat Jan 24 21:21:39 2015	(r277660, copy of r277659, head/lib/libc/sys/futimens.c)
@@ -0,0 +1,97 @@
+/*-
+ * Copyright (c) 2015 Jilles Tjoelker
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "namespace.h"
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <time.h>
+#include "un-namespace.h"
+
+#include "libc_private.h"
+
+int
+futimens(int fd, const struct timespec times[2])
+{
+	struct timeval now, tv[2], *tvp;
+	struct stat sb;
+
+	if (__getosreldate() >= 1100056)
+		return (__sys_futimens(fd, times));
+
+	if (times == NULL || (times[0].tv_nsec == UTIME_NOW &&
+	    times[1].tv_nsec == UTIME_NOW))
+		tvp = NULL;
+	else if (times[0].tv_nsec == UTIME_OMIT &&
+	    times[1].tv_nsec == UTIME_OMIT)
+		return (0);
+	else {
+		if ((times[0].tv_nsec < 0 || times[0].tv_nsec > 999999999) &&
+		    times[0].tv_nsec != UTIME_NOW &&
+		    times[0].tv_nsec != UTIME_OMIT) {
+			errno = EINVAL;
+			return (-1);
+		}
+		if ((times[1].tv_nsec < 0 || times[1].tv_nsec > 999999999) &&
+		    times[1].tv_nsec != UTIME_NOW &&
+		    times[1].tv_nsec != UTIME_OMIT) {
+			errno = EINVAL;
+			return (-1);
+		}
+		tv[0].tv_sec = times[0].tv_sec;
+		tv[0].tv_usec = times[0].tv_nsec / 1000;
+		tv[1].tv_sec = times[1].tv_sec;
+		tv[1].tv_usec = times[1].tv_nsec / 1000;
+		tvp = tv;
+		if (times[0].tv_nsec == UTIME_OMIT ||
+		    times[1].tv_nsec == UTIME_OMIT) {
+			if (_fstat(fd, &sb) == -1)
+				return (-1);
+			if (times[0].tv_nsec == UTIME_OMIT) {
+				tv[0].tv_sec = sb.st_atim.tv_sec;
+				tv[0].tv_usec = sb.st_atim.tv_nsec / 1000;
+			}
+			if (times[1].tv_nsec == UTIME_OMIT) {
+				tv[1].tv_sec = sb.st_mtim.tv_sec;
+				tv[1].tv_usec = sb.st_mtim.tv_nsec / 1000;
+			}
+		}
+		if (times[0].tv_nsec == UTIME_NOW ||
+		    times[1].tv_nsec == UTIME_NOW) {
+			if (gettimeofday(&now, NULL) == -1)
+				return (-1);
+			if (times[0].tv_nsec == UTIME_NOW)
+				tv[0] = now;
+			if (times[1].tv_nsec == UTIME_NOW)
+				tv[1] = now;
+		}
+	}
+	return (futimes(fd, tvp));
+}

Copied: projects/building-blocks/lib/libc/sys/utimensat.2 (from r277659, head/lib/libc/sys/utimensat.2)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/building-blocks/lib/libc/sys/utimensat.2	Sat Jan 24 21:21:39 2015	(r277660, copy of r277659, head/lib/libc/sys/utimensat.2)
@@ -0,0 +1,292 @@
+.\"	$NetBSD: utimes.2,v 1.13 1999/03/22 19:45:11 garbled Exp $
+.\"
+.\" Copyright (c) 1990, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\" Copyright (c) 2012, Jilles Tjoelker
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)utimes.2	8.1 (Berkeley) 6/4/93
+.\" $FreeBSD$
+.\"
+.Dd January 23, 2015
+.Dt UTIMENSAT 2
+.Os
+.Sh NAME
+.Nm futimens ,
+.Nm utimensat
+.Nd set file access and modification times
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.In sys/stat.h
+.Ft int
+.Fn futimens "int fd" "const struct timespec times[2]"
+.Ft int
+.Fo utimensat
+.Fa "int fd"
+.Fa "const char *path"
+.Fa "const struct timespec times[2]"
+.Fa "int flag"
+.Fc
+.Sh DESCRIPTION
+The access and modification times of the file named by
+.Fa path
+or referenced by
+.Fa fd
+are changed as specified by the argument
+.Fa times .
+The inode-change-time of the file is set to the current time.
+.Pp
+If
+.Fa path
+specifies a relative path,
+it is relative to the current working directory if
+.Fa fd
+is
+.Dv AT_FDCWD
+and otherwise relative to the directory associated with the file descriptor
+.Fa fd .
+.Pp
+The
+.Va tv_nsec
+field of a
+.Vt timespec
+structure
+can be set to the special value
+.Dv UTIME_NOW
+to set the current time, or to
+.Dv UTIME_OMIT
+to leave the time unchanged.
+In either case, the
+.Va tv_sec
+field is ignored.
+.Pp
+If
+.Fa times
+is
+.No non- Ns Dv NULL ,
+it is assumed to point to an array of two timespec structures.
+The access time is set to the value of the first element, and the
+modification time is set to the value of the second element.
+For file systems that support file birth (creation) times (such as
+.Dv UFS2 ) ,
+the birth time will be set to the value of the second element
+if the second element is older than the currently set birth time.
+To set both a birth time and a modification time,
+two calls are required; the first to set the birth time
+and the second to set the (presumably newer) modification time.
+Ideally a new system call will be added that allows the setting
+of all three times at once.
+If
+.Fa times
+is
+.Dv NULL ,
+this is equivalent to passing
+a pointer to an array of two timespec structures
+with both
+.Va tv_nsec
+fields set to
+.Dv UTIME_NOW .
+.Pp
+If both
+.Va tv_nsec
+fields are
+.Dv UTIME_OMIT ,
+the timestamps remain unchanged and
+no permissions are needed for the file itself,
+although search permissions may be required for the path prefix.
+The call may or may not succeed if the named file does not exist.
+.Pp
+If both
+.Va tv_nsec
+fields are
+.Dv UTIME_NOW ,
+the caller must be the owner of the file, have permission to
+write the file, or be the super-user.
+.Pp
+For all other values of the timestamps,
+the caller must be the owner of the file or be the super-user.
+.Pp
+The values for the
+.Fa flag
+argument of the
+.Fn utimensat
+system call
+are constructed by a bitwise-inclusive OR of flags from the following list,
+defined in
+.In fcntl.h :
+.Bl -tag -width indent
+.It Dv AT_SYMLINK_NOFOLLOW
+If
+.Fa path
+names a symbolic link, the symbolic link's times are changed.
+By default,
+.Fn utimensat
+changes the times of the file referenced by the symbolic link.
+.El
+.Sh RETURN VALUES
+.Rv -std
+.Sh COMPATIBILITY
+If the running kernel does not support this system call,
+a wrapper emulates it using
+.Xr fstatat 2 ,
+.Xr futimesat 2
+and
+.Xr lutimes 2 .
+As a result, timestamps will be rounded down to the nearest microsecond,
+.Dv UTIME_OMIT
+is not atomic and
+.Dv AT_SYMLINK_NOFOLLOW
+is not available with a path relative to a file descriptor.
+.Sh ERRORS
+These system calls will fail if:
+.Bl -tag -width Er
+.It Bq Er EACCES
+The
+.Fa times
+argument is
+.Dv NULL ,
+or both
+.Va tv_nsec
+values are
+.Dv UTIME_NOW ,
+and the effective user ID of the process does not
+match the owner of the file, and is not the super-user, and write
+access is denied.
+.It Bq Er EFAULT
+The
+.Fa times
+argument
+points outside the process's allocated address space.
+.It Bq Er EINVAL
+The
+.Va tv_usec
+component of at least one of the values specified by the
+.Fa times
+argument has a value less than 0 or greater than 999999.
+.It Bq Er EIO
+An I/O error occurred while reading or writing the affected inode.
+.It Bq Er EPERM
+The
+.Fa times
+argument is not
+.Dv NULL
+nor are both
+.Va tv_nsec
+values
+.Dv UTIME_NOW ,
+nor are both
+.Va tv_nsec
+values
+.Dv UTIME_OMIT
+and the calling process's effective user ID
+does not match the owner of the file and is not the super-user.
+.It Bq Er EPERM
+The named file has its immutable or append-only flag set, see the
+.Xr chflags 2
+manual page for more information.
+.It Bq Er EROFS
+The file system containing the file is mounted read-only.
+.El
+.Pp
+The
+.Fn futimens
+system call
+will fail if:
+.Bl -tag -width Er
+.It Bq Er EBADF
+The
+.Fa fd
+argument
+does not refer to a valid descriptor.
+.El
+.Pp
+The
+.Fn utimensat
+system call
+will fail if:
+.Bl -tag -width Er
+.It Bq Er EACCES
+Search permission is denied for a component of the path prefix.
+.It Bq Er EBADF
+The
+.Fa path
+argument does not specify an absolute path and the
+.Fa fd
+argument is neither
+.Dv AT_FDCWD
+nor a valid file descriptor.
+.It Bq Er EFAULT
+The
+.Fa path
+argument
+points outside the process's allocated address space.
+.It Bq Er ELOOP
+Too many symbolic links were encountered in translating the pathname.
+.It Bq Er ENAMETOOLONG
+A component of a pathname exceeded
+.Dv NAME_MAX
+characters, or an entire path name exceeded
+.Dv PATH_MAX
+characters.
+.It Bq Er ENOENT
+The named file does not exist.
+.It Bq Er ENOTDIR
+A component of the path prefix is not a directory.
+.It Bq Er ENOTDIR
+The
+.Fa path
+argument is not an absolute path and
+.Fa fd
+is neither
+.Dv AT_FDCWD
+nor a file descriptor associated with a directory.
+.It Bq Er ENOTSUP
+The running kernel does not support this system call and
+.Dv AT_SYMLINK_NOFOLLOW
+is used with a path relative to a file descriptor.
+.El
+.Sh SEE ALSO
+.Xr chflags 2 ,
+.Xr stat 2 ,
+.Xr symlink 2 ,
+.Xr utimes 2 ,
+.Xr utime 3 ,
+.Xr symlink 7
+.Sh STANDARDS
+The
+.Fn futimens
+and
+.Fn utimensat
+system calls are expected to conform to
+.St -p1003.1-2008 .
+.Sh HISTORY
+The
+.Fn futimens
+and
+.Fn utimensat
+system calls appeared in
+.Fx 11.0 .

Copied: projects/building-blocks/lib/libc/sys/utimensat.c (from r277659, head/lib/libc/sys/utimensat.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/building-blocks/lib/libc/sys/utimensat.c	Sat Jan 24 21:21:39 2015	(r277660, copy of r277659, head/lib/libc/sys/utimensat.c)
@@ -0,0 +1,109 @@
+/*-
+ * Copyright (c) 2015 Jilles Tjoelker
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "namespace.h"
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <time.h>
+#include "un-namespace.h"
+
+#include "libc_private.h"
+
+int
+utimensat(int fd, const char *path, const struct timespec times[2], int flag)
+{
+	struct timeval now, tv[2], *tvp;
+	struct stat sb;
+
+	if (__getosreldate() >= 1100056)
+		return (__sys_utimensat(fd, path, times, flag));
+
+	if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) {
+		errno = EINVAL;
+		return (-1);
+	}
+	if (times == NULL || (times[0].tv_nsec == UTIME_NOW &&
+	    times[1].tv_nsec == UTIME_NOW))
+		tvp = NULL;
+	else if (times[0].tv_nsec == UTIME_OMIT &&
+	    times[1].tv_nsec == UTIME_OMIT)
+		return (0);
+	else {
+		if ((times[0].tv_nsec < 0 || times[0].tv_nsec > 999999999) &&
+		    times[0].tv_nsec != UTIME_NOW &&
+		    times[0].tv_nsec != UTIME_OMIT) {
+			errno = EINVAL;
+			return (-1);
+		}
+		if ((times[1].tv_nsec < 0 || times[1].tv_nsec > 999999999) &&
+		    times[1].tv_nsec != UTIME_NOW &&
+		    times[1].tv_nsec != UTIME_OMIT) {
+			errno = EINVAL;
+			return (-1);
+		}
+		tv[0].tv_sec = times[0].tv_sec;
+		tv[0].tv_usec = times[0].tv_nsec / 1000;
+		tv[1].tv_sec = times[1].tv_sec;
+		tv[1].tv_usec = times[1].tv_nsec / 1000;
+		tvp = tv;
+		if (times[0].tv_nsec == UTIME_OMIT ||
+		    times[1].tv_nsec == UTIME_OMIT) {
+			if (fstatat(fd, path, &sb, flag) == -1)
+				return (-1);
+			if (times[0].tv_nsec == UTIME_OMIT) {
+				tv[0].tv_sec = sb.st_atim.tv_sec;
+				tv[0].tv_usec = sb.st_atim.tv_nsec / 1000;
+			}
+			if (times[1].tv_nsec == UTIME_OMIT) {
+				tv[1].tv_sec = sb.st_mtim.tv_sec;
+				tv[1].tv_usec = sb.st_mtim.tv_nsec / 1000;
+			}
+		}
+		if (times[0].tv_nsec == UTIME_NOW ||
+		    times[1].tv_nsec == UTIME_NOW) {
+			if (gettimeofday(&now, NULL) == -1)
+				return (-1);
+			if (times[0].tv_nsec == UTIME_NOW)
+				tv[0] = now;
+			if (times[1].tv_nsec == UTIME_NOW)
+				tv[1] = now;
+		}
+	}
+	if ((flag & AT_SYMLINK_NOFOLLOW) == 0)
+		return (futimesat(fd, path, tvp));
+	else if ((flag & AT_SYMLINK_NOFOLLOW) != 0 &&
+	    (fd == AT_FDCWD || path[0] == '/'))
+		return (lutimes(path, tvp));
+	else {
+		errno = ENOTSUP;
+		return (-1);
+	}
+}

Modified: projects/building-blocks/lib/libc/tests/c063/Makefile
==============================================================================
--- projects/building-blocks/lib/libc/tests/c063/Makefile	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/lib/libc/tests/c063/Makefile	Sat Jan 24 21:21:39 2015	(r277660)
@@ -2,7 +2,7 @@
 
 TESTSDIR=	${TESTSBASE}/lib/libc/c063
 
-#TODO: t_o_search, t_utimensat
+#TODO: t_o_search
 
 NETBSD_ATF_TESTS_C=	faccessat
 NETBSD_ATF_TESTS_C+=	fchmodat
@@ -18,6 +18,7 @@ NETBSD_ATF_TESTS_C+=	readlinkat
 NETBSD_ATF_TESTS_C+=	renameat
 NETBSD_ATF_TESTS_C+=	symlinkat
 NETBSD_ATF_TESTS_C+=	unlinkat
+NETBSD_ATF_TESTS_C+=	utimensat
 
 CFLAGS+= -D_INCOMPLETE_XOPEN_C063
 

Modified: projects/building-blocks/lib/libstand/libstand.3
==============================================================================
--- projects/building-blocks/lib/libstand/libstand.3	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/lib/libstand/libstand.3	Sat Jan 24 21:21:39 2015	(r277660)
@@ -288,7 +288,7 @@ Thus
 printf(
 .Qq reg=%b\en ,
 3,
-.Qq \e10\e2BITTWO\e1BITONE\en
+.Qq \e10\e2BITTWO\e1BITONE
 );
 .Ed
 .Pp

Modified: projects/building-blocks/lib/libstand/printf.c
==============================================================================
--- projects/building-blocks/lib/libstand/printf.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/lib/libstand/printf.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -187,7 +187,7 @@ ksprintn(char *nbuf, uintmax_t num, int 
  * the next characters (up to a control character, i.e. a character <= 32),
  * give the name of the register.  Thus:
  *
- *	kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n");
+ *	kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE");
  *
  * would produce output:
  *
@@ -500,7 +500,7 @@ number:
 			while (percent < fmt)
 				PCHAR(*percent++);
 			/*
-			 * Since we ignore an formatting argument it is no 
+			 * Since we ignore a formatting argument it is no
 			 * longer safe to obey the remaining formatting
 			 * arguments as the arguments will no longer match
 			 * the format specs.

Modified: projects/building-blocks/release/Makefile
==============================================================================
--- projects/building-blocks/release/Makefile	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/release/Makefile	Sat Jan 24 21:21:39 2015	(r277660)
@@ -279,6 +279,7 @@ ftp: packagesystem
 	cp *.txz MANIFEST ftp
 
 release:	real-release vm-release cloudware-release
+	@true
 
 real-release:
 	${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} obj

Modified: projects/building-blocks/release/Makefile.vm
==============================================================================
--- projects/building-blocks/release/Makefile.vm	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/release/Makefile.vm	Sat Jan 24 21:21:39 2015	(r277660)
@@ -50,8 +50,8 @@ vm-${_CW:tl}:
 
 .if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
 CLEANDIRS+=	${VMTARGETS}
-CLEANFILES+=	${VMBASE}.img
 . for FORMAT in ${VMFORMATS}
+CLEANFILES+=	${FORMAT}.img
 CLEANFILES+=	${VMBASE}.${FORMAT}
 . endfor
 .endif
@@ -65,7 +65,7 @@ vm-image:
 	env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
 		${.CURDIR}/scripts/mk-vmimage.sh \
 		-C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} \
-		-i ${.OBJDIR}/${VMBASE}.img -s ${VMSIZE} -f ${FORMAT} \
+		-i ${.OBJDIR}/${FORMAT}.img -s ${VMSIZE} -f ${FORMAT} \
 		-S ${WORLDDIR} -o ${.OBJDIR}/${VMBASE}.${FORMAT}
 . endfor
 .endif

Modified: projects/building-blocks/release/doc/en_US.ISO8859-1/relnotes/article.xml
==============================================================================
--- projects/building-blocks/release/doc/en_US.ISO8859-1/relnotes/article.xml	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/release/doc/en_US.ISO8859-1/relnotes/article.xml	Sat Jan 24 21:21:39 2015	(r277660)
@@ -20,7 +20,7 @@
 
     <pubdate>$FreeBSD$</pubdate>
 
-    <!-- Last rev: 276551 -->
+    <!-- Last rev: 277458 -->
 
     <copyright>
       <year>2015</year>
@@ -691,6 +691,10 @@
 	has been updated to support <acronym>UTF</acronym>-8, which
 	additionally provides unicode support to &man.sh.1;.</para>
 
+      <para revision="277166" arch="powerpc">The &man.ptrace.2; system
+	call has been updated include support for Altivec registers on
+	&os;/&arch.powerpc;.</para>
+
       <sect3 xml:id="abi-compat">
 	<title><acronym>ABI</acronym> Compatibility</title>
 
@@ -791,6 +795,11 @@
 	<application>strings</application> were switched to the
 	versions from the ELF Tool Chain project.</para>
 
+      <para revision="276881">The <literal>libedit</literal> library
+	has been updated to include <acronym>UTF-8</acronym> support,
+	adding <acronym>UTF-8</acronym> support to the &man.sh.1;
+	shell.</para>
+
       <para revision="277270"><application>OpenSSL</application> has
 	been updated to version 1.0.1l.</para>
     </sect2>
@@ -804,7 +813,10 @@
     <sect2 xml:id="releng">
       <title>Release Engineering and Integration</title>
 
-      <para> </para>
+      <para revision="277458" contrib="sponsor" sponsor="&ff;">The
+	Release Engineering build tools have been updated to include
+	support for producing virtual machine disk images for various
+	cloud hosting providers.</para>
     </sect2>
 
     <sect2 xml:id="doc">

Modified: projects/building-blocks/release/picobsd/build/picobsd
==============================================================================
--- projects/building-blocks/release/picobsd/build/picobsd	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/release/picobsd/build/picobsd	Sat Jan 24 21:21:39 2015	(r277660)
@@ -734,8 +734,8 @@ populate_mfs_tree() {
     [ -n "${copy_files}" ] && do_copyfiles ${dst} copy_files
     do_copyfiles_user ${dst} || true
     [ -n "${links}" ] && do_links ${dst} links
-    strip ${dst}/libexec/* ${dst}/lib/* ${dst}/stand/* 2> /dev/null || true
-
+    strip ${dst}/libexec/* ${dst}/lib/* 2> /dev/null || true
+    # strip ${dst}/stand/* 2> /dev/null || true
     # The 'import_files' mechanism is deprecated, as it requires
     # root permissions to follow the symlinks, and also does
     # not let you rename the entries.
@@ -756,7 +756,7 @@ populate_mfs_tree() {
 	# override the owner
 	echo "/set uid=0 gid=0" > mtree.out
 	mtree -ic -p ${dst} -k "" >> mtree.out
-	log "mtre.out at ${BUILDDIR}/mtree.out"
+	log "mtree.out at ${BUILDDIR}/mtree.out size  ${MFS_SIZE}k"
 	makefs -t ffs -o bsize=4096 -o fsize=512 \
 		-s ${MFS_SIZE}k -f 1000 -F mtree.out ${c_fs} ${dst}
 	ls -l ${c_fs} )

Modified: projects/building-blocks/sbin/ping/ping.c
==============================================================================
--- projects/building-blocks/sbin/ping/ping.c	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/sbin/ping/ping.c	Sat Jan 24 21:21:39 2015	(r277660)
@@ -713,7 +713,7 @@ main(int argc, char *const *argv)
 		ip->ip_hl = sizeof(struct ip) >> 2;
 		ip->ip_tos = tos;
 		ip->ip_id = 0;
-		ip->ip_off = df ? IP_DF : 0;
+		ip->ip_off = htons(df ? IP_DF : 0);
 		ip->ip_ttl = ttl;
 		ip->ip_p = IPPROTO_ICMP;
 		ip->ip_src.s_addr = source ? sock_in.sin_addr.s_addr : INADDR_ANY;
@@ -1078,7 +1078,7 @@ pinger(void)
 	if (options & F_HDRINCL) {
 		cc += sizeof(struct ip);
 		ip = (struct ip *)outpackhdr;
-		ip->ip_len = cc;
+		ip->ip_len = htons(cc);
 		ip->ip_sum = in_cksum((u_short *)outpackhdr, cc);
 		packet = outpackhdr;
 	}

Modified: projects/building-blocks/share/man/man3/tree.3
==============================================================================
--- projects/building-blocks/share/man/man3/tree.3	Sat Jan 24 21:05:18 2015	(r277659)
+++ projects/building-blocks/share/man/man3/tree.3	Sat Jan 24 21:21:39 2015	(r277660)
@@ -30,7 +30,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 10, 2013
+.Dd January 24, 2015
 .Dt TREE 3
 .Os
 .Sh NAME
@@ -53,8 +53,26 @@
 .Nm SPLAY_REMOVE ,
 .Nm RB_PROTOTYPE ,
 .Nm RB_PROTOTYPE_STATIC ,
+.Nm RB_PROTOTYPE_INSERT ,
+.Nm RB_PROTOTYPE_INSERT_COLOR ,
+.Nm RB_PROTOTYPE_REMOVE ,
+.Nm RB_PROTOTYPE_REMOVE_COLOR ,
+.Nm RB_PROTOTYPE_FIND ,
+.Nm RB_PROTOTYPE_NFIND ,
+.Nm RB_PROTOTYPE_NEXT ,
+.Nm RB_PROTOTYPE_PREV ,
+.Nm RB_PROTOTYPE_MINMAX ,
 .Nm RB_GENERATE ,
 .Nm RB_GENERATE_STATIC ,
+.Nm RB_GENERATE_INSERT ,
+.Nm RB_GENERATE_INSERT_COLOR ,
+.Nm RB_GENERATE_REMOVE ,
+.Nm RB_GENERATE_REMOVE_COLOR ,
+.Nm RB_GENERATE_FIND ,
+.Nm RB_GENERATE_NFIND ,
+.Nm RB_GENERATE_NEXT ,
+.Nm RB_GENERATE_PREV ,
+.Nm RB_GENERATE_MINMAX ,
 .Nm RB_ENTRY ,
 .Nm RB_HEAD ,
 .Nm RB_INITIALIZER ,
@@ -111,8 +129,26 @@
 .Fn SPLAY_REMOVE NAME "SPLAY_HEAD *head" "struct TYPE *elm"
 .Fn RB_PROTOTYPE NAME TYPE FIELD CMP
 .Fn RB_PROTOTYPE_STATIC NAME TYPE FIELD CMP
+.Fn RB_PROTOTYPE_INSERT NAME TYPE ATTR

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


More information about the svn-src-projects mailing list