Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Jan 2013 15:45:45 +0000 (UTC)
From:      Brooks Davis <brooks@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r245552 - in projects/mtree: . bin/cp bin/pwait cddl/contrib/opensolaris/lib/libzfs/common contrib/gcc/config/arm etc/mtree etc/rc.d gnu/lib/csu gnu/lib/libgcc gnu/lib/libgcov gnu/lib/l...
Message-ID:  <201301171545.r0HFjjDw095348@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: brooks
Date: Thu Jan 17 15:45:45 2013
New Revision: 245552
URL: http://svnweb.freebsd.org/changeset/base/245552

Log:
  MFH @ r245551

Added:
  projects/mtree/sys/libkern/arm/ldivmod.S
     - copied unchanged from r245551, head/sys/libkern/arm/ldivmod.S
  projects/mtree/sys/libkern/arm/ldivmod_helper.c
     - copied unchanged from r245551, head/sys/libkern/arm/ldivmod_helper.c
  projects/mtree/tools/build/options/WITH_ARM_EABI
     - copied unchanged from r245551, head/tools/build/options/WITH_ARM_EABI
  projects/mtree/tools/build/options/WITH_OPENSSH_NONE_CIPHER
     - copied unchanged from r245551, head/tools/build/options/WITH_OPENSSH_NONE_CIPHER
Modified:
  projects/mtree/ObsoleteFiles.inc
  projects/mtree/bin/cp/cp.c
  projects/mtree/bin/pwait/pwait.c
  projects/mtree/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_status.c
  projects/mtree/contrib/gcc/config/arm/freebsd.h
  projects/mtree/etc/mtree/BSD.usr.dist
  projects/mtree/etc/rc.d/jail
  projects/mtree/gnu/lib/csu/Makefile
  projects/mtree/gnu/lib/libgcc/Makefile
  projects/mtree/gnu/lib/libgcov/Makefile
  projects/mtree/gnu/lib/libstdc++/Makefile
  projects/mtree/gnu/usr.bin/cc/Makefile.inc
  projects/mtree/gnu/usr.bin/cc/c++filt/Makefile
  projects/mtree/gnu/usr.bin/cc/cc1/Makefile
  projects/mtree/gnu/usr.bin/cc/cc1plus/Makefile
  projects/mtree/gnu/usr.bin/cc/cc_int/Makefile
  projects/mtree/gnu/usr.bin/cc/cc_tools/Makefile
  projects/mtree/gnu/usr.bin/cc/doc/Makefile
  projects/mtree/gnu/usr.bin/cc/gcov/Makefile
  projects/mtree/gnu/usr.bin/cc/include/Makefile
  projects/mtree/gnu/usr.bin/cc/libcpp/Makefile
  projects/mtree/gnu/usr.bin/cc/libdecnumber/Makefile
  projects/mtree/gnu/usr.bin/cc/libiberty/Makefile
  projects/mtree/sbin/geom/class/raid/graid.8
  projects/mtree/sbin/setkey/Makefile
  projects/mtree/secure/lib/libssh/Makefile
  projects/mtree/secure/usr.bin/ssh/Makefile
  projects/mtree/secure/usr.sbin/sshd/Makefile
  projects/mtree/share/man/man4/rl.4
  projects/mtree/share/man/man5/src.conf.5
  projects/mtree/share/misc/committers-doc.dot
  projects/mtree/share/misc/committers-src.dot
  projects/mtree/share/mk/bsd.man.mk
  projects/mtree/share/mk/bsd.own.mk
  projects/mtree/share/mk/bsd.prog.mk
  projects/mtree/sys/arm/allwinner/console.c
  projects/mtree/sys/arm/arm/cpufunc.c
  projects/mtree/sys/arm/arm/db_trace.c
  projects/mtree/sys/arm/arm/swtch.S
  projects/mtree/sys/arm/arm/trap.c
  projects/mtree/sys/arm/include/atomic.h
  projects/mtree/sys/arm/include/proc.h
  projects/mtree/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c
  projects/mtree/sys/conf/files.arm
  projects/mtree/sys/conf/options
  projects/mtree/sys/dev/ath/if_ath.c
  projects/mtree/sys/dev/ath/if_ath_misc.h
  projects/mtree/sys/dev/ath/if_ath_sysctl.c
  projects/mtree/sys/dev/ath/if_ath_tx.c
  projects/mtree/sys/dev/ath/if_athvar.h
  projects/mtree/sys/dev/cxgbe/adapter.h
  projects/mtree/sys/dev/cxgbe/t4_main.c
  projects/mtree/sys/dev/cxgbe/tom/t4_connect.c
  projects/mtree/sys/dev/cxgbe/tom/t4_listen.c
  projects/mtree/sys/dev/puc/puc.c
  projects/mtree/sys/fs/nfs/nfs_commonkrpc.c
  projects/mtree/sys/fs/nfs/nfs_commonsubs.c
  projects/mtree/sys/fs/nfsclient/nfs_clport.c
  projects/mtree/sys/fs/nullfs/null_vfsops.c
  projects/mtree/sys/geom/raid/md_promise.c
  projects/mtree/sys/geom/raid/tr_concat.c
  projects/mtree/sys/kern/subr_param.c
  projects/mtree/sys/libkern/arm/divsi3.S
  projects/mtree/sys/net80211/ieee80211_power.c
  projects/mtree/sys/nfsclient/nfs_krpc.c
  projects/mtree/sys/nfsclient/nfs_subs.c
  projects/mtree/sys/pci/if_rl.c
  projects/mtree/sys/pci/if_rlreg.h
  projects/mtree/tools/tools/cxgbetool/cxgbetool.c
  projects/mtree/tools/tools/notescheck/notescheck.py
  projects/mtree/usr.bin/man/man.1
  projects/mtree/usr.bin/man/man.sh
  projects/mtree/usr.sbin/cpucontrol/intel.c
  projects/mtree/usr.sbin/cpucontrol/via.c
  projects/mtree/usr.sbin/pw/pw_log.c
Directory Properties:
  projects/mtree/   (props changed)
  projects/mtree/cddl/contrib/opensolaris/   (props changed)
  projects/mtree/cddl/contrib/opensolaris/lib/libzfs/   (props changed)
  projects/mtree/contrib/gcc/   (props changed)
  projects/mtree/gnu/lib/   (props changed)
  projects/mtree/gnu/usr.bin/cc/cc_tools/   (props changed)
  projects/mtree/sbin/   (props changed)
  projects/mtree/share/man/man4/   (props changed)
  projects/mtree/sys/   (props changed)
  projects/mtree/sys/cddl/contrib/opensolaris/   (props changed)
  projects/mtree/sys/conf/   (props changed)

Modified: projects/mtree/ObsoleteFiles.inc
==============================================================================
--- projects/mtree/ObsoleteFiles.inc	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/ObsoleteFiles.inc	Thu Jan 17 15:45:45 2013	(r245552)
@@ -38,6 +38,13 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20130116: removed long unused directories for .1aout section manpages
+OLD_FILES+=usr/share/man/en.ISO8859-1/man1aout
+OLD_FILES+=usr/share/man/en.UTF-8/man1aout
+OLD_DIRS+=usr/share/man/man1aout
+OLD_DIRS+=usr/share/man/cat1aout
+OLD_DIRS+=usr/share/man/en.ISO8859-1/cat1aout
+OLD_DIRS+=usr/share/man/en.UTF-8/cat1aout
 # 20121230: libdisk removed
 OLD_FILES+=usr/share/man/man3/libdisk.3.gz usr/include/libdisk.h
 OLD_FILES+=usr/lib/libdisk.a usr/lib32/libdisk.a

Modified: projects/mtree/bin/cp/cp.c
==============================================================================
--- projects/mtree/bin/cp/cp.c	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/bin/cp/cp.c	Thu Jan 17 15:45:45 2013	(r245552)
@@ -98,30 +98,28 @@ main(int argc, char *argv[])
 {
 	struct stat to_stat, tmp_stat;
 	enum op type;
-	int Hflag, Lflag, Pflag, ch, fts_options, r, have_trailing_slash;
+	int Hflag, Lflag, ch, fts_options, r, have_trailing_slash;
 	char *target;
 
 	fts_options = FTS_NOCHDIR | FTS_PHYSICAL;
-	Hflag = Lflag = Pflag = 0;
+	Hflag = Lflag = 0;
 	while ((ch = getopt(argc, argv, "HLPRafilnprvx")) != -1)
 		switch (ch) {
 		case 'H':
 			Hflag = 1;
-			Lflag = Pflag = 0;
+			Lflag = 0;
 			break;
 		case 'L':
 			Lflag = 1;
-			Hflag = Pflag = 0;
+			Hflag = 0;
 			break;
 		case 'P':
-			Pflag = 1;
 			Hflag = Lflag = 0;
 			break;
 		case 'R':
 			Rflag = 1;
 			break;
 		case 'a':
-			Pflag = 1;
 			pflag = 1;
 			Rflag = 1;
 			Hflag = Lflag = 0;
@@ -146,7 +144,7 @@ main(int argc, char *argv[])
 			break;
 		case 'r':
 			rflag = Lflag = 1;
-			Hflag = Pflag = 0;
+			Hflag = 0;
 			break;
 		case 'v':
 			vflag = 1;

Modified: projects/mtree/bin/pwait/pwait.c
==============================================================================
--- projects/mtree/bin/pwait/pwait.c	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/bin/pwait/pwait.c	Thu Jan 17 15:45:45 2013	(r245552)
@@ -141,5 +141,5 @@ main(int argc, char *argv[])
 		nleft -= n;
 	}
 
-	return 0;
+	exit(EX_OK);
 }

Modified: projects/mtree/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_status.c
==============================================================================
--- projects/mtree/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_status.c	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_status.c	Thu Jan 17 15:45:45 2013	(r245552)
@@ -150,6 +150,16 @@ find_vdev_problem(nvlist_t *vdev, int (*
 			return (B_TRUE);
 	}
 
+	/*
+	 * Check any L2 cache devs
+	 */
+	if (nvlist_lookup_nvlist_array(vdev, ZPOOL_CONFIG_L2CACHE, &child,
+	    &children) == 0) {
+		for (c = 0; c < children; c++)
+			if (find_vdev_problem(child[c], func))
+				return (B_TRUE);
+	}
+
 	return (B_FALSE);
 }
 

Modified: projects/mtree/contrib/gcc/config/arm/freebsd.h
==============================================================================
--- projects/mtree/contrib/gcc/config/arm/freebsd.h	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/contrib/gcc/config/arm/freebsd.h	Thu Jan 17 15:45:45 2013	(r245552)
@@ -29,8 +29,13 @@
   { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
 
 #undef SUBTARGET_EXTRA_ASM_SPEC
+#ifdef TARGET_ARM_EABI
+#define SUBTARGET_EXTRA_ASM_SPEC	\
+  "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=4} %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
+#else
 #define SUBTARGET_EXTRA_ASM_SPEC	\
   "-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
+#endif
 
 /* Default to full FPA if -mhard-float is specified. */
 #undef SUBTARGET_ASM_FLOAT_SPEC
@@ -61,8 +66,25 @@
 #define TARGET_ENDIAN_DEFAULT 0
 #endif
 
+#ifdef TARGET_ARM_EABI
+/* We default to a soft-float ABI so that binaries can run on all
+   target hardware.  */
+#undef TARGET_DEFAULT_FLOAT_ABI
+#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
+
+#undef ARM_DEFAULT_ABI
+#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
+
+#undef  TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() 		\
+  do						\
+    {						\
+      FBSD_TARGET_OS_CPP_BUILTINS();		\
+      TARGET_BPABI_CPP_BUILTINS();		\
+    }						\
+  while (false)
+#else
 /* Default it to use ATPCS with soft-VFP.  */
-#undef TARGET_DEFAULT
 #define TARGET_DEFAULT			\
   (MASK_APCS_FRAME			\
    | TARGET_ENDIAN_DEFAULT)
@@ -70,6 +92,10 @@
 #undef ARM_DEFAULT_ABI
 #define ARM_DEFAULT_ABI ARM_ABI_ATPCS
 
+#undef FPUTYPE_DEFAULT
+#define FPUTYPE_DEFAULT FPUTYPE_VFP
+#endif
+
 /* Define the actual types of some ANSI-mandated types.
    Needs to agree with <machine/ansi.h>.  GCC defaults come from c-decl.c,
    c-common.c, and config/<arch>/<arch>.h.  */
@@ -134,5 +160,3 @@ do									\
   }									\
 while (0)
 
-#undef FPUTYPE_DEFAULT
-#define FPUTYPE_DEFAULT FPUTYPE_VFP

Modified: projects/mtree/etc/mtree/BSD.usr.dist
==============================================================================
--- projects/mtree/etc/mtree/BSD.usr.dist	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/etc/mtree/BSD.usr.dist	Thu Jan 17 15:45:45 2013	(r245552)
@@ -756,8 +756,6 @@
 /set uname=man
             cat1
             ..
-            cat1aout
-            ..
             cat2
             ..
             cat3
@@ -795,8 +793,6 @@
             en.ISO8859-1    uname=root
                 cat1
                 ..
-                cat1aout
-                ..
                 cat2
                 ..
                 cat3
@@ -835,8 +831,6 @@
             en.UTF-8        uname=root
                 cat1
                 ..
-                cat1aout
-                ..
                 cat2
                 ..
                 cat3
@@ -913,8 +907,6 @@
             ..
             man1
             ..
-            man1aout
-            ..
             man2
             ..
             man3

Modified: projects/mtree/etc/rc.d/jail
==============================================================================
--- projects/mtree/etc/rc.d/jail	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/etc/rc.d/jail	Thu Jan 17 15:45:45 2013	(r245552)
@@ -509,7 +509,7 @@ jail_handle_ips_option()
 		esac
 		case "${_type}" in
 		inet)	;;
-		inet6)	;;
+		inet6)	ipv6_address_count=$((ipv6_address_count + 1)) ;;
 		*)	warn "Could not determine address family.  Not going" \
 			    "to ${_action} address '${_addr}' for ${_jail}."
 			continue
@@ -546,6 +546,7 @@ jail_ips()
 	esac
 
 	# Handle addresses.
+	ipv6_address_count=0
 	jail_handle_ips_option ${_action} "${_ip}"
 	# Handle jail_xxx_ip_multi<N>
 	alias=0
@@ -558,6 +559,12 @@ jail_ips()
 			;;
 		esac
 	done
+	case ${ipv6_address_count} in
+	0)	;;
+	*)	# Sleep 1 second to let DAD complete before starting services.
+		sleep 1
+		;;
+	esac
 }
 
 jail_prestart()

Modified: projects/mtree/gnu/lib/csu/Makefile
==============================================================================
--- projects/mtree/gnu/lib/csu/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/lib/csu/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -24,6 +24,10 @@ CFLAGS+=	-I${GCCLIB}/include -I${GCCDIR}
 CRTS_CFLAGS=	-DCRTSTUFFS_O -DSHARED ${PICFLAG}
 MKDEP=		-DCRT_BEGIN
 
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+CFLAGS+=	-DTARGET_ARM_EABI
+.endif
+
 .if ${MACHINE_CPUARCH} == "ia64"
 BEGINSRC=	crtbegin.asm
 ENDSRC=		crtend.asm

Modified: projects/mtree/gnu/lib/libgcc/Makefile
==============================================================================
--- projects/mtree/gnu/lib/libgcc/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/lib/libgcc/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -15,6 +15,10 @@ MK_SSP=	no
 
 .include "${.CURDIR}/../../usr.bin/cc/Makefile.tgt"
 
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+CFLAGS+=	-DTARGET_ARM_EABI
+.endif
+
 .if ${TARGET_CPUARCH} == "mips"
 LIB=		gcc
 .endif
@@ -55,10 +59,13 @@ LIB2FUNCS+= _fixuns${mode}si
 .endfor
 
 # Likewise double-word routines.
+.if ${TARGET_CPUARCH} != "arm" || ${MK_ARM_EABI} == "no"
+# These are implemented in an ARM specific file but will not be filtered out
 .for mode in sf df xf tf
 LIB2FUNCS+= _fix${mode}di _fixuns${mode}di
 LIB2FUNCS+= _floatdi${mode} _floatundi${mode}
 .endfor
+.endif
 
 LIB2ADD = $(LIB2FUNCS_EXTRA)
 LIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA)
@@ -115,15 +122,14 @@ CFLAGS+=	-fheinous-gnu-extensions
 
 LIB1ASMSRC =	lib1funcs.asm
 LIB1ASMFUNCS =  _dvmd_tls _bb_init_func
-LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
+.if ${MK_ARM_EABI} != "no"
+LIB1ASMFUNCS+=	_addsubdf3 _addsubsf3 _cmpdf2 _cmpsf2 _fixdfsi _fixsfsi \
+		_fixunsdfsi _fixunsdfsi _muldivdf3 _muldivsf3 _udivsi3
 
-# Not now
-#LIB1ASMFUNCS =  _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func
-#LIB1ASMFUNCS+=	_call_via_rX _interwork_call_via_rX \
-#	_lshrdi3 _ashrdi3 _ashldi3 \
-#	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-#	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-#	_fixsfsi _fixunssfsi _floatdidf _floatdisf
+LIB2ADDEH =	unwind-arm.c libunwind.S pr-support.c unwind-c.c
+.else
+LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
+.endif
 .endif
 
 .if ${TARGET_CPUARCH} == mips
@@ -329,6 +335,9 @@ CLEANFILES += cs-*.h option*
 SHLIB_MKMAP      = ${GCCDIR}/mkmap-symver.awk
 SHLIB_MKMAP_OPTS =
 SHLIB_MAPFILES   = ${GCCDIR}/libgcc-std.ver
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+SHLIB_MAPFILES  += ${GCCDIR}/config/arm/libgcc-bpabi.ver
+.endif
 VERSION_MAP      = libgcc.map
 
 libgcc.map: ${SHLIB_MKMAP} ${SHLIB_MAPFILES} ${SOBJS} ${OBJS:R:S/$/.So/}

Modified: projects/mtree/gnu/lib/libgcov/Makefile
==============================================================================
--- projects/mtree/gnu/lib/libgcov/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/lib/libgcov/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -15,6 +15,11 @@ CFLAGS+=	-DIN_GCC -DIN_LIBGCC2 -D__GCC_F
 CFLAGS+=	-D_PTHREADS -DGTHREAD_USE_WEAK
 CFLAGS+=	-I${.CURDIR}/../../usr.bin/cc/cc_tools \
 		-I${GCCLIB}/include -I${GCCDIR}/config -I${GCCDIR} -I.
+
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+CFLAGS+=	-DTARGET_ARM_EABI
+.endif
+
 #
 # Library members defined in libgcov.c.
 # Defined in libgcov.c, included only in gcov library

Modified: projects/mtree/gnu/lib/libstdc++/Makefile
==============================================================================
--- projects/mtree/gnu/lib/libstdc++/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/lib/libstdc++/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.include <bsd.own.mk>
+
 GCCVER=	4.2
 GCCDIR=	${.CURDIR}/../../../contrib/gcc
 GCCLIB=	${.CURDIR}/../../../contrib/gcclibs
@@ -14,7 +16,7 @@ LIB=		stdc++
 SHLIB_MAJOR=	6
 
 CFLAGS+=	-DIN_GLIBCPP_V3 -DHAVE_CONFIG_H
-.if ${MACHINE_CPUARCH} == "arm"
+.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} == "no"
 CFLAGS+=	-D_GLIBCXX_SJLJ_EXCEPTIONS=1
 .endif
 CFLAGS+=	-I${.CURDIR} -I${SUPDIR} -I${GCCDIR} -I${SRCDIR}/include
@@ -594,7 +596,13 @@ gthr-default.h: ${GCCDIR}/gthr-posix.h
 
 CLEANFILES+=	${THRHDRS}
 
+.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
+.else
 unwind.h: ${GCCDIR}/unwind-generic.h
+.endif
+
+unwind.h:
 	ln -sf ${.ALLSRC} ${.TARGET}
 
 SRCS+=		unwind.h

Modified: projects/mtree/gnu/usr.bin/cc/Makefile.inc
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/Makefile.inc	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/Makefile.inc	Thu Jan 17 15:45:45 2013	(r245552)
@@ -26,6 +26,10 @@ CSTD?=	gnu89
 CFLAGS+=	-DCROSS_COMPILE
 .endif
 
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+CFLAGS+=	-DTARGET_ARM_EABI
+.endif
+
 .if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb"
 CFLAGS += -DTARGET_ENDIAN_DEFAULT=MASK_BIG_END
 .endif

Modified: projects/mtree/gnu/usr.bin/cc/c++filt/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/c++filt/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/c++filt/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,5 +1,8 @@
 # $FreeBSD$
 
+NO_MAN=
+.include <bsd.own.mk>
+
 .include "../Makefile.inc"
 .include "../Makefile.fe"
 
@@ -7,7 +10,6 @@
 
 PROG=	c++filt
 SRCS=	cp-demangle.c
-NO_MAN=
 
 CFLAGS+= -DSTANDALONE_DEMANGLER -DVERSION=\"$(GCC_VERSION)\"
 

Modified: projects/mtree/gnu/usr.bin/cc/cc1/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/cc1/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/cc1/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,9 +1,10 @@
 # $FreeBSD$
 
-.include "../Makefile.inc"
 NO_MAN=
 .include <bsd.own.mk>
 
+.include "../Makefile.inc"
+
 .PATH: ${GCCDIR}
 
 PROG=	cc1

Modified: projects/mtree/gnu/usr.bin/cc/cc1plus/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/cc1plus/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/cc1plus/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,9 +1,10 @@
 # $FreeBSD$
 
-.include "../Makefile.inc"
 NO_MAN=
 .include <bsd.own.mk>
 
+.include "../Makefile.inc"
+
 .PATH: ${GCCDIR}/cp ${GCCDIR}
 
 PROG=	cc1plus

Modified: projects/mtree/gnu/usr.bin/cc/cc_int/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/cc_int/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/cc_int/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.include <bsd.own.mk>
+
 .include "../Makefile.inc"
 .include "../Makefile.ver"
 

Modified: projects/mtree/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/cc_tools/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/cc_tools/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -51,6 +51,9 @@ TARGET_INC+=	${GCC_CPU}/elf.h
 .endif
 .if ${TARGET_CPUARCH} == "arm"
 TARGET_INC+=	${GCC_CPU}/aout.h
+.if ${MK_ARM_EABI} != "no"
+TARGET_INC+=	${GCC_CPU}/bpabi.h
+.endif
 .endif
 .if ${TARGET_ARCH} == "powerpc64"
 TARGET_INC+=	${GCC_CPU}/biarch64.h
@@ -349,7 +352,13 @@ gthr-default.h: ${GCCDIR}/gthr-posix.h
 
 GENSRCS+=	gthr-default.h
 
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
+.else
 unwind.h: ${GCCDIR}/unwind-generic.h
+.endif
+
+unwind.h:
 	ln -sf ${.ALLSRC} ${.TARGET}
 
 GENSRCS+=	unwind.h

Modified: projects/mtree/gnu/usr.bin/cc/doc/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/doc/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/doc/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.include <bsd.own.mk>
+
 .include "../Makefile.inc"
 .include "../Makefile.ver"
 

Modified: projects/mtree/gnu/usr.bin/cc/gcov/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/gcov/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/gcov/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.include <bsd.own.mk>
+
 .include "../Makefile.inc"
 .include "../Makefile.ver"
 

Modified: projects/mtree/gnu/usr.bin/cc/include/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/include/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/include/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.include <bsd.own.mk>
+
 .include "../Makefile.inc"
 
 INCSDIR=${INCLUDEDIR}/gcc/${GCCVER}

Modified: projects/mtree/gnu/usr.bin/cc/libcpp/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/libcpp/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/libcpp/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.include <bsd.own.mk>
+
 # Use our headers in preference to ones from ../cc_tools.
 CFLAGS+=	-I${.CURDIR} -I.
 

Modified: projects/mtree/gnu/usr.bin/cc/libdecnumber/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/libdecnumber/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/libdecnumber/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.include <bsd.own.mk>
+
 # Use our headers in preference to ones from ../cc_tools.
 CFLAGS+=	-I${.CURDIR} -I.
 

Modified: projects/mtree/gnu/usr.bin/cc/libiberty/Makefile
==============================================================================
--- projects/mtree/gnu/usr.bin/cc/libiberty/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/gnu/usr.bin/cc/libiberty/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.include <bsd.own.mk>
+
 #
 # Make sure we will pick up our config.h file first, not the one from
 # cc_tools.

Modified: projects/mtree/sbin/geom/class/raid/graid.8
==============================================================================
--- projects/mtree/sbin/geom/class/raid/graid.8	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/sbin/geom/class/raid/graid.8	Thu Jan 17 15:45:45 2013	(r245552)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 13, 2012
+.Dd January 16, 2013
 .Dt GRAID 8
 .Os
 .Sh NAME
@@ -274,7 +274,6 @@ complete it there.
 Do not run GEOM RAID class on migrating volumes under pain of possible data
 corruption!
 .Sh 2TiB BARRIERS
-Promise metadata format does not support disks above 2TiB.
 NVIDIA metadata format does not support volumes above 2TiB.
 .Sh SYSCTL VARIABLES
 The following

Modified: projects/mtree/sbin/setkey/Makefile
==============================================================================
--- projects/mtree/sbin/setkey/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/sbin/setkey/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -61,7 +61,7 @@ CLEANFILES+=	scriptdump y.tab.h
 
 #SCRIPTS= scriptdump
 
-LOCALPREFIX=	/usr
+LOCALPREFIX=	/usr/local
 
 scriptdump: scriptdump.pl
 	sed -e 's#@LOCALPREFIX@#${LOCALPREFIX}#' < $> > scriptdump

Modified: projects/mtree/secure/lib/libssh/Makefile
==============================================================================
--- projects/mtree/secure/lib/libssh/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/secure/lib/libssh/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -38,6 +38,10 @@ DPADD+=	${LIBGSSAPI} ${LIBKRB5} ${LIBHX5
 LDADD+=	-lgssapi -lkrb5 -lhx509 -lasn1 -lcom_err -lmd -lroken
 .endif
 
+.if ${MK_OPENSSH_NONE_CIPHER} != "no"
+CFLAGS+= -DNONE_CIPHER_ENABLED
+.endif
+
 NO_LINT=
 
 DPADD+=	${LIBCRYPTO} ${LIBCRYPT}

Modified: projects/mtree/secure/usr.bin/ssh/Makefile
==============================================================================
--- projects/mtree/secure/usr.bin/ssh/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/secure/usr.bin/ssh/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -25,6 +25,10 @@ DPADD+=	 ${LIBGSSAPI}
 LDADD+=	 -lgssapi
 .endif
 
+.if ${MK_OPENSSH_NONE_CIPHER} != "no"
+CFLAGS+= -DNONE_CIPHER_ENABLED
+.endif
+
 DPADD+=	${LIBCRYPT} ${LIBCRYPTO}
 LDADD+=	-lcrypt -lcrypto
 

Modified: projects/mtree/secure/usr.sbin/sshd/Makefile
==============================================================================
--- projects/mtree/secure/usr.sbin/sshd/Makefile	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/secure/usr.sbin/sshd/Makefile	Thu Jan 17 15:45:45 2013	(r245552)
@@ -40,6 +40,10 @@ DPADD+=	 ${LIBGSSAPI_KRB5} ${LIBGSSAPI} 
 LDADD+=	 -lgssapi_krb5 -lgssapi -lkrb5 -lasn1
 .endif
 
+.if ${MK_OPENSSH_NONE_CIPHER} != "no"
+CFLAGS+= -DNONE_CIPHER_ENABLED
+.endif
+
 DPADD+=	${LIBCRYPTO} ${LIBCRYPT}
 LDADD+=	-lcrypto -lcrypt
 

Modified: projects/mtree/share/man/man4/rl.4
==============================================================================
--- projects/mtree/share/man/man4/rl.4	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/share/man/man4/rl.4	Thu Jan 17 15:45:45 2013	(r245552)
@@ -30,7 +30,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd August 22, 2010
+.Dd January 16, 2013
 .Dt RL 4
 .Os
 .Sh NAME
@@ -155,6 +155,8 @@ Corega FEther CB-TXD
 .It
 Corega FEtherII CB-TXD
 .It
+D-Link DFE-520TX (rev. C1)
+.It
 D-Link DFE-528TX
 .It
 D-Link DFE-530TX+

Modified: projects/mtree/share/man/man5/src.conf.5
==============================================================================
--- projects/mtree/share/man/man5/src.conf.5	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/share/man/man5/src.conf.5	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1,7 +1,7 @@
 .\" DO NOT EDIT-- this file is automatically generated.
 .\" from FreeBSD: head/tools/build/options/makeman 236279 2012-05-30 02:37:20Z gjb
 .\" $FreeBSD$
-.Dd January 14, 2013
+.Dd January 17, 2013
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -805,7 +805,7 @@ Set to not build NLS catalogs.
 Set to not build NLS catalog support for
 .Xr csh 1 .
 .It Va WITH_NMTREE
-.\" from FreeBSD: head/tools/build/options/WITH_NMTREE 245241 2013-01-09 21:07:08Z brooks
+.\" from FreeBSD: head/tools/build/options/WITH_NMTREE 245435 2013-01-14 20:38:32Z brooks
 Set to install
 .Xr nmtree 8
 as
@@ -835,6 +835,16 @@ Infiniband software stack.
 .It Va WITHOUT_OPENSSH
 .\" from FreeBSD: head/tools/build/options/WITHOUT_OPENSSH 156932 2006-03-21 07:50:50Z ru
 Set to not build OpenSSH.
+.It Va WITH_OPENSSH_NONE_CIPHER
+.\" from FreeBSD: head/tools/build/options/WITH_OPENSSH_NONE_CIPHER 245527 2013-01-17 01:51:04Z bz
+Set to include the "None" cipher support in OpenSSH and its libraries.
+Additional adjustments may need to be done to system configuration
+files, such as
+.Xr sshd_config 5 ,
+to enable this cipher.
+Please see
+.Pa /usr/src/crypto/openssh/README.hpn
+for full details.
 .It Va WITHOUT_OPENSSL
 .\" from FreeBSD: head/tools/build/options/WITHOUT_OPENSSL 156932 2006-03-21 07:50:50Z ru
 Set to not build OpenSSL.

Modified: projects/mtree/share/misc/committers-doc.dot
==============================================================================
--- projects/mtree/share/misc/committers-doc.dot	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/share/misc/committers-doc.dot	Thu Jan 17 15:45:45 2013	(r245552)
@@ -116,6 +116,7 @@ gabor -> issyl0
 gabor -> ebrandi
 
 gjb -> wblock
+gjb -> rene
 
 hrs -> ryusuke
 

Modified: projects/mtree/share/misc/committers-src.dot
==============================================================================
--- projects/mtree/share/misc/committers-src.dot	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/share/misc/committers-src.dot	Thu Jan 17 15:45:45 2013	(r245552)
@@ -117,6 +117,7 @@ bruno [label="Bruno Ducrot\nbruno@FreeBS
 bryanv [label="Bryan Venteicher\nbryanv@FreeBSD.org\n2012/11/03"]
 bschmidt [label="Bernhard Schmidt\nbschmidt@FreeBSD.org\n2010/02/06"]
 bz [label="Bjoern A. Zeeb\nbz@FreeBSD.org\n2004/07/27"]
+carl [label="Carl Delsey\ncarl@FreeBSD.org\n2013/01/14"]
 cognet [label="Olivier Houchard\ncognet@FreeBSD.org\n2002/10/09"]
 cokane [label="Coleman Kane\ncokane@FreeBSD.org\n2000/06/19"]
 cperciva [label="Colin Percival\ncperciva@FreeBSD.org\n2004/01/20"]
@@ -454,6 +455,8 @@ jhb -> peterj
 jhb -> pfg
 jhb -> rnoland
 
+jimharris -> carl
+
 jkh -> grog
 jkh -> imp
 jkh -> jlemon

Modified: projects/mtree/share/mk/bsd.man.mk
==============================================================================
--- projects/mtree/share/mk/bsd.man.mk	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/share/mk/bsd.man.mk	Thu Jan 17 15:45:45 2013	(r245552)
@@ -62,7 +62,7 @@ MROFF_CMD?=	groff -Tascii -mtty-char -ma
 MCOMPRESS_CMD?=	${COMPRESS_CMD}
 MCOMPRESS_EXT?=	${COMPRESS_EXT}
 
-SECTIONS=	1 1aout 2 3 4 5 6 7 8 9
+SECTIONS=	1 2 3 4 5 6 7 8 9
 .SUFFIXES:	${SECTIONS:S/^/./g}
 
 # Backwards compatibility.

Modified: projects/mtree/share/mk/bsd.own.mk
==============================================================================
--- projects/mtree/share/mk/bsd.own.mk	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/share/mk/bsd.own.mk	Thu Jan 17 15:45:45 2013	(r245552)
@@ -352,6 +352,7 @@ __DEFAULT_YES_OPTIONS = \
     ZONEINFO
 
 __DEFAULT_NO_OPTIONS = \
+    ARM_EABI \
     BIND_IDN \
     BIND_LARGE_FILE \
     BIND_LIBS \
@@ -369,6 +370,7 @@ __DEFAULT_NO_OPTIONS = \
     NMTREE \
     NAND \
     OFED \
+    OPENSSH_NONE_CIPHER \
     SHARED_TOOLCHAIN
 
 #

Modified: projects/mtree/share/mk/bsd.prog.mk
==============================================================================
--- projects/mtree/share/mk/bsd.prog.mk	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/share/mk/bsd.prog.mk	Thu Jan 17 15:45:45 2013	(r245552)
@@ -95,8 +95,7 @@ ${PROG}: ${OBJS}
 .if	${MK_MAN} != "no" && !defined(MAN) && \
 	!defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
 	!defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
-	!defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
-	!defined(MAN1aout)
+	!defined(MAN7) && !defined(MAN8) && !defined(MAN9)
 MAN=	${PROG}.1
 MAN1=	${MAN}
 .endif

Modified: projects/mtree/sys/arm/allwinner/console.c
==============================================================================
--- projects/mtree/sys/arm/allwinner/console.c	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/sys/arm/allwinner/console.c	Thu Jan 17 15:45:45 2013	(r245552)
@@ -40,43 +40,39 @@ __FBSDID("$FreeBSD$");
 #define	A10_UART_BASE	0xe1c28000 	/* UART0 */
 #endif
 
-int reg_shift = 2;
+#define	REG_SHIFT	2
 
-#define UART_DLL        0       /* Out: Divisor Latch Low */
-#define UART_DLM        1       /* Out: Divisor Latch High */
-#define UART_FCR        2       /* Out: FIFO Control Register */
-#define UART_LCR        3       /* Out: Line Control Register */
-#define UART_MCR        4       /* Out: Modem Control Register */
-#define UART_LSR        5       /* In:  Line Status Register */
-#define UART_LSR_THRE   0x20    /* Transmit-hold-register empty */
-#define UART_LSR_DR     0x01    /* Receiver data ready */
-#define UART_MSR        6       /* In:  Modem Status Register */
-#define UART_SCR        7       /* I/O: Scratch Register */
+#define	UART_DLL	0	/* Out: Divisor Latch Low */
+#define	UART_DLM	1	/* Out: Divisor Latch High */
+#define	UART_FCR	2	/* Out: FIFO Control Register */
+#define	UART_LCR	3	/* Out: Line Control Register */
+#define	UART_MCR	4	/* Out: Modem Control Register */
+#define	UART_LSR	5	/* In:  Line Status Register */
+#define	UART_LSR_THRE	0x20	/* Transmit-hold-register empty */
+#define	UART_LSR_DR	0x01	/* Receiver data ready */
+#define	UART_MSR	6	/* In:  Modem Status Register */
+#define	UART_SCR	7	/* I/O: Scratch Register */
 
-
-/*
- * uart related funcs
- */
-static u_int32_t
-uart_getreg(u_int32_t *bas)
+static uint32_t
+uart_getreg(uint32_t *bas)
 {
-	return *((volatile u_int32_t *)(bas)) & 0xff;
+	return *((volatile uint32_t *)(bas)) & 0xff;
 }
 
 static void
-uart_setreg(u_int32_t *bas, u_int32_t val)
+uart_setreg(uint32_t *bas, uint32_t val)
 {
-	*((volatile u_int32_t *)(bas)) = (u_int32_t)val;
+	*((volatile uint32_t *)(bas)) = val;
 }
 
 static int
 ub_getc(void)
 {
-	while ((uart_getreg((u_int32_t *)(A10_UART_BASE + 
-	    (UART_LSR << reg_shift))) & UART_LSR_DR) == 0);
+	while ((uart_getreg((uint32_t *)(A10_UART_BASE + 
+	    (UART_LSR << REG_SHIFT))) & UART_LSR_DR) == 0);
 		__asm __volatile("nop");
 
-	return (uart_getreg((u_int32_t *)A10_UART_BASE) & 0xff);
+	return (uart_getreg((uint32_t *)A10_UART_BASE) & 0xff);
 }
 
 static void
@@ -85,11 +81,11 @@ ub_putc(unsigned char c)
 	if (c == '\n')
 		ub_putc('\r');
 
-	while ((uart_getreg((u_int32_t *)(A10_UART_BASE + 
-	    (UART_LSR << reg_shift))) & UART_LSR_THRE) == 0)
+	while ((uart_getreg((uint32_t *)(A10_UART_BASE + 
+	    (UART_LSR << REG_SHIFT))) & UART_LSR_THRE) == 0)
 		__asm __volatile("nop");
 
-	uart_setreg((u_int32_t *)A10_UART_BASE, c);
+	uart_setreg((uint32_t *)A10_UART_BASE, c);
 }
 
 static cn_probe_t	uart_cnprobe;
@@ -121,8 +117,8 @@ uart_cnprobe(struct consdev *cp)
 static void
 uart_cninit(struct consdev *cp)
 {
-	uart_setreg((u_int32_t *)(A10_UART_BASE + 
-	    (UART_FCR << reg_shift)), 0x06);
+	uart_setreg((uint32_t *)(A10_UART_BASE + 
+	    (UART_FCR << REG_SHIFT)), 0x06);
 }
 
 void

Modified: projects/mtree/sys/arm/arm/cpufunc.c
==============================================================================
--- projects/mtree/sys/arm/arm/cpufunc.c	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/sys/arm/arm/cpufunc.c	Thu Jan 17 15:45:45 2013	(r245552)
@@ -1146,7 +1146,7 @@ struct cpu_functions cortexa_cpufuncs = 
 	/* Other functions */
 	
 	cpufunc_nullop,                 /* flush_prefetchbuf    */
-	arm11_drain_writebuf,           /* drain_writebuf       */
+	armv7_drain_writebuf,           /* drain_writebuf       */
 	cpufunc_nullop,                 /* flush_brnchtgt_C     */
 	(void *)cpufunc_nullop,         /* flush_brnchtgt_E     */
 	
@@ -1157,7 +1157,7 @@ struct cpu_functions cortexa_cpufuncs = 
 	cpufunc_null_fixup,             /* dataabt_fixup        */
 	cpufunc_null_fixup,             /* prefetchabt_fixup    */
 	
-	arm11_context_switch,           /* context_switch       */
+	armv7_context_switch,           /* context_switch       */
 	
 	cortexa_setup                     /* cpu setup            */
 };

Modified: projects/mtree/sys/arm/arm/db_trace.c
==============================================================================
--- projects/mtree/sys/arm/arm/db_trace.c	Thu Jan 17 09:52:35 2013	(r245551)
+++ projects/mtree/sys/arm/arm/db_trace.c	Thu Jan 17 15:45:45 2013	(r245552)
@@ -50,6 +50,395 @@ __FBSDID("$FreeBSD$");
 #include <ddb/db_sym.h>
 #include <ddb/db_output.h>
 
+#ifdef __ARM_EABI__
+/*
+ * Definitions for the instruction interpreter.
+ *
+ * The ARM EABI specifies how to perform the frame unwinding in the
+ * Exception Handling ABI for the ARM Architecture document. To perform
+ * the unwind we need to know the initial frame pointer, stack pointer,
+ * link register and program counter. We then find the entry within the
+ * index table that points to the function the program counter is within.
+ * This gives us either a list of three instructions to process, a 31-bit
+ * relative offset to a table of instructions, or a value telling us
+ * we can't unwind any further.
+ *
+ * When we have the instructions to process we need to decode them
+ * following table 4 in section 9.3. This describes a collection of bit
+ * patterns to encode that steps to take to update the stack pointer and
+ * link register to the correct values at the start of the function.
+ */
+
+/* A special case when we are unable to unwind past this function */
+#define	EXIDX_CANTUNWIND	1
+
+/* The register names */
+#define	FP	11
+#define	SP	13
+#define	LR	14
+#define	PC	15
+
+/*
+ * These are set in the linker script. Their addresses will be
+ * either the start or end of the exception table or index.
+ */
+extern int extab_start, extab_end, exidx_start, exidx_end;
+
+/*
+ * Entry types.
+ * These are the only entry types that have been seen in the kernel.
+ */
+#define	ENTRY_MASK	0xff000000
+#define	ENTRY_ARM_SU16	0x80000000
+#define	ENTRY_ARM_LU16	0x81000000
+
+/* Instruction masks. */
+#define	INSN_VSP_MASK		0xc0
+#define	INSN_VSP_SIZE_MASK	0x3f
+#define	INSN_STD_MASK		0xf0
+#define	INSN_STD_DATA_MASK	0x0f
+#define	INSN_POP_TYPE_MASK	0x08
+#define	INSN_POP_COUNT_MASK	0x07
+#define	INSN_VSP_LARGE_INC_MASK	0xff
+
+/* Instruction definitions */
+#define	INSN_VSP_INC		0x00
+#define	INSN_VSP_DEC		0x40
+#define	INSN_POP_MASKED		0x80
+#define	INSN_VSP_REG		0x90
+#define	INSN_POP_COUNT		0xa0
+#define	INSN_FINISH		0xb0
+#define	INSN_VSP_LARGE_INC	0xb2
+
+/* An item in the exception index table */
+struct unwind_idx {
+	uint32_t offset;
+	uint32_t insn;
+};
+
+/* The state of the unwind process */
+struct unwind_state {
+	uint32_t registers[16];
+	uint32_t start_pc;
+	uint32_t *insn;
+	u_int entries;
+	u_int byte;
+	uint16_t update_mask;
+};
+
+/* We need to provide these but never use them */
+void __aeabi_unwind_cpp_pr0(void);
+void __aeabi_unwind_cpp_pr1(void);
+void __aeabi_unwind_cpp_pr2(void);
+
+void
+__aeabi_unwind_cpp_pr0(void)
+{
+	panic("__aeabi_unwind_cpp_pr0");
+}
+
+void
+__aeabi_unwind_cpp_pr1(void)
+{
+	panic("__aeabi_unwind_cpp_pr1");
+}
+
+void
+__aeabi_unwind_cpp_pr2(void)
+{
+	panic("__aeabi_unwind_cpp_pr2");
+}
+
+/* Expand a 31-bit signed value to a 32-bit signed value */
+static __inline int32_t
+db_expand_prel31(uint32_t prel31)
+{
+
+	return ((int32_t)(prel31 & 0x7fffffffu) << 1) / 2;
+}
+
+/*
+ * Perform a binary search of the index table to find the function
+ * with the largest address that doesn't exceed addr.
+ */
+static struct unwind_idx *
+db_find_index(uint32_t addr)
+{
+	unsigned int min, mid, max;
+	struct unwind_idx *start;
+	struct unwind_idx *item;
+	int32_t prel31_addr;
+	uint32_t func_addr;
+
+	start = (struct unwind_idx *)&exidx_start;
+
+	min = 0;
+	max = (&exidx_end - &exidx_start) / 2;
+
+	while (min != max) {
+		mid = min + (max - min + 1) / 2;
+
+		item = &start[mid];
+
+	 	prel31_addr = db_expand_prel31(item->offset);
+		func_addr = (uint32_t)&item->offset + prel31_addr;
+
+		if (func_addr <= addr) {
+			min = mid;
+		} else {
+			max = mid - 1;
+		}
+	}
+
+	return &start[min];
+}
+
+/* Reads the next byte from the instruction list */
+static uint8_t
+db_unwind_exec_read_byte(struct unwind_state *state)
+{
+	uint8_t insn;
+
+	/* Read the unwind instruction */
+	insn = (*state->insn) >> (state->byte * 8);
+
+	/* Update the location of the next instruction */
+	if (state->byte == 0) {
+		state->byte = 3;
+		state->insn++;
+		state->entries--;
+	} else
+		state->byte--;
+
+	return insn;
+}
+
+/* Executes the next instruction on the list */
+static int
+db_unwind_exec_insn(struct unwind_state *state)
+{
+	unsigned int insn;
+	uint32_t *vsp = (uint32_t *)state->registers[SP];
+	int update_vsp = 0;
+
+	/* This should never happen */
+	if (state->entries == 0)
+		return 1;
+
+	/* Read the next instruction */
+	insn = db_unwind_exec_read_byte(state);
+
+	if ((insn & INSN_VSP_MASK) == INSN_VSP_INC) {
+		state->registers[SP] += ((insn & INSN_VSP_SIZE_MASK) << 2) + 4;
+
+	} else if ((insn & INSN_VSP_MASK) == INSN_VSP_DEC) {
+		state->registers[SP] -= ((insn & INSN_VSP_SIZE_MASK) << 2) + 4;
+
+	} else if ((insn & INSN_STD_MASK) == INSN_POP_MASKED) {
+		unsigned int mask, reg;
+
+		/* Load the mask */
+		mask = db_unwind_exec_read_byte(state);
+		mask |= (insn & INSN_STD_DATA_MASK) << 8;
+

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



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