--- old/exception_lists/interface_check	2014-01-28 13:01:14.069036257 -0500
+++ new/exception_lists/interface_check	2014-01-28 13:01:14.092682527 -0500
@@ -63,7 +63,10 @@
 PLUGIN		^usr/perl5/5\.[^\\]*/lib
 PLUGIN		^usr/platform
 PLUGIN		^usr/sadm/lib/wbem
-
+# We unfortunately can't use MACH() here, since .../64/ is literal, and not a
+# link to to amd64 or sparcv9
+PLUGIN		^usr/lib/dtrace/libdtrace_forceload\.so$
+PLUGIN		^usr/lib/dtrace/64/libdtrace_forceload\.so$
 
 # sbcp is a special case, and not a plugin. However, it does not have a
 # versioned name, and does not contain versioning, so the PLUGIN exemptions fit.
--- old/usr/src/tools/env/illumos.sh	2014-01-28 13:01:14.701625419 -0500
+++ new/usr/src/tools/env/illumos.sh	2014-01-28 13:01:14.714624630 -0500
@@ -32,6 +32,7 @@
 #       DEBUG build only (-D, -F)
 #       do not bringover from the parent (-n)
 #       runs 'make check' (-C)
+#       checks for new interfaces in libraries (-A)
 #       runs lint in usr/src (-l plus the LINTDIRS variable)
 #       sends mail on completion (-m and the MAILTO variable)
 #       creates packages for PIT/RE (-p)
@@ -43,7 +44,7 @@
 # - This script is only interpreted by ksh93 and explicitly allows the
 #   use of ksh93 language extensions.
 #
-export NIGHTLY_OPTIONS='-FnCDlmprt'
+export NIGHTLY_OPTIONS='-FnCDAlmprt'
 
 #
 # -- PLEASE READ THIS --
--- old/usr/src/tools/scripts/nightly.sh	2014-01-28 13:01:15.135073195 -0500
+++ new/usr/src/tools/scripts/nightly.sh	2014-01-28 13:01:15.148308102 -0500
@@ -199,8 +199,9 @@
 		egrep -e "(^${MAKE}:|[ 	]error[: 	\n])" | \
 		egrep -v "Ignoring unknown host" | \
 		egrep -v "cc .* -o error " | \
-		egrep -v "warning" >> $mail_msg_file
-	if [ "$?" = "0" ]; then
+		egrep -v "warning" | tee $TMPDIR/build_errs${SUFFIX} \
+		>> $mail_msg_file
+	if [[ -s $TMPDIR/build_errs${SUFFIX} ]]; then
 		build_ok=n
 		this_build_ok=n
 	fi
@@ -218,7 +219,11 @@
 		| egrep -v "parameter <PSTAMP> set to" \
 		| egrep -v "Ignoring unknown host" \
 		| egrep -v "redefining segment flags attribute for" \
-		>> $mail_msg_file
+		| tee $TMPDIR/build_warnings${SUFFIX} >> $mail_msg_file
+	if [[ -s $TMPDIR/build_warnings${SUFFIX} ]]; then
+		build_ok=n
+		this_build_ok=n
+	fi
 
 	echo "\n==== Ended OS-Net source build at `date` ($LABEL) ====\n" \
 		>> $LOGFILE
@@ -333,8 +338,12 @@
 			egrep "${MAKE}|ERROR|WARNING" $SRC/pkg/${INSTALLOG}.out | \
 				grep ':' | \
 				grep -v PSTAMP | \
-				egrep -v "Ignoring unknown host" \
-				>> $mail_msg_file
+				egrep -v "Ignoring unknown host" | \
+				tee $TMPDIR/package >> $mail_msg_file
+			if [[ -s $TMPDIR/package ]]; then
+				build_extras_ok=n
+				this_build_ok=n
+			fi
 		else
 			#
 			# Handle it gracefully if -p was set but there so
@@ -395,10 +404,15 @@
 
 	/bin/time $MAKE -ek lint 2>&1 | \
 	    tee -a $LINTOUT >> $LOGFILE
+
 	echo "\n==== '$MAKE lint' of $base ERRORS ====\n" >> $mail_msg_file
+
 	grep "$MAKE:" $LINTOUT |
-		egrep -v "Ignoring unknown host" \
-		>> $mail_msg_file
+		egrep -v "Ignoring unknown host" | \
+		tee $TMPDIR/lint_errs >> $mail_msg_file
+	if [[ -s $TMPDIR/lint_errs ]]; then
+		build_extras_ok=n
+	fi
 
 	echo "\n==== Ended '$MAKE lint' of $base at `date` ====\n" >> $LOGFILE
 
@@ -420,13 +434,17 @@
 	if [ ! -f ${LINTNOISE}.ref ]; then
 		cp ${LINTNOISE}.out ${LINTNOISE}.ref
 	fi
+
 	if [ "$dodiff" != "n" ]; then
 		echo "\n==== lint warnings $base ====\n" \
 			>>$mail_msg_file
 		# should be none, though there are a few that were filtered out
 		# above
 		egrep -i '(warning|lint):' ${LINTNOISE}.out \
-			| sort | uniq >> $mail_msg_file
+			| sort | uniq | tee $TMPDIR/lint_warns >> $mail_msg_file
+                if [[ -s $TMPDIR/lint_warns ]]; then
+			build_extras_ok=n
+                fi
 		echo "\n==== lint noise differences $base ====\n" \
 			>> $mail_msg_file
 		diff ${LINTNOISE}.ref ${LINTNOISE}.out \
@@ -459,8 +477,12 @@
 	egrep ":" ${TOOLS}/${INSTALLOG}.out |
 		egrep -e "(${MAKE}:|[ 	]error[: 	\n])" | \
 		egrep -v "Ignoring unknown host" | \
-		egrep -v warning >> $mail_msg_file
-	return $?
+		egrep -v warning | tee $TMPDIR/tools_errors >> $mail_msg_file
+
+	if [[ -s $TMPDIR/tools_errors ]]; then
+		return 1
+	fi
+	return 0
 }
 
 #
@@ -670,6 +692,7 @@
 w_FLAG=n
 #
 build_ok=y
+build_extras_ok=y
 
 #
 # examine arguments
@@ -1150,6 +1173,11 @@
 	    		state=Failed
 			;;
 	esac
+
+        if [[ $state != "Interrupted" && $build_extras_ok != "y" ]]; then
+		state=Failed
+        fi
+
 	NIGHTLY_STATUS=$state
 	export NIGHTLY_STATUS
 
@@ -1495,8 +1523,12 @@
 	$MAKE -ek clobber 2>&1 | tee -a $SRC/clobber-${MACH}.out >> $LOGFILE
 	echo "\n==== Make clobber ERRORS ====\n" >> $mail_msg_file
 	grep "$MAKE:" $SRC/clobber-${MACH}.out |
-		egrep -v "Ignoring unknown host" \
-		>> $mail_msg_file
+		egrep -v "Ignoring unknown host" | \
+		tee $TMPDIR/clobber_errs >> $mail_msg_file
+
+	if [[ -s $TMPDIR/clobber_errs ]]; then
+		build_extras_ok=n
+	fi
 
 	if [[ "$t_FLAG" = "y" ]]; then
 		echo "\n==== Make tools clobber at `date` ====\n" >> $LOGFILE
@@ -1508,6 +1540,9 @@
 			>> $mail_msg_file
 		grep "$MAKE:" ${TOOLS}/clobber-${MACH}.out \
 			>> $mail_msg_file
+		if (( $? == 0 )); then
+			build_extras_ok=n
+		fi
 		rm -rf ${TOOLS_PROTO}
 		mkdir -p ${TOOLS_PROTO}
 	fi
@@ -1778,7 +1813,9 @@
 	set_non_debug_build_flags
 
 	build_tools ${TOOLS_PROTO}
-	if [[ $? != 0  && "$t_FLAG" = y ]]; then
+	if (( $? != 0 )); then
+		build_ok=n
+	else
 		use_tools $TOOLS_PROTO
 	fi
 fi
@@ -1836,9 +1873,11 @@
 	if [ "$N_FLAG" != "y" -a -d $SRC/pkg ]; then
 		echo "\n==== Validating manifests against proto area ====\n" \
 		    >> $mail_msg_file
-		( cd $SRC/pkg ; $MAKE -e protocmp ROOT="$checkroot" ) \
-		    >> $mail_msg_file
-
+		( cd $SRC/pkg ; $MAKE -e protocmp ROOT="$checkroot" ) | \
+		    tee $TMPDIR/protocmp_noise >> $mail_msg_file
+		if [[ -s $TMPDIR/protocmp_noise ]]; then
+			build_extras_ok=n
+		fi
 	fi
 
 	if [ "$N_FLAG" != "y" -a -f "$REF_PROTO_LIST" ]; then
@@ -1859,7 +1898,8 @@
 	fi
 fi
 
-if [ "$u_FLAG" = "y"  -a "$build_ok" = "y" ]; then
+if [[ "$u_FLAG" == "y" && "$build_ok" == "y" && \
+    "$build_extras_ok" == "y" ]]; then
 	staffer cp $ATLOG/proto_list_${MACH} \
 		$PARENT_WS/usr/src/proto_list_${MACH}
 fi
@@ -1904,7 +1944,7 @@
 #
 # ELF verification: ABI (-A) and runtime (-r) checks
 #
-if [[ ($build_ok = y) && ( ($A_FLAG = y) || ($r_FLAG = y) ) ]]; then
+if [[ ($build_ok = y) && (($A_FLAG = y) || ($r_FLAG = y)) ]]; then
 	# Directory ELF-data.$MACH holds the files produced by these tests.
 	elf_ddir=$SRC/ELF-data.$MACH
 
@@ -1931,7 +1971,8 @@
 			-i interface -E interface.err
 		if [[ -s $elf_ddir/interface.err ]]; then
 			tee -a $LOGFILE < $elf_ddir/interface.err \
-				>> $mail_msg_file
+			    >> $mail_msg_file
+			build_extras_ok=n
 		fi
 
 		# If ELF_DATA_BASELINE_DIR is defined, compare the new interface
@@ -1953,6 +1994,7 @@
 					tee -a $LOGFILE < \
 					    $elf_ddir/interface.cmp \
 					    >> $mail_msg_file
+					build_extras_ok=n
 				fi
 			else
 			       	echo "baseline not available. comparison" \
@@ -1977,6 +2019,9 @@
 		check_rtime -i -m -v $rtime_sflag -o -w $elf_ddir \
 			-D object_list  -f object_list -E runtime.err \
 			-I runtime.attr.raw
+                if (( $? != 0 )); then
+			build_extras_ok=n
+                fi
 
 		# check_rtime -I output needs to be sorted in order to 
 		# compare it to that from previous builds.
@@ -1987,6 +2032,7 @@
 		if [[ -s $elf_ddir/runtime.err ]]; then
 			tee -a $LOGFILE < $elf_ddir/runtime.err \
 				>> $mail_msg_file
+                        build_extras_ok=n
 		fi
 
 		# If there is an ELF-data directory from a previous build,
@@ -2060,7 +2106,11 @@
 
 	grep ":" $SRC/check-${MACH}.out |
 		egrep -v "Ignoring unknown host" | \
-		sort | uniq >> $mail_msg_file
+		sort | uniq | tee $TMPDIR/check_errors >> $mail_msg_file
+
+	if [[ -s $TMPDIR/check_errors ]]; then
+		build_extras_ok=n
+	fi
 else
 	echo "\n==== No '$MAKE check' ====\n" >> $LOGFILE
 fi
@@ -2099,7 +2149,11 @@
 		>>$mail_msg_file
 	arg=-b
 	[ "$build_ok" = y ] && arg=
-	checkpaths $arg $checkroot 2>&1 | tee -a $LOGFILE >>$mail_msg_file
+	checkpaths $arg $checkroot > $SRC/checkpaths.out 2>&1
+	if [[ -s $SRC/checkpaths.out ]]; then
+		tee -a $LOGFILE < $SRC/checkpaths.out >> $mail_msg_file
+		build_extras_ok=n
+	fi
 fi
 
 if [ "$M_FLAG" != "y" -a "$build_ok" = y ]; then
@@ -2182,7 +2236,7 @@
 # (whichever exit we hit here will trigger the "cleanup" trap which
 # optionally sends mail on completion).
 #
-if [ "$build_ok" = "y" ]; then
+if [[ "$build_ok" == "y" && "$build_extras_ok" == "y" ]]; then
 	exit 0
 fi
 exit 1
--- old/usr/src/tools/scripts/onbld_elfmod_vertype.pm	2014-01-28 13:01:15.816118297 -0500
+++ new/usr/src/tools/scripts/onbld_elfmod_vertype.pm	2014-01-28 13:01:15.829346101 -0500
@@ -43,8 +43,8 @@
 # fall into the following categories:
 #
 #	NUMBERED:	A public version that follows the standard numbering
-#			convention of a known prefix (e.g. SUNW_), followed
-#			by 2 or 3 dot separated numeric values:
+#			convention of a known prefix (e.g. ILLUMOS_), 
+#			followed by 2 or 3 dot separated numeric values:
 #
 #				<PREFIX>major.minor[.micro]
 #
@@ -101,16 +101,16 @@
 sub Category {
 	my ($Ver, $Soname) = @_;
 
-	# For Solaris and related products, the SUNW_ prefix is
-	# used for numbered public versions.
-	if ($Ver =~ /^(SUNW_)(\d+)\.(\d+)(\.(\d+))?/) {
+	# For illumos, the SUNW_ or ILLUMOS_ prefix is used for numbered
+	# public versions.
+	if ($Ver =~ /^((?:SUNW|ILLUMOS)_)(\d+)\.(\d+)(\.(\d+))?/) {
 		return ('NUMBERED', 3, $1, $2, $3, $5) if defined($5);
 		return ('NUMBERED', 2, $1, $2, $3);
 	}
 
 	# Well known plain versions. In Solaris, these names were used
 	# to tag symbols that come from the SVR4 underpinnings to Solaris.
-	# Later Sun-specific additions are all tagged SUNW_xxx.
+	# Later additions are all in the NUMBERED form.
 	return ('PLAIN')
 	    if (($Ver =~ /^SYSVABI_1.[23]$/) || ($Ver =~ /^SISCD_2.3[ab]*$/));
 
@@ -119,12 +119,12 @@
 	return ('SONAME')
 	    if ($Ver eq $Soname) && ($Soname ne '');
 
-	# The Solaris convention is to use SUNWprivate to indicate
-	# private versions. SUNWprivate can have a numeric suffix, but
-	# the number is not significant for ELF versioning other than
-	# being part of a unique name.
+	# The convention is to use SUNWprivate and ILLUMOSprivate to indicate
+	# private versions. They may have a numeric suffix, but the
+	# number is not significant for ELF versioning other than being part
+	# of a unique name.
 	return ('PRIVATE')
-	    if ($Ver =~ /^SUNWprivate(_[0-9.]+)?$/);
+	    if ($Ver =~ /^(SUNW|ILLUMOS)private(_[0-9.]+)?$/);
 
 	# Anything else is a version we don't recognize.
 	return ('UNKNOWN');
